Poco C++库解析
文章平均质量分 92
POCO是一个C++的开源库集。同一般的C++库相比,POCO的特点是提供了整一个应用框架。专栏用于探讨Poco C++库的使用和实现分析
napu_sh
半路出家的机械师
展开
-
POCO C++库学习和分析 -- UUID
POCO C++库学习和分析 -- UUID1. 概述 通用唯一识别码(英语:Universally Unique Identifier,简称UUID)是一种软件建构的标准。UUID的目的,是让分散式系统中的所有元素,都能有唯一的辨识信息,而不需要通过中央控制端来做辨识信息的指定。一组UUID,是由一串16位组(亦称128位)的16进位数字所构成,是故U原创 2013-05-08 10:12:39 · 5369 阅读 · 0 评论 -
POCO C++库学习和分析 -- URI
POCO C++库学习和分析 -- URI (Uniform Resource Identifiers)1. 概述 URI(RFC 3986)意为统一资源标记,通常被用来标志web上的资源。 在Poco库中提供了POCO::URI、POCO::URIStreamFactory、POCO::URIStreamOpener类来对URI信息原创 2013-05-07 20:00:09 · 6106 阅读 · 0 评论 -
POCO C++库学习和分析 -- 流 (三)
POCO C++库学习和分析 -- 流 (三)5 . ZLib Stream流 Poco::DeflatingInputStream、Poco::DeflatingOutputStream、Poco::InflatingInputStream和Poco::InflatingOutputStream把zlib的压缩过程封装成为流方式。在讨论其实现之前,先来了解一下原创 2013-05-07 11:09:17 · 5788 阅读 · 0 评论 -
POCO C++库学习和分析 -- 流 (二)
POCO C++库学习和分析 -- 流 (二)2. 创建自己的流2.1 自定义流的结构 在Poco中提供了一个框架用于创建自己的流,并且创建的流都符合C++标准。想一下标准库中流的层次和结构。每一个流都必须有对应的流缓冲,并且在流初始化时提供此流缓冲的指针。Poco中提供了3种流缓冲供选择,分别是BasicBufferedStreamBuf、BasicUn原创 2013-05-02 19:58:31 · 6181 阅读 · 0 评论 -
POCO C++库学习和分析 -- 流 (一)
POCO C++库学习和分析 -- 流 (一) 流(Stream)是C++和C之间的一大区别。写C++的程序员都知道流的用法。在Poco库中,在标准流的基础上又扩充了一些流,分别是基于Base64和HexBinary的编解码流,使用zlib的数据压缩流,二进制的I/O流,文件流,以及一些其他的辅助流;另外Poco库还提供了一个扩展的结构,用于创建用户自定义流。原创 2013-05-02 11:13:20 · 7000 阅读 · 0 评论 -
POCO C++库学习和分析 -- 日志 (二)
POCO C++库学习和分析 -- 日志 (二)2. Poco日志的实现2.1 日志模块应该实现的业务 在讨论日志的实现之前,先来聊一下日志模块应该实现那些业务。日志的业务说简单可以很简单,就是输出记录。说复杂也复杂,来看它的复杂性: 首先,日志的输出对象是不同的,有控制台输出,本地文件输出,网络文件输出,输出到系统日志等。假如是网络日志,日原创 2013-04-18 20:41:23 · 7303 阅读 · 1 评论 -
POCO C++库学习和分析 -- 日志 (一)
POCO C++库学习和分析 -- 日志 (一) 日志对于程序来说是非常重要的,特别是对一些大型程序而言。一旦程序被发布,在现场日志几乎是程序员唯一可以获取程序信息的手段。Poco作为一个框架类库,提供了非常多的日志种类供程序员选用。文章将分两个部分,对于Poco日志进行介绍。第一部分主要以翻译Poco文档为主,第二部分则探讨Poco日志的实现。1. P原创 2013-04-17 10:55:29 · 11910 阅读 · 3 评论 -
POCO C++库学习和分析 -- 文件系统
POCO C++库学习和分析 -- 文件系统 既然作为一个框架性的库,自然会提供对于文件系统的操作。在Poco库中,封装了一些类去完成上述操作。这些类包括了: 1. Poco::Path 2. Poco::File 3. Poco::TemporaryFile原创 2013-04-11 20:44:41 · 8179 阅读 · 3 评论 -
POCO C++库学习和分析 -- 随机数和数字摘要
POCO C++库学习和分析 -- 随机数和数字摘要 在程序设计时,有时候我们需要生成随机数和数字摘要。在Poco库中,也提供了上述功能,下面我们一一叙述:1. 随机数生成 Poco中生成随机数的类为Poco::Random类。它根据PRNG(pseudo random number generator )算法设计,采用了一个累原创 2013-04-10 12:21:00 · 5820 阅读 · 0 评论 -
POCO C++库学习和分析 -- 异常、错误处理、调试
POCO C++库学习和分析 -- 异常、错误处理、调试1. 异常处理 C++同C语言相比,提供了异常机制。通过使用try,catch关键字可以捕获异常,这种机制使得程序员在程序异常发生时,可以通过判断异常类型,来决定程序是否继续执行,并在程序结束之前优雅的释放各类资源。当然对于C++的异常机制也存在着很多的争议。在这里,并不对此展开讨论,只介绍一下Poco中的异原创 2013-04-08 12:06:40 · 6996 阅读 · 0 评论 -
POCO C++库学习和分析 -- 日期与时间
POCO C++库学习和分析 -- 日期与时间 在Poco库中,与时间和日期相关的一些类,其内部实现是非常简单的。看相关文档时,比较有意思的倒是历史上的不同时间表示法。1. 系统时间函数 在编程时,时间函数不可避免的会被使用。linux系统下相关时间的数据结构有time_t,timeval,timespec,tm,clock_t; windo原创 2013-04-02 04:17:22 · 8513 阅读 · 2 评论 -
POCO C++库学习和分析 -- 平台与环境
POCO C++库学习和分析 -- 平台与环境 在写程序的时候,有时候需要收集一些系统信息,用作软硬件的绑定或生成唯一的注册码信息等。Poco中提供了一个很简单的类Environment来实现这个功能。这个类的定义如下:class Foundation_API Environment /// This class provides access to envir原创 2013-03-31 10:50:40 · 5701 阅读 · 1 评论 -
POCO C++库学习和分析 -- 字符编码
POCO C++库学习和分析 -- 字符编码1. 字符编码1.1 字符编码的概念 字符编码可以理解为在计算机上语言符号和二比特数之间的映射。不同的编码方式对应着不同映射方法,对于映射集的双方而言,用一种映射方法下,映射关系是一一对应的。由于语言的基本符号是有限的,所以作为映射的双方,映射集也是有限的。下面这段概念的介绍来自于文章《字符编码:Unicode/UT原创 2013-03-29 22:27:39 · 7021 阅读 · 2 评论 -
POCO C++库学习和分析 -- Cache
POCO C++库学习和分析 -- Cache1. Cache概述 在STL::map或者STL::set中,容器的尺寸是没有上限的,数目可以不断的扩充。并且在STL的容器中,元素是不会自动过期的,除非显式的被删除。Poco的Cache可以被看成是STL中容器的一个扩充,容器中的元素会自动过期(即失效)。在Poco实现的Cache框架中,基础的过期策略有两种。一种是L原创 2013-03-26 11:16:41 · 6636 阅读 · 0 评论 -
POCO C++库学习和分析 -- 数据类型转换
POCO C++库学习和分析 -- 数据类型转换 文章写到这里,Foundation库中的功能已经介绍过半了。在接下去介绍其他模块之前,我们先来回顾一下前面的内容。前面的内容包括了: 1. SharedLibrary模块(插件技术) 《Foundation库SharedLibrary模块分析》 2. 线程(锁,线程,线程池原创 2013-03-20 17:08:52 · 6516 阅读 · 0 评论 -
POCO C++库学习和分析 -- 哈希
POCO C++库学习和分析 -- 哈希1. Hash概论 在理解Poco中的Hash代码之前,首先需要了解一下Hash的基本理论。下面的这些内容和教课书上的内容并没有太大的差别。1.1 定义 下面这几段来自于百度百科: Hash:一般翻译做"散列",也有直接音译为"哈希"的,就是把任意长度的输入(又叫做预映射, pre原创 2013-03-22 12:10:58 · 5811 阅读 · 0 评论 -
POCO C++库学习和分析 -- 通知和事件 (四)
POCO C++库学习和分析 -- 通知和事件 (四)5. 事件 Poco中的事件和代理概念来自于C#。对于事件的使用者,也就是调用方来说,用法非常的简单。5.1 从例子说起 首先让我们来看一个同步事件例子,然后再继续我们的讨论:#include "Poco/BasicEvent.h"#include "Poco/Delegate.h"#in原创 2013-03-15 12:23:58 · 8039 阅读 · 2 评论 -
POCO C++库学习和分析 -- 通知和事件 (三)
POCO C++库学习和分析 -- 通知和事件 (三)4. 异步通知4.1 NotificationQueue类 Poco中的异步通知是通过NotificationQueue类来实现的,同它功能类似还有类PriorityNotificationQueue和TimedNotificationQueue。不同的是PriorityNotificationQueue类中对消原创 2013-03-14 22:07:51 · 9054 阅读 · 2 评论 -
POCO C++库学习和分析 -- 通知和事件 ( 二 )
POCO C++库学习和分析 -- 通知和事件 ( 二 )2. 通知和事件的总览2.1 相关类信息 下面是Poco库和通知、事件相关的类 1) 同步通知实现:类Notification和NotificationCenter 2) 异步通知实现:类Notification和NotificationQueue 3)原创 2013-03-14 16:38:34 · 9092 阅读 · 4 评论 -
POCO C++库学习和分析 -- 通知和事件(一)
POCO C++库学习和分析 -- 通知和事件 (一)1. 信息交流的方法 在讨论Poco中事件与通知之前,先来聊一聊信息交流的方法,这样或许有助于理解接下去的讨论。我们都知道数据之间存在关系。在数据库模型里,关系被分为一对一,一对多,多对多。在用计算机去解决数据关系的时候,多对多关系往往被分解成为数个一对多,而一对多的关系最终被分解成为数个一对一关系。原创 2013-03-13 16:04:39 · 10110 阅读 · 4 评论 -
POCO C++库学习和分析 -- 进程
POCO C++库学习和分析 -- 进程 Poco::Foundation库中涉及进程的内容主要包括了4个主题,分别是进程(Process)、进程间同步(inter-process synchronization)、管道(Pipes)、共享内存(Shared Memory)。我们都知道管道、共享内存、网络通讯是进程间数据交互的3种基本方式。由于网络通讯足够复杂,在Poco的原创 2013-03-10 10:53:01 · 10967 阅读 · 1 评论 -
POCO C++库学习和分析 -- 内存管理 (三)
POCO C++库学习和分析 -- 内存管理 (三) 看完Poco库中的智能指针,基本上Poco中的内存管理已经快结束了。其他的部分都是些边边角角的东西,非常的简单。下面一一介绍。4. AutoReleasePool AutoReleasePool类的出现也同样是为了解决用户动态分配对象的释放问题,但同智能指针AutoPtr和SharedPt原创 2013-03-06 09:26:54 · 6379 阅读 · 3 评论 -
POCO C++库学习和分析 -- 内存管理 (二)
POCO C++库学习和分析 -- 内存管理 (二)3. SharedPtr SharedPtr是Poco库中基于引用计数实现的另外一种智能指针。同AutoPtr相比,Poco::SharedPtr主要用于为没有实现引用计数功能的类(换句话说,也就是该类本身不是引用计数对象)提供引用计数服务,实现动态地址的自动回收。 可以这么说,Poco::Auto原创 2013-03-05 14:45:01 · 6461 阅读 · 3 评论 -
POCO C++库学习和分析 -- 内存管理 (一)
POCO C++库学习和分析 -- 内存管理 (一) 对于内存的管理,Poco C++库中主要包含了引用计数,智能指针,内存池等几个部分。下面将分别对这几个部分进行介绍。首先回顾一下,对于内存的管理,出现过的几种技术。C时代的内存池,主要解决内存碎片,和内存的频繁获取和释放的开销问题。到了C++时代,内存池仍然存在,但是出现了面对对象分配的内存池,解决问题还是一样。C++中智能指原创 2013-03-04 22:11:12 · 8572 阅读 · 3 评论 -
POCO C++库学习和分析 -- 任务
POCO C++库学习和分析 -- 任务1. 任务的定义 任务虽然在Poco::Foundation库的目录结构中被单独划出,其实也可以被看成线程的应用,放在线程章节。首先来看一下Poco中对于任务的描述:task主要应用在GUI和Seerver程序中,用于追踪后台线程的进度。应用Poco任务时,需要类Poco::Task和类Poco::TaskManag原创 2013-02-28 10:28:36 · 7456 阅读 · 2 评论 -
POCO C++库学习和分析 -- 线程 (四)
POCO C++库学习和分析 -- 线程 (四)5. 主动对象5.1 线程回顾 在讨论主动对象之前,我想先说一下对于Poco中多线程编程的理解。大家都知道,对于多线程编程而言最基本的元素只有两个数据:锁和线程。线程提高了程序的效率,也带来了数据的竞争,因此为了保证数据的正确性,孪生兄弟"锁"随之产生。 对于不同的操作系统和编程语言而言,线程和锁通常是以系原创 2013-02-27 17:38:32 · 8515 阅读 · 1 评论 -
POCO C++库学习和分析 -- 线程 (三)
POCO C++库学习和分析 -- 线程 (三)4. 定时器定时器作为线程的扩展,也是编程时经常会被用到的元素。在程序设计上,定时器的作用是很简单。预定某个定时器,即希望在未来的某个时刻,程序能够得到时间到达的触发信号。编程时,一般对定时器使用有下面一些关注点:1. 定时器的精度。Poco中的定时器精度并不是很高,具体精度依赖于实现的平台(Windows or Linux)2.原创 2013-02-26 21:09:15 · 6692 阅读 · 0 评论 -
POCO C++库学习和分析 -- 线程 (二)
POCO C++库学习和分析 -- 线程 (二)3. 线程池3.1线程池的基本概念 首先我们来明确线程池的一些概念。 什么是线程池?线程池的好处? 池的英文名:POOL,可以被理解成一个容器。线程池就是放置线程对象的容器。我们知道线程的频繁创建、销毁,是需要耗费一点的系统资源的,如果能够预先创建一系列空线程,在需要使用原创 2013-02-19 22:15:23 · 9170 阅读 · 1 评论 -
POCO C++库学习和分析 -- 线程 (一)
POCO C++库学习和分析 -- 线程 (一) 线程是程序设计中用的非常多的技术,在UI设计,网络通讯设计中广泛使用。在POCO库中,线程模块可以分成6个部分去理解。锁(Lock),线程(Thread),主动对象(ActiveObject),线程池(ThreadPool), 定时器(Timer)。下面对它们分别介绍。 1. 数据保护-锁 线原创 2013-02-06 14:20:05 · 11811 阅读 · 0 评论 -
POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析
POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析 对于一个不熟悉的开源库和模块,我觉的最好的学习方法莫过于: 1. 使用库,看库实现了什么功能和接口; 2. 抛开库,想一想,自己如何实现。可以想出的出来是最好的,想不出其实也没什么关系,至少有了疑问。 3. 看库的内原创 2013-02-04 17:21:25 · 8261 阅读 · 1 评论 -
POCO C++库学习和分析 -- Foundation库的结构
POCO C++库学习和分析 -- Foundation库结构Foundation库是POCO库集中的一个,提供了编程时的一些常用抽象。在程序中被分成了18个部分,分别是:1)Core这部分除了建立跨平台库的基础头文件外,最有意义的部分是分装了原子计数的基本类(AtomicCounter),以及垃圾收集的一些类,如AutoPtr,SharedPtr。2)Cache顾名原创 2013-02-04 14:48:18 · 7630 阅读 · 0 评论 -
POCO C++库学习和分析 -- 跨平台库的生成
POCO C++库学习和分析 -- 跨平台库的生成 这一节主要讲一下,如何在window上生成一个类似于POCO动态库,以及POCO跨平台头文件的结构。 POCO C++ Basic Edition版本,工程由四部分联合而成,分别是Foundation,Net,Util,Xml。 其中每个部分都是跨平台结构,VC下编译采用没有预编译头文件的原创 2013-02-04 13:59:14 · 8890 阅读 · 0 评论 -
POCO C++库学习和分析 -- 序
POCO C++库学习和分析 -- 序POCO库概述:POCO是一个C++的开源库集。同一般的C++库相比,POCO的特点是提供了整一个应用框架。如果要做C++程序应用框架的快速开发,我觉得STL+boost+Poco+Qt+Mysql实在是个不错的组合。下面的这张图提供了POCO库的一个结构。对于POCO概述更加详细的介绍,可以看一下官方网站和《POCO C+原创 2013-02-04 13:41:33 · 13579 阅读 · 9 评论