原创 STL string 類型探祕

一【概述】 在C語言中,我們一般用char數組來定義一個字符串,那麼既然是數組我們往往需要提前判斷字符串的最大長度,可問題是誰也不知道這最大長度究竟有多長,而且這也是很多編程BUG的根源。那麼在C++標準庫中,我們可以通過string類型

原创 log4cplus源碼分析

1【引題】 雖然從本科起就學的C++,然後在工作的2年時間中也不斷的在用C++寫代碼,雖然基本的語法和一些常用的庫函數已經滾瓜爛熟,可是總覺得自己寫的代碼還不是很專業,特別是看到那些老外們寫得代碼,從設計,到編碼風格,再到各種編程技法的使

原创 一個數據庫死鎖問題

一【場景】 之前系統在運行過程中,老是報一個詭異的死鎖檢測異常: Error Code: 1213 Deadlock found when trying to get lock; try restartingtransaction。

原创 C語言字符數組的初始化研究

有一天一個朋友問了我一個很有意思的問題。他問我如果用C代碼在一個函數裏面寫一行字符串初始化代碼,如“char str[]="hello world",那麼該字符串是如何被初始化的呢? 開始我不以爲然,立刻回答:該字符串應該是程序在運行時,

原创 Mybatis的一級緩存導致的異常問題解決

一【問題】 因爲有些敏感字段是必須加密存儲的,爲了不讓數據安全存儲的要求影響正常的業務邏輯,就寫了個MyBatis插件來解決這個問題。之前一直都沒出什麼問題,可是後來有同事告訴我這個插件有時會出現解密異常的錯誤。 二【分析】 因爲這個

原创 解決了一個Web網頁顯示不全的BUG

一【BUG描述】 最近開發一個Web系統的過程中遇到了一個詭異的BUG,花了2天時間解決,感覺如釋重負。 這個BUG的現象是這樣的:一個很普通的JSP網頁,本來顯示很正常,後來我在這個html頁面上加了一些控件元素,並修改了下CSS, J

原创 進程內存佔用監控腳本

最近做系統維護的時候,發現系統裏面總有那麼幾個進程的內存佔用量不斷的在往上漲,直接導致整個系統崩潰。因爲該服務器上同時還運行着其他幾個服務進程,爲了不讓其受到影響,就寫了個shell腳本,發現有進程的內存佔用率達到上限時,就將其殺死。 該

原创 關於LINUX的文件鎖的一些心得

在之前的一個項目中用到了文件鎖,從網上粗略的查了下資料就匆匆忙忙的用上了,雖然當時也有一些疑惑,但是由於項目進度比較緊,也沒有多想。現在,終於有點時間可以稍微靜下心來看看這個文件鎖到底是怎麼一回事了。 從內核實現的角度來看,每當創建一把文

原创 光伏數據採集分析系統

這個數據採集系統可以算作一個物聯網項目。主要就是通過工控機的串口連接各種類型的智能直流電錶、智能交流電錶、CR1000環境數據採集器和逆變器,然後實時採集各種相關數據存到本地,然後統一上傳到雲平臺進行統計分析並生成各種報表。這一堆設備裏面

原创 智能客服客戶端程序開發

這個國慶節作死,答應別人在七天內做2個項目。智能客服項目是其中一個,當時是答應給隔壁兄弟團隊做的。他們說實在搞不定了,節後要上線,我就因爲隨口說了一句:“這有什麼難的”,結果禍從口出,這事情就落我頭上了。 錄音識別是智能客服大項目計劃裏面

原创 實現一個高性能的斷路器

1背景 之前運維的同事時不時的提起儘快爲我們的金融網關係統寫個熔斷模塊,不然心理總覺得不踏實,擔心哪天某個業務系統掛了,直接把網關給拖垮。趁着現在金融行業不景氣,股民還是韭菜狀態沒心思炒股,系統流量不大,時間也比較充裕的大背景下就先把這事

原创 C++異常類設計

一【概述】 在平時的開發過程中,我發現很多程序員都不願意使用異常類。問他們爲什麼不用,回答無非有以下幾種:1. 使用異常類太麻煩了,沒有返回錯誤碼的方式方便;2. 已經習慣C語言中使用以返回錯誤碼的方式來處理異常情況了;3. C++的異

原创 內存池的設計

一【內存池概述】 內存池是一種存在於進程中,對程序運行時動態分配的內存進行管理的機制。它主要有三個功能:1減少內存碎片;2防止內存泄露;3減少因頻繁請求內存動態分配而造成系統調用過於頻繁。 第一點:內存碎片分爲內部碎片和外部碎片。內部碎片