Time of Update: 2018-12-03
在物件導向的範疇中,還存在多態的概念,多態建立在繼承關係的基礎上。簡單地理解,多態是指當一個 Java應用變數被聲明為 Monkey類時,這個變數實際上既可以引用 JMonkey類的執行個體,也可以引用
Time of Update: 2018-12-03
============================================================博文原創,轉載請聲明出處電子咖啡(原id藍岩)============================================================git常用命令-------自用--持續更新中-----2013-03-19//獲得指定version git checkout d11b1f2a5dcd82610d1e4c72a3cac0ee67a974b8
Time of Update: 2018-12-03
在文章<NetXen 10G網卡驅動DMA分析>中我分析了網卡驅動中的資料群組織,明確了接收資料包的環形緩衝區的構成方式, 知道資料包會由網卡的firmware通過DMA自動傳遞到該接收環形緩衝區中.本文將分析一下,如何?零拷貝抓包. 針對環形緩衝區的改進 標準NetXen網卡驅動接收流程是這樣子的:在網卡驅動中有三個由struct
Time of Update: 2018-12-03
struts2 action中result參數詳解 chain 用來處理Action鏈 com.opensymphony.xwork2.ActionChainResult dispatcher 用來轉向頁面,通常處理JSP org.apache.struts2.dispatcher.ServletDispatcherResult freemaker 處理FreeMarker模板
Time of Update: 2018-12-03
struct sk_buff可能是linux網路代碼中最重要的資料結構,它表示接收或發送資料包的包頭資訊,並包含很多成員變數供網路代碼中的各子系統使用。 這個結構被網路的不同層(MAC或者其他二層鏈路協議,三層的IP,四層的TCP或UDP等)使用,並且其中的成員變數在結構從一層向另一層傳遞時改變。 L4向L3傳遞前會添加一個L4的頭部,同樣,L3向L2傳遞前,會添加一個L3的頭部。添加頭部比在不同層之間拷貝資料的效率更高。由於在緩衝區的頭部
Time of Update: 2018-12-03
首先需要介紹的就是netif_rx(在net/core/dev.c中定義)函數,這個函數在網路卡驅動程式與linux核心之間建立了一道橋樑,將網卡接收上來的資料包(sk_buff形式)插入核心維護的接收緩衝區隊列當中:int netif_rx(struct sk_buff *skb){ int this_cpu = smp_processor_id(); struct softnet_data *queue; unsigned long flags;
Time of Update: 2018-12-03
深夜無眠,開始思索自己的工作和生活,如今工作稍有起色,生活小有挫敗,有些困惑,有些思考,隨便寫寫,與深夜不眠者共鳴以下轉自:程式員成長中的九重境界 你屬於哪一重?-------------------------------------每個職業在成長中,都會屬於某一階段,有著困惑和希望,作為程式員的你,對比一下到哪種境界了,本文給你對對看。AD: 51CTO雲端運算架構師峰會 搶票進行中!第一重: 在哪本電腦雜誌上看見軟體工程師這個職業介紹,或者走在大街上看見某某軟體培訓機構鼓吹培訓完就能年薪1
Time of Update: 2018-12-03
from : http://www.xiaoche.me/blog/2012/02/01/homebrew-install/Homebrew作為OS X上強大的包管理器,為系統軟體提供了非常方便的安裝方式,獨特式的解決了包的依賴問題,並不再需要煩人的sudo,一鍵式編譯,無參數困擾,真的,你值得擁有。安裝Homebrew依賴於XCode,首先需要安裝,lion後XCode也是免費的了,直接到App store下載。同時Homebrew也依賴ruby,Mac已經內建ruby。ruby -e "$(
Time of Update: 2018-12-03
在netif_receive_skb中有一段代碼是將receive的資料包clone一份交給ptype_all的鏈,代碼如下:……pt_prev=NULL;list_for_each_entry_rcu(ptype,&ptype_all,list){ if(!ptype->dev||ptype->dev==skb->dev){ if(pt_prev)
Time of Update: 2018-12-03
============================================================博文原創,轉載請聲明出處電子咖啡(原id藍岩)============================================================翻譯自:http://www.freeminded.org/index.php/2011/04/updating-local-git-repository-to-most-recent-version/我使用git
Time of Update: 2018-12-03
Linux的靜態庫是以.a結尾的,要串連靜態庫有兩種方法,一種是在編譯命令最後直接加上庫路徑/庫名稱。例如你的庫在絕對目錄/lib/libtest.a下面你就可以這樣來編譯$(CC) $(CFLAGS) $^ -o $@ /lib/libtest.a另外一種方法是,你可以用-L制定庫德路徑,用-l指定庫的名稱例如庫的名稱為libtest.a 那麼就用-ltestCROSS_COMPILE = arm-linux-uclibc-CC = $(CROSS_COMPILE)gccEXEC =
Time of Update: 2018-12-03
在此僅僅討論網路裝置驅動的一般寫法,有關硬體部分的相關代碼由於硬體規格不同,予以省略。有什麼地方錯誤,或補充,歡迎大家提出。 1, 驅動模組的載入和卸載 如果網路裝置(包括wireless)是PCI規範的,則先是向核心註冊該PCI裝置(pci_register_driver),然後由pci_driver資料結構中的probe函數指標所指向的偵測函數來初始化該PCI裝置,並且同時註冊和初始化該網路裝置。
Time of Update: 2018-12-03
網路資料包在上半部的處理通常有兩種模式:傳統的netif_rx模式和NAPI模式,在這裡我們主要討論網路下半部的內容,對這兩種模式的機制不作涉及,但無論上半部採用何種收包模式,都會調用__netif_rx_schedule()函數,其中的調用:__raise_softirq_irqoff(NET_RX_SOFTIRQ); 將觸發一個類型為NET_RX_SOFTIRQ的非強制中斷,由do_softirq()函數執行這個非強制中斷,對於NET_RX_SOFTIRQ類型的非強制中斷來說,系統將其act
Time of Update: 2018-12-03
一個很常見的錯誤根源在於沒有改寫hashCode方法。在每一個改寫了equals的方法的類中,你必須也要改寫hashCode方法。如果不這麼做的話,就會違反Object.hashCode的通用約定,從而導致該類無法與所有基於散列值(hash)的集合類結合在一起正常運行,這樣的集合類包括HashMap、HashSet、Hashtable。 可能有人會問:什麼是hash?它是幹什麼用的?
Time of Update: 2018-12-03
在Linux和Windows網路編程時需要用到htons和htonl函數,用來將主機位元組順序轉換為網路位元組順序。 在Intel機器下,執行以下程式int main()...{ printf("%d /n",htons(16)); return 0;}得到的結果是4096,初一看感覺很怪。 解釋如下,數字16的16進位表示為0x0010,數字4096的16進位表示為0x1000。
Time of Update: 2018-12-03
============================================================博文原創,轉載請聲明出處電子咖啡(原id藍岩)============================================================在Xcode中當你在更新了你得認證而再重新編譯你的程式,真機調試一直會出現 Code Sign error: Provisioning profile ‘XXXX’ can't be
Time of Update: 2018-12-03
============================================================博文原創,轉載請聲明出處電子咖啡(原id藍岩)============================================================I meet this exception:SEVERE: StandardServer.await: create[8005]:java.net.BindException: Address already
Time of Update: 2018-12-03
《第3章 對所有對象都通用的方法》 這是我認為最有用的一章,真的該好好問問自己,這些最最基礎的東西,自己都掌握嗎? Object是個即普通又特殊的類。說它普通是因為所有的類都是由它派生來的,說它特殊是因為它是所有其他類的父類必須先瞭解它才能寫好你自己的類。 Object所有的非final方法,都是為改寫(override)而設計的,改寫方法都有明確的約定,這一章就是講述該如何改寫這些法方的。 【第7條】在改寫equals的時候請遵守通用約定
Time of Update: 2018-12-03
============================================================博文原創,轉載請聲明出處電子咖啡(原id藍岩)============================================================Padding is the space inside the border, between the border and the actual view's content. Note that
Time of Update: 2018-12-03
Action 類:• Struts1要求Action類繼承一個抽象基類。Struts1的一個普遍問題是使用抽象類別編程而不是介面。• Struts 2 Action類可以實現一個Action介面,也可實現其他介面,使可選和定製的服務成為可能。Struts2提供一個ActionSupport基類去實現 常用的介面。Action介面不是必須的,任何有execute標識的POJO對象都可以用作Struts2的Action對象。線程模式:• Struts1 Action是單例模式並且必須是安全執行緒的,