
C/C++
专注成就专业_
专注成就专业!!!
展开
-
构造函数
在构造函数时,先构造基类,然后才是子类。 但是,析构时,正好相反。。。 函数的覆盖是发生在父类与子类之间的。。 函数的重载是发生在一个类中的函数与函数之间的。。 看内存类型是否可以转换关键看内存模型; 执行强制转换时: 如果是内存模型小的转换成大的,则不会发生折断; 否者就会发生精度上的丢失; 多态性;一种迟后联编技术 如果想利用多态性,则可以将基类中原创 2009-11-12 11:17:00 · 477 阅读 · 0 评论 -
VS2008和数据库的交互过程
<br /> 今天起晚了,后来决定就不去上课了。。。<br />于是乎,便打算就数据库的上机作业完成一下,<br />之前,我做过java与数据库的,<br />感觉还是挺方便,现在那c/c++写,应该还是差不多的吧。。<br /> <br /> 但是做了之后才知道还是有些地方不一样的,<br /> 比如一些声明:<br /> exec sql begin declare section;<br /> 数据定义。。。。<br /> exec sql end declare sect原创 2010-06-11 11:03:00 · 962 阅读 · 0 评论 -
为了方便完成对进程的数字签名的检测,我把工程移植到了VS2008
<br />在对工程的移植过程中出现了一些问题, <br />1:pow这个函数的使用上边,在VS2008中 它的第一个参数必须是 double ,6.0不管这个。<br /> <br />2:在做随机获取字符的过程中,将得到的字符---》 Cstring 是时候,必须显示的 用 uchar 进行强制转换<br /> <br />3:编译生成的文件不能在其他平台启动,错误提示:配置错误。。<br /> <br />这样的问题可以通过需要注意这个文件中的3个关键词:<br />Microsoft.VC80.C原创 2010-06-17 17:36:00 · 800 阅读 · 0 评论 -
初步完成对程序的数字签名的检测
<br /> 由于项目的需要,为了能够检测出可执行文件的可信程度。于是乎,我打算通过查看其程序的是否包含微软的数字签名。<br />在实现的过程中,我发现,在处理数据的过程中,经常要进行数据类型的转换,用6.0写习惯了的,一下子别成用unicode ,真的<br />有点不太习惯,但其实,它们之间的转换其实也不是很难,只不过我们平时不经常使用罢了。。。<br /> <br /> 下边来看一下具体的转化换方法:<br /> <br />MSDN 上:<br /> <br />LPCTSTR<原创 2010-06-16 22:33:00 · 604 阅读 · 0 评论 -
对时间的一些操作总结
<br />由于项目要对时间进行一些数学运算,要使用 access 数据库交互一些时间的信息,于是乎便有了下文。。。<br /> <br />CTime Comparison Operators<br /><br />BOOL operator ==( CTime time ) const;<br />BOOL operator !=( CTime time ) const;<br />BOOL operator <( CTime time ) const;<br />BOOL operator >( CT原创 2010-09-08 17:15:00 · 654 阅读 · 0 评论 -
总结一下这段时间做的 NetManager
<br />这个东西是为了巩固多线程编程,数据库的使用,winsock编程,防火墙驱动以及使用驱动保护保护客户端所涉及的相关知识,将它们串了起来,收获还是不错的,特别是多线程编程,体会到了特别的感觉。。。<br /> <br />程序的亮点,或者说是之前我没有掌握的东西<br /> <br />1:类似NetMeeting 的功能的实现,实现了客户端能够观看服务器桌面操作的功能,并且在网络条件比价好的情况下,还是比较清晰的<br />2:实现了服务器同时向多个客户端发送文件的功能,文件可以是任意的,开始的时原创 2010-10-07 22:14:00 · 810 阅读 · 0 评论 -
Windows程序自启动方法汇总
引:我们经常会遇到许多不请自来自己启动的程序,还有许多是我们不想让它启动的程序,不要以为管好了“开始→程序→启动”菜单就万事大吉,实际上,在Windows XP/2K中,让Windows自动启动程序的办法很多,下文告诉你最重要的两个文件夹和八个注册键。我们经常会遇到许多不请自来自己启动的程序,还有许多是我们不想让它启动的程序,不要以为管好了“开始→程序→启动”菜单就万事大吉,实际上,在Wind原创 2012-01-04 17:43:45 · 2072 阅读 · 0 评论 -
解决 Project : error PRJ0003 : Error spawning 'cmd.exe'.
加入: $(SystemRoot) $(SystemRoot)\System32 $(SystemRoot)\System32\wbem即可。。。原创 2012-05-05 16:15:23 · 1875 阅读 · 1 评论 -
error C2220: warning treated as error - no 'object' file generated
这种错误的原因是:1)是该文件的代码页为英文,而我们系统中的代码页为中文。解决方案:a)新建一个VC项目,然后把代码COPY过来。b)启动Microsoft Visual Studio 2005,文件->打开->选择该cpp,然后保存。从新打开程序文件运行,此错误不再出现。如果上述不能去掉错误,还可以点击项目,右击选择属性->配置属性->c/c++->常规,将“警告视为错误原创 2012-05-16 10:58:49 · 2314 阅读 · 0 评论 -
Improving (network) I/O performance
Improving (network) I/O performance ...07-01-2001 - Initial draft - Davide Libenzi davidel@xmailserver.org>10-30-2002 - The epoll patch merged inside the LinuxKernel. Please refer to this versio转载 2012-11-07 19:53:21 · 1796 阅读 · 0 评论 -
C++开发驱动中的重载问题
template class CAllocator{public: void* operator new(unsigned int size) { return ExAllocatePoolWithTag(PoolType, size, OSNTAG); } void* operator new[](unsigned in原创 2012-12-27 12:02:12 · 749 阅读 · 0 评论 -
: error LNK2005: _DllMain@12 already defined in dllmain.obj
用Visual C++编写DLL,如果在new project时选了MFC DLL,而后又想写成Regular DLL,即拥有自己的DllMain()入口函数,则在build时会遇到类似如下的link错误: error LNK2005:_DllMain@12 already defined in xxx.OBJ几种解决方案:1, 你只需要在工程设置里面,把WIN32,NDEBU原创 2013-01-15 13:59:40 · 6300 阅读 · 0 评论 -
C++ 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题
1:修改编译选项,将/MD或/MDd 改为 /MT或/MTd,这样就实现了对VC运行时库的静态链接,在运行时就不再需要VC的dll了。2:使用静态库原创 2013-01-16 20:29:30 · 1316 阅读 · 0 评论 -
字符串流 istringstream 和 ostringstream 的用法
stringstream 特定的操作stringstream strm; // 创建自由的 stringstream 对象stringstream strm(s); //创建存储 s 的副本的 stringstream 对象,其中 s 是 string 类型的对象strm.str() //返回 strm 中存储的 string 类型对象strm.str(s) //将 strin原创 2015-03-29 17:15:10 · 1108 阅读 · 0 评论 -
在C++中使用TinyXML2解析xml
读取和设置xml配置文件是最常用的操作,试用了几个C++的XML解析器,个人感觉TinyXML是使用起来最舒服的,因为它的API接口和Java的十分类似,面向对象性很好。 TinyXML是一个开源的解析XML的解析库,能够用于C++,能够在Windows或Linux中编译。这个解析库的模型通过解析XML文件,然后在内存中生成DOM模型,从而让我们很方便的遍历这棵XML树。转载 2015-05-27 17:07:26 · 710 阅读 · 0 评论 -
给我的程序加上托盘
为什么在让程序启动后只显示其图标在托盘上,而让主界面隐藏起来,我想到了将创建对话框的时候,将其创建的方式改为非模态对话框的形式。 现在,具体的来说一下,怎么样实现托盘的功能,实现很简单,先来看一个结构体吧:NOTIFYICONDATA结构包含了系统用来处理托盘图标的信息,它包括选择的图标、回调消息、提示消息、图标对应的窗口等内容其定义为: typedef struct _NOTIFYICONDATA { DWORD cbSize;原创 2010-06-08 16:05:00 · 724 阅读 · 1 评论 -
昨天,将VS2005和数据库的环境搭建好了,现在来通过.pc文件生成.c文件
<br /> 昨天,只是将老师给的.pc文件生成好的.c文件加入过程后,成功的与Oracle 发生了联系,现在来看看是怎么样来生成这个.c文件的。<br />我还是用VS ,加入的头文件和库文件到工程,和昨天的是一样的,现在只不过是把加入一个编写好的.pc 文件到工程中,同时,新建一个空的.c文件,用于保存.pc生成的内容。<br /> <br />我们还得设置一下预编译的东西:<br /> <br /><br /> <br />配置.pc文件,在command line 中输入 proc + .原创 2010-06-06 12:30:00 · 930 阅读 · 0 评论 -
本来已经完成的东西,居然要重新来过,这是一种怎么样的心情,但是天助我也。。。
<br />access ,为什么不能用,Oracle ,SQL SERVER 都能啊,但是,MFC 操作起这些数据库其实方法都一样的,这之前<br />我只知道通过ODBC 操作access ,却不知道,其实对Oracle 的操作也是一样的啊,上层提供了几乎一样的接口,<br />不同的只是,在于连接的语句而与,并且还是大同小异的东西,把表重新建一下,应该就没什么问题了。。。原创 2010-07-02 23:59:00 · 594 阅读 · 0 评论 -
Windows 异常机制 和 利用 特点
SEH 前几天看了一下,大概知道了一下,之前也是有一些了解的,MS 为了程序的健壮性,增加了 SEH ,我想,这个其实,就是一个回调函数,我们平时的编程用的不多,可能应为我们的水平还有待提高吧。。 回到正题,以前在 加密3 中知道,这是一种链式的 分发函数, 当程序产生异常时,系统捕获到之后,它会立刻跳向 异常处理的函数链表的开头,在这个 MS 定义的一场表中寻找能够处理这样原创 2009-11-12 11:09:00 · 659 阅读 · 0 评论 -
必须使用初始化表初始化参数的情况。。
有两种情况: 1:当类中的数据成员 是 const 和 有引用 的时候,必须用 2:当程序中存在继承的关系的时候,派生类也必须要负责基类的初始化的时候 对于类中的成员的初始化,可以采用两种方法: 初始化表 和 函数内的赋值对于他们的效率有些不同 :非函数内部的成员用初始化表效率高 函数内的成员 用哪个都差不多原创 2009-11-12 11:11:00 · 1018 阅读 · 0 评论 -
this 指针的运用实例
#include using namespace std; class Point { public: Point( ); Point( int a, int b ); void display( ); void display( int a1, int b1 ); private: int a1; int b1; }; Point::P原创 2009-11-12 11:18:00 · 427 阅读 · 0 评论 -
校验OD内存断点的方法和实现...
最近,在忙于 写一个 CM ,想到了怎么样去防止 OD 的内存下段.... BOOL VirtualProtect( LPVOID lpAddress, //保护开始的地址 DWORD dwSize, //需要保护的长度 DWORD flNewProtect, //保护的类型 PDWORD lpflOldProtect //不能为 0 ); 通过调用这原创 2009-11-12 11:07:00 · 1625 阅读 · 0 评论 -
修改注册表,实现开机启动程序
#include #include #include using namespace std;int main(){ HKEY key; //注册表的句柄 LPCSTR原创 2009-11-24 17:39:00 · 1355 阅读 · 0 评论 -
应用层上的同步问题(3)
由于,现在的程序多运行在多线程的环境中,数据的处理的顺序一下子就变得重要了起来,我们知道,在内核中,我们可以使用 事件,自选锁,或者互斥体等方式来达到同步的处理,防止操作被抢占,他们的几乎都是使用提高中断级的方式来达到的,也就是windows 是一个基于 可抢占模式的系统,只要你的代码或者中断级足够高,那么你就可以有特权,可以让其他的任务暂时给你让路,是不是挺霸道的吧。。。。win原创 2010-01-26 21:34:00 · 726 阅读 · 0 评论 -
进制间的转换笔记
今天发现电脑中的破解计算器似乎被病毒感染了,启动不了,于是乎,就有了今天的这篇笔记吧。。。说动手就马上动手写一个功能和它相同的计算器,方便以后的使用,就不会在去求助于别人的程序了。。。说道这里,我发现,其实计算器的实现,其实还是字符串与个进制的转换问题。。。因为,只要你从文本框获取数据或者是写入数据,不可避免的都要使用字符串的操作。。到底我们应该怎么样去做呢? 还是首先来原创 2009-11-29 18:04:00 · 528 阅读 · 0 评论 -
实现windows下的任务管理器的操作
对于进程,线程,模块以及PID 的获取,这方面的技术,以前以为挺神秘的,不过,现在看来,其实也就是这么回事吧。。。一下是实现的界面: 代码如下: int i = 1; PROCESSENTRY32 pe32 = {0}; //这个是获取进程信息的一个结构,里边有很丰富的资源,通过它,我们就可以搞定这一切 BOOL bRet; char buffer原创 2009-12-05 09:39:00 · 777 阅读 · 0 评论 -
关于CLISTBOX 的另类操作
今天在完善程序的时候,希望能够用到列表框来显示分区的信息,但是在网上查了一下,发现不好用,于是,便有了下文吧,做个笔记,以后可能会用得到。。 //得到磁盘大小 的代码是这样的。。。首先,我们当然先是获取到磁盘的信息,然后在是其他的操作:得到磁盘信息比较简单,GetDiskFreeSpace(),就可以搞定了,参数 1: 传入路径,默认情况是程序当前目录下的磁盘。。2-4原创 2009-12-04 22:17:00 · 522 阅读 · 0 评论 -
实现磁盘文件的偏离操作
终于实现了磁盘的便利访问,也就是说,我可以轻易的对磁盘上我感兴趣的文件或文件夹处理了。。。当然,现在我需要的是对 DEBUG 和 release 中的垃圾进行处理了,毕竟垃圾多了也挺烦人的。。。作为计算机专业的学生,我想,我们应该有更好的方法处理它们。。。 让我们开始吧。。。这是一个递归的过程: //删除DEBUG 文件夹,找文件,递归实现void CCleanRubb原创 2009-12-10 12:36:00 · 581 阅读 · 0 评论 -
获取本机安装程序信息
主键:HKEY_LOCAL_MACHINE 主键下的子键:"SOFTWARE//Microsoft//Windows//CurrentVersion//Uninstall" 他们下边的子键就是,如下图: 上边的信息就是安装在本机上的程序的相关信息。。。。在他们的值中,有许多我们关心的东西,比如软件的色彩厂商,软件的名字。版本信息,等。。。我想,windows优化大师原创 2009-12-10 22:36:00 · 960 阅读 · 0 评论 -
明天据说是数据结构的上机考试。。。
数据结构也学了一学期了,听说要考试了,老师经常说什么代码积累的东西,那个纯属在骗人嘛,想象都知道,那JB老师,数据结构上机,居然还让把以前写好的代码从平台上考下来用,而且吧,开下来的代码还特别恶心,不能马上用,因为里边有许多的行标,必须自己去掉,你说那老师不是在骗人嘛? 不过吧,我还是有办法搞定它的,想难住我,没这么容易,还有那破平台居然也好意思来考试,真是佩服他们。原创 2009-12-13 23:37:00 · 1738 阅读 · 0 评论 -
哈弗曼编码与译码的问题
下周的课程设计,我选择的这个题目,具体的实现应该不是问题,一个下午就搞定了,但是程序只是实现了基本的编码与译码的功能,文件的压缩还是没有做好,我想这应该是在位操作那块的问题。。。如果单从编码与译码的角度说,马上就可以验收了,但是感觉还是不够完善,期待在写入后者其他的方面有些与众不同的地方。 在调试程序的时候犯下的错误汇总:1:文件在之前打开后没有关闭,再次打开会失败的,比较隐蔽原创 2009-12-20 23:26:00 · 1647 阅读 · 1 评论 -
数据库设计3NF
<br />数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数据库是简洁的、结构明晰的,同时,不会发生插入(insert)、删除(delete)和更新(update)操作异常。反之则是乱七八糟,不仅给数据库的编程人员制造麻烦,而且面目可憎,可能存储了大量不需要的冗余信息。<br /><br /> 设计范式是不是很难懂呢?非也,大学教材上给我们一堆数学公式我们当然看不懂,也记不住。所以我们很多人就根本不按照范式来设计数据库。<br /><br /> 实质上,设计范式用很形象、很简洁的话语就能说转载 2010-06-28 23:15:00 · 1080 阅读 · 0 评论 -
MFC + ODBC + Oracle 执行存储过程调用。。。
<br /> 无奈,由于数据库的课程设计的需要,必须自己实现类似于触发器和储存过程调用的部分。。。。<br />如果你用JAVA 或者其他的来做,但是,自己选择使用MFC 来写。这个真的是一个挑战,MFC全靠自己自学。。。<br />在MFC使用存储过程是那么的不方便,而且网上的例子非常少,自己只有全靠自己了。。。<br /> 下边,我来说说我是怎么样实现的过程,方便后来者。。。<br /> 对于这样实现部分,我想应该分为两部分,“建立存储过程调用的代码” 和 “调用存原创 2010-07-04 22:48:00 · 3297 阅读 · 0 评论 -
map 的插入方法 下标法 和 insert 法的区别
对于STL中的map,插入有两种方法:1、map a; a[1 ]=1 //此方法初始化a[1],并给a[1]赋值。 a[1]=2 //此方法修改了a[1的值。2 map a; a.insert(map::value_type(1,1)); //此方法初始化a[1],并给a[1]赋值。 a.insert(map::value_type(1,原创 2015-07-17 15:06:43 · 2639 阅读 · 0 评论