原创 【高效server實踐】--memcached網絡框架剝離實踐

memcached通過epoll(使用libevent)實現異步服務,主要由"主線程"和多個"worker線程"構成,主線程負責監聽網絡鏈接,並且accept連接。當監聽到連接accept成功後,把連接句柄FD傳給其中的一個空閒work線

原创 【高效server實踐】--協議先行

網絡協議是爲計算機程序之間進行數據交互的規則和標準,在正式寫server之前應該先定好協議,方便C/S兩端同時開發良。好的協議應該體量小,封包解包快,良好的擴展性,不可直接讀,跨語言,跨平臺。目前流行的幾種網絡協議對比如下:1:json是

原创 Linux下keepalived+Mysql主主同步實現數據庫高可用實踐

1):編輯mysql配置文件/etc/my.cnf,選定主主同步的數據庫 [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql sy

原创 【高效server實踐】--日誌模塊

log日誌模塊是軟件程序的另一基礎部分,開發者依賴於它進行debug,瞭解程序運行狀態,分析程序性能等,是程序對開發都打開的一扇窗戶一個健壯的log模塊,應該具體以下功能1:log可分級輸出log一般有五層分級即可:debug,info,

原创 【高效server實踐】--配置文件

配置文件是一個軟件程序的基礎部分,是用戶可以改變的程序運行的方法。配置文件一般是在程序啓動的時候讀取,並初始化程序,當然寫的好的配置模塊也支持在程序運行時重新加載配置文件,並做相關的變化。 良好的配置模塊應該具體以下功能 1:配置文件可以

原创 【高效server實踐】--memcached內存管理

    Memecache內存管理是採取預分配的形式,避免優先避免頻繁malloc和free帶來的內存碎片。Memcache是駐歐洲斷裂slab的形式來管理內存:每個slab頁默認大小爲1M,不同的slab裏會1到n個分割成大小不同chu

原创 基於c++的單鏈表,雙向鏈表操作以及環

1:單向鏈表:生成,頭插入,尾插入,某個元素後面插入,刪除某元素 #include<stdio.h> using namespace std; struct Node{ int data; Node* next; };

原创 Linux下socket優化

一:非阻塞socket 1:阻塞socket和非阻塞socket區別讀操作對於阻塞的socket,當socket的接收緩衝區中沒有數據時,read調用會一直阻塞住,直到有數據到來才返回。當socket緩衝區中的數據量小於期望讀取的數據量時

原创 Mysql數據優化需知

一:事務隔離級別:    1:未提交讀(髒讀:事務回滾導致之前讀取的數據丟失)    2:提交讀(推薦)    3:重複讀(幻讀,mysql默認)    4:串讀(事務鎖)    Mysql設置語句:    SET GLOBAL TRA

原创 【高效server實踐】--旁路監控系統

寫完server程序運行起來後,並非就高枕無憂了,還需要旁路的監控系統時刻關注程序的健康程度,並做相應的自動化干預。一個完善的server監控系統應該涵蓋以下方面1:程序down掉,自動拉起在linux環境下,只要簡單的shell腳本即可

原创 基於c++實現的幾種排序算法

插入排序是有一個已經有序的數據序列,在這個已經排好的數據數列中插入一個數,要求插入後此數據序列仍然有序。這種算法適用於少量數據的排序,時間複雜度爲O(n^2)void insertsort(int a[]