C++
Ensk
trip to Ensk...
展开
-
同步,异步,阻塞,非阻塞的区别
同步与异步同步与异步的重点在消息通知的方式上 , 也就是调用结果通知的方式 ;同步 : 当一个同步调用发出去后 , 调用者要一直等待调用结果的通知 , 直到得到调用结果 ;异步 : 当一个异步调用发出去后 , 这个调用就直接返回了 , 调用者不能立即得到调用结果的返回 , 而是在调用发出后 , 被调用者通过状态 , 通知来通知调用者 , 或通过回调函数处理这个调用 ;异步调用要想获得结果 , 一般有转载 2017-04-01 11:50:58 · 323 阅读 · 0 评论 -
C++ 编辑注册表
1. 注册表简介注册表是 Windows 操作系统中的一个核心数据库 , 其中存放着各种参数 , 直接控制着 Windows 的启动 , 硬件驱动程序的装载以及一些 Windows 应用程序的运行 , 从而在整个系统中起着核心作用 ; 这些作用包括了软 , 硬件的相关配置和状态信息 , 比如注册表中保存有应用程序和资源管理器外壳的初始条件 , 首选项和卸载数据等 , 联网计算机的整个系统的设置和各种原创 2017-10-24 14:45:16 · 3788 阅读 · 0 评论 -
C++ 使用正则表达式
概述正则表达式 , 又称规则表达式 , 英文名为 Regular Expression , 在代码中常简写为 regex , regexp 或 RE , 是计算机科学的一个概念 ; 正则表通常被用来检索、替换那些符合某个模式(规则)的文本 ;正则表达式是对字符串 (包括普通字符 , 例如 : a 到 z 之间的字母) 和特殊字符 (称为 “元字符” ) 操作的一种逻辑公式 , 就是用事先定义好的一些原创 2017-10-24 10:21:20 · 15558 阅读 · 0 评论 -
Win32 多线程同步
多线程同步概述线程之间通信的两个基本问题是互斥和同步线程同步是指线程之间所具有的一种制约关系 , 一个线程的执行依赖另一个线程的消息 , 当它没有得到另一个线程的消息时应等待 , 直到消息到达时才被唤醒 ;线程互斥是指对于共享的操作系统资源 , 在各线程访问时的排它性 ; 当有若干个线程都要使用某一共享资源时 , 任何时刻最多只允许一个线程去使用 , 其它要使用该资源的线程必须等待 , 直到占用原创 2017-09-08 12:45:48 · 793 阅读 · 0 评论 -
Win32 多线程编程
多线程概述进程和线程都是操作系统的概念 ; 进程是应用程序的执行实例 , 每个进程是由私有的虚拟地址空间 , 代码 , 数据和其它各种系统资源组成 , 进程在运行过程中创建的资源随着进程的终止而被销毁 , 所使用的系统资源在进程终止时被释放或关闭 ;线程是进程内部的一个执行单元 ; 系统创建好进程后 , 实际上就启动执行了该进程的主执行线程 , 主执行线程以函数地址形式 , 比如说 main 或 W原创 2017-09-07 16:59:40 · 604 阅读 · 0 评论 -
MFC 多线程编程
MFC 多线程概述MFC中有两类线程 , 分别称之为工作者线程和用户界面线程 ; 二者的主要区别在于 工作者线程没有消息循环 , 而用户界面线程有自己的消息队列和消息循环 ;工作者线程没有消息机制 , 通常用来执行后台计算和维护任务 , 如冗长的计算过程 , 打印机的后台打印等 ;用户界面线程一般用于处理独立于其他线程执行之外的用户输入 , 响应用户及系统所产生的事件和消息等 ;但对于 Wi原创 2017-09-23 16:43:36 · 491 阅读 · 0 评论 -
使用VS2012调试Dump文件
前一节我讲了怎么设置C++崩溃时生成Dump文件 , 点击 传送门 , 这一节我讲讲怎么使用 VS2012 调试生成的 Dump 文件 , 甚至可以精确到出错的那一行代码上面 ;1. 生成 Dump 文件我在主函数写了如下崩溃代码 :int main(){ // 加入崩溃dump文件功能 SetUnhandledExceptionFilter(ExceptionFilter);原创 2017-06-05 10:24:23 · 18054 阅读 · 1 评论 -
设置C++崩溃时生成Dump文件
设置C++崩溃时生成dump文件Dump 文件是进程的内存镜像 , 可以把程序的执行状态通过调试器保存到dump文件中 ; Dump 文件是用来给驱动程序编写人员调试驱动程序用的 , 这种文件必须用专用工具软件打开 , 比如使用 WinDbg , VisualStudio 打开 ;当我们的程序发布出去之后 , 在客户机上是无法跟踪自己代码的 BUG 的 , 所以 Dump 文件对于我们来说特别有用原创 2017-06-02 15:48:02 · 15215 阅读 · 6 评论 -
Windows使用C++获取网卡信息
使用 Windows sdk 提供的 API 函数 GetAdaptersInfo() 可以获得本机所有网卡的网卡名 , 网卡描述 , 网卡 MAC 地址 , 网卡IP , 网卡类型等信息 , 并用 IP_ADAPTER_INFO 结构体存储 ; 使用 GetIfEntry() 可以获取网卡的状态 , 可有效判断出网卡通讯是否正常 , 是否插入网线等状态 ; 代码如下 :#include "stda转载 2017-04-26 11:14:13 · 6402 阅读 · 0 评论 -
Windows上C++使用命名管道进行进程间通讯
命名管道是通过网络来完成进程间的通信 , 它屏蔽了底层的网络协议细节 ; 我们在不了解网络协议的情况下 , 也可以利用命名管道来实现进程间的通信 ; 与 Socket 网络通信相比 , 命名管道不再需要编写身份验证的代码 ; 将命名管道作为一种网络编程方案时 , 它实际上建立了一个 C/S 通信体系 , 并在其中可靠的传输数据 ; 命名管道服务器和客户机的区别在于 : 服务器是唯一一个有权创建命名管原创 2017-04-20 19:06:04 · 6875 阅读 · 0 评论 -
C++使用Jsoncpp解析Json数据
1. 下载 Jsoncpp , 生成项目下载 Jsoncpp 源码 , 链接 : https://github.com/open-source-parsers/jsoncpp解压后 , 打开 jsoncpp-master\makefiles\vs71\jsoncpp.sln 项目文件 , 生成 lib_json 项目 , 会生成 jsoncpp.lib 文件 ;2. 项目中引用 Jsoncpp将 J原创 2017-04-16 23:08:49 · 2544 阅读 · 0 评论 -
VS2012创建和使用DLL
1. 创建 DLL 项目点击 新建项目 -> Win32项目 , 在应用程序向导界面 , 选择 DLL 和 导出符号 , 如下图所示 :选择 导出符号 , 会自动为我们创建生成DLL的模板 : 创建了导出变量 nMakeDLL , 导出函数 fnMakeDLL , 导出类 CMakeDLL , 如下所示 :// ExampleDLL.cpp : 定义 DLL 应用程序的导出函数。//#includ原创 2017-04-16 20:22:19 · 2114 阅读 · 0 评论 -
Windows上C++使用共享内存进行进程间通讯
共享内存 (也叫内存映射文件) 主要是通过映射机制实现的 , Windows 下进程的地址空间在逻辑上是相互隔离的 , 但在物理上却是重叠的 ; 所谓的重叠是指同一块内存区域可能被多个进程同时使用 , 当调用 CreateFileMapping 创建命名的内存映射文件对象时 , Windows 即在物理内存申请一块指定大小的内存区域 , 返回文件映射对象的句柄 hMap ; 为了能够访问这块内存区域原创 2017-04-19 22:54:40 · 16194 阅读 · 2 评论 -
Windows上C++使用WM_COPYDATA函数进行进程间通讯
Windows 程序可以使用 WM_COPYDATA 函数来实现一些进程间的简单通信 , 使用 SendMessage 来发送消息 :SendMessage(接收窗口句柄, WM_COPYDATA, (WPARAM)发送窗口句柄, (LPARAM)©Data);其中的 copyData 是要发送的数据 , 类型为 COPYDATASTRUCT 结构体 :typedef struct tagC原创 2017-04-19 23:48:16 · 6095 阅读 · 1 评论 -
MFC获取当前程序运行路径
MFC 可以使用 GetModuleFileName 函数经过处理后 , 来获取当前程序运行的路径 , 源码如下 :CString GetProgramPath(){ CString strProgramPath; GetModuleFileName(NULL,strProgramPath.GetBuffer(MAX_PATH),MAX_PATH); strProgra原创 2017-04-11 17:23:22 · 2821 阅读 · 0 评论 -
C++使用TinyXml2解析Xml
1. TinyXml2 简介TinyXml 一直是一个非常好用的 Xml 解析工具 , 最新的开源版本 TinyXml2 相对于旧版本的 TinyXml 使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳选择 , 除非您有维护TinyXML-1代码的要求 ; TinyXml2 使用类似的 API 到 TinyXml1 和相同的丰富的测试原创 2017-03-26 21:35:34 · 13448 阅读 · 0 评论 -
C++ 获取系统和程序的位数
1. 概述如今 64 位系统越来越流行了 , 对于软件开发人员来说 , 掌握 64 位开发技术将会有更好的发展空间 ; 而且经过这几年的发展 , 64 位开发工具也成熟了 , 例如 Visual Studio 2010 等后续版本 ;关于如何配置64位平台 , MSDN上有详细的介绍 : http://msdn.microsoft.com/zh-cn/library/9yb4317s.aspx在很多原创 2017-10-24 15:13:33 · 3790 阅读 · 2 评论