比特币源码解析四——准备知识——libevent&QT

in #bitcoin8 years ago

准备知识里的所有的技术背后都极其复杂和强大,只QT,就有人从16年3月11日开始已经连续写了4年多,目前的策略是对这些技术点有大致的了解,能简单使用即可,以后看到具体应用再详细研究。

libevent

libevent是一个轻量级的开源的高性能的事件触发的网络库,适用于windows\linux\bsd等多种平台,内部使用select、spoll、kqueue等系统调用管理事件机制。被众多的开源项目使用,例如大名鼎鼎的memcached等。

特点:

  • 事件驱动,高性能
  • 轻量级,专注于网络(相对于ACE)
  • 开放源码,代码相当精炼、易读
  • 跨平台,支持windows\linux\bsd\mac os
  • 支持多种I/O多路复用技术(epoll、poll、dev/poll、select和kqeue等),在不同的操作系统下,做了多路复用模型的抽象,可以选择使用不同的模型,通过实践函数提供服务
  • 支持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的指令。

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目录下,具体分析参考后续文章。

Coin Marketplace

STEEM 0.04
TRX 0.31
JST 0.074
BTC 63305.46
ETH 1662.87
USDT 1.00
SBD 0.41