原创 MySql 批量插入時間遞增的測試數據

對於需要測試MySql大表性能的,經常需要插入數據,涉及到datetime的字段希望能間隔多久進行遞增。 基於以上情況,MySql存儲過程可輕鬆搞定,下文僅以記錄方便查詢。 DELIMITER // CREATE PROCEDUR

原创 【leveldb】編譯與安裝(一)

對leveldb的介紹這裏就不說了,最近準備對leveldb學習瞭解下,學習之前先編譯安裝能運行。 【環境】 編譯開發工具vs2015。一開始用的是VS2013,但是vs2013對C++11支持不是太好,會導致leveldb編譯

原创 【STL】vector(五)

一、概述 vector的數據安排及操作方式與array很相似,二者唯一差別在於空間運用的靈活性。 array是靜態空間,一旦配置了大小,就不能改變,要換個大或者小點的空間,得有客戶端自己來操作。 vector是動態空間,隨着元素

原创 大小端疑惑彙總

猿猿們工作中是會經常遇到內存字節序問題,字節序一般又分爲: 大端模式; 小端模式。 網絡字節序默認是大端模式。 一、定義 大端模式:高位字節存放在低地址處,低位字節存放在高地址處。 小端模式:高位字節存放在高地址處,地

原创 Muduo分析及總結(六)TcpConnection

一、類關係圖 首先看TcpConnection在整個Muduo結構中的關係,如下圖 TcpConnection是整個網絡庫的核心,封裝一次Tcp連接,注意它不能發起連接。 TcpServer和TcpClient都用到了TcpC

原创 win環境下修改夏令時之後無法正確獲取系統時間

【現象】 在windows環境下開啓關閉夏令時之後,調用第三方庫獲取系統時間會不正確。 【解決】 在windowns環境下可使用Windows API: #include < windows.h> #include < st

原创 【leveldb】SkipList(七)

SkipList(跳錶)數據結構是用於Memtable,Immutable Memtable表中,對於此二表的作用點此查看Memtable作用。 Memtable是內存中的表,用於存儲插入的KV數據。SkipList的作用就是解決

原创 【leveldb】Memtable-基礎知識(九)

在閱讀Memtable代碼的過程中涉及到leveldb的各種key,只有對這些key理解清楚了,讀起Memtable纔會很輕鬆,所以這篇着重講解下這些key。 一、Key 看圖1,先有個初步印象: 圖1 1.SequenceN

原创 【leveldb】SSTable(十三):Filter Block

上一篇主要介紹了DataBlock,本篇則開始講解Filter Block,其在SSTable中的結構可點此鏈接SSTable結構說明。 Filter Block中存的都是Data Block中的key(key是經過處理再存入到F

原创 【操作系統】虛擬內存(一)

一個系統中的進程是與其他進程共享CPU和主存資源的(win系統就是內存條內存),然而主存資源是有限的,如果進程太多,那內存資源根本就滿足不了。爲了更加有效的管理內存並且減少出錯,現代操作系統提供了一種對主存的抽象概念,叫虛擬內存。

原创 【leveldb】TwoLevelIterator(十五)

在分析SSTable代碼過程中涉及到了二級迭代器,此篇藉此展開分析下。二級迭代器的存在便於對SSTable的DataBlock數據進行訪問,其結構如下: 圖1 對於SSTable來說: Level_1是Index Block

原创 【leveldb】SSTable(十四):SSTable 讀寫流程

SSTable就是leveldb最後落地存儲的文件,針對SSTable詳細格式介紹可點此SSTable存儲結構說明。本篇主要是對SSTable的讀寫流程代碼研讀。 寫流程 寫流程就是按照SSTable的格式去寫,閱讀起來並不是太複

原创 【leveldb】SSTable(十二):Filter Block

上一篇主要介紹了DataBlock,本篇則開始講解Filter Block,其在SSTable中的結構可點此鏈接SSTable結構說明。 Filter Block中存的都是Data Block中的key(key是經過處理再存入到F

原创 【leveldb】SSTable(十二):Data Block

DataBlock屬於SSTable中Block的一種,關於DataBlock與SSTable的關係,可點此鏈接查看SSTable結構說明。 本篇主要是對DataBlock的讀寫流程解讀。這裏爲便於理解,則將DataBlock格式

原创 Muduo分析及總結(二)Channel

Channel類 每個Channel對象自始至終只屬於一個EventLoop,因此每個Channel對象都只屬於某一個IO線程。 每個Channel對象自始至終只負責一個文件描述符(fd)的IO事件分發,但它並不擁有這個fd,也不會在析構