Time of Update: 2018-12-06
淺談.NET下的多線程和並行計算(一)前言 淺談.NET下的多線程和並行計算(二)線程基本知識 淺談.NET下的多線程和並行計算(三)線程同步基礎上 淺談.NET下的多線程和並行計算(四)線程同步基礎下 淺談.NET下的多線程和並行計算(五)線程池基礎上 淺談.NET下的多線程和並行計算(六)線程池基礎下 淺談.NET下的多線程和並行計算(七)基於多線程的基本組件 淺談.NET下的多線程和並行計算(八)Winform中多線程編程基礎上 淺談.NET下的多線程和並行計算(九)Winform中多線
Time of Update: 2018-12-06
對於前端頁面和後端代碼的分離,ASP.NET WEBFORM和ASP.NET
Time of Update: 2018-12-06
首先我們建立一個Winform的應用程式,在上面添加一個多行文字框和一個按鈕控制項,按鈕的事件如下:Thread.Sleep(1000);StringBuilder sb = new StringBuilder();for (int i = 0; i < 10000; i++) sb.Append("test");string s = sb.ToString();textBox1.Text =
Time of Update: 2018-12-06
1. stop complaining!別發牢騷! 2. you make me sick!你真讓我噁心! 3. what’s wrong with you?你怎麼回事? 4. you shouldn’t have done that!你真不應該那樣做! 5. you’re a jerk!你是個廢物/混球! 6. don’t talk to me like that!別那樣和我說話! 7. who do you think you are?你以為你是誰? 8.
Time of Update: 2018-12-06
在之前的文章中我們介紹過兩種Timer和BackgroundWorker組件,在上文中我們提到過,強烈建議在UI線程上操作控制項,否則很容易產生人品問題。可以想到,上次介紹的兩個Timer基於ThreadPool,回調方法運行於不同於UI線程的新線程上,在這個方法中操作控制項需要進行Invoke或BeginInvoke。其實,還有第三種System.Windows.Forms.Timer,它可以讓回調事件在UI線程上執行,我們來做一個實驗比較一下System.Windows.Forms.Time
Time of Update: 2018-12-06
請根據下面的表格,從縱向的列選擇你熟悉的知識點(最後兩行可以隨意列舉你感興趣或熟悉的知識點),從橫向的行選擇一個知識點的方面構成一個問題。 也就是說你可以選擇一個知識點回答其五個方面,也可以選擇十個知識點,每一個回答其一方面。 每回答一個問題之前請告訴我你選擇的問題(比如“ORM的優缺點”),如果問題回答的相對準確,在表格中我會在相應的位置打五角星(好)或打勾(一般)。 30分鐘之後,計算分數,一個勾1分,一個五角星2分,超過60分則面試通過(滿分200),回答越多分數也越高。
Time of Update: 2018-12-06
其實,如果線程都是很獨立的,不涉及到任何資源訪問的,那麼這些毫無幹擾的線程不會產生什麼問題。但是在實際應用中我們的線程總是涉及到資源訪問的,而且往往涉及到共用資源的訪問,那麼就產生了線程同步的問題。一直覺得線程同步這個名詞很奇怪,字面上看同步就是使得步調一致,線程同步是不是就是讓線程步調一致的訪問資源呢?事實上反了,線程同步恰巧是讓線程不同時去訪問資源而是去按照我們期望的順序依次訪問資源(是同步資源訪問的行為而不是同步同時訪問資源)。一句話,多個線程(不僅僅局限於相同進程)如果需要訪問相同的可變
Time of Update: 2018-12-06
談多線程談到現在,我們要明確多線程的一個好處是可以進行並行的運算(充分利用多核處理器,對於傳統型應用程式來說就更重要一點了,沒有WEB伺服器,利用多核只能靠自己),還有一個好處就是非同步作業,就是我們可以讓某個長時間的操作獨立運行,不妨礙主線程繼續進行一些計算,然後非同步去返回結果(也可以不返回)。前者能提高效能是因為能利用到多核,而後者能提高效能是因為能讓CPU不在等待中白白浪費,其實非同步從廣義上來說也可以理解為某種並行的運算。在之前的這麼多例子中,我們大多採用手工方式來新開線程,之前也說過
Time of Update: 2018-12-06
今天接到一個臨時任務,排查一個網站的詭異問題,是這樣的,這個網站訪問量很大,上了一個模組,在頁面服務端發出一個http請求,讀取另一個java網站提供的資料,上線之後發現一旦存在並發,或是比較多的訪問,http請求就會失敗,甚至在伺服器上不能開啟任何頁面,但是伺服器可以被ping通,也可以ping通其它網址(我沒有看到真實的情況,只是聽說有這樣一個情況)。 對於一個高並髮網站的服務端發起一個http請求我總是覺得很恐怖,在以前的項目中也從來沒這麼做過(寧願讓用戶端ajax方式請求),憑感覺一開始
Time of Update: 2018-12-06
回顧一下上次,我們討論了lock/AutoResetEvent/ManualResetEvent以及Semaphore。這些用於線程同步的結構叫做同步基元。同步基元從類型上可以分為鎖定/通知/聯鎖三種。lock顯然鎖定方式,而且是獨佔鎖定,也就是在鎖釋放之前不能由其它線程獲得。Semaphore也是一種鎖定,只不過不是獨佔鎖,可以指定多少個線程存取碼塊。AutoResetEvent和ManualResetEvent當然就是通知方式了,前者在通行之後自動重設,後者需要手動重設。我們還看到了即使使用
Time of Update: 2018-12-06
"Error Spawning cl.exe",相信這是很多使用 Microsoft Visual C++ 6.0 的朋友們遇到的一個很棘手的問題,它的問題就是在於 IDE 提示找不到 cl.exe ,於是,無論是寫得多麼簡單的程式都會無法編譯,錯誤資訊就是典型的 "Error Spawning cl.exe"...這麼問題其實很簡單,就是因為開發環境的預設目錄設定錯誤或被其它程式修改造成. "cl.exe" 是VC++6.0真正使用的編譯器,其路徑在".\Microsoft
Time of Update: 2018-12-06
池(Pool)是一個很常見的提高效能的方式。比如線程池串連池等,之所以有這些池是因為線程和資料庫連接的建立和關閉是一種比較昂貴的行為。對於這種昂貴的資源我們往往會考慮在一個池容器中放置一些資源,在用的時候去拿,在不夠的時候添點,在用完就歸還,這樣就可以避免不斷的建立資源和銷毀資源。如果您做過相關實驗的話可能會覺得不以為然,似乎開1000個線程也用不了幾百毫秒。我們要這麼想,對於一個高並發的環境來說,每一秒假設有100個請求,每個請求需要使用(開和關)10個線程,也就是一秒需要處理1000個線程的
Time of Update: 2018-12-06
上次我發了一個文章,討論了幾種前端的實現方式,在此文中想針對模板方式進行一些補充。 其實說白了,這麼多方式可以分為兩類,一種是HTML在用戶端組裝,一種是HTML在服務端組裝。那麼模板引擎也可以分成兩類: 1)
Time of Update: 2018-12-06
這節我們按照線程池的核心思想來自訂一個簡單的線程池:1) 池中使用的線程不少於一定數量,不多於一定數量2) 池中線程不夠的時候建立,富裕的時候收回3) 任務排隊,沒有可用線程時,任務等待我們的目的只是實現這些“需求”,不去考慮效能(比如等待一段時間再去建立新的線程等策略)以及特殊的處理(異常),在實現這個需求的過程中我們也回顧了線程以及線程同步的基本概念。首先,把任務委託和任務需要的狀態資料封裝一個對象:public class WorkItem{ public WaitCallback
Time of Update: 2018-12-06
之前的文章中我們介紹了如何在.NET下運用相關類庫進行多線程編程的基礎,我們知道.NET 4.0已經正式推出了,帶來的重要特性是並行庫。本文就談談對並行計算的一些理解和看法。並行計算不是一個很新的概念,其實它就是通過多線程把同一個任務分割成多個子任務並行的執行的過程。.NET 4.0並行庫不但提供了這方面的支援,而且還封裝了多線程開發的各種情境,使得我們不需要依賴Thread/同步基元等“底層”的對象就可以進行多線程開發。沒有.NET
Time of Update: 2018-12-06
'//女孩不哭(QQ:191035066)@2011-12-23 22:03:37Option ExplicitPrivate Type VariableBuffer VariableParameter() As ByteEnd TypePrivate Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" ( ByVal lpLibFileName As String ) As
Time of Update: 2018-12-06
在多線程應用中我們有一些很常見的需求,比如定時去做計劃任務,或者是在執行一個長時間的任務,在執行這個任務的過程中能有進度顯示(能想到要實現這個需求需要新開一個線程,避免阻塞UI的更新)。對於這些應用.NET提供了現成的組件。首先來看一下System.Threading的Timer組件,它提供了定時執行某個任務的方法:ThreadPool.SetMinThreads(2, 2);ThreadPool.SetMaxThreads(4, 4);Timer timer = new
Time of Update: 2018-12-06
最新版本改進了以下幾點:ResourceMerge.rar 1) 增加了PreOptTool在上線之前進行指令碼樣式壓縮,並且增加頭尾標識/*begin*/和/*end*/2) 增加頭尾標識的目的是因為發現如果引用的資源是網路資源(比如從CDN擷取)的話在網路不穩定的時候會出現檔案下載不完整,通過頭尾標識可以判斷檔案是否完整,不完整重試2次,設定檔配置:<!--校正資源檔的結束符,如果為空白表示不校正--> <StaticResrouceSuffix><
Time of Update: 2018-12-06
豫章故郡,洪都新府.星分翼軫(zhěn),地接衡廬.襟三江而帶五湖,控蠻荊而引甌(ōu)越.物華天寶,龍光射牛鬥之墟;人傑地靈,徐孺下陳蕃(fán)之榻.雄州霧列,俊采星馳,台隍(huáng)枕夷夏之交,賓主盡東南之美.都督閻公之雅望,棨(qǐ)戟遙臨;宇文新州之懿(yì)範,襜(chān)帷(wéi)暫駐.十旬休假,勝友如雲;千裡逢迎,高朋滿座.騰蛟起鳳,孟學士之詞宗;紫電青霜,王將軍之武庫.家君作宰,路出名區;童子何知,躬逢勝餞.
Time of Update: 2018-12-06
'添加一個Command,一個TextPrivate Declare Function EbExecuteLine Lib "vba6.dll" (ByVal pStringToExec As Long, ByVal Unknownn1 As Long, ByVal Unknownn2 As Long, ByVal fCheckOnly As Long) As LongFunction ExecuteLine(sCode As String, Optional fCheckOnly As