leveldb是乙個c++庫,它有提供標準的c介面,標頭檔案在include/leveldb/c.h中
開發過程,以新增乙個簡單的計算功能為例:
修改leveldb原始碼
在include/leveldb/c.h中新增以下宣告:
externint andre_add(const
int a,const
int b);
在db/c.cc中新增andre_add對應的實現:
int andre_add(constint a,const
intb)
重新編譯安裝leveldb原始碼:
fun@fun:~/workspace/study/leveldb/leveldb$ make clean && makefun@fun:~/workspace/study/leveldb/leveldb$ sudo cp libleveldb.a libleveldb.so.1.12 /usr/lib/
fun@fun:~/workspace/study/leveldb/leveldb$ sudo cp -r include/leveldb /usr/include/
至此,leveldb庫安裝完畢。
levigo二次開發:
為了方便開發,我將 fork了乙份到自己的帳號下
執行以下操作將levigo安裝到本地:
在$goroot下找到對應的原始碼,這裡以修改options.go為例,在其中新增以下function以呼叫andre_add:
func andre_add(a,b int) int
儲存後,重新編譯該**:
編譯通過,向github提交修改檔案
至此,在go中便可呼叫levigo.andre_add()了。
AspectJ基於xml和基於註解
一 基於xml 執行的切入點中具體方法有返回值,則方法結束會立即執行後置通知,然後再執行環繞通知的放行之後的 2 連線點即所有可能的方法,切入點是正真被切的方法,連線點方法名 其中,只有環繞通知的切入點引數不一樣,是可以放行的切入點 3 異常通知是處理異常 切面類中的異常通知的方法引數列表中異常引數...
拓撲排序(基於dfs 基於佇列)
dfs函式的返回值表示是否成環,若存在有向環,則不存在拓撲排序。不包含有向環的有向圖稱為有向無環圖 dag 可以借助dfs完成拓撲排序,在訪問完乙個結點時把他加入當前拓撲序的首部。舉個栗子 比如乙個 1,2 1,3 2,3 的有向無環圖,就先搜尋1,再遞迴搜尋2,再搜尋3,3沒有出度了,於是放進拓撲...
基於insert update delete的注入
inset注入原理 所謂inset注入就是指我們前端註冊的資訊會被後台通過insert操作插入到資料庫裡邊去,若此時後台沒有做出相應的處理就會構成insert注入。insert注入方法 insert用法例如 insert into member username,pw,phonenum,email,...