.Net 的 HttpRuntime.Cache 基本運用

網頁常常會使用到 cache 機制,來加快網頁速度,以下介紹 HttpRuntime.Cache 的基本運用方式。

using System;

namespace WebApplication
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            SetCache("a", "1", 60); //寫入快取 超時時間為60秒
            string temp = GetCache("a"); //讀取快取
            Response.Write(temp);
        }

        /// <summary>
        /// 取的快取
        /// </summary>
        /// <param name="key"></param>
        /// <returns></returns>
        protected string GetCache(string key)
        {
            try
            {
                object _cache = System.Web.HttpRuntime.Cache.Get(key);
                if (_cache != null)
                    return (string)_cache;
                else
                    return "";
            }
            catch
            {
                return "";
            }
        }

        /// <summary>
        /// 設定快取
        /// </summary>
        /// <param name="key"></param>
        /// <param name="value"></param>
        /// <param name="timeout"></param>
        /// <returns></returns>
        protected bool SetCache(string key, string value,int timeout)
        {
            try
            {
                System.Web.HttpRuntime.Cache.Insert(key, value, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 0, timeout), System.Web.Caching.CacheItemPriority.High, null);
                return true;
            }
            catch
            {
                return false;
            }
        }
    }
}

支援平台: Windows 7, Windows Vista SP1 (含) 以後版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (不支援伺服器核心), Windows Server 2008 R2 (SP1 (含) 以後版本支援伺服器核心), Windows Server 2003 SP2


  2012-05-04      ez      .NET
使用 Mono 讓 .Net 軟體 不須安裝 .Net Framework

.Net 開發出來的程式雖然輕巧,但每次都必須要求用戶安裝 .Net Framework 才能執行程式,用戶常常抱怨 .Net Framework 很大、安裝很久、版本非常多......問題。 發現 Mono 可以讓 .Net 運作於 Linux , Mac , Windows 達到跨平台運作,並且可以利用裡面的 Lib 將 .Net 程式綠色化。  

首先必須先下載 Mono for Windows, Gtk#, and XSP: http://www.go-mono.com/mono-downloads/download.html

下載完畢後安裝 Mono:


  2012-06-04      ez      .NET
.Net 圖片灰階化處理 BitmapData

上一次利用了 GetPixel 及 SetPixel,將圖片轉為灰階,雖然可以達成效果但是效能不佳!

這次採用 BitmapData 並且使用 指標 進行處理,達到更高的處理效率。

using System;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string Photo_route = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Tulips.jpg");
            Bitmap b = (Bitmap)Bitmap.FromFile(Photo_route);
            pictureBox2.Image = (Bitmap)Bitmap.FromFile(Photo_route);
            Stopwatch sw = new Stopwatch();
            sw.Start();
            BitmapData bData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
            //使用unsafe允許使用指標
            unsafe
            {
                byte* p = (byte*)bData.Scan0.ToPointer();
                for (int y = 0; y < b.Height; y++)
                {
                    for (int x = 0; x < b.Width; x++)
                    {
                        byte newColor = (byte)((float)(p[0] + p[1] + p[2]) / 3.0f);
                        p[0] = p[1] = p[2] = newColor; //三個byte組成一個Pixel
                        p += 3;
                    }
                }
                b.UnlockBits(bData);
            }
            sw.Stop();
            pictureBox1.Image = b;
            MessageBox.Show(sw.ElapsedMilliseconds.ToString() + " /ms");
        }
    }
}

  2012-06-20      ez      .NET
.Net 圖片灰階化處理 GetPixel SetPixel

利用 GetPixel 及 SetPixel,將圖片轉換為灰階。

using System;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string Photo_route = Path.Combine(System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase, "Tulips.jpg");
            Bitmap b = (Bitmap)Bitmap.FromFile(Photo_route);
            pictureBox2.Image = (Bitmap)Bitmap.FromFile(Photo_route);
            Stopwatch sw = new Stopwatch();
            sw.Start();
            //對每個pixel取出處理
            for (int y = 0; y < b.Height; y++)
            {
                for (int x = 0; x < b.Width; x++)
                {
                    Color color = b.GetPixel(x, y);
                    int avg = (color.R + color.G + color.B) / 3; //RGB同除3就會變成灰階
                    b.SetPixel(x, y, Color.FromArgb(avg, avg, avg));
                }
            }
            sw.Stop();
            pictureBox1.Image = b;
            MessageBox.Show(sw.ElapsedMilliseconds.ToString() + " /ms");
        }
    }
}

  2012-06-20      ez      .NET
.Net Function 接收多個參數

使用C#在Function接收多個參數,可以使用params string[] args,就可以接收多個string了。

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            Fun1("a");
            Fun2("a", "b", "c", "d", "e");
        }

        //接收一個參數
        static void Fun1(string arg1)
        {
        }

        //接收多個參數
        static void Fun2(params string[] args)
        {
        }
    }
}

  2012-06-20      ez      .NET
.NET 壓縮程式記憶體用量

.NET 程式必需載入 .NET Framework ,所以記憶體用量至少5MB以上

其實可以透過 SetProcessWorkingSetSize API 來達到記憶體壓縮的效果 以下為程式碼範例:


  2012-06-04      ez      .NET
.Net 加殼 sixxpack 2.2 免於受到反向工程的威脅

加殼壓縮是一種對EXE檔案的數據壓縮及加密保護,可以將EXE檔案壓縮成自我解壓檔案,並能隱藏解壓進程。

在免殺技術里所謂的殼與偽裝殼其實就是壓縮與外層數據偽裝,其實是利用特殊的演算法,對可執行文件與DLL文件里的資源進行壓縮與對文件的描述、版本號、創建日期、修改軟體、系統執行需求等外層數據進行偽裝。

  • 減少檔案大小:可節省磁碟空間、加速網路傳輸。
  • 加密內容:可以避免程式遭到任意竄改、亦可對防毒軟體免殺。

  使用 Reflector 可以輕易的將 .NET 程式進行反向工程!

 


  2012-06-04      ez      .NET
.NET 使用 Dotfuscator Software Services CE 免於受到反向工程的威脅

Dotfuscator 是主要的 .NET 模糊化和壓縮程式,可協助保護程式免於受到反向工程的威脅,同時使程式更小巧且更有效率。

此外,Dotfuscator 現在可將其他預先建立的功能插入 .NET 應用程式,以提供使用方式追蹤、竄改偵測和到期等功能。

Microsoft Visual Studio 2010 版本包含 PreEmptive Solutions Dotfuscator Software Services Community Edition 5 (Dotfuscator CE 5)的免費授權。

如同包含在 Visual Studio 2008、2005 和 2003 中的舊版 Dotfuscator CE,它會提供用來保護及強化 .NET 應用程式的工具。

Dotfuscator CE 5 使用於編譯的組件,不需要額外的程式設計,甚至也不用存取原始程式碼。

除了簡易模糊化之外,Dotfuscator CE 5 還針對開發人員、架構設計人員和軟體測試人員提供一系列新軟體服務。

Dotfuscator CE 5 中包含的新程式碼保護、監視和管理功能範例為:

  • 竄改防禦:偵測遭竄改應用程式的執行、傳輸事件警示,以及結束遭竄改的工作階段。
  • 應用程式到期行為:編碼「生命結束」日期、當應用程式在到期日後執行時傳輸警示,以及 (或) 結束已逾期的應用程式工作階段。
  • 工作階段追蹤:判斷已執行的應用程式、這些應用程式的版本,以及執行時間。
  • 功能使用方式追蹤:判斷正在使用的功能、順序及執行時間。

  2012-06-04      ez      .NET