比特幣源碼解析(4) - 準備知識 - libevent & QT

0x00 說明

原本想先把這些準備知識(BOOSTlibeventQT)都仔細搞懂之後再去研究比特幣的代碼的,開始學習了之後才發現還是太天真了,每一項技術背後都不是那麼簡單的,想完全搞清楚也並非短時間能夠搞定,尤其是看到網上一篇QT的教程,作者到16年3月11日截止已經連續寫了快4年!所以現在打算轉換策略,先了解這些技術的主要功能以及參考資料,等看到具體應用時再回來看他們的原理。

0x01 libevent簡介

libevent的介紹轉自:http://blog.csdn.net/majianfei1023/article/details/46485705

libevent是一個輕量級的開源的高性能的事件觸發的網絡庫,適用於windows、linux、bsd等多種平臺,內部使用select、epoll、kqueue等系統調用管理事件機制。它被衆多的開源項目使用,例如大名鼎鼎的memcached等。

特點:

  • 事件驅動,高性能;
  • 輕量級,專注於網絡(相對於ACE);
  • 開放源碼,代碼相當精煉、易讀;
  • 跨平臺,支持Windows、Linux、BSD和Mac OS;
  • 支持多種I/O多路複用技術(epoll、poll、dev/poll、select和kqueue等),在不同的操作系統下,做了多路複用模型的抽象,可以選擇使用不同的模型,通過事件函數提供服務;
  • 支持I/O,定時器和信號等事件;
  • 採用Reactor模式。

主要的功能:

Libevent提供了事件通知,io緩存事件,定時器,超時,異步解析dns,事件驅動的http server以及一個rpc框架。

  • 事件通知:當文件描述符可讀可寫時將執行回調函數。

  • Io緩存:緩存事件提供了輸入輸出緩存,能自動的讀入和寫入,用戶不必直接操作io。

  • 定時器:libevent提供了定時器的機制,能夠在一定的時間間隔之後調用回調函數。

  • 信號:觸發信號,執行回調。

  • 異步的dns解析:libevent提供了異步解析dns服務器的dns解析函數集。

  • 事件驅動的http服務器:libevent提供了一個簡單的,可集成到應用程序中的HTTP服務器。

  • RPC客戶端服務器框架:libevent爲創建RPC服務器和客戶端創建了一個RPC框架,能自動的封裝和解封數據結構。

在比特幣的應用當中,libevent主要用來實現httpserver用來處理bitcoin-cli的指令,具體使用的技術參考後續的文章。

0x02 QT簡介

這部分轉自:https://www.devbean.net/2012/08/qt-study-road-2-catelog/ 。鏈接的作者用了四年時間編寫了一部簡單易懂而又內容豐富的QT教程,這種精神真的值得我好好學習!這也更加堅定了我要把這一系列文章好好寫下去的決心。

Qt 是一個著名的 C++ 應用程序框架。你並不能說它只是一個 GUI 庫,因爲 Qt 十分龐大,並不僅僅是 GUI 組件。使用 Qt,在一定程度上你獲得的是一個“一站式”的解決方案:不再需要研究 STL,不再需要 C++ 的,不再需要到處去找解析 XML、連接數據庫、訪問網絡的各種第三方庫,因爲 Qt 自己內置了這些技術。

比特幣源碼中,QT是用來編寫錢包的圖形界面的,所有的代碼全部在src/qt目錄下,具體分析參考後續文章。


轉自:http://blog.csdn.net/pure_lady/article/details/77755595

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章