原创 vi的使用及gcc編譯過程

1 文本編輯工具vi  vi是Linux/Unix底下最常用的文本編輯器。vim是vi的升級版本,它不僅兼容vi的所有命令,而且還加入了一些新的特性。 1.1 vi的三種工作方式 1.2 編輯方式 光標定位  M 移動光標到頁面中央 L移

原创 makefile書寫規則

1 makefile 基本規則 TARGET … : DEPENDENCIES …  COMMAND  …·目標(TARGET)程序產生的文件,如可執行文件和目標文件;目標也可以是要執行的動作,如“clean”。·依賴(DEPENDENCI

原创 linux下共享庫的製作及常見的問題

將自己寫的鏈表生成共享庫  1、編譯 2、設置庫名:   庫的名稱格式:lib + XXX + 版本號.so (庫的名稱爲XXX)-shared 生成共享文件庫 -fpic 動態鏈接  3、把頭文件和.so文件放到系統目錄下(使用共享庫了,

原创 一致性哈希算法

原博客:https://www.cnblogs.com/lpfuture/p/5796398.html    http://www.jianshu.com/p/e8fb89bb3a61 1 背景  一致性哈希算法大多用來解決服務器負載均衡的

原创 二叉樹的簡單實現

二叉樹數組表示 Tree.h: #ifndef _TREE_H_ #define _TREE_H_ #include <iostream> using namespace std; typedef int ElemType; //元

原创 虛擬機串口與主機串口通信·小程序(上)

主機串口用到的工具是SSCOM32,虛擬機串口工具是VSPD。即通過VSPD工具,可以將二者的串口相連,可以想象成有一根串口線連接了主機和虛擬機。<br>第一步 確定端口打開VSPD,如下圖,點擊“Port pairs”-“create p

原创 Socket-IO複用技術

(上一篇地址)前面使用socket完成一個服務器對應多個客戶端的小實驗的時候,針對TCP連接,我們必須得創建新的進程來與新的客戶端通信。那麼,就意味着,1000個客戶端就有有1000個server進程,這顯然是不實際的。如果,我們可以提前把

原创 IPC之信號量·即時通訊小程序(三)

上次說到解決併發的問題,需要用到信號量。下面,簡單複習一下。 信號量 信號量是一種變量,它只能取正整數值,對這些正整數只能進行兩種操作:等待和信號。(在我的理解,信號量就是用來訪問一些臨界資源而設計的)用兩種記號來表示信號量的這兩種操作:P

原创 Socket封裝之聊天程序(一)

  之前使用IPC編寫過聊天程序,但是這樣僅能在同一臺計算機上進行聊天;要使得在不同的計算機(不同的IP+端口)上也能進行通信,就需要用到socket編程。前面說到,要處理多客戶端的響應問題,需要I/O複用,即調用select或者epoll

原创 分佈式負載均衡架構

參考內容:http://www.jianshu.com/p/fc268327d299?from=timeline<br> 1 負載均衡(Load balancing) 在網站成立初期,我們一般都使用單臺機器提供集中式服務,但是隨着業務量越來

原创 Socket封裝之聊天程序(二)

  今天,學習一下socket的封裝。 類圖   首先,我們把需要封裝的各個類初步的設計如下:   接下來,我們建立類與類之間的關係:  其中,CStream類可有可無,這個類是用來封裝各種讀寫流的。 socket封裝 stream類 st

原创 socket網絡編程之TCP、UDP

之前說的用於進程間通信的幾種方式:消息signal、管道pipe、消息隊列msg、共享內存shm、信號量sem。都只適用於一臺主機上的進程間通信,那麼如何實現兩臺計算機之間的進程通信呢?所以,來了解一下異地進程通信。 1 異地進程通信 協

原创 免安裝版MySQL的安裝和卸載

免安裝版的mysql安裝,說白了就是用命令安裝。跟在linux下安裝軟件一樣的。 安裝 第一步首先,去官網上http://dev.mysql.com/downloads/mysql/ 下載安裝包,後綴名爲.zip的。然後,解壓縮。第二步如果

原创 Linux C 文件鎖的操作

文件鎖的類型 <br> 1 讀鎖 共享鎖,如果A進程對文件的某區域加了讀鎖,B進程也可以在此區域加讀鎖,但是不能對此區域加寫鎖。 2 寫鎖 獨佔鎖,如果A進程對文件的某個區域加了寫鎖,B進程就不能對此區域加寫鎖,也不能對此區域加讀鎖。<br

原创 Socket封裝之聊天程序(三)

  今天,完成一下epoll的封裝。 類圖   首先,還是畫下類圖,初步設計一下。  具體函數,我們下面詳解。 epoll封裝 EpollBase類 CEpollBase.h: class CEpollBase { public: