
开源库
文章平均质量分 92
napu_sh
半路出家的机械师
展开
-
ACE库
ACE的目标用户是高性能和实时通信服务和应用的开发者。它简化了使用进程间通信、事件多路分离、显式动态链接和并发的OO网络应用和服务的开发。此外,通过服务在运行时与应用的动态链接,ACE使系统的配置和重配置得以自动化。 ACE自适配通信环境(ADAPTIVE Communication Environment)是可自由使用、开放源码的面向对象(OO)框架(framewor转载 2008-09-09 10:27:00 · 2075 阅读 · 0 评论 -
emule源代码研究,第一步,DEBUG模式编译!
本文转自http://www.cnblogs.com/jzaileen/archive/2007/06/28/798369.html 经过多次努力编译0.47a成功,写下心得,主要注意的是由于依赖了四个开源的库,所以在配置工程连接输入路径时一定要正确配置,还有就是所有工程全部用/MTD方式编译,都要用相应的DEBUG模式,因为是为了学习和研究,所以不提供relase的配置了,需要的话可以参转载 2008-09-17 09:47:00 · 1044 阅读 · 1 评论 -
C++日志库,log4cplus,log4cpp使用资料手册
转自 http://www.usidcbbs.com/simple/?t1514.htmlC++日志库,log4cplus,log4cpp使用资料手册1 下载log4cpp并解压。2 打开\log4cpp-0.3.4b\msvc6\msvc6.dsw 编译log4cpp工程Release版。 3 将编译后的log4cpp.lib复制到VC的Lib转载 2011-12-08 20:29:15 · 3598 阅读 · 0 评论 -
IJG是什么,有哪些优点 IJG VS IJL
转自 http://www.cr173.com/html/11042_1.htmlIJG vs. IJLIJG的全称是Independent JPEG Group(独立JPEG小组),该组织以C语言源代码的形式提供应用广泛、完全免费的JPEG解码/编码函数库,编译后生成二进制格式的LIB文件,可以连接到其他编译型语言的程序中。其实对于Windows程序员来说,这个函数库最难的地转载 2012-09-11 17:40:25 · 1909 阅读 · 0 评论 -
关于Intel IPP的基本使用方法
转自 http://blog.youkuaiyun.com/comeonface/article/details/2148486 IPP是个好东西,里面的函数精而全,希望大家好好利用。因为IPP目前很少中文资料,我们只能靠自己摸索。下面就简单说说IPP在VC2005下的基本使用方法。 假定你的IPP是安装在“D:/Intel/IPP”目录下。 首先是配置VC2005的环境。转载 2012-09-11 17:50:05 · 1317 阅读 · 0 评论 -
Intel IPP使用许可浅析
转自 http://yushiqi.cn/archives/155intel官网的 http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-faq/ FAQ在对视频,语音编码进行优化的时候,有些人会利用Intel IPP,故今天花了点时间研究了一下Intel IPP的L转载 2012-09-12 15:04:25 · 3848 阅读 · 0 评论 -
POCO C++库学习和分析 -- 线程 (四)
POCO C++库学习和分析 -- 线程 (四)5. 主动对象5.1 线程回顾 在讨论主动对象之前,我想先说一下对于Poco中多线程编程的理解。大家都知道,对于多线程编程而言最基本的元素只有两个数据:锁和线程。线程提高了程序的效率,也带来了数据的竞争,因此为了保证数据的正确性,孪生兄弟"锁"随之产生。 对于不同的操作系统和编程语言而言,线程和锁通常是以系原创 2013-02-27 17:38:32 · 8584 阅读 · 1 评论 -
POCO C++库学习和分析 -- 线程 (二)
POCO C++库学习和分析 -- 线程 (二)3. 线程池3.1线程池的基本概念 首先我们来明确线程池的一些概念。 什么是线程池?线程池的好处? 池的英文名:POOL,可以被理解成一个容器。线程池就是放置线程对象的容器。我们知道线程的频繁创建、销毁,是需要耗费一点的系统资源的,如果能够预先创建一系列空线程,在需要使用原创 2013-02-19 22:15:23 · 9209 阅读 · 1 评论 -
POCO C++库学习和分析 -- 线程 (三)
POCO C++库学习和分析 -- 线程 (三)4. 定时器定时器作为线程的扩展,也是编程时经常会被用到的元素。在程序设计上,定时器的作用是很简单。预定某个定时器,即希望在未来的某个时刻,程序能够得到时间到达的触发信号。编程时,一般对定时器使用有下面一些关注点:1. 定时器的精度。Poco中的定时器精度并不是很高,具体精度依赖于实现的平台(Windows or Linux)2.原创 2013-02-26 21:09:15 · 6725 阅读 · 0 评论 -
POCO C++库学习和分析 -- 内存管理 (二)
POCO C++库学习和分析 -- 内存管理 (二)3. SharedPtr SharedPtr是Poco库中基于引用计数实现的另外一种智能指针。同AutoPtr相比,Poco::SharedPtr主要用于为没有实现引用计数功能的类(换句话说,也就是该类本身不是引用计数对象)提供引用计数服务,实现动态地址的自动回收。 可以这么说,Poco::Auto原创 2013-03-05 14:45:01 · 6495 阅读 · 3 评论 -
POCO C++库学习和分析 -- 进程
POCO C++库学习和分析 -- 进程 Poco::Foundation库中涉及进程的内容主要包括了4个主题,分别是进程(Process)、进程间同步(inter-process synchronization)、管道(Pipes)、共享内存(Shared Memory)。我们都知道管道、共享内存、网络通讯是进程间数据交互的3种基本方式。由于网络通讯足够复杂,在Poco的原创 2013-03-10 10:53:01 · 11043 阅读 · 1 评论 -
POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析
POCO C++库学习和分析 -- Foundation库SharedLibrary模块分析 对于一个不熟悉的开源库和模块,我觉的最好的学习方法莫过于: 1. 使用库,看库实现了什么功能和接口; 2. 抛开库,想一想,自己如何实现。可以想出的出来是最好的,想不出其实也没什么关系,至少有了疑问。 3. 看库的内原创 2013-02-04 17:21:25 · 8326 阅读 · 1 评论 -
POCO C++库学习和分析 -- 任务
POCO C++库学习和分析 -- 任务1. 任务的定义 任务虽然在Poco::Foundation库的目录结构中被单独划出,其实也可以被看成线程的应用,放在线程章节。首先来看一下Poco中对于任务的描述:task主要应用在GUI和Seerver程序中,用于追踪后台线程的进度。应用Poco任务时,需要类Poco::Task和类Poco::TaskManag原创 2013-02-28 10:28:36 · 7498 阅读 · 2 评论 -
POCO C++库学习和分析 -- 内存管理 (三)
POCO C++库学习和分析 -- 内存管理 (三) 看完Poco库中的智能指针,基本上Poco中的内存管理已经快结束了。其他的部分都是些边边角角的东西,非常的简单。下面一一介绍。4. AutoReleasePool AutoReleasePool类的出现也同样是为了解决用户动态分配对象的释放问题,但同智能指针AutoPtr和SharedPt原创 2013-03-06 09:26:54 · 6416 阅读 · 3 评论 -
POCO C++库学习和分析 -- 线程 (一)
POCO C++库学习和分析 -- 线程 (一) 线程是程序设计中用的非常多的技术,在UI设计,网络通讯设计中广泛使用。在POCO库中,线程模块可以分成6个部分去理解。锁(Lock),线程(Thread),主动对象(ActiveObject),线程池(ThreadPool), 定时器(Timer)。下面对它们分别介绍。 1. 数据保护-锁 线原创 2013-02-06 14:20:05 · 11909 阅读 · 0 评论 -
POCO C++库学习和分析 -- 通知和事件 ( 二 )
POCO C++库学习和分析 -- 通知和事件 ( 二 )2. 通知和事件的总览2.1 相关类信息 下面是Poco库和通知、事件相关的类 1) 同步通知实现:类Notification和NotificationCenter 2) 异步通知实现:类Notification和NotificationQueue 3)原创 2013-03-14 16:38:34 · 9148 阅读 · 4 评论 -
POCO C++库学习和分析 -- 通知和事件(一)
POCO C++库学习和分析 -- 通知和事件 (一)1. 信息交流的方法 在讨论Poco中事件与通知之前,先来聊一聊信息交流的方法,这样或许有助于理解接下去的讨论。我们都知道数据之间存在关系。在数据库模型里,关系被分为一对一,一对多,多对多。在用计算机去解决数据关系的时候,多对多关系往往被分解成为数个一对多,而一对多的关系最终被分解成为数个一对一关系。原创 2013-03-13 16:04:39 · 10152 阅读 · 4 评论 -
POCO C++库学习和分析 -- 通知和事件 (三)
POCO C++库学习和分析 -- 通知和事件 (三)4. 异步通知4.1 NotificationQueue类 Poco中的异步通知是通过NotificationQueue类来实现的,同它功能类似还有类PriorityNotificationQueue和TimedNotificationQueue。不同的是PriorityNotificationQueue类中对消原创 2013-03-14 22:07:51 · 9105 阅读 · 2 评论 -
漫谈ACE与设计模式
本文转自http://blog.youkuaiyun.com/colinchan/archive/2008/03/10/2164797.aspx说起C++的系统和网络编程开源库,恐怕没有人敢否认ACE的王者地位。其实ACE不光是一个实用的程序库和框架集,它更是一个设计模式的典范应用。ACE在线索引文档:http://www.dre.vanderbilt.edu/Doxygen/Stable/ace/ind转载 2008-09-17 09:35:00 · 889 阅读 · 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 · 8128 阅读 · 2 评论 -
POCO C++库学习和分析 -- 平台与环境
POCO C++库学习和分析 -- 平台与环境 在写程序的时候,有时候需要收集一些系统信息,用作软硬件的绑定或生成唯一的注册码信息等。Poco中提供了一个很简单的类Environment来实现这个功能。这个类的定义如下:class Foundation_API Environment /// This class provides access to envir原创 2013-03-31 10:50:40 · 5753 阅读 · 1 评论 -
libevent源码深度剖析十
转自 http://blog.youkuaiyun.com/sparkliang/article/details/5105392 Libevent的核心是事件驱动、同步非阻塞,为了达到这一目标,必须采用系统提供的I/O多路复用技术,而这些在Windows、Linux、Unix等不同平台上却各有不同,如何能提供优雅而统一的支持方式,是首要关键的问题,这其实不难,本节就来分析一下。转载 2011-10-25 10:07:44 · 563 阅读 · 0 评论 -
libevent源码深度剖析九
转自 http://blog.youkuaiyun.com/sparkliang/article/details/5054473 现在再来详细分析libevent中I/O事件和Timer事件的集成,与Signal相比,Timer事件的集成会直观和简单很多。Libevent对堆的调整操作做了一些优化,本节还会描述这些优化方法。1 集成到事件主循环 因为系统的I/O机制转载 2011-10-25 10:06:15 · 584 阅读 · 0 评论 -
深度剖析WinPcap之(八)——打开与关闭适配器(8)
本文转自http://eslxf.blog.51cto.com/918801/206420 1.5.2.1.1 PacketOpenAdapterNPF函数函数PacketOpenAdapterNPF()的作用是打开一个使用NPF设备驱动的适配器。该函数被PacketOpenAdapter()与AddAdapter()作为内部函数调用。函数原型如下:LPADAPT转载 2010-06-23 09:58:00 · 731 阅读 · 0 评论 -
深度剖析WinPcap之(二)——网络分析与嗅探的基础知识(5)
本文转自http://eslxf.blog.51cto.com/918801/202457 1.3.6 交换机欺骗正如前面所提及的,在一个网络上使用交换机使得嗅探更困难。从理论上而言,连接到交换机的计算机应该只看见发给自己的网络流量,然而存在一些技术可绕过该技术限定。下面列举了攻溃交换机防守的几种方式:Ø交换洪泛(Switch Flooding)一些交换机可以像一个集线器转载 2010-06-22 23:52:00 · 632 阅读 · 0 评论 -
深度剖析WinPcap之(二)——网络分析与嗅探的基础知识(4)
本文转自http://eslxf.blog.51cto.com/918801/201358 1.3.3 CSMA/CD以太网使用载波监听多点接入/冲突检测(CSMA/CD)协议,为了设备在网络上家交换数据。多点接入这个术语指许多网络设备连接到同一个网段 有发送的机会。每个设备赋予等同的发送机会;没有任何设备优先于其它设备。载波监听描述了一个网络设备的以太网接口在传送之前如何监转载 2010-06-22 23:51:00 · 849 阅读 · 0 评论 -
深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(7)
本文转自http://eslxf.blog.51cto.com/918801/198591 1.4.2.3 PacketAddAdapterNPF函数函数PacketAddAdapterNPF()向适配器链表g_AdaptersInfoList中添加一个节点。参数AdName是要添加的链表节点的适配器名称。如果函数成功则返回非0值。其主要代码如下所示:stati转载 2010-06-22 23:33:00 · 1036 阅读 · 0 评论 -
深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(5)
本文转自http://eslxf.blog.51cto.com/918801/198586 st1/:*{behavior:url(#ieooui) }1.4.2 PacketGetAdapterNames函数函数PacketGetAdapterNames获取可用网络适配器的一个列表与它们的描述。参数pStr是用户分配的字符串,用来存储适配器的名称。参数Buffer转载 2010-06-22 23:20:00 · 795 阅读 · 0 评论 -
深度剖析WinPcap之(七)——获得与释放网络适配器设备列表(3)
本文转自http://eslxf.blog.51cto.com/918801/1985811.3.3 pcap_freealldevs函数函数pcap_freealldevs()释放由函数pcap_findalldevs_ex()或pcap_findalldevs()返回的网络接口链表,函数参数alldevs为所需释放链表。函数的主要代码如下:void pcap_fr转载 2010-06-22 23:13:00 · 711 阅读 · 0 评论 -
深度剖析WinPcap之(六)——驱动程序的初始化与清除(4)
本文转自http://eslxf.blog.51cto.com/918801/198043 1.4 NPF的DriverUnload函数驱动程序的DriverUnload例程主要负责删除设备与取消符号连接,同时也可释放在DriverEntry中所分配的资源。当数据包捕获驱动程序卸载时,操作系统调用NPF_Unload函数。调用IoDeleteSymbolicLink函转载 2010-06-22 22:53:00 · 726 阅读 · 0 评论 -
深度剖析WinPcap之(六)——驱动程序的初始化与清除(1)
本文转自http://eslxf.blog.51cto.com/918801/197413 驱动程序的初始化主要由函数DriverEntry完成,卸载主要由函数DriverUnload完成。下面主要分析驱动程序的初始化与清除过程,以及相关的基础知识。图5-1 函数调用关系图1.1 结构体_NDIS_PROTOCOL_CHARACTERISTICS结构体_NDIS_PRO转载 2010-06-22 22:33:00 · 1116 阅读 · 0 评论 -
深度剖析WinPcap之(四)——WinPcap的体系架构(1)
本文转自http://eslxf.blog.51cto.com/918801/197405 WinPcap是Win32平台下用于数据包捕获与网络分析的一个架构。它包含一个内核层数据包过滤器,一个底层动态链接库(packet.dll),与一个高层并独立于系统的库(wpcap.dll)。1.1 WinPcap的主要组成WinPcap的各个主要组成部分如图2-1所示。图2-1转载 2010-06-22 22:19:00 · 1425 阅读 · 1 评论 -
深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(4)
本文转自http://eslxf.blog.51cto.com/918801/196917 v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}1.1.8 内转载 2010-06-22 22:16:00 · 752 阅读 · 0 评论 -
剖析WinPcap之(三)——所涉及的Windows驱动基础知识(2)
本文转自http://eslxf.blog.51cto.com/918801/196913 1.5.1 同步处理 Windows是个多任务抢占式的操作系统,如果没有同步机制的控制,所有的线程会任意运行。如果多个线程要求操作同一个资源,这时就需要同步处理。如果驱动程序没有很好地处理同步问题,程序会出错误、操作系统的性能下降、甚至出现死锁等现象。1.5.1.1转载 2010-06-22 22:12:00 · 630 阅读 · 0 评论 -
WinPcap所涉及的Windows驱动基础知识(1)
本文转自http://eslxf.blog.51cto.com/918801/196911 WinPcap所涉及的Windows驱动基础知识 1.1 Windows驱动的基础知识本节主要描述在WinPcap的NPF中经常使用一些编写Windows驱动程序所需掌握的部分基础知识,以便于后面的理解。1.1.1 驱动对象(DRIVER_OB转载 2010-06-22 21:16:00 · 843 阅读 · 0 评论 -
深度剖析WinPcap之(十)——数据包的内核过滤(15)
本文转自http://eslxf.blog.51cto.com/918801/290489 此处展示如何把高层的过滤表达式编译虚拟机的字节码,并以C程序段格式输出,与tcpdump或WinDump的–dd参数输出格式一样。示例使用参数格式如下:filter_nopcap [-O] 过滤表达式添加-O参数将对输出的指令不进行优化。代码实现如下[filternopcap]:转载 2010-06-23 11:27:00 · 659 阅读 · 0 评论 -
深度剖析WinPcap之(十)——数据包的内核过滤(11)
本文转自http://eslxf.blog.51cto.com/918801/269490 BPF通过引入静态单赋值(SSA),结合冗余谓词消除和窥孔优化等编译技术,可以有效缩短CFG图的平均路径长度,实现对过滤器性能的优化。 静态单赋值(SSA)的基本概念静态单赋值(static single assignment,SSA)是一种优化的编译器数据结构,使用SSA 中间表示形式转载 2010-06-23 11:20:00 · 890 阅读 · 0 评论 -
深度剖析WinPcap之(十)——数据包的内核过滤(8)
本文转自http://eslxf.blog.51cto.com/918801/249586 BPF虚拟机(BPF Pseudo-Machine)BPF包过滤模式的实现采用了过滤器虚拟机(filter pseudo-machine)的方式。BPF虚拟机由一个累加器、一个索引寄存器、一块内存区与一个隐含的指令计数器组成。虚拟机采用固定长度的指令,格式定义见表10-2。表10-2 过转载 2010-06-23 11:06:00 · 780 阅读 · 0 评论 -
深度剖析WinPcap之(十)——数据包的内核过滤(4)
本文转自http://eslxf.blog.51cto.com/918801/234819 1.1.2. #line宏宏#line直接告诉预处理器改变编译器内部存储的行号与文件名为指定的行号与文件名。使用格式如下:#line digit-sequence ["filename"]编译器使用行号与可选的文件名来指出编译过程中的错误。行号通常是当前输入文件的,文件名通转载 2010-06-23 11:02:00 · 702 阅读 · 0 评论 -
深度剖析WinPcap之(十)——数据包的内核过滤(2)
本文转自http://eslxf.blog.51cto.com/918801/231000 1.1.1.2 应用flex和bison编程的基本方法在用flex杯bison开发语言处理程序时,用户先编写一个flex源程序和一个bison源程序。flex , bison和C/C++是强耦合的。flex源程序经flex处理后,在文件lex.yy.c中生成一个用C语言描述的词法分析子转载 2010-06-23 11:00:00 · 866 阅读 · 0 评论