摘要: errno.h 提供了一个整数全局变量errno,当系统调用或者库函数的错误事件发生时可能会修改该值,指明错误的原因,该值可在任何需要的地方被修改;一般情况不为0的值表示出现了异常或者错误。 errno.h中定义了一系列的错误代码,以E开头的宏。 glibc中extern int errno来声明定 阅读全文
posted @ 2016-12-03 13:31 浩月星空 阅读(1078) 评论(0) 推荐(0) 编辑
摘要: ctype.h 主要提供了一些函数用以测试字符或字符处理的功能函数;包括字符判断检测、字符转换; 目前ASCII字符可分为以下一些类型,如:大写、小写、字母、数字、十六进制、空白字符、可打印字符、控制字符、字母数字、标点符号等,部分类型可能会重叠; ctype.h提供了如下字符处理函数; int i 阅读全文
posted @ 2016-12-03 13:04 浩月星空 阅读(5626) 评论(0) 推荐(0) 编辑
摘要: 先简单介绍一下<assert.h>头文件,该头文件的目的便是提供一个宏assert的定义,即可以在程序必要的地方使用其进行断言处理;断言在程序中的作用是当在调试模式下时,若程序给出的前提条件没有满足或是没有达到预期预定的条件便会出现断言为假,此时程序会异常终止,调试时会挂在该断言失败处(即结果为fa 阅读全文
posted @ 2016-12-03 11:57 浩月星空 阅读(1205) 评论(0) 推荐(0) 编辑
摘要: 基本上很多编程语言都会提供针对语言本身的一系列的标准库或者包,当然C语言同样也有提供标准库,C语言的标准库是一系列的头文件的集合;如assert.h、ctype.h、errno.h、float.h、limits.h、locale.h、math.h、setjmp.h、signal.h、stdarg.h 阅读全文
posted @ 2016-12-03 10:58 浩月星空 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 基本上C语言的可变参数原理在不同平台和不同编译器下基本类似(通过函数入栈,从右向左,从高位到低位地址),不过部分实现会有所不同;在使用中需要注意的是: va_list 为char 类型指针,部分调用如vnsprintf、vsprintf(内部通过遍历获取va_arg各个参数值)等会修改其指针位置;在 阅读全文
posted @ 2016-10-17 15:33 浩月星空 阅读(840) 评论(0) 推荐(0) 编辑
摘要: Microsoft Visual Studio IDE开发工具集,目前已推出多个不同版本,从之前的VC4.0到现在的VS2015,各个版本都会或多或少的功能或性能上的修改、提升,具体的改进地方可去官网了解;但无论如何,其始终只是一个开发工具,帮助开发人员快速、高效地完成工作,合理而有效的利用开发工具 阅读全文
posted @ 2016-08-27 13:27 浩月星空 阅读(3849) 评论(0) 推荐(0) 编辑
摘要: Microsoft Visual Studio PDB:调试的符号文件,程序数据库 (PDB) 文件保存着调试和项目状态信息,使用这些信息可以对程序的调试配置; 当以 /ZI 或 /Zi(用于 C/C++)生成时,将创建一个 PDB 文件。 在 Visual C++ 中,/Fd 选项用于命名由编译器 阅读全文
posted @ 2016-08-27 13:18 浩月星空 阅读(1379) 评论(0) 推荐(0) 编辑
摘要: props/vsprops:工程属性表文件(project property sheet) 后者为vs2008的,前者为vs2010及以后版本的,其主要包含工程属性配置相关,可以单独提取出来供不同工程项目公共使用,此外不同项目还可以追加、修改该继承(加载)的属性表,其他引用了该公共属性表的工程不受到 阅读全文
posted @ 2016-08-27 13:16 浩月星空 阅读(13892) 评论(0) 推荐(0) 编辑
摘要: 很多时候第三方库或其他项目提供的库多数会以动态库的形式提供dll以及相应的lib导入库、头文件,不过也有的只是提供dll和头文件,或者也提供了def模块定义(用于导出函数)文件,此时若使用将不得不调用LoadLibrary以及GetProcAddress以获取一系列需要的函数,相对来说比较繁琐;多数 阅读全文
posted @ 2016-08-24 14:19 浩月星空 阅读(2522) 评论(0) 推荐(0) 编辑
摘要: VS2005/VS2008软件发布: Debug版本: 非MFC程序: 编译选项mdd: 仅依赖C++库和C运行时库,需要到VS2005/VS2008下安装目录VC/redist/Debug_NonRedist中,找到Microsoft.VC90.DebugCRT目录,其中的清单文件*.manife 阅读全文
posted @ 2016-08-23 11:39 浩月星空 阅读(1483) 评论(0) 推荐(0) 编辑
摘要: 日期时间DateTime:内部提供多个设计计时器、日期、时区、时间戳等; Clock.h :Clock时钟计时类,_clock:Int64类型时钟值,CLOCKVAL_MIN、CLOCKVAL_MAX:最小、最大时钟值;提供多个重载版本的构造函数、复制、拷贝构造函数实现,以及多个不同的条件运算符重载 阅读全文
posted @ 2016-07-14 22:20 浩月星空 阅读(2847) 评论(0) 推荐(0) 编辑
摘要: 加解密Crypt:内部提供多种加解密方式、信息摘要提取、随机数产生等,具体的算法内部实现不做研究学习; DigestEngine.h :DigestEngine类作为各种摘要提取的基类,提供必要的接口;update:参数为提供将被提取的数据信息,digest:获取信息摘要,digestLength: 阅读全文
posted @ 2016-07-14 22:16 浩月星空 阅读(786) 评论(0) 推荐(0) 编辑
摘要: 缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现; ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效,此外提供key获取键、isValid是否键有效,invalidate使得键值无效;默认情况下键为有效 阅读全文
posted @ 2016-07-14 22:13 浩月星空 阅读(1034) 评论(0) 推荐(0) 编辑
摘要: 核心Core: Version.h:版本控制信息,宏POCO_VERSION,值格式采用0xAABBCCDD,分别代表主版本、次版本、补丁版本、预发布版本; Poco.h:简单地包含了头文件Foundation.h; Foundation.h:使用其他任何Foundation模块前需要包含的头文件, 阅读全文
posted @ 2016-07-14 21:59 浩月星空 阅读(2797) 评论(1) 推荐(1) 编辑
摘要: Foundation组件作为POCO库的基础组件,主要包含了核心Core、缓存Cache、加解密Crypt、日期时间DateTime、动态类型Dynamic、事件events、文件系统Filesystem、哈希Hashing、日志Logging、通告机制Notifications、进程Process 阅读全文
posted @ 2016-07-14 21:57 浩月星空 阅读(1412) 评论(0) 推荐(0) 编辑
摘要: 项目概述: HP-SOCKET是一套通用TCP/UDP通信框架,包括服务器、客户端、Agent组件;其目标是提供高性能、通用性、简易性、可扩展、可定制; 鉴于此,其仅实现基本的通用框架通信、数据收发功能,供上层应用直接简单使用的接口实现;而对于数据包完整性和协议解析等未处理, 也就意味着需要应用层自 阅读全文
posted @ 2016-07-14 21:28 浩月星空 阅读(11177) 评论(0) 推荐(2) 编辑
摘要: notepad++ 采用nppexec插件来配置简易开发环境,而不需要笨重的IDE以及麻烦、重复的命令行、控制台输入; 以下为本人最近用到的脚本配置: //编程语言脚本中$(NAME_PART).xxx(xxx为文件后缀)的文件可以直接用$(FILE_NAME)替代,//若语言对文件后缀敏感最好还是 阅读全文
posted @ 2016-07-14 21:21 浩月星空 阅读(3812) 评论(1) 推荐(1) 编辑
摘要: 在《Duilib源码分析(一)整体框架》、《Duilib源码分析(二)控件构造器—CDialogBuilder》以及《Duilib源码分析(三)XML解析器—CMarkup》中我们已从粗略的角度去分析框架操作流程和消息流程,只能对其有基本的印象,此处我们将通过实际的举例分析,duilib创建的工... 阅读全文
posted @ 2015-12-17 21:45 浩月星空 阅读(2751) 评论(0) 推荐(0) 编辑
摘要: 接下来,继续分析duilib之UI布局Layout,目前提供的布局有:VerticalLayout、HorizontalLayout、TileLayout、TabLayout、ChildLayout分别为垂直布局、水平布局、平铺布局、TAB布局、子窗体布局; 一般项目中用得比较多的是垂直布局、... 阅读全文
posted @ 2015-12-14 21:14 浩月星空 阅读(5959) 评论(0) 推荐(0) 编辑
摘要: 简介: Breadpad为google chrominum项目下用于处理dump的一套工具;内部采用跨平台方式实现捕获、生成、解析与平台无关的dump,便于统一处理;支持进程内与进程外捕获,当为进程外捕获时,客户端捕获异常并告知服务器端抓取该crash并生成相应dump文件。以下仅针对window... 阅读全文
posted @ 2015-12-12 13:09 浩月星空 阅读(3420) 评论(0) 推荐(1) 编辑
摘要: Pugixml是一个轻量级的C++ XML开源解析库,DOM形式的解析器、接口和丰富的遍历和修改操作,快速的解析,此外支持XPath1.0实现数据查询,支持unicode编码; 使用Pugixml可通过直接在项目中包含其几个文件或者编译为动态库dll、静态库lib的形式供其他项目使用、比较方便,如... 阅读全文
posted @ 2015-12-12 12:36 浩月星空 阅读(9294) 评论(0) 推荐(1) 编辑
摘要: GTest为google开源的白盒单元测试跨平台测试框架,含丰富的断言、类型参数化测试、死亡测试、以及其他的测试选项设置、文件保存等,以下将对该项目C++的实现进行简要的分析,作为学习记录备份。 基本上内部使用了大量的宏、模板,因此在分析源码时跟踪会比较麻烦,这也是有的开发项目团队不推荐使用宏... 阅读全文
posted @ 2015-12-12 12:27 浩月星空 阅读(1032) 评论(0) 推荐(0) 编辑
摘要: 接下来,分析uilib.h中的UIManager.h,在正式分析CPaintManagerUI前先了解前面的一些宏、结构; 枚举类型EVENTTYPE_UI:定义了UIManager.h中事件通告类型TEventUI结构中的各Type值,从UIEVENT__FIRST至UIEVENT__LAST分... 阅读全文
posted @ 2015-11-30 22:24 浩月星空 阅读(2424) 评论(0) 推荐(0) 编辑
摘要: 接下来,分析uilib.h中的WinImplBase.h和UIManager.h; WinImplBase.h:窗口实现基类,已实现大部分的工作,基本上窗口类均可直接继承该类,可发现该类继承于多个类,我们将对其父类逐一分析,然后整合分析该窗口实现基类,我们按照继承顺序开始 接下来的分析; C... 阅读全文
posted @ 2015-11-28 16:39 浩月星空 阅读(1219) 评论(0) 推荐(0) 编辑
摘要: 很多时候安装软件越来越多,部分软件产生的临时文件、垃圾文件常常存在于C盘系统盘中;日积夜累直接导致可用的系统盘空间越来越小,直到没有多余的空间为止,最后可能的结果是系统异常、软件无法正常运行;此时可以通过其他第三方软件工具或杀毒、安全卫士之类的清理比较全面或者重新安装操作系统,不过这样也会非常麻... 阅读全文
posted @ 2015-11-09 18:21 浩月星空 阅读(3440) 评论(0) 推荐(1) 编辑
摘要: 接下来,我们将继续分析UIlib.h文件中其他的文件, UIContainer.h, UIRender.h, WinImplBase.h, UIManager.h,以及其他布局、控件等; 1. UIRender.h:UI渲染器,其中cpp文件中,定义的ZIP压缩相关的数据结构,以及宏操作,与X... 阅读全文
posted @ 2015-11-07 12:13 浩月星空 阅读(3913) 评论(1) 推荐(2) 编辑
摘要: 接下来,我们继续分析UIlib.h文件中余下的文件,当然部分文件可能顺序错开分析,这样便于从简单到复杂的整个过程的里面,而避免一开始就出现各种不理解的地方。 1. UIManager.h:UI管理器,暂时放在后面介绍; 2. UIBase.h:UI窗口相关,包括常用的窗口风格、窗口类风格的宏... 阅读全文
posted @ 2015-11-02 23:49 浩月星空 阅读(2865) 评论(0) 推荐(0) 编辑
摘要: 上节中提到在遍历创建控件树后,执行了以下操作: 1. CDialogBuilder构建各控件对象并形成控件树,并返回第一个控件对象pRoot; 2. m_pm.AttachDialog(pRoot);m_pm.AddNotifier(this);将控件attach到CPaintMana... 阅读全文
posted @ 2015-10-31 19:35 浩月星空 阅读(1931) 评论(0) 推荐(1) 编辑
摘要: 上一节介绍了控件构造器CDialogBuilder,接下来将分析其XML解析器CMarkup; CMarkup:xml解析器,目前内置支持三种编码格式:UTF8、UNICODE、ASNI,默认为UTF8;CMarkupNode:xml节点类 先介绍CMarkup: XMLELEMENT: ... 阅读全文
posted @ 2015-10-31 11:48 浩月星空 阅读(2814) 评论(0) 推荐(0) 编辑
摘要: 以下主要包含windows下公共库以及跨平台公共库: 1. google base库:google下chromium项目的跨平台公共库; 2. vc_common_src:即HP_SOCKET项目中的公共库; 3. dlib:跨平台公共库,比较综合的各种库; 4. stlsoft:包含w... 阅读全文
posted @ 2015-10-30 09:45 浩月星空 阅读(858) 评论(0) 推荐(0) 编辑
摘要: 上一节了解了大体流程,但是界面控件元素是如何被加载、解析、构建、管理、控件消息如何处理的呢?接下来我们将结合控件构造器进行分析; CDialogBuilder:控件构造器,主要用以解析xml配置文件并以此创建相应控件及相关属性。 类成员数据: m_xml:xml解析器,用以读取并解析x... 阅读全文
posted @ 2015-10-29 18:01 浩月星空 阅读(2635) 评论(0) 推荐(0) 编辑
摘要: Duilib界面库是一款由杭州月牙儿网络技术有限公司开发的界面开源库,以viksoe项目下的UiLib库的基础上开发(此后也将对UiLib库进行源码分析);通过XML布局界面,将用户界面和处理逻辑彻底分离,极大地提高用户界面的开发效率。一般常用于开发小型项目Windows桌面客户端软件;其子窗口... 阅读全文
posted @ 2015-10-29 10:13 浩月星空 阅读(4245) 评论(1) 推荐(0) 编辑
摘要: 通过使用VC下的CL编译器,可方便地编译Lua源码,而无需构造工程并设置各种选项;以下以源码Lua5.3.1版本为例,将通过CL编译选项直接编译源码,为方便编译将采用批处理脚本,脚本放置在Lua解压后的目录下如:Lua.bat,具体内容如下: mkdir bincd srcdel *.objc... 阅读全文
posted @ 2015-10-21 16:57 浩月星空 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 以下主要Python打包汇总,作为学习备份; 一、使用python内部基础工具包Distutils打包程序 1. 在打包之前需要做的就是配置好安装脚本,一般为setup.py文件; 示例(setup.py): from distutils.core import setup setup(name=' 阅读全文
posted @ 2015-10-13 16:17 浩月星空 阅读(2260) 评论(0) 推荐(0) 编辑
摘要: windows下安装python第三方包、模块汇总如下(部分方式同样适用于其他平台): 1. windows下最常见的*.exe,*msi文件,直接运行安装即可; 2. 安装easy_install,可以去官网下载:http://peak.telecommunity.com/dist/ez_setu 阅读全文
posted @ 2015-10-13 10:59 浩月星空 阅读(1452) 评论(0) 推荐(0) 编辑
摘要: 本文将介绍debug调试相关的内容,包括调试器、性能分析、堆跟踪、跟踪事件等; alias.h:Alias函数,提供防止载微软的编译器优化某参数变量的操作,内部通过#pragma optimize("", off)与#pragma optimize("", on)来实现关闭所有的优化选项,再恢... 阅读全文
posted @ 2015-09-19 11:38 浩月星空 阅读(2118) 评论(0) 推荐(0) 编辑
摘要: 以下为本人个人常用的工具,仅供备份记录。 编辑工具: Notepad++:一款非常有特色的编辑器,开源软件,可免费使用。内置支持多达27种语法高亮度显示(包括各种常见的源代码、脚本,能够很好地支持.nfo文件查看),还支持自定义语言;功能比Windows中的Notepad(记事本)强大,一般使用ID 阅读全文
posted @ 2015-09-12 11:46 浩月星空 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 本节将介绍base公共通用库中的containers,其包含堆栈、列表、集合、以及Most Recently Used cache(最近使用缓存模板)。 linked_list.h:一个简单的列表类型,通过模板实现,内部采用双链表的形式,有区别于c++标准模板库的std::list,它的使用方... 阅读全文
posted @ 2015-09-09 21:43 浩月星空 阅读(1710) 评论(0) 推荐(0) 编辑
摘要: 上次提到Chromium浏览器中base公共通用库中的内存分配器allocator,其中用到了三方库tcmalloc、jemalloc;对于这两个内存分配器,个人建议,对于内存,最好是自己维护内存池;此外在windows下使用可使用其自带的内存分配方式;具体的第三方库可以参阅:http://ww... 阅读全文
posted @ 2015-09-07 23:29 浩月星空 阅读(2725) 评论(0) 推荐(0) 编辑
摘要: Google的优秀C++开源项目繁多,其中的Chromium浏览器项目可以说是很具有代表性的,此外还包括其第三开发开源库或是自己的优秀开源库,可以根据需要抽取自己感兴趣的部分。在研究、学习该项目前的时先获取到需要获取一份谷歌的Chromium源码,可参考:http://blog.csdn.net/k 阅读全文
posted @ 2015-09-05 12:57 浩月星空 阅读(6980) 评论(0) 推荐(0) 编辑