摘要:
等待线程完成: join;只可调用一次,此外最好在调用之前调用joinable测试是否可调用;此外调用join后线程已不可用,joinable将fanhuifalse。 分离线程: detach:一般作为后台运行的线程,有时候还是有用的。但需要处理好线程所持有的资源、生命周期的问题,可以使用长生命周期的资源 或者拷贝一份资源到该线程的堆栈里而不是共享使用资源。调用detach后线程执行与线程对象将 阅读全文
摘要:
何为并发: 两个或者多个独立活动同时发生,对于单核心的任务切换也认为是并发。 目前真正有意义的是硬件并发,对于多核心多线程的任务,并发程度取决于可用的硬件并发。 任务切换存在一定的上下文切换开销,以保存当前CPU状态、PC、指令等, 同样的切换回另个任务时需要重新加载早期的处理状态、内存载入缓存等。 另外并发和并行也存在一定的差异。 并发方式: 多进程并发:进程间独立执行任务,且通过进程间通信传递 阅读全文
摘要:
glog为google开源库用于实现应用层日志记录,提供了基于C++ Stream流及各种帮助宏定义的日志记录接口,提供到控制台、文件的日志记录功能; 以下以基于windows平台下,最基本框架使用入手,分析该开源项目,示例代码; #define GOOGLE_GLOG_DLL_DECL #defi 阅读全文
摘要:
ProtoBuf项目描述: Google Protocol Buffer简称protobuf,为高效的二进制序列化/反序列化协议(一般为google内部使用),不同于xml、json等,其更小巧、高效;avro、thrift等; 其可用于网络协议、数据存储等语言无关、平台无关、可扩展的序列化结构数据格式。只要按照特定条件可支持向前、向后兼容;目前提供了C++、Java、Python 三种... 阅读全文
摘要:
char_traits.h : __char_traits_base:字符特性模板基类: 内部重声明了char_type字符类型,int_type整型类型; 此外提供了多个静态成员函数,如: assign:分配函数,将源字符内容赋值给目标字符;此外还有一个重载版本,其将某个字符赋值给指定长度n的字符串缓冲区,即赋值n次(注意目标缓冲区大小不可小于n); eq:相等比较函数,比较两个参数字符内容,相 阅读全文
摘要:
阅读全文
摘要:
stl_set.h : set:有序关联容器,值类型和键类型为同一个,且各个容器元素唯一,插入或删除在线性时间内完成,此外插入等操作不会影响迭代器失效的情况; set:关联容器set模板类,其参数分别为_Key、_Compare、_Alloc,对应键值类型、比较函数、内存分配器; 此外提供了特化版本,其比较函数使用的是less,分配器使用宏__STL_DEFAU... 阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:
阅读全文
摘要:
stl_bvector.h : bit_vector 重声明为vector即使用alloc作为内存分配器,其为非模板类,__BVECTOR也即vector为模板类,若使bit_vector重声明为__BVECTOR则也可为模板类; 相比vector,其可保持一个位一个元素而不是至少一个字节一个元素;此外基本的函数和vector相同,还有其他额外的提供的接口实现; bit_... 阅读全文
摘要:
utility: stl_relops.h : 内部提供了重载模板operator!=、operator>、operator=,而这几个模板函数内部使用到了operator==以及operator其中T*为 申请到的空间地址,第二个参数为实际分配到的空间大小;最大可申请大小为INT_MAX / sizeof(T);申请策略为:先调整申请大小并申请需求大小空间(内部通过malloc... 阅读全文
摘要:
阅读全文
摘要:
stl_construct.h : 提供多种构造器、销毁器模板函数; 构造器construct提供了给定值构造和默认构造方式,通过调用重载函数_Construct实现; 销毁器destroy提供了销毁指针和迭代器的方式,通过调用重载函数_Destroy实现; _Construct:通过“放置”new,构造实现; _Destroy:通过调用模板类型对象析构函... 阅读全文
摘要:
stl_exception.h : 异常处理,通过宏提供可继承于标准exception或简易异常基类_Exception作为整个STL的异常基类; stdexcept : __Named_exception命名异常基类,继承于stl_exception.h中的异常基类,_M_name:最大256字节数组,保存异常信息; 其他异常类,如继承体系(分为两大类:逻辑错... 阅读全文
摘要:
阅读全文
摘要:
一、QT与JS/HTML通信交互 前提: 提前连接QWebFrame的javaScriptWindwoObjectCleared信号时将自身对象添加到JS窗口对象中,也即是:QwebFrame::addToJavaScriptWindowObject(“someobj”, this); 其中someobj便是JS中可调用的QT对象名称,即someobj指代传入的this对象; 其次,JS中可调用的 阅读全文
摘要:
第一部分 基本操作 以Ubuntu16.04操作系统为例(其他系统类似),主要记录常用的、基本操作: 0. 安装Git 分散型版本控制系统(CVS); sudo apt-get install git 1. 初始化本地配置git或其他配置等(配置仓库或者全局选项,一般保存在.gitconfig中) 阅读全文
摘要:
VS2010支持C++11特性的部分记录: 语言特性: 1. 右值引用 2. static_assert 3. auto 4. decltype 类型提取 5. 结尾返回类型,即函数返回类型声明后置,类似于auto func(int i, int j) -> int; 6. Lambdas表达式 7 阅读全文
摘要:
目标 需支持种类繁多的数据类型、跨语言、跨平台、高性能、兼容性且可扩展 数据类型系统 传输层 Transport 编码/解码层(或序列化/反序列化,协议层) Protocol 版本系统 支持可插拔、兼容的数据的机制 处理器 生成代码和RPC调用 Processor 特性和非特性 特性 中间语言描述文 阅读全文
摘要:
即 Windows 下的命名空间扩展 命名空间扩展 一种允许将外部自定义的信息集成到windows资源管理器,以用户自定义显示方式来处理数据信息,资源管理器提供必要的控制、交互接口、GUI实现。 实现命名空间扩展 一个文件件管理器对象,用于请求其其需要的信息 一个显示文件夹内容的视图窗口 一个枚举文 阅读全文
摘要:
一、COM组件基础 1.程序的编写方式 1) 面向过程的结构化编程 自顶向下的编程方式(流程图) 2) 面向对象的编程 以对象或以类为中心,更符合人的思维习惯,通过模拟现实情况完成软件的编写。(类图) 3) 面向组件的编程 将一些功能直接封装成可以执行的二进制模块,类似于搭积木的方式。更适合大型项目 阅读全文
摘要:
一、 Windows 内存管理 2.1 用户地址空间 0 - 2G(0x7FFFFFFF )存放用户的程序和数据。用户空间的代码是不能访问内核空间的数据和代码。 2.1.1 空指针区(NULL区,0-64K)系统将地址小于64K指针,都认为是空指针。 2.1.2 用户区 64K~ 0x7FFEFFF 阅读全文
摘要:
1、 多文档界面(MDI) MDI主窗口(主框架窗口MainFrame) MDI客户窗口(MDICLIENT) MDI 子窗口1 MDI 子窗口2 ……. 1)创建MDI主窗口 a) 没有父窗口,需要注册窗口类,定义窗口过程函数 b) MDI主窗口的窗口过程函数,不再调用DefWindowProc。 阅读全文
摘要:
一、 文字 1.绘制文字: TextOut – 绘制单行文字: 将文字绘制在指定坐标位置 BOOL TextOut( HDC hdc, // 设备上下文 int nXStart, // 文本行开始位置 int nYStart, // LPCTSTR lpString, // 文本串 int cbSt 阅读全文