Time of Update: 2016-12-30
[ASP.NETMVC 小牛之路]04 - 依賴注入(DI)和Ninject本文目錄:為什麼需要依賴注入在[ASP.NET MVC 小牛之路]系列的理解MVC模式文章中,我們提到MVC的一個重要特徵是關注點分離(separation of
Time of Update: 2016-12-30
[ASP.NETMVC 小牛之路]03 - Razor文法Razor是MVC3中才有的新的視圖引擎。我們知道,在ASP.NET中,ASPX的視圖引擎依靠<%和%>來調用C#指令。而MVC3以後有了一套新的使用@標記的Razor文法,使用起來更靈活更簡潔。下面通過一些簡單樣本讓大家快速撐握Razor文法的使用。本文目錄準備工作在示範Razor文法的使用之前,我們需要做一些準備工作。1.開啟VS建立一個ASP.NET
Time of Update: 2016-12-30
ASP.NETMVC 小牛之路]01 -
Time of Update: 2016-12-29
protected void Button1_Click(object sender, EventArgs e) { string filename = this.DropDownList1.SelectedValue;//最終命名 if (this.FileUpload1.PostedFile != null) { string baseFilename = this.FileUpload1.PostedFile.FileName;//擷取上傳檔案檔案名稱 int i =
Time of Update: 2016-12-29
最近涉及到用asp.net做上傳功能的一個問題,因為asp.net有fileupload的上傳控制項,但是這個控制項上傳的檔案大小有限,所以根本滿足不了需求百度了下,很多人遇到asp.net上傳超大檔案的困惑,偶爾搜尋發現csdn有個哥們提到這個超大檔案如何?,RadUpload.Net2.dll並且提供了這個動態庫進行處理超大檔案的上傳處理過程。於是就下載下來看了看,果然效果不錯,不但支援吵過700M的檔案上傳快速,更重要的是支援多線程的上傳檔案。查看原始碼發現利用的控制項也是fileuplo
Time of Update: 2016-12-28
前些天一位朋友要我幫忙做一單點登入,其實這個概念早已耳熟能詳,但實際應用很少,難得最近輕閑,於是決定通過本文來詳細描述一個SSO解決方案,希望對大家有所協助。SSO的解決方案很多,但搜尋結果令人大失所望,大部分是相互轉載,並且描述的也是走馬觀花。 閑話少敘,進入正題,我的想法是使用集中驗證方式,多個網站集中Passport驗證。 如所示: 為方便清晰描述,先定義幾個名詞,本文中出現之處均為如下含義。 主站:Passport集中驗證伺服器 http://www.passport.com/ 。
Time of Update: 2016-12-28
在之前的部落格中已經非常詳細的介紹了Redis的各種操作命令、運行機制和伺服器初始化參數配置。本篇部落格是該系列部落格中的最後一篇,在這裡將給出基於Redis用戶端組件訪問並操作Redis伺服器的程式碼範例。然而需要說明的是,由於Redis官方並未提供基於C介面的Windows平台用戶端,因此下面的樣本僅可運行於Linux/Unix平台。但是對於使用其它程式設計語言的開發人員而言,如C#和Java,Redis則提供了針對這些語言的用戶端組件,通過該方式,同樣可以達到基於Windows平台與Red
Time of Update: 2016-12-28
一、特殊編碼: 自從Redis 2.2之後,很多資料類型都可以通過特殊編碼的方式來進行儲存空間的最佳化。其中,Hash、List和由Integer組成的Sets都可以通過該方式來最佳化儲存結構,以便佔用更少的空間,在有些情況下,可以省去9/10的空間。
Time of Update: 2016-12-28
一、簡介: 和大多NoSQL資料庫一樣,Redis同樣遵循了Key/Value資料存放區模型。在有些情況下,Redis會將Keys/Values儲存在記憶體中以提高資料查詢和資料修改的效率,然而這樣的做法並非總是很好的選擇。鑒於此,我們可以將之進一步最佳化,即盡量在記憶體中只保留Keys的資料,這樣可以保證資料檢索的效率,而Values資料在很少使用的時候則可以被換出到磁碟。
Time of Update: 2016-12-28
一、Redis提供了哪些持久化機制: 1). RDB持久化: 該機制是指在指定的時間間隔內將記憶體中的資料集快照寫入磁碟。 2). AOF持久化: 該機制將以日誌的形式記錄伺服器所處理的每一個寫操作,在Redis伺服器啟動之初會讀取該檔案來重新構建資料庫,以保證啟動後資料庫中的資料是完整的。 3). 無持久化: 我們可以通過配置的方式禁用Redis伺服器的持久化功能,這樣我們就可以將Redis視為一個功能加強版的memcached了。 4).
Time of Update: 2016-12-28
一、Redis的Replication: 這裡首先需要說明的是,在Redis中配置Master-Slave模式真是太簡單了。相信在閱讀完這篇Blog之後你也可以輕鬆做到。這裡我們還是先列出一些理論性的知識,後面給出實際操作的案例。 下面的列表清楚的解釋了Redis Replication的特點和優勢。 1). 同一個Master可以同步多個Slaves。 2).
Time of Update: 2016-12-28
一、概述: Sorted-Sets和Sets類型極為相似,它們都是字串的集合,都不允許重複的成員出現在一個Set中。它們之間的主要差別是Sorted-Sets中的每一個成員都會有一個分數(score)與之關聯,Redis正是通過分數來為集合中的成員進行從小到大的排序。然而需要額外指出的是,儘管Sorted-Sets中的成員必須是唯一的,但是分數(score)卻是可以重複的。
Time of Update: 2016-12-28
一、概述: 我們可以將Redis中的Hashes類型看成具有String Key和String Value的map容器。所以該類型非常適合於儲存值對象的資訊。如Username、Password和Age等。如果Hash中包含很少的欄位,那麼該類型的資料也將僅佔用很少的磁碟空間。每一個Hash可以儲存4294967295個索引值對。二、相關命令列表:命令原型時間複雜度命令描述傳回值HSET key field
Time of Update: 2016-12-28
一、概述: 在Redis中,List類型是按照插入順序排序的字串鏈表。和資料結構中的普通鏈表一樣,我們可以在其頭部(left)和尾部(right)添加新的元素。在插入時,如果該鍵並不存在,Redis將為該鍵建立一個新的鏈表。與此相反,如果鏈表中所有的元素均被移除,那麼該鍵也將會被從資料庫中刪除。List中可以包含的最大元素數量是4294967295。 從元素插入和刪除的效率視角來看,如果我們是在鏈表的兩頭插入或刪除元素,這將會是非常高效的操作,即使鏈表中已經儲存了百萬條記錄,
Time of Update: 2016-12-28
一、概述:
Time of Update: 2016-12-28
一、簡介:在過去的幾年中,NoSQL資料庫一度成為高並發、海量資料存放區解決方案的代名詞,與之相應的產品也呈現出雨後春筍般的生機。然而在眾多產品中能夠脫穎而出的卻屈指可數,如Redis、MongoDB、BerkeleyDB和CouchDB等。由於每種產品所擁有的特徵不同,因此它們的應用情境也存在著一定的差異,下面僅給出簡單的說明:1).
Time of Update: 2016-12-28
MSDN原文如是說:Evaluates an expression and, when the result is false, prints a diagnostic message and aborts the program.(判斷一個運算式,如果結果為假,輸出診斷訊息並中止程式。)void assert( int expression );參數:Expression (including pointers) that evaluates to nonzero or
Time of Update: 2016-12-28
1、建立List用於存放多條語句/// <summary>/// 儲存表單/// </summary>/// <param name="context"></param>protected void save(){ List<string> list = new List<string>(); list.Add(string.Format("insert into
Time of Update: 2016-12-28
checked 關鍵字用於對整型算術運算和轉換顯式啟用溢出檢查。預設情況下,如果運算式僅包含常數值,且產生的值在目標類型範圍之外,則它會導致編譯器錯誤。 如果運算式包含一個或多個非常數值,則編譯器不檢測溢出。 在下面的樣本中,計算賦給 i2 的運算式不會導致編譯器錯誤。// The following example causes compiler error CS0220 because 2147483647 // is the maximum value for integers.
Time of Update: 2016-12-27
介紹在上一篇c#自己實現線程池功能(一)中,我們基本實現了一個可以啟動並執行程式,而不能真正的稱作線程池。由於是上篇中的代碼有個致命的bug那就是沒有任務是並不是等待,而是瘋狂的進行while迴圈,並試圖lock任務鏈表,這樣帶來的問題的就是效能相當低下,程式反映速度很慢(當加入一個新任務後,要過很久這個job才開始運行)造成的原因就是剛才所說的。為瞭解決這個問題我們就需要使用某種方法使得程式能夠讓進程同步。方法一使用訊號量我們為了減少對task任務的加鎖操作,只有當task不為空白時才進行試探