随笔分类 -  C++

摘要:记录学习,方便以后查看。 2014-12-28 看完这本书,但是我做到的又有多少呢?确实有一部分 0 不要拘泥于小节 1 在高警告级别干净利落的进行编译,不放过任何警告 2 使用自动构建系统 3 使用版本控制系统VCS 4 在代码审查上投入,对于人交流 5 一个实体应该只有一个紧凑的职责(一次只解决 阅读全文
posted @ 2015-04-09 19:08 struggle_time 阅读(1615) 评论(0) 推荐(0) 编辑
摘要:这是前段时间看的书,整理到这里吧,以后查看也方便。这些条款需要反复查看。条款01:视C++为一个语言联邦条款02:尽量用const、enum、inline替换#define条款03:尽可能的使用const条款04:确定对象被使用前已被初始化条款05:了解C++默认编写并调用哪些函数条款06:若不想使... 阅读全文
posted @ 2015-04-09 17:58 struggle_time 阅读(746) 评论(0) 推荐(0) 编辑
摘要:看了好多次,感觉这一次才算是真正理解了#pragma pack(4)//可手动指定对齐值typedef struct DDD{ char a;//1 起始位置可为1,2,3,4,5……. 这个放在位置1 short b;//2起始位置可为1,2,4,6,8….. 这个需要放在位置2,故之前补1 i... 阅读全文
posted @ 2015-03-18 13:28 struggle_time 阅读(257) 评论(0) 推荐(0) 编辑
摘要:分类:输入迭代器(input iterator) < 前向迭代器(forward iterator)< 双向迭代器(bidirectional iterator)< 跳转迭代器(random access iterator)和 输出迭代器(output iterator)继承关系如下struct i... 阅读全文
posted @ 2014-11-18 18:48 struggle_time 阅读(328) 评论(0) 推荐(0) 编辑
摘要:反转迭代器顾名思义,反向操作容器,而插入迭代器是将迭代器的赋值操作转换为push_back(),push_front(),insert()操作。插入迭代器要求容器必须包含对应的push_back(),push_front(),insert()操作,这样才能对容器进行插入。插入迭代器分三种 back... 阅读全文
posted @ 2014-11-18 18:43 struggle_time 阅读(1024) 评论(0) 推荐(0) 编辑
摘要:模板基础1、模板参数自动推导,如果是已知的参数类型与个数,这调用模板时可以不写类型。 Cout(1,3);可以写为Cout 6 T2 func(T1 v1,T3 v3,T4 v4); 7 8 9 template 14 T2 func(T1 v1,T3 v3,T4 v4)15 {16 T... 阅读全文
posted @ 2014-11-13 13:11 struggle_time 阅读(761) 评论(0) 推荐(1) 编辑
摘要:这个定时关机运行过后默认最小化到托盘栏最好了,不用每次都去点了。现在来看看如何将程序显示在托盘栏。首先在头文件里声明一个变量和一个消息响应函数1 //最小化到托盘栏2 //第一步,生成一个成员变量,或者一个全局变量3 NOTIFYICONDATA m_NOTIFYICON;4... 阅读全文
posted @ 2014-05-06 13:50 struggle_time 阅读(1356) 评论(3) 推荐(3) 编辑
摘要:虽然上一篇实现了的定时关机,但是还不够完善,比如开机自动启动,然后按照配置的时间定时关机,并最小化到任务栏。先来说开机启动怎么实现,开机启动实现的方法有好几种,比如直接在开始菜单启动项里添加一个程序的快捷方式,路径为 C:\ProgramData\Microsoft\Windows\Start M... 阅读全文
posted @ 2014-05-05 21:15 struggle_time 阅读(1449) 评论(0) 推荐(0) 编辑
摘要:写个定时关机程序自用,界面简单实用,最终界面如下第一步,新建一个MFC对话框应用程序,拖几个控件过来,界面如下:然后给下拉列表框,复选按钮绑定变量,以方便进行操作。 CComboBox m_com_hour; CComboBox m_com_minute; CComboBox m_com... 阅读全文
posted @ 2014-05-05 13:35 struggle_time 阅读(2102) 评论(1) 推荐(2) 编辑
摘要:这里以一个简单的学生信息管理系统为例。 首先是对象的建立,包括姓名,学号,成绩,学分,等 如下: 这里面包括两个子对象, 1 class Student 2 { 3 public: 4 Student() :score(), birthday(){}//对子对象进行初始化 5 ... 阅读全文
posted @ 2014-05-04 22:43 struggle_time 阅读(10981) 评论(1) 推荐(1) 编辑
摘要:内存映射和堆栈内存映射文件内存映射文件可以用于3个不同的目的: 系统使用内存映射文件,以便加载和执行.exe和DLL文件。这可以大大节省页文件空间和应用程序启动运行所需的时间。 可以使用内存映射文件来访问磁盘上的数据文件。这使你可以不必对文件执行I/O操作,并且可以不必对文件内容进行缓存。 可以使用内存映射文件,使同一台计算机上运行的多个进程能够相互之间共享数据。Windows确实提供了其他一些方法,以便在进程之间进行数据通信,但是这些方法都是使用内存映射文件来实现的,这使得内存映射文件成为单个计算机上的多个进程互相进行通信的最有效的方法。内存映射数据文件的方法 1、 一个文件,一个缓... 阅读全文
posted @ 2013-11-28 11:39 struggle_time 阅读(1313) 评论(0) 推荐(3) 编辑
摘要:Windows提供了两种方式“套接字模式”和“套接字I/O模型”,可对一个套接字上的I/O行为加以控制。套接字模式用于决定在随一个套接字调用时,那些 Winsock函数的行为。其中的模型包括括select(选择)、WSAAsyncSelect(异步选择)、WSAEventSelect(事件选择)、OverlappedI/O(重叠式I/O)以及Completionport(完成端口)等等。 所有Windows平台都支持套接字以锁定或非锁定方式工作。在锁定模式下,在I/O操作完成前,执行操作的Winsock函数(比如send和recv)会一直等候下去,不会立即返回程序(将控制权交还给程序)。... 阅读全文
posted @ 2013-11-27 15:21 struggle_time 阅读(1219) 评论(1) 推荐(0) 编辑
摘要:包括红外线套接字(IrSock)、IPX/SPX 套接字、NetBIOS 套接字、AppleTalk 套接字、ATM 套接字等。对这些套接字进行简单介绍。第一、红外线套接字(I r S o c k) 头文件 #include”af_irda.h” ,函数定义等都在这里面,可以研究一下这个文件。 地址结构//结构类型typedef struct _SOCKADDR_IRDA { u_short irdaAddressFamily;//红外线接口地址家族 AF_IRDA u_char irdaDeviceID[4];//设备的ID char irdaServiceName... 阅读全文
posted @ 2013-11-08 10:13 struggle_time 阅读(1498) 评论(2) 推荐(1) 编辑
摘要:这一节看看内存管理相关的信息首先看看虚拟内存 虚拟地址空间 32位系统 --- 4GB = 232 64 位系统 ---- 16EB = 264 虚拟内存表 当一个应用程序从硬盘加载到RAM时,首先系统为应用程序保留一定的地址区域,将一些必须的数据加载到内存中,然后将一些不是必须的数据加载到页文件(虚拟内存)中,页文件的大小有操作系统控制。在程序运行过程中,如果需要某个文件,就先去RAM中寻找,如果寻找不到,就去页文件中寻找,如果还寻找不到就发出数据访问违规异常。 过程如下: 每个页文件的保护属性都不同,页文件的页面拥有不同的属性,包括 除了上面介绍的保护属性外,还有3个保... 阅读全文
posted @ 2013-11-06 14:52 struggle_time 阅读(1233) 评论(0) 推荐(3) 编辑
摘要:Win32平台上的Winsock编程,Winsock是一个与协议无关的接口。以下协议是我们需要了解的:网络协议的特征包括: 1、 面向消息 2、 面向连接和无线接 3、 可靠性和次序性 4、 从容关闭(这是指协议中断,连接不会立即中断) 5、 广播数据 6、 多播数据 7、 服务质量(QOS) 8、 部分消息(大数据进行分段发送,分段接受) 9、 路由选择(考虑协议是否可路由) 10、 字节序 11、 最大传输单元Windows支持的协议如下图Winsocket协议相关结构介绍//获得系统中安装的网络协议的相关信息int WSAEnumProtocols( _In... 阅读全文
posted @ 2013-11-04 17:25 struggle_time 阅读(1266) 评论(0) 推荐(0) 编辑
摘要:邮槽和命名管道的使用方法也很简单,只需几个有限的函数就可以实现双方的通信。第三、邮槽 邮槽----进程间通信机制。 通过邮槽客户进程可以将消息通过广播给一个或多个服务进程。这是一个单向通信机制,缺点是只允许从客户机到服务器,优点也是这个原理,使客户机应用能够非常容易地将广播消息发送给一个或多个服务器应用。邮槽是一种无连接方式,是一种”不可靠“的数据传输。 邮槽名也使用UNC路径,第二个关键字是Mailslot,不可改变 \\\\server\\Mailslot\\[path]name 服务器实现过程: CreateMailslot();//创建一个邮槽句柄 ReadFile(... 阅读全文
posted @ 2013-10-30 10:51 struggle_time 阅读(2580) 评论(2) 推荐(1) 编辑
摘要:在程序中加载位图有很多方法,各有各的好处。这里简单说一下在资源里和文件里加载的区别。第一、在资源里加载位图 这种方法就是在工程里的“资源视图”-->“添加资源”-->"Bitmap"-->"导入位图" 每个资源都会有一个资源ID,使用位图时就通过资源ID对他进行控制。 然后在设置背景图片是只需在OnPaint();里添加如下 CPaintDC dc(this); CRect rc; GetClientRect(&rc); CDC memDC;//目标内存 memDC.CreateCompatibleDC(&dc);/.. 阅读全文
posted @ 2013-10-29 14:49 struggle_time 阅读(5980) 评论(1) 推荐(1) 编辑
摘要:一直以来就是调试程序,生成的文件在debug或者release下,当没有其他资源文件时,这些程序也不用打包,直接就能够运行,但是程序中总会有一些额外的资源文件,视频啊,图片啊。这些需要打包在一个安装文件里,使用起来才更方便。 首先我们就用VS2010自带的工具Visual Studio Installer。 第一步,我们要新建一个工程,类型选择其他项目类型-->Visual Studio Installer-->安装向导-->名称(The Sun) 然后选择“为Windows应用程序创建一个安装程序” 接下来选择输出组:主输出,资源输出,生成输出 最后,可以现在附件,可以把视 阅读全文
posted @ 2013-10-28 15:47 struggle_time 阅读(2130) 评论(6) 推荐(1) 编辑
摘要:这一次看看重定向器和如何使用Netbios函数获取本机mac地址5、获取Mac地址利用NCBASTAT命令实现,适配器状态命令会返回一个ADAPTER_STATUS结构,紧接着是大量NAME_BUFFER结构。 1 typedef struct _ADAPTER_STATUS { 2 UCHAR adapter_address[6];//这个就是mac地址 3 UCHAR rev_major; 4 UCHAR reserved0; 5 UCHAR adapter_type; 6 UCHAR rev_minor; 7 WORD ... 阅读全文
posted @ 2013-10-23 18:07 struggle_time 阅读(1149) 评论(0) 推荐(0) 编辑
摘要:第一部分 传统网络API 传统的网络接口NetBIOS、重定向器、邮槽、命名管道等。第一,NetBIOS(Network Basic Input/Output System, NetBIOS)“网络基本输入/输出系统”,其中T C P / I P和I P X / S P X的协议上实施N e t B I O S编程接口。 1、LANA 编号 LANA 编号是NetBIOS协议进行通信的保障,每个网卡都会至少有一个LANA编号,两台机器进行通信时必须保证LANA编号一致才能进行。 2、NetBIOS 名字 NetBIOS 名字 是一个长度16字符的字符串,在Win32环境中,针对每个... 阅读全文
posted @ 2013-10-22 16:45 struggle_time 阅读(862) 评论(0) 推荐(0) 编辑