原创 [DuckDB] 多核算子並行的源碼解析

DuckDB 是近年來頗受關注的OLAP數據庫,號稱是OLAP領域的SQLite,以精巧簡單,性能優異而著稱。筆者前段時間在調研Doris的Pipeline的算子並行方案,而DuckDB基於論文《Morsel-Driven Parallel

原创 Doris開發手記3:利用CoreDump文件快速定位Doris的查詢問題

Apache Doris的BE部分是由C++編寫,當出現一些內存越界,非法訪問的問題時會導致BE進程的Crash。這部分的問題常常較難排查,同時也很難快速定位到對應的觸發SQL,給使用者帶來較大的困擾。所以下面會介紹通過Linux的Core

原创 ClickHouse源碼筆記5:聚合函數的源碼再梳理

筆者在源碼筆記1之中分析過ClickHouse的聚合函數的實現,但是對於各個接口函數的實際如何共同工作的源碼,回頭看並沒有那麼明晰,主要原因是沒有結合Aggregator的類來一起分析聚合函數的是如果工作起來的。所以決定重新再完成一篇聚合

原创 C++霧中風景15:聊聊讓人抓狂的Name Mangling

Name Mangling,直接翻譯過來爲名字改寫 。它是深入理解 C++ 編譯鏈接模型的必由之路。 筆者近期進行數據庫開發工作時,涉及到MySQL客戶端的編譯鏈接的問題,通過重新釐清了之前理解一知半解的Name Manging,解決了讓

原创 C++霧中風景13:volatile解惑

筆者入職百度時,二面面試官的讓我聊聊C++之中的volatile關鍵詞。volatile在Java和C++之中的差別可謂是天差地別,我只是簡單聊了聊Java之中的volatile,面試官對我的回答並不滿意。後續學習《C++ Prmier》

原创 AeroSpike踩坑手記1:Architecture of a Real Time Operational DBMS論文導讀

又開了一個新的坑,筆者工作之後維護着一個 NoSQL 數據庫。而筆者維護的數據庫正是基於社區版本的 Aerospike打造而來。所以這個踩坑系列的文章屬於工作總結型的內容,會將使用開發 Aerospike 的各種問題進行總結梳理,希望能夠

原创 Python讀取大文件的"坑“與內存佔用檢測

python讀寫文件的api都很簡單,一不留神就容易踩”坑“。筆者記錄一次踩坑歷程,並且給了一些總結,希望到大家在使用python的過程之中,能夠避免一些可能產生隱患的代碼。 1.read()與readlines(): 隨手搜索pyth

原创 大數據小視角4:小議Lambda 與 Kappa 架構,不可變數據的計算探索

這個系列文章之前因爲私事荒廢了很久,繼續更新~~之前與老大談論架構時,老大和我聊了聊分佈式數據處理之中的Lambda結構,之前在《Designing Data-Intensive Applications》這本書之中,作者

原创 C++霧中風景12:聊聊C++中的Mutex,以及拯救生產力的Boost

筆者近期在工作之中編程實現一個Cache結構的封裝,需要使用到C++之中的互斥量Mutex,於是花了一些時間進行了調研。(結果對C++標準庫很是絕望....)最終還是通過利用了Boost庫的shared_mutex解決了問題。借這個機會來

原创 C++霧中風景番外篇2:Gtest 與 Gmock,聊聊C++的單元測試

正式工作之後,公司對於單元測試要求比較嚴格。(筆者之前比較懶,一般很少寫完整的單測~~)。作爲一個合格的開發工程師,需要爲所編寫代碼編寫適量的單元測試是十分必要的,在實際進行的開發工作之中,TDD(Test drivern develop

原创 C++霧中風景11:釐清C++類型轉換(static_cast,dynamic_cast,reinterpret_cast,const_cast)

C++是一門弱類型的語言,提供了許多複雜和靈巧類型轉換的方式。筆者之前寫的Python與Go都是強類型的語言,對這種弱類型的設計實在是接受無力啊~~ ( 生活所迫,工作還得寫C++啊~~)C++語言提供了四種類型轉換的操作:static_

原创 大數據小視角5:探究SSD寫放大的成因與解決思路

筆者目前開發運維的存儲系統的服務器都跑在SSD之上,目前單機服務器最大的SSD容量有4T之多。(公司好有錢,以前在實驗室都只有機械硬盤用的~~)但SSD本身的特性與機械硬盤差距較大,雖然說在性能上有諸多優勢,但是如果使用的方式方法不對,反

原创 C++霧中風景番外篇3:GDB與Valgrind ,調試代碼內存的工具

寫 C++的同學想必有太多和內存打交道的血淚經驗了,常常被 C++的內存問題攪的焦頭爛額。(寫 core 的經驗了)有很多同學一見到 core 就兩眼一抹黑,不知所措了。筆者 入"坑"C++之後,在調試 C++代碼的過程之中,學習了不少調

原创 C++霧中風景番外篇:理解C++的複雜聲明與聲明解析

在學習C系列語言的過程之中,理解C/C++的複雜聲明一直是初學者很困擾的問題。筆者初學之時也深受困擾,對很多規則死記硬背。後續在閱讀《C專家編程》之後,嘗試在編譯器的角度來理解C/C++的聲明解析,並且編寫代碼將這部分邏輯串聯起來,之後再