inline函式:
乙個較為合理的經驗準則是, 不要內聯超過 10 行的函式,較大則不會成為內聯函式,謹慎對待析構函式, 析構函式往往比其表面看起來要更長, 因為有隱含的成員和基類析構函式被呼叫。
有些函式即使宣告為內聯的也不一定會被編譯器內聯, 這點很重要, 比如虛函式和遞迴函式就不會被正常內聯.
內聯函式的定義最好放在標頭檔案中, 編譯器才能在呼叫點內聯展開定義,當然內聯函式定義也可以放在原始檔中,但此時只有定義的那個原始檔可以用它,而且必須為每個原始檔拷貝乙份定義定義在類宣告之中的成員函式將自動地成為內聯函式。
排序演算法及其複雜度比較:
需要注意的是,像氣泡排序,在原陣列本身有序的情況下,不需要交換,所以時間複雜度是o(n),具體實現如下:
void bubblesort()
}if (!isswap) return;
} }
tcp/ip建立連線:
tcp建立連線時,首先客戶端和伺服器處於close狀態。然後客戶端傳送syn同步位,此時客戶端處於syn-send狀態,伺服器處於listen狀態,當伺服器收到syn以後,向客戶端傳送同步位syn和確認碼ack,然後伺服器變為syn-rcvd,客戶端收到伺服器發來的syn和ack後,客戶端的狀態變成established(已建立連線),客戶端再向伺服器傳送ack確認碼,伺服器接收到以後也變成established。然後伺服器客戶端開始資料傳輸
關於系統呼叫:
系統呼叫通過中斷完成,這一過程中系統由使用者態變為核心態。 在核心態下,系統可以無限制的訪問核心資源。
select和epoll效率差異:
select 和 epoll效率差異的原因:select採用輪詢方式處理連線,epoll是觸發式處理連線。
select:
1.socket數量限制:該限制可操作的socket數由fd_setsize決定,核心預設32*32=1024.
2.操作限制:通過遍歷fd_setsize(1024)個socket來完成排程,不管哪個socket是活躍的,都遍歷一遍。
epoll
1.socket數量無限制:該模式下的socket對應的fd列表由乙個陣列來儲存,大小不限制(預設4k)。
2.操作無限制:基於核心提供的反射模式,有活躍socket時,核心訪問該socket的callback,不需要遍歷輪詢。
但當所有的socket都活躍的時候,所有的callback都被喚醒,會導致資源的競爭。既然都是要處理所有的socket,
那麼遍歷是最簡單最有效的實現方式。
一文梳理vs2017中lib的使用
windows下有靜態鏈結庫 lib 和動態鏈結庫 dll 兩種共享 的方式。本文將介紹lib的應用場景,以及在vs2017平台下的生成和使用。how 如何呼叫lib why lib的優缺點 github reference 參考 通常所說的lib是指靜態鏈結庫 static link librar...
一文梳理C 智慧型指標
c 智慧型指標主要是解決記憶體管理的問題,比如我們new delete需要成對的使用,否則會發生記憶體洩漏,智慧型指標很大程度上可以解決這個問題,智慧型指標是乙個類,當超出了類的作用類時,類會自動呼叫析構函式進行釋放 首先介紹關於類什麼時候呼叫析構函式 類的生命週期結束的時候 類的生命週期結束的標誌...
一文梳理同源策略與跨域技術
同源策略是乙個重要的安全策略,它用於限制乙個origin的文件或者它載入的指令碼如何能與另乙個源的資源進行互動。它能幫助阻隔惡意文件,減少可能被攻擊的媒介。1.1何謂同源?如果兩個 url 的 protocol port 如果有指定的話 和 host 都相同的話,則這兩個 url 是同源。這個方案也...