向量檢索ANN(Approximate Nearest Neighbor Search),指的是對于一個(gè)query向量,從向量庫中找到和它距離最接近的k個(gè)向量。這是一個(gè)典型的...
向量檢索ANN(Approximate Nearest Neighbor Search),指的是對于一個(gè)query向量,從向量庫中找到和它距離最接近的k個(gè)向量。這是一個(gè)典型的...
bazel是什么:https://zhulao.gitee.io/blog/2019/04/05/%E7%BC%96%E8%AF%91%E6%9E%84%E5%BB%BA%E...
shell腳本 目錄 啟動(dòng)行參數(shù)解析[#%E5%90%AF%E5%8A%A8%E8%A1%8C%E5%8F%82%E6%95%B0%E8%A7%A3%E6%9E%90] 參數(shù)...
在分布式的服務(wù)器環(huán)境下,設(shè)計(jì)到大量的進(jìn)程以及相同進(jìn)程的不同實(shí)例,需要一種有效的進(jìn)程id來做唯一標(biāo)識。 對于這種數(shù)據(jù)結(jié)構(gòu)的需求是: 盡可能簡單,易讀 省空間 對于游戲的服務(wù)器進(jìn)...
設(shè)計(jì)模式里面有一個(gè)很重要的思想,原話可能是“不要依賴于具體,而是要依賴于抽象”。在軟件的設(shè)計(jì)中,這種思想可謂算是指導(dǎo)思想了。比如系統(tǒng)要設(shè)計(jì)一個(gè)rpc服務(wù)。一種比較好的設(shè)計(jì)思路...
在開發(fā)中,經(jīng)常有這樣的場景,把一些功能打包為一個(gè)動(dòng)態(tài)庫,這個(gè)庫作為工具人,可以被其他不同進(jìn)程鏈接,然后把自己的功能提供給對應(yīng)鏈接的目標(biāo)程序。這也是動(dòng)態(tài)庫最常見的用法,如下所示...
最近遇到一個(gè)問題,有兩個(gè)底層依賴模塊,分別是dep1和dep2。在dep1中有調(diào)用dep2的代碼。本地開發(fā)完畢后,合入分支編譯報(bào)錯(cuò) 提示符號未定義。但是,本地編譯是正常的,在...
在游戲里面有各種“隨機(jī)”的需求,比如從n個(gè)用戶里面隨機(jī)給m個(gè)發(fā)獎(jiǎng)勵(lì)。那么,要如何實(shí)現(xiàn)呢?簡單的來說,可以調(diào)一個(gè)stl的函數(shù)來實(shí)現(xiàn),偽代碼如下: 那shuffle背后是怎么實(shí)現(xiàn)...
假設(shè)有個(gè)場景,希望在程序在執(zhí)行的時(shí)候,調(diào)用函數(shù)的時(shí)候可以自動(dòng)打印出它的調(diào)用棧?;蛘哒f希望自動(dòng)打印出在這個(gè)函數(shù)中的執(zhí)行時(shí)間。比如這段程序,希望執(zhí)行到任何函數(shù)的時(shí)候,都打印出它的...
Protobuff是一個(gè)與開發(fā)語言、平臺無關(guān)序列化的工具,廣泛應(yīng)用于需要跨進(jìn)程傳輸數(shù)據(jù)的場景。除此之外,PB還提供了強(qiáng)大的反射能力??梢岳梅瓷涞募记?,可以大量降低重復(fù)的代碼...
protobuf 中提供的編譯器protoc,支持開發(fā)者自定義plugin的擴(kuò)展,根據(jù).proto文件生成各種各樣的代碼。官方文檔 https://developers.go...
lua可以通過與C函數(shù)相互調(diào)用來擴(kuò)展程序功能,在C中嵌入lua腳本既可以讓用戶在不重新編譯代碼的情況下修改lua代碼更新程序,也可以給用戶提供一個(gè)自由定制的接口,這種方法遵循...
打印程序的調(diào)用棧是一種常見的debug工具,最常用的就是backtrace函數(shù)去獲得堆棧信息。不過,這個(gè)函數(shù)的調(diào)用成本很高,是容易使用不當(dāng),造成性能問題。在這里整理幾種獲得程...
jemalloc 是一款內(nèi)存分配器, 除了可以提高分配內(nèi)存的效率之外。jemalloc還可以通過profiling機(jī)制來發(fā)現(xiàn)并定位內(nèi)存泄漏。 1. 安裝 官方提供的insta...
年后在微信讀書上面看到兩本關(guān)于linux shell的書,分別是《linux shell腳本攻略》 和 《linux 性能優(yōu)化》。漲了寫奇怪的姿勢,Mark在這里。 tee ...
對于一個(gè)函數(shù)調(diào)用,比如main 調(diào)用 square,在進(jìn)入square的首地址后,才會進(jìn)行壓棧(push rbp)。如果在調(diào)用squere的函數(shù)前,已經(jīng)把squere首地址插入跳轉(zhuǎn)到其他函數(shù)的匯編后,square函數(shù)的push rbp已經(jīng)被覆蓋了,square函數(shù)的棧幀并不會被真正的建立。
一種基于so的C/C++服務(wù)熱更新方案對于線上的服務(wù),經(jīng)常會出現(xiàn)xxx服務(wù)的某一段邏輯里面有bug,需要緊急修復(fù)。對于無狀態(tài)的服務(wù),可以修復(fù)之后,直接重啟。但是,對于有狀態(tài)的服務(wù),重啟意味著內(nèi)存狀態(tài)丟失和長連接斷...
0000000000401106 <_Z6squarei>:
401106: 55 push %rbp
401107: 48 89 e5 mov %rsp,%rbp
40110a: 89 7d fc mov %edi,-0x4(%rbp)
40110d: 8b 45 fc mov -0x4(%rbp),%eax
401110: 01 c0 add %eax,%eax
401112: 5d pop %rbp
401113: c3 retq
0000000000401114 <main>:
401114: 55 push %rbp
401115: 48 89 e5 mov %rsp,%rbp
401118: bf 64 00 00 00 mov $0x64,%edi
40111d: e8 e4 ff ff ff callq 401106 <_Z6squarei>
401122: b8 00 00 00 00 mov $0x0,%eax
401127: 5d pop %rbp
401128: c3 retq
401129: 0f 1f 80 00 00 00 00 nopl 0x0(%rax)
一種基于so的C/C++服務(wù)熱更新方案對于線上的服務(wù),經(jīng)常會出現(xiàn)xxx服務(wù)的某一段邏輯里面有bug,需要緊急修復(fù)。對于無狀態(tài)的服務(wù),可以修復(fù)之后,直接重啟。但是,對于有狀態(tài)的服務(wù),重啟意味著內(nèi)存狀態(tài)丟失和長連接斷...
整理程序調(diào)試的一些踩坑,經(jīng)驗(yàn)整理,注意事項(xiàng)等。 C++后端開發(fā)的踩坑整理http://www.itdecent.cn/p/b67222570785[https://www....
整理C++模板在開發(fā)中的一些使用技巧 編譯期靜態(tài)檢查 實(shí)現(xiàn)可以檢查類型的memcpy (避免手滑拷貝了兩個(gè)不一樣長度的對象) 根據(jù)T是否是某個(gè)類的派生類 根據(jù)T是不是int匹...
1. LD_PRELOAD 實(shí)現(xiàn)注入的原理 LD_PRELOAD是linux系統(tǒng)中的一個(gè)環(huán)境變量,它可以指定優(yōu)先加載某個(gè)動(dòng)態(tài)庫。當(dāng)主程序中有相同的符號出現(xiàn)在不同的動(dòng)態(tài)庫中,會...