原创 閉包和lambda表達式的區別

閉包是lambda表達式運行時產生的對象。閉包之於lambda表達式正如實例至於類。

原创 boost property_tree read_json coredump

項目中使用boost::property_tree::read_json引發coredump,幾乎是穩定復現,而且每次core也基本都在同一個地方 但是,怎麼看也不太像會出core的樣子,所以就朝着內存寫飛的方向排查了。搞了一上

原创 type_info::before的用途

Compare order of types Returns whether the type precedes the type identified by rhs in some implementation-spec

原创 ActiveMQ LevelDB/Zookeeper bug

ActiveMQ問題排查 問題出現前使用activemq 5.11.1,排查問題中改用5.13.3: 背景 排查經過 結果 解決方案 總結 背景 公司內使用ActiveMQ(以下簡稱“MQ”)作爲消息中間件進行模塊間的消息傳

原创 c++ linker warning: defined in discarded section

/usr/bin/ld: .gnu.linkonce.t._ZSt18uninitialized_copyIN9__gnu_cxx17__normal_iteratorIPKN5boost7variantINS2_8weak_p

原创 指導新人串講總結

最近準備離職了,有一些工作要交接。以前線上的一些問題自己處理起來都是輕車熟路,現在要交接給別人來處理,才發現很多問題只有自己清楚,別人也只能現學現賣。而且心裏越是想盡快交接完畢,越是發現還有很多問題要交接,越是對之前自己安排的新人

原创 valgrind排查內存泄漏步驟

使用valgrind啓動程序 valgrind /path/to/your_program <your_program_args> valgrind 默認啓動memcheck工具,也就是我們用來排查內存泄漏的工具 如果你的

原创 最長公共子串

Q: 求兩個字符串的最長公共子串的長度 A:動態規劃轉移方程如下: 定義f[m][n] 爲字符串A前m個字符和字符串B前n個字符的最長公共子串的長度,則 if A[m] != B[n]: f[m][n] = max(f[m-

原创 UML中的類圖關係——依賴

依賴往往體現在一個類的方法中使用另一個類實例的局部變量

原创 tcmalloc爲什麼快,如何替換系統malloc

使用了thread cache,小塊的內存分配都可以從cache中分配。多線程分配內存的情況下,可以減少鎖競爭。 tcmalloc官方文檔見: https://gperftools.github.io/gperftools/tcmall

原创 從一次python程序的性能優化說開去

一門編程語言入門是容易的,至少大家都知道從hello world開始。但這次性能優化的經歷告訴我,“換語言”這件事是有門檻的。 這次性能優化是針對數據入庫流程中的一個環節(brief)做的。 我們常說解決問題重要,發現問題更重要。沒錯,這

原创 vim 設置默認編碼UTF-8

背景 每次VIM新建代碼文件時默認編碼都不是UTF-8,提交到代碼庫就亂碼 解決方案 to continue…

原创 glibc內存管理

我們調用free函數釋放之前分配的內存,其實是將內存還給glibc,但是glibc卻並不一定會將內存還給操作系統,導致使用top命令查看進程佔用的內存時,出現類似內存泄漏的現象。尤其在高併發的情況下,會出現內存暴增的問題。 爲避免內存暴增

原创 logging TimedRotatingFileHandler不支持多進程

python程序中,我們經常會使用logging進行日誌打印,logging的多線程支持得很好,但是對於多進程就無能爲力了 多個進程同時寫一份日誌文件會導致TimedRotatingFileHandler日誌切割失敗,親測,我的應用場景是

原创 異步編程

所謂異步編程就是減少不必要的等待,或者說在等待的時候做些其他的事,不白等。 在C++11之前,異步編程通常是用過回調的方式實現的。C++11後,參考<future>頭文件,我們可以有更多的實現異步編程的方式。