原创 C++兩個類相互引用的問題

c++中常會出現兩個類相互引用的問題,如果直接相互引用對方的頭文件,編譯時會報錯,下面給出一個例子 A.h #ifndef _A_H #define _A_H #include "B.h" class A { public:

原创 ./configure make make install 以及gcc 使用庫的一些問題

首先 ./configure,make,install 分別幹了些什麼 ./configure 一個shell腳本,檢查當前的編譯環境,比如編譯器,機器位數,從而根據這些參數生成Makefile,爲下一步編譯做準備,此時也可以採用

原创 Mac 安裝boost庫

最近在看一本書關於服務端多線程編程的書,裏面提到了一些規避C++內存使用問題的方案,其中提到了解決內存泄露問題(局部變量指針在運行出作用域的時候忘記delete 對應的內存)的方法是使用boost 庫,於是開始在macbook上安

原创 Unix 網絡編程第一章的demo

linux 下gcc編譯通過 客戶端 #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #

原创 關於mysql的內連接,外連接,交叉連接

關係型數據庫中的連接分爲三類,下面以實際的查詢結果爲例,來解釋內連接,外連接,交叉連接的區別與聯繫。 舉一個比較常見的例子,產品表和生產商表 產品表(products)中存儲着產品ID,生產該產品的生產商ID,產品名,產品價格,

原创 git rev-parse 命令

git rev-parse –git-dir 顯示版本庫.git目錄所在位置 git rev-parse –show-toplevel 顯示工作區根目錄 git rev-parse –show-prefix 所在目錄相

原创 python中的__dict__,__getattr__,__setattr__

python class 通過內置成員__dict__ 存儲成員信息(字典) 首先用一個簡單的例子看一下__dict__ 的用法 class A(): def __init__(self,ax,bx):

原创 一個Trie樹的簡單實現

/*trial 樹*/ #include <iostream> const int branchNum=26;//英文單詞的基爲26個英文字母 struct Trie_Node { bool is_Str; Tr

原创 shared_ptr

shared_ptr是一個最像指針的”智能指針”,是boost.smart_ptr庫中最有價值、最重要的組成部分,也是最有用的,Boost庫的許多組件–甚至還包括其他一些領域的智能指針都使用了shared_ptr。抱歉,我實在想不

原创 結構體的位域

在看一個構造ip包頭的的代碼時,出現瞭如下情況。 struct ip{ unsigned char version:4; // 版本 unsigned char hlen:4; // 首部

原创 Python Pyro4

最近在項目中用到一個python RPC框架 Pyro4, 中文文檔比較少,在這裏記錄一下關於學習這個庫的理解。 RPC的概念 首先什麼是RPC,RPC是遠程過程調用。在分佈式系統中,有兩臺服務器A,B 。 一個應用部署在A服務器

原创 結構體sizeof()的原則

遵循兩個原則(linux+gcc環境): 整體空間是佔用空間最大的成員(的類型)所佔字節數的整數倍。若最大成員類型所佔字節數超過4,如double是8,則整體空間是4的倍數即可。 數據對齊原則—內存按結構體成員先後順序排列,當排

原创 關於linux io模型

下面是一些常見的linux io模型 首先是基本linux io模型矩陣 同步阻塞 最常用的一個模型是同步阻塞 I/O 模型。在這個模型中,用戶空間的應用程序執行一個系統調用,這會導致應用程序阻塞。這意味着應用程序會一直阻塞,直

原创 Valgrind 筆記

概述 Valgrind 是一個工具性的框架,可以用來構建動態分析工具。 Valgrind提供的工具可以動態的檢測許多內存管理和線程的bug,從細節的角度描述你的程序,當然,你也可以用valgrind來構建新的工具。 快速瞭解 先

原创 netstat

netstat -a (all)顯示所有選項,默認不顯示LISTEN相關 -t (tcp)僅顯示tcp相關選項 -u (udp)僅顯示udp相關選項 -n 拒絕顯示別名,能顯示數字的全部轉化成數字。 -l 僅列出有在 Li