原创 vim和source insight使用對比

從2019年開始,比較多的使用了vim,之前一直是source insight用的多。爲什麼突然vim用的多了呢?因爲某些外部因素,公司開始逐步不讓用source insight了,再加上代碼庫的編譯都是在Linux機器上,直接在

原创 關於程序員寫文檔和發帖子的一些看法

年前,部門做知識管理,讓每個人把自己負責的模塊的一些文檔補齊一下,輸出一些代碼導讀或者問題定位之類的帖子。完後,看同事們發的帖子,果然每個人都有不同的行文邏輯和寫作風格,有的讀起來清晰易懂邏輯順暢,有的就比較發散很意識流,有的甚至

原创 DFS遞歸回溯求排列組合的C實現

深度優先搜索DFS本身很好理解,即按照一定順序遞歸遍歷一個圖,但是如何把所有的滿足要求的遍歷方式給求出來,這裏就需要結合回溯backtrace了。 在LeetCode中,回溯標籤下的很多題目都是求排列組合的,這也算是一類經典類型的

原创 小練習 - C語言實現一個極簡通用vector

C語言庫比較少,很大的原因就是沒有泛型,也沒有class。但是C語言作爲一個較爲底層的系統級語言,操縱內存還是很靈活的。模仿C++實現一個泛型vector,可以使用void*,使用的時候強轉對應類型,或者使用宏來封裝一些操作。 這

原创 VIM使用小技巧

VIM的優勢 如果做Linux C/C++開發,經常ssh到Linux服務器編輯各種文件,那麼熟練使用VIM絕對可以提高工作效率。 VIM的高效體現在多模式,可以很方便快速的對文件進行各種編輯修改,而這恰恰是在軟件開發中經常遇到的

原创 Linux C/C++ 共享庫so的搜索路徑和順序

共享庫的搜索 共享庫的搜索出了系統默認路徑外,還可以通過下面方法指定。首先通過環境變量指定: 環境變量 LIBRARY_PATH 編譯期查找動態鏈接庫路徑, 導出給Makefile或者在Makefile開頭指定;

原创 編程中的心流模式flow

週末看電影,接觸到了心流這個概念,挺有意思。瞭解心流理論,可以指導我們進入一個更爲高效愉悅的工作狀態。 電影《社交網絡》里程序員寫代碼出現了兩次"wired in", 一次是肖恩帕克去參觀扎克伯格的創業團隊,其中的一名程序員沒有迴

原创 C語言實現極簡遞歸下降JSON parser解析器

JSON字符串解析利用遞歸下降非常容易實現。本文實現了一個不支持數組,數字解析只支持正數long類型,只支持ASCII字符集的極簡JSON解析器,未實現的功能後面也比較容易擴展。 JSON語法分析 根據 https://tools.i

原创 非對稱加密RSA算法

RSA算法 RSA算法可以說是使用最爲廣泛的非對稱加密算法。在1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的,並取三人名字的首字母

原创 Golang筆記:iota常量生成器

Golang的常量表達式值在編譯期計算,iota是Golang提供的常量生成器,用於生成一組以相似規則初始化的常量。一個例子: const ( Zero = iota // 0 First

原创 Linux C信號編程:接管段錯誤信號SIGSEGV打印調用棧

有時候,線上環境沒有開啓coredump,這時把進程復位時的調用棧打印出來就非常有利於問題定位了。怎麼做呢?也很簡單,我們在程序中接管SGISEGV信號,在信號處理函數打印調用棧信息即可。 信號處理可以看:UNIX環境高級編程 內核機

原创 CMake的常見用法總結

初識CMake C/C++項目規模大了,Makefile腳本很可能也隨之膨脹變得難以維護,比如著名的KDE項目就因爲此原因切換到了CMake。編寫Makefile涉及了要自己用GCC命令來推導C/C++的頭文件依賴,自己用Makefi

原创 Linux C/C++ 程序員畢業工作三年多來的感想

2018年末,總結一下今年的工作感想。先回顧下前兩年的總結: Linux C/C++ 程序員畢業工作兩年多來的感想 Linux C/C++ 程序員畢業工作一年多來的感想 2018年以來,自己平時也思考了許多,隨手寫了幾篇心得感想:

原创 C++使用Protobuf舉例

首先安裝C++的Protobuf,按官方指導來: https://github.com/protocolbuffers/protobuf/tree/master/src 下載release包,解壓後編譯安裝即可。 用法舉例,先定義p

原创 快速寫代碼的經驗

對於常規的業務代碼,常見自動化腳本,偶爾迸發的想法原型,快速寫代碼是有套路可尋的,並且可以做針對性訓練。說說我個人的經驗: 常見的API和編程模型,要記住,就像背單詞一樣。 比如:寫代碼經常用到STL,那麼常見類和的API,跑跑dem