原创 char*做map的key使用時的問題

        今天在工作中使用到map時,map中用char*字符串做key,後面通過key做find操作,發現找不到之前插入的元素。通過網上搜索,得出結論,find時,默認使用== 進行判斷,char*只是指針,如果兩個字符串值相同,

原创 RabbitMQ官網教程3——發佈訂閱

        前面我們創建了工作隊列,工作隊列中每個任務只分發給一個worker。現在我們要把一個消息分發給多個消費者,這種模式就是發佈訂閱。爲解釋這種模式,我們將構建一個簡單的日誌系統,它包括兩個程序——一個提交日誌,另一個接收並打印

原创 多線程編程-條件變量

http://blog.chinaunix.net/uid-21411227-id-1826890.html 1.引言: 條件變量是一種同步機制,允許線程掛起,直到共享數據上的某些條件得到滿足。條件變量上的基本操作有:觸發條件(當條件變爲

原创 如何定位CPU佔用過高問題

程序運行後出現CPU佔用過高,一般是代碼有死循環等。top命令可以查看CPU使用情況,找到問題進程。 對CPU使用過高的進程的所有線程進行排序 ps H -e -o pid,tid,pcpu,cmd --sort=pcpu | grep

原创 linux環境下的內存泄漏檢查

        Linux下的mtrace工具可以幫助我們檢查程序中是否有內存泄漏。GNU擴展函數mtrace會爲內存分配函數(malloc, realloc, memalign, free等)註冊hook,記錄malloc/free信息

原创 最長公共子串問題

程序員代碼面試指南:最長公共子串問題 動態規劃:dp[M][N]矩陣,d[i][j]表示必須以str1[i]和str2[j]爲公共子串的最後一個字符時,公共子串的長度。 1. 第一列,如果str1[i]==str2[0],則dp[i][0

原创 最長公共子序列問題

程序員代碼面試指南:         給定兩個字符串str1和str2,返回最長公共子序列,存在多個時返回任意一個即可。 動態規劃:         str1長度設爲M,str2長度設爲N,構建dp[M][N]。d[i][j]表示str1

原创 RabbitMQ官網教程4——路由

        前面的章節我們創建了一個簡單的日誌系統,可以把消息廣播到許多接收者。本節我們將增加一個特性——只訂閱一部分消息。比如只把錯誤日誌輸出到文件,同時把所有日誌輸出到屏幕。 綁定         前面的例子裏我們已經創建過綁定

原创 實現一個getMin功能的棧

    題目:實現一個特殊的棧,在實現棧基本功能的基礎上,再實現返回棧中最小元素的操作。要求pop、push、getMin時間複雜度都是O(1),設

原创 RabbitMQ官網教程2——工作隊列

        第一節中我們實現了簡單的發送接收消息。現在我們創建一個工作隊列,用於在多個worker中分配耗時任務。工作隊列是爲了避免立即執行資源密集型任務並等待其完成,有了工作隊列,就可以稍後再處理任務。我們把任務封裝成消息併發送到隊

原创 C++11 bind函數

        bind標準庫函數,定義在頭文件functional中。可以將bind函數看作一個通用的函數適配器,它接受一個可調用對象,生成一個新的可調用對象來“適應”原對象的參數列表。         調用bind的一般形式爲:   

原创 用兩個棧實現一個隊列的基本功能

    題目:用兩個棧實現隊列的基本功能。     實現:一個棧用於接受輸入,一個用於輸出,僅當輸出棧空時,將輸入棧中的數據一次性壓入輸出棧。以下實現中,該動作在pop和front中進行。     C++實現如下: template <t

原创 memmove和memcpy函數

兩個函數都在頭文件string.h中定義,函數原型爲:         void * __cdecl memcpy(void *dst, const void *src, size_t count);         void * __c

原创 矩陣最短路徑和

程序員面試指南中的一個題目:         給定一個矩陣m,從左上角開始每次只能向右或向下走,最後達到右下角的位置,路徑上所有數字的累加和就是路徑和,求所有路徑中的最小路徑和。         根據動態規劃實現,構建矩陣dp,dp[i]

原创 RabbitMQ官網教程5——topic

        前面的章節我們改進了日誌系統,利用direct交換機,可以選擇性的接收日誌。但是,這仍然有侷限,不能基於多個規則進行路由。在日誌系統裏,我們可能不只根據安全級別訂閱日誌,還可能想根據日誌源來訂閱。就像Unix 工具sysl