原创 內存映射系統開發

爲了使用內存作爲數據庫的主要存儲方式,開發內存數據庫,我們需要對內存中的數據進行保證。即可以備份與還原,那麼爲了將內存中的數據備份到外存中,我們可以採取以下策略: 選取一個外存文件,將其映射到某個內存地址; 當更新內存時,適時地更新外存文

原创 多級分銷對接第三方API獲取數據系統的優化

最近在做一個基於有讚的多級分銷管理系統,所有成員的店面均在有贊商城,使用有贊API獲得他們的業績,但是有贊提供的分銷只有一級,故製作該系統。考慮到減輕工作量,理清層次關係,採用了OOP設計方法,將數據庫,表封裝爲基類,分銷成員,店面等繼承

原创 Sapphire算法:GC Without Stop the World(上)

Go的GC一致爲人詬病,然而Go1.5據說大大優化了GC,具體可以見這篇文章http://www.oschina.net/translate/go-gc-solving-the-latency-problem-in-go-1-5 於是我打

原创 CPU L2緩存初探

CPU L2緩存初探 探索目的 爲了設計高性能的內存數據庫,往往要考慮CPU緩存的命中率,查閱資料發現,Intel架構的處理器有3級緩存的設置,其中L1,L2較小,L3較大但被三個核心所公用。在我使用的i7 4712mq中,使用d

原创 打造先進的內存KV數據庫-6 PHP支持

PHP php作爲使用極廣的程序設計語言,monkey數據庫對php的支持是必須的~ 代碼實現 //test.php <?php class MonkeyDB { private $socket; private

原创 nodejs-初探-簡單的判定位置是否在市區API

看來nodejs還是越來越火了,WordPress也用上了nodejs拋棄了php,雖然php7比php5的效率高了一倍,然而在node,java等靜態語言面前,還是不值一提.當然php還是有他的好處,開發迅速,修改便捷,適宜於調用api

原创 打造先進的內存KV數據庫-1 B樹索引的建立(1)

設計目的 在搜索引擎的設計中,往往需要使用倒排索引,在當前內存價格不斷走低的情況下,內存數據庫必然會成爲主流。KV數據庫由於適合Map-Reduce用於分佈式處理。 本系統設計實現如下目標: * 實現極高性能的查詢 * 實現

原创 Async Programming - 1 async-await 糖的本質(1)

原文出處:Pointer-SMQ的博客,已將所有圖片改爲代碼方便觀看 這一個系列的文章主要來講 C# 中的語言特性 async-await 在語言層面的本質,我們都知道 await 是編譯器進行了一個 rewrite,然而這個 rew

原创 打造先進的內存KV數據庫-4 夥伴內存管理系統

夥伴算法 大概是這樣的,monkey儲存引擎(今年猴年了嘛~取個名字,重了再換)的內存管理使用夥伴算法,大概原理是這樣的: 1.多個空閒內存塊的鏈表,分別是不同大小的內存塊,1K,2K,4K,8K,…,,按照這樣的情況一直到4M

原创 打造先進的內存KV數據庫-2 B樹索引的建立(2)

索引的插入 接上篇文章,我們實現了B樹的查找log2n的算法,然而在後來的單元測試中,我發現了bug,在此進行修正,修正後的查找函數: //查找指定索引 如果找到返回找到的node和position,失敗的話返回最近的node和p

原创 打造先進的內存KV數據庫-3 最終選擇-C & B-Tree

多種索引與語言 我嘗試了tire樹索引 B+樹索引 B樹索引,發現還是B樹索引最快,另外使用C寫了完善的B樹索引,但是我發現使用cgo調用的時候,會有500%左右的性能損失,tire樹大概比B樹慢2倍,所以還是選擇使用原生C來寫完

原创 浙大PTA OJ漏洞

對PTA測試網站高危漏洞可以導致任意用戶代碼曝光的測試報告, 1.打開PTA提交列表,進行抓包:發現使用Ajax獲取了提交列表,查看有getSubm

原创 打造先進的內存KV數據庫-7 反射以及併發鎖

反射 反射作爲一種代碼組織形式,帶來了極大的不安全因素,同時也帶來了許多便利之處,通過方法、對象、類型名稱來獲得具體實例,可以避免大量if-else分支,使得代碼優雅,monkeyDB的服務端代碼最後採用反射組織。 併發鎖 多線程

原创 php7 性能測試

滿懷激動的編譯安裝了php7 RC6<p>然後對整數相加相乘及浮點數相加相乘做了測試:</p><p> </p><?php echo "整數加法性能:<br/>"; $time = time(); for($i = -21474

原创 自己動手寫數據庫(一) 從SQL語句開始

自己動手寫數據庫(一) 從SQL語句開始 關於本教程 作者:InsZVA,浙江大學 軟件工程系,也是第一次嘗試寫數據庫,如有錯誤還望多多指正,寫此篇文章也望有拋磚引玉的作用。 面向讀者:有一定C語言基礎。(其他知識會在教程中提到