原创 C++中兩個類互相包含

今天突然想起一個C++的問題,如果一個類A包含類B的實例,而實例B也包含另一個類A,這種方式的代碼應該怎麼寫,按照一般的開發者的想法的代碼如下: 文件A.h #include "B.h" #include <iostream>

原创 mesos中{}的巧妙使用

昨天在看mesos 0.10版本的代碼時,看到如下的一段代碼,對其中的一對{} 表示好奇。 { flags::Flags<logging::Flags, master::Flags> flags; flags.

原创 Python 編碼爲什麼那麼蛋疼?

據說,每個做 Python 開發的都被字符編碼的問題搞暈過,最常見的錯誤就是 UnicodeEncodeError、UnicodeDecodeError,你好像知道怎麼解決,遺憾的是,錯誤又出現在其它地方,問題總是重蹈覆轍,str

原创 七種尋址方式

立即尋址方式 操作數作爲指令的一部分而直接寫在指令中,這種操作數稱爲立即數,這種尋址方式也就稱爲立即數尋址方式。 立即數可以是8位、16位或32位,該數值緊跟在操作碼之後。如果立即數爲16位或32位,那麼,它將按“高高低低”的原則

原创 do{...}while(0)在宏定義中的作用

如果你是一名C程序員,你肯定很熟悉宏,它們非常強大,如果正確使用可以讓你的工作事半功倍。然而,如果你在定義宏時很隨意沒有認真檢查,那麼它們可能使你發狂,浪費N多時間。在很多的C程序中,你可能會看到許多看起來不是那麼直接的較特殊的宏

原创 引用計數與垃圾收集之比較

本質上來說,引用計數策略和垃圾收集策略都屬於資源的自動化管理。所謂自動化管理,就是在邏輯層不知道資源在什麼時候被釋放掉,而依賴底層庫來維持資源的生命期。 而手工管理,則是可以準確的知道資源的生命期,在準確的位置回收它。在 C++

原创 strcpy和memcpy的區別

strcpy和memcpy都是標準C庫函數,它們有下面的特點: strcpy提供了字符串的複製。即strcpy只用於字符串複製,並且它不僅複製字符串內容之外,還會複製字符串的結束符。 函數原型:char* strcpy(cha

原创 中介者模式

意圖 用中介者對象封裝一系列對象的交互,從而降低其他對象的耦合度,提高其他對象的複合性 結構圖 使用場景 一組對象相互之間有複雜的通信方式 一個對象與其他的很多對象進行關聯並且直接進行相互之間的通信 一個行爲的實現需要其它多個

原创 LD_LIBRARY_PATH的使用

最近在公司的服務器上編譯c++代碼,由於是B/S結構的程序,所以需要將程序移植到另一臺機器上,但是,當把程序scp到另一臺機器上時,不能運行程序,出現了類似下面的提示: error while loading shared lib

原创 Longest Palindromic Substring

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.

原创 linux中ldconfig的使用介紹

ldconfig是一個動態鏈接庫管理命令,其目的爲了讓動態鏈接庫爲系統所共享。 ldconfig的主要用途 默認搜尋/lilb和/usr/lib,以及配置文件/etc/ld.so.conf內所列的目錄下的庫文件。搜索出可共享的動態

原创 C++中間結果溢出

在C++中有可能因爲數據的值超出了數據類型所表示的範圍而造成錯誤地結果,下面來詳細分析一下。 有如下代碼: short int a = 234; short int b = 456; short int c = 6; cout <

原创 根據value值對map進行排序

今天在做筆試題的時候發現需要根據value值對map進行排序,通過查資料發現其基本思路是通過講map中的鍵值對轉化存儲到vector中進行排序得到的。 代碼如下: #include<iostream> #include<vect

原创 Makefile講解

最近接觸到很多C++項目,其中很多項目中含有大量的Makefile文件,但是由於環境的不同Makefile也帶來了很多問題,所以決定以ice中的多個Makefile文件爲例進行了介紹,ice中的文件結構如下: . ├── Buil

原创 C++11之lambda函數

最近一直在看mesos的源代碼,mesos中用到了很多C++11的新特性,lambda函數就是其中的一個。對於lambda函數簡單的來說就是java中的匿名函數。 語法定義 [capture] (paramenters) muta