原创 MySQL之 索引

1、聚簇索引和非聚簇索引的區別? 聚簇索引:將數據存儲與索引放到了一塊,索引結構的葉子節點保存了行數據 非聚簇索引:將數據與索引分開存儲,索引結構的葉子節點指向了數據對應的位置        在innodb中,在聚簇索引之上創建的索引稱之

原创 Thrift框架(一):安裝與編寫c++ demo

目錄   1、Thrift基礎 1.1 數據類型 1.2 通訊支持 2、Linux環境安裝Thrift 3、編寫c++測試用例 3.1 編寫thrift文件 3.2 生成cpp文件 3.3 編寫客戶端client.cpp 3.4 服務端代

原创 網絡粘包解包問題雜談

1、如何解決粘包問題?        在設計網絡協議時,可能會存在粘包、丟包或者包亂序問題,但TCP協議時可靠性協議,大多數情況不存在丟包和亂序問題,但UDP協議如果不能接受少量丟包,就必須自己設計有序和可靠性傳輸機制(比如:RTP協議、

原创 Redis教程:事件、客戶端和服務器

1 事件 Redis服務器是一個事件驅動程序,服務器需要處理以下兩類事情: 文件事件(file event):Redis服務器通過套接字與客戶端(或者其他Redis服務器)進行連接,而文件事件就是服務器對套接字操作的抽象。服務器與客戶端(

原创 網絡協議收發數據問題

1 如何收取數據?        對於收數據,當接受連接成功得到 clientfd 後,我們會將該 clientfd 綁定到相應的 IO 複用函數上並監聽其可讀事件。當可讀事件觸發後,調用 recv 函數從 clientfd 上收取數據(

原创 Redis教程:數據對象分析(一)

目錄 1 五種基本數據對象 2 數據結構對象分析  2.1 類型 2.2 編碼與底層實現 2.3 編碼轉換 1 五種基本數據對象 圖1 redis數據對象 2 數據結構對象分析       Redis中的每個對象都由一個redisObj

原创 [HTTP協議] 基礎知識

1、什麼是Http協議無狀態協議?怎麼解決Http協議無狀態協議? 無狀態協議對於事務處理沒有記憶能力。缺少狀態意味着如果後續處理需要前面的信息 無狀態協議解決辦法: 通過1、Cookie ; 2、通過Session會話保存。 2、coo

原创 Linux之操作系統雜談

1 標準庫函數和系統調用的區別 系統調用:通向操作系統本身的接口,是面向底層硬件的。通過系統調用,可以使得用戶態運行的進程與硬件設備(如CPU、磁盤、打印機等)進行交互,是操作系統留給應用程序的一個接口。 標準庫函數:庫函數調用則是面向應

原创 MySQL之 事務日誌: redo和undo

目錄 1 概述 2 redo日誌 2.1 redo log和二進制日誌的區別 2.2 redo日誌的基本概念 2.3 日誌塊(log block) 2.4 redo log的格式 2.5  日誌刷盤的規則 2.6 數據頁刷盤的規則及che

原创 cookie、session和token原理

目錄 1 背景      2 cookie 2.1 cookie原理 2.2  cookie面臨的問題 3 sesssion 3.1 sesssion原理 3.2  sesssion面臨的問題 4 token 4.1 token原理 4.

原创 ZooKeeper:介紹和原理

目錄 1 ZooKeeper簡介 2 ZooKeeper基本概念 2.1 文件系統 2.2 通知機制 3 分佈式系統的問題 3.1 服務的動態註冊和發現 3.2  Job協調問題 4 Zookeeper作用與特性 4.1 作用 4.2 特

原创 python腳本案例

1、使用mysql查詢,並保存成csv文件 github:https://github.com/gooddestiny/test_script/blob/master/mysql_query_as_csv.py 碼雲:https://g

原创 webbench 壓力測試軟件

1、安裝 wget http://home.tiscali.cz/~cz210552/distfiles/webbench-1.5.tar.gz tar -xzvf webbench-1.5.tar.gz cd webbench-1.5

原创 一個簡單的線程池設計方案

        一個簡單的線程池本質上是生產者-消費者模型,一般是線程池負責消費任務,任務分配線程負責生產任務,任務可以由隊列、鏈表或全局變量等數據結構承擔。如果生產和消費速度差不多,可以採用環形隊列結構;如果任務有優先級別,也可採用多個

原创 Linux中鎖的總結

目錄 1 前言 2 注意事項 2.1 明確鎖的範圍 2.2 減少鎖的粒度 3 避免死鎖的建議 1 前言         實際開發過程中,使用鎖會帶來一定性能的損失,但如果使用鎖也能滿足性能要求,對於鎖的使用就無妨。使用鎖可能帶來如下性能損