Time of Update: 2018-12-05
LOCK首碼作用於單個指令上,它對中斷沒有任何影響,因為中斷只能在指令之間產生。LOCK首碼的真正作用是保持對系統匯流排的控制,直到整條指令執行完畢。它在一條指令多次訪問記憶體的時候相當有用。比如一個共用計數器,我們需要對它進行原子遞增操作,需要做如下工作:1)從記憶體讀取該計數器的值,臨時將其儲存在CPU內部寄存器中。2)增加讀取到的值。3)將被修改後的值寫回記憶體。在x86體繫結構中,這個遞增操作可以在單個指令中完成,因此中斷不會對該遞增操作產生影響。但是該指令有兩次記憶體訪問操作,讀和寫,
Time of Update: 2018-12-05
《代碼大全》解讀(六) 今天花了點時間,又看了兩章,第十八章——《文檔》,第十九章——《注釋》。本來以為會是輕鬆地看看,邊看邊覺得自已以前寫的很多代碼真是有些垃圾,真的有很多bad smell。這兩章其實可以說是一個核心問題,如何寫好注釋,需不需要寫注釋我想不需要過多討論,但如何寫好注釋於我們卻是一個問題。作者提出了幾點,我歸納了一下:1、 不寫無用的注釋比如 if(var==0) // 如果變數等於零這個就是一個無用的,因為它沒有體現比代碼本身更多的資訊。更好的應該是:if(
Time of Update: 2018-12-05
電信地址:http://121.15.172.132/download/PB/PbSetup60.exehttp://61.144.209.197/download/PB/PbSetup60.exe網通地址:http://210.83.231.37/download/PB/PbSetup60.exehttp://210.83.224.6/download/PB/PbSetup60.exe 安裝有“複製PBFinanceMgr檔案時失敗,請重新啟動電腦再安裝!”問題...
Time of Update: 2018-12-05
sed是一個行編輯方式,才發現用熟練以後節約了很多時間注意匹配是'\' 的轉意作用-i 寫回源檔案sed -n '2p' tmp 不要單引號其實也可以sed -n '1,3p' tmpsed -n '/try/p' tmp sed -n '1,$p' tmpsed '/.*ing/p' tmp sed '$p' tmpsed -n 's/am/& hahaha/p' tmp
Time of Update: 2018-12-05
《代碼大全》解讀(七) 第二十章所言如其題所示《編程工具》,考慮到書成於1993年,我真的很佩服作者所具有的前瞻性眼光,UNIX系列下的工具我是不熟悉,但是WINDOWS下的工具用過不少,隨著硬體技術的飛速發展和編程技術的日益成熟,目前我們已經能夠擁有比較能實現作者所言的Cobble編程環境了。我的機器以現在的眼光來看真的太次了,C1 .7/512M跑VS2003還是比較流暢的,不過開啟MSDN還真是有點慢,對於VS2005就只能流流口水了,等我的軟體賣了錢再去攢台新機器。雖然有很多人對於.ne
Time of Update: 2018-12-05
struct kthread {int should_stop;struct completion exited;};struct kthread_create_info{/* Information passed to kthread() from kthreadd. */int (*threadfn)(void *data); //核心線程的實體,進行服務的程式void *data;/* Result
Time of Update: 2018-12-05
有些時候,我們特別關注程式的效能,特別是底層軟體,比如驅動程式,OS等。為了更好的最佳化程式效能,我們必須找到效能瓶頸點,“好鋼用在刀刃上”才能取 得好的效果,否則可能白做工作。為了找到關鍵路徑,我們可以使用profilng技術,在linux平台上,我們可以使用gprof和oprofile工 具。gprof是GNU工具之一,它在編譯的時候在每個函數的出入口加入了profiling的代碼,運行時統計程式在使用者態的
Time of Update: 2018-12-05
我想我是一個憤青,至少在反對流氓軟體這個方向上。世人對流氓軟體的態度我很欣慰,因為還有一部分站了起在呼喊,在抗爭,因為我很怕會看到如果所有的人麻木起來,在麻木中死去,甚至有一部分人開始享受這些被強姦的生活。其實我並不喜歡360安全衛士的,因為他的製作者居然是那個開啟潘多拉魔盒的人。我不知道他是出於什麼目的來製作這款軟體的,所以一直就沒有去下載。我想CSDN上很多反感這款軟體的朋友大抵也如此。時間在手指間流逝,不久就看到3721和它的官司,帶著狗咬狗的心情看了看,然後就關上網頁,但是360
Time of Update: 2018-12-05
《代碼大全》解讀(八) 接下來的三章分別闡述軟體工程管理的三個方面。但是作者並沒有給出終極解決方案,即便是2006年的今天也無法對這三個方面給出完美的方案。軟體開發雖然類似於建築工程,但是因為其實施人員可能是地球上最聰明的一類人,而且由於軟體本身的特點,導致了傳統行業的一些管理方法很難應用到軟體開發工程管理上。首先第二十一章簡約地用資料介紹了大型和小型軟體的資源配置不是一個簡單的倍數關係。這一點倒是跟建築上有些類似。農村裡請泥水師傅起房,並不需要有太多的圖紙設計,基本上在兩根香煙的時間裡,老師傅
Time of Update: 2018-12-05
《代碼大全》解讀(九) 如果前面的章節是闡述具體建立過程相關事項,那麼二十四章《評審》、二十五章《單元測試》、二十六章《調試》更多地是偏重於建立過程的後續階段。評審沒什麼好說的,測試可以重點看看。單元測試、功能測試、部分測試、系統測試組成的測試的全部,不過單元測試可能是改善代碼品質的最重要部分。一個熟練的工匠在砌牆時總要不斷地平水尺和鉛錘進行水平和垂直的測量,這也是一種單元測試,這樣才不會差錯到建築頂部被放大。至於白盒測試、黑箱測試我想學過電腦課程的朋友應該都不會陌生。不過要寫出一個好的,覆蓋可
Time of Update: 2018-12-05
/*1,完成量的核心是排他性的不可中斷的等待隊列節點。 由代碼可知,它類似FIFO性質,complete喚醒的總是先wait的進程 從這裡可以加深對kthread的細節理解*/#include <linux/wait.h> //從這個標頭檔可看出,完成量是和等待隊列有密切的聯絡#define COMPLETION_INITIALIZER(work) \ { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait)
Time of Update: 2018-12-05
《代碼大全》解讀(三)——第四章的一些想法第四章的標題是《建立子程式的步驟》。我的讀後感是“想法是好的,只是暫時沒辦法實現”,本章就是告訴你在寫一個子程式之先最好寫一個PDL片斷,所謂PDL就一種用英語方式在思維層面上來描述演算法或者程式邏輯的語言。其實我覺得不一定要它的標準文法來寫,用中文也是可以的,其重要的特點是在思維層面上,而不是具體實現上,比如“分配一塊記憶體”就不要寫成
Time of Update: 2018-12-05
程式員人生之路(強烈推薦,分析的透徹!),某程式達人的人生感悟,估計沒有半個甲子的時間,是絕對不可能感悟出來的。轉載自CSDN論壇:http://topic.csdn.net/u/20110323/16/16ebe2ac-bca5-49da-a050-45cf522a0828.html 原文在網上找了下:http://blog.csdn.net/b136364111/archive/2007/12/10/1927073.aspx本文所指的開發工程師,僅指程式開發人員和以數字電路開發為主的電子工程
Time of Update: 2018-12-05
DotNet剖析系列(二) ——控制項繼承
Time of Update: 2018-12-05
《代碼大全》解讀(十)
Time of Update: 2018-12-05
Vista之初體驗今年比較閑,也正好前不久下了一個Windows Vista中文測試版的安裝印象。好傢夥,3個G,現在真是硬碟不要錢了,MS不知道為什麼要搞這麼多東東放在裡面。先安了再說,在安裝之前,讓大家流流口水,看看我辦公室最近配置的機器,是在一款ACER機器上換了點東東。呵呵。CPU:AMD Athlon64 X2 3800+(盒) 記憶體:DDRII533 1G 兩條顯卡:Radeon X1300
Time of Update: 2018-12-05
秦軍的建設思考 其實這篇文章應該很早就出爐了,因為很多文字已經是幾個月前就已經草就了。不過也是因為機緣巧合,在這個下午,我不想太多地關注於冰冷的技術,而且看到自已的部落格好久沒有更新了,於是把它整理了一下。 文章的起由是中央電視台放映的《複活的軍團》,本來斷斷續續地看過,前幾個月的一個周日正好就買了一張整合的DVD,又重新完整地看了一遍,於是有了寫些東東的衝動。一、鐵器時代使用青銅兵器
Time of Update: 2018-12-05
《代碼大全》解讀(四) 第五章——《高品質子程式的特點》,第六章——《模組化設計》以及第七章——《進階結構化設計》,我覺得這三章其實是講一個問題,如何寫高品質的化碼。注意它並不是高效,而是高品質。由於此書成於1993年,因此很多具體的情況有了很大的變化,因此我建議大家要是有錢還是去買第二版的,CSDN上是有售的。這三章,我也只是匆匆翻過,因為它的很多思想我想對於一個編程老手來講是些老生常談的問題,不過如果你是才從課堂裡出來,這三章還是很有必要重點看看。中國的電腦編程教材上的範例程式碼要是以此三章
Time of Update: 2018-12-05
//test_builtin_expect.c #define LIKELY(x) __builtin_expect(!!(x), 1)#define UNLIKELY(x) __builtin_expect(!!(x), 0)int test_likely(int x){ if(LIKELY(x)) { x = 5; } else { x = 6; } return x;}int test_unlikely(int x){ if(UNLIKELY(x)) { x =
Time of Update: 2018-12-05
《代碼大全》解讀(五) 接下來第八章到第十八章我讀起來非常的快,但心中卻多了很多感概,如果要是從96年我開始學習編程開始就讀到這本書該有多好,可是沒有人向我推薦過。這十一章講的都是有關代碼規範的問題,當然時過境遷有些東東已經不太適用,而且對於一些興新的語言而言,很多已在語言中作了規定。變化是永恒的,但是也有很多不變的思想,如統一的命名規範,比如對於C++以前推薦的命名是匈牙利命名,而對於C#則最好採用camel約定。又比如代碼的縮排,最初記得我才開始學BASIC時,就是一條條命令的感覺,一大版一