现在位置: 首页 > 源码
2019-08-31 12:55 工业·编程 ⁄ 共 13965字 暂无评论
GDB, 即GNU调试器(GNU Debugger)。它诞生自开源软件基金会(Free Software Foundation)成立之初的第一批程序,并一直是免费和开源软件系统中的主要成员。最初GDB只是Unix系统上一个简单的源码层次的调试器,代码量不过数千行C代码,后来逐步发展壮大,拓展到包括嵌入式系统在内多个平台,代码量也达到了上百万行。 GDB在发展,不断地满足着新的用户需求并增加新的功能。这一章将我们将介绍GDB的整体内部结构,探讨一下GDB是如何...
阅读全文
2019-08-04 06:26 工业·编程 ⁄ 共 13130字 暂无评论
本文对bash的源码(版本:4.2.46(1)-release)进行简要分析。 数据结构 bash是用C语言写成的,其源码中只使用了少量的数据结构:数组,树,单向链表,双向链表和哈希表。几乎所有的bash结构都是用这些基本结构实现的。 源码中最主要的结构都定义在根目录下头文件command.h中。 单词 bash在不同阶段传输信息并处理数据单元的数据结构是WORD_DESC: typedef struct word_desc {   char *word;     &#...
阅读全文
2019-08-03 07:44 工业·编程 ⁄ 共 11523字 暂无评论
2. Poco日志的实现 2.1 日志模块应该实现的业务 在讨论日志的实现之前,先来聊一下日志模块应该实现那些业务。日志的业务说简单可以很简单,就是输出记录。说复杂也复杂,来看它的复杂性: 首先,日志的输出对象是不同的,有控制台输出,本地文件输出,网络文件输出,输出到系统日志等。假如是网络日志,日志库中其实还会包含网络模块,真是越来越复杂了。 第二,日志输出的格式和内容。不同用户关心的内容和喜欢的输出格式是不...
阅读全文
2019-08-01 07:41 工业·编程 ⁄ 共 11958字 暂无评论
日志对于程序来说是非常重要的,特别是对一些大型程序而言。一旦程序被发布,在现场日志几乎是程序员唯一可以获取程序信息的手段。Poco作为一个框架类库,提供了非常多的日志种类供程序员选用。文章将分两个部分,对于Poco日志进行介绍。第一部分主要以翻译Poco文档为主,第二部分则探讨Poco日志的实现。 1. Poco库日志接口 1.1  总体介绍          Poco中的日志模块主要涉及下列...
阅读全文
本节主要介绍Thread类和ThreadLocal机制的使用方法以及实现原理,以及对ThreadPool线程池支持的简单了解 Thread类使用方法 在C++语言中,我们通过_beginThreadex或CreateThread来创建线程(最好使用前者,关于两者区别和线程基础知识可参见《Windows核心编程》),并且提供一个原型为void MyFunc(void pParam)入口函数来完成任务。在Poco中,将入口函数抽象为一个类Runnable,该类提供void run()接口,用户需要继承至该类来实现自...
阅读全文
Foundation中的SharedLibrary实现跨平台的dll动态加载。具体使用方法和简介可见:ShareLibrary官方文档 SharedLibrary导出函数 SharedLibrary类的简单用法 通过SharedLibrary可以实现函数导出和类导出,函数导出是最简单的,Dll提供方除了函数需要使用extern "C"声明之外,和普通C++编写的dll并无区别,在官方文档的例子中,dll使用方代码也很简单: // LibraryLoaderTest.cpp #include "Poco/SharedLibrary.h&q...
阅读全文
2019-07-29 06:52 工业·编程 ⁄ 共 1726字 暂无评论
最近想读读Python源码,任何东西学习方法基本都是一样的,先从总体框架进行了解,再从自己侧重的方面逐步深入。 1. Python总体架构 左边是Python提供的大量的模块、库以及用户自定义的模块。比如在执行import os时,这个os就是Python内建的模块,当然用户还可以通过自定义模块来扩展Python系统。 右边是Python的运行时环境,包括对象/类型系统(Object/Type structures)、内存分配器(Memory Allocator)和运行时状态信息(Cu...
阅读全文
2019-06-10 15:25 工业·编程 ⁄ 共 6032字 暂无评论
1.通过官方的SQLite架构文档,理清大体的系统层次:Architecture of SQLite 2.阅读SQLite Documentation中Technical/Design Documentation章节(根据所在层次阅读代码,对应章节描述进行理解。) 应用层角度,从API(List Of SQLite Functions)角度切入,掌握API文档中所有参数的使用。 3.下载源码包sqlite-src-*.zip,在其src目录下包含了所有源码文件。注意若要编译SQLite库则下载单一文件版本sqlite-amalgamation-*.zip。 架...
阅读全文
2018-02-25 22:12 工业·编程 ⁄ 共 812字 暂无评论
evutil:用于抽象不同平台网络实现差异的通用功能。 event和event_base: libevent的核心,为各种平台特定的、基于事件的非阻塞 IO后 端提供抽象API, 让程序可以知道套接字何时已经准备好, 可以读或者写, 并且处理基 本的超时功能,检测OS信号。 bufferevent: 为libevent基于事件的核心提供使用更方便的封装。除了通知程序套接字已经准备好读写之外, 还让程序可以请求缓冲的读写操作, 可以知道何时IO已经真正发生。( buf...
阅读全文
2017-11-13 22:51 工业·编程 ⁄ 共 12554字 暂无评论
Public_fREe() void public_fREe(Void_t* mem) {       mstate ar_ptr;   mchunkptr p;                              /* chunk corresponding to mem */     void (*hook) (__malloc_ptr_t, __const __malloc_ptr_t)...
阅读全文