深入技術的理解

2021-08-20 11:42:32 字數 1711 閱讀 1049

資料庫八大優化:索引,合適屬性字段,join,union,事物,鎖表,外來鍵,資料庫語句優化

c++與lua通訊:c++與lua通過堆疊通訊,c++呼叫lua,通過壓棧資料,lua取到資料進行運算,再把資料返回棧頂,c++再通過api呼叫棧頂資料。lua呼叫c++,c先編寫函式,再註冊到lua的直譯器裡面,lua在table裡面通過全域性變數呼叫c++函式

執行緒間生產者消費者模式:生產者消費者模式間主要利用,緩衝佇列。互斥鎖和條件變數搭配做堵塞,最小消耗完成生產者和消費者執行緒間讀寫操作。協程可以看做不返回的函式,coroutine.create,coroutine.resume,coroutine.yield。相比較執行緒切換的搶占式,需要操作互斥量和通訊。協程能直接切換到另乙個協程,開銷十分小。

map與hashmap的理解:map底層是陣列+雜湊鍵值對,通過紅黑樹進行儲存管理,鍵值插入到容器中,紅黑樹規則進行儲存。hashmap底層是陣列+鍊錶,通過hash進行儲存,通過鍵值得到hash值,再通過hash值進行與或運算得到陣列小標,再到陣列上面進行鍊錶的儲存與查詢.

記憶體池實現:stl記憶體池的話主要是管理那些記憶體小碎片,低於128byte才進行管理,釋放**到記憶體池,當有需要用到小碎片的時候再從記憶體池中拿出來用。遊戲裡面的話我記得用到的就是副本的管理,一開始申請一塊包含50個副本的記憶體池。往後副本結束後放到記憶體池中,再建立副本的時候直接到記憶體池中去拿一塊相同大小記憶體的副本。

rpc通訊:遠端過程呼叫,主要是方便,因為隱藏了傳輸層協議,可以直接呼叫到對方伺服器,程式名,版本號中的某乙個函式已經引數的傳遞,程式設計師就跟呼叫自己本地的函式一樣

虛函式:基類中函式前面加virtual,基類例項化以後,就會出現乙個虛函式表。基類根據虛函式表尋找子類中可能過載的自定義函式。基類的建構函式不能加virtual,因為子類例項化的時候是先執行基類建構函式再執行子類建構函式,如果加virtual相當於覆蓋基類的構造了,其次是基類建構函式執行以後才給虛函式表分配指定記憶體。子類析構函式必須加virtual,因為基類釋放的時候必須先釋放子類析構函式,但是基類析構函式並不能找到子類析構函式,所以就需要基類通過虛函式表來找到子類析構函式。

c++指標變數有自己的儲存空間,裡面儲存著位址,指標通過位址指向對應的記憶體,指標變數列印出來的位址,加上*號的是指向的這片空間一般用於給這片空間賦值資料用的。傳值,傳引用以及傳指標都是乙個拷貝的過程,分別是拷貝變數,拷貝位址,拷貝指標值。

tcp包分為包頭和包體,包頭有操作碼和包長度,包體的話是位元組流報文段。tcp傳送資料的時候在緩衝區操作難免會出現沾包和拆包的情況出現,為了預防這種情況,一般有兩種處理方式:第一填充包長度,讀到一定的長度就開始讀下一段報文,第二約定邊界分隔符,讀到邊界分隔符則讀下一段報文。

protobuf:protobuf是跨平台、跨語言的通訊結構,資料結構以位元組序列化和反序列化進行通訊。乙個message包括多個字元段,乙個字元段包括段頭和段體。段頭由資料編碼型別和資料序號組成,屬於可變長32位資料,段體由定義長度和資料大小組成。一起組合成位元組流傳送過去,接收端再通過方法反序列化獲取到資料。.proto檔案通過命令編譯生成.pb.h檔案才得以呼叫。message裡面有三種限定符:required,optional.repeated

valgrind基於linux下執行態程式,能檢測記憶體陣列越界,記憶體未初始化,記憶體引用為釋放,記憶體洩露。通過命令檢測出來。記憶體洩露一般是程式申請的動態記憶體未釋放,new和delete列印追蹤,程式退出列印申請未釋放記憶體。windows下一般使用crtdbg,當然也可以自己重構new和delete。

--以上內容均為原創,會不定時修改不正確的東西

深入理解冪等技術

冪等 idempotent 是乙個數學與計算機學概念,常見於抽象代數中。在程式設計中,乙個冪等操作的特點是,其任意多次執行所產生的影響均與一次執行的影響相同。冪等函式,或冪等方法,是指可以使用相同引數重複執行,並能獲得相同結果的函式。冪等函式可以改變系統的狀態。例如,settrue 就是乙個冪等函式...

python深入 Python的深入理解

處理檔案和目錄 python 3 帶有乙個模組叫做 os,代表 作業系統 operating system os 模組 包含非常多的函式用於獲取 和修改 本地目錄 檔案程序 環境變數等的資訊。python 盡最大的努力在所有支援的作業系統上提供乙個統一的api,這樣你就可以在保證程式能夠在任何的計算...

深入理解C語言 深入理解指標

關於指標,其是c語言的重點,c語言學的好壞,其實就是指標學的好壞。其實指標並不複雜,學習指標,要正確的理解指標。指標也是一種變數,占有記憶體空間,用來儲存記憶體位址 指標就是告訴編譯器,開闢4個位元組的儲存空間 32位系統 無論是幾級指標都是一樣的 p操作記憶體 在指標宣告時,號表示所宣告的變數為指...