比特币源码解析(4)
来源:互联网 发布:睡眠面膜 知乎 编辑:程序博客网 时间:2024/05/24 00:46
0x00 说明
原本想先把这些准备知识(BOOST
, libevent
, QT
)都仔细搞懂之后再去研究比特币的代码的,开始学习了之后才发现还是太天真了,每一项技术背后都不是那么简单的,想完全搞清楚也并非短时间能够搞定,尤其是看到网上一篇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目录下,具体分析参考后续文章。
- 比特币源码解析(4)
- 比特币源码解析(1)
- 比特币源码解析(2)
- 比特币源码解析(3)
- 比特币源码解析(5)
- 比特币源码解析(6)
- 比特币源码解析(7)
- 比特币源码解析(8)
- 比特币源码解析(9)
- 比特币源码解析(11)
- 比特币源码解析(12)
- 比特币源码解析(13)
- 比特币源码解析(14)
- 比特币源码解析(15)
- 比特币源码解析(16)
- 比特币源码解析(17)
- 比特币源码解析(18)
- 比特币源码解析(19)
- android的ZXing二维码扫描集成
- PAT——1012数字分类
- linux下下载各种软件合集!!!
- 排序:合并排序
- 最大奇约数
- 比特币源码解析(4)
- 编辑文章
- tomcat下多项目的域名配置
- Java 泛型详解
- Maven 项目整合pom.xml整合问题
- Spring框架IOC,DI概念理解
- 关于数据查询优化
- 【leetcode】111. Minimum Depth of Binary Tree(Python & C++)
- 个人学习日志-------爬虫