C++获取当前目录
摘要:获取当前目录对于.net来说很简单,在此不用多说了。C/C++来说挺也简单,但容易掉进MS的陷阱。在此仅作为笔记记录一下方法,以便以后备查,高手请路过。若是VC MS 封装了好几个方法1、最常用的GetCurrentDirectory,查一下它的原型:DWORDGetCurrentDirectory( DWORDnBufferLength,//size,incharacters,ofdirectorybuffer LPTSTRlpBuffer//pointertobufferforcurrentdirectory );很好理解,两个参数一个长度,一个目标指针Buffer,如:可以定义一个cha
阅读全文
posted @
2012-12-03 22:30
陈国利
阅读(49382)
推荐(2) 编辑
现有p2p协议分类与简介
摘要:(一) 常用p2p协议 1、napster:世界上第一个大型的p2p应用网络;中央集中式,倒闭了。napster,这是当时很火的一种共享服务,主要用于查找mp3,它有一个服务器用于存储mp3文件的链接位置并提供检索,而真正的mp3文件则存放在千千万万的个人电脑上,搜索到的文件通过p2p方式直接在个人电脑间传播共享。这种方式的缺点就是需要一台服务器,在mp3文件版权之争火热的年代,napster很快就成为众矢之的,被众多唱片公司诉讼侵犯版权而被迫关闭。当然服务器一关napster也就不复存在。 2、gnutella和gnutella2(gnutella2是对gnutella的改进和扩展):开..
阅读全文
posted @
2012-05-11 14:26
陈国利
阅读(11133)
推荐(1) 编辑
浅谈程序效率问题
摘要:程序效率是一件很重要的事情,随着处理业务深入,问题的多样化,人们对计算机程序要求越来越高,而用户操作需要越来越简化。这个矛盾体,需要处理的东西要求越多,又要能越来越简单,虽然硬件资源越来越便宜,但如果除去硬件条件情况下,程序效率必须考虑的问题。因此,程序设计和性能越来越考验程序员的功力。程序如果太庞大太迟缓,不论它的功能有多么的强大,都难以被用户接受。虽然有些程序之所以变得更大,消耗更大的内存,是为了实现超大计算能力,但有太多的程序,其庞大的身驱和迟缓的脚步必须“归功”于懒散草率的编程习惯。这几天感觉非常郁闷,在做公司一个小项目,前人留下的代码非常杂乱,无设计可言,代码到处重复,变量随意命名,
阅读全文
posted @
2011-06-10 13:40
陈国利
阅读(2250)
推荐(2) 编辑
堆和栈深层理解
摘要:一、堆和栈的概念区别堆:是大家共有的空间,分全局堆和局部堆。全局堆就是所有没有分配的空间,局部堆就是用户分配的空间。堆在操作系统对进程 初始化的时候分配,运行过程中也可以向系统要额外的堆,但是记得用完了要还给操作系统,要不然就是内存泄漏。堆里面一般 放的是静态数据,比如static的数据和字符串常量等,资源加载后一般也放在堆里面。一个进程的所有线程共有这些堆 ,所以对堆的操作要考虑同步和互斥的问题。程序里面编译后的数据段都是堆的一部分。栈:是个线程独有的,保存其运行状态和局部自动变量的。栈在线程开始的时候初始化,每个线程的栈互相独立,因此 ,栈是 thread safe的。每个c++对象的数据
阅读全文
posted @
2011-06-09 18:02
陈国利
阅读(5046)
推荐(8) 编辑
new和delete学习总结
摘要:new和delete在C++中特别要重,在此简单总结一下new和delete各种含义。new与operator newC++中有很多语法让人难以理解,如:new operator(操作符,下同)和operator new之间差异,确切的说,应该是new与operator new 的区别。如下代码:string *ps=new string("memory management");这里所使用的new就是所谓new operator,是由C++语言内建的,就像sizeof那样,不能改变意义,总是做相同的事情。这个动作的含义分为两方面:第一,它分配足够的内存,用来放置某类型的对
阅读全文
posted @
2011-05-24 01:00
陈国利
阅读(2294)
推荐(5) 编辑
linux常用命令(二)
摘要:名称:crontab 使用权限:所有使用者 使用方式: crontab [ -u user ] filecrontab [ -u user ] { -l | -r | -e } 说明: crontab 是用来让使用者在固定时间或固定间隔执行程式之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。 参数: -e:执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数.
阅读全文
posted @
2011-05-15 12:20
陈国利
阅读(484)
推荐(0) 编辑
linux常用命令(一)
摘要:最近在虚拟机上,玩了一下Linux感觉好多命令都不会,偶尔会的几个命令也都忘记了,真是杯具,书到用时方恨少。赶紧在此记录一下,以备用时查询,请各路好友莫怪莫怪。shutdown命令 shutdown [-cfFhknr(参数名称)] [-t 秒数] 时间 [警告信息] 具体各参数功能: -c 取消前一个shutdown命令。值得注意的是,当执行一个如“shutdown -h 11:10”的命令时,只要按“Ctrl+C”键就可以中断关机的命令。若是执行如“shutdown -h 11:10 & ” 的 命 令 将 shutdown转到后台时,则需要使用shutdown -c将前一个shu
阅读全文
posted @
2011-05-11 22:08
陈国利
阅读(741)
推荐(1) 编辑
指针与引用深层次的区别
摘要:在C++里面指针和引用看起来有一些不太一样,但是它们是做得类似的事情。那么它们之间究竟有那些不太一样的东西?首先,必须认识到一点null reference。一个引用(reference)必须总是代表某个对象。假如有一个变量,其目的是用来指向(代表)另一个对象,但也有可能不指向(代表)任何对象,那么应该使用指针(pointer),因为可以将pointer设为null。换之,如果这个变量总是必须代表一个对象,也就是说如果不允许这个变量为null,那么这时候应该用reference。例如:char *pc=0; //将指针pc设定为nullchar& rc=*pc; //让引用(rc)代表
阅读全文
posted @
2011-04-30 00:29
陈国利
阅读(1972)
推荐(5) 编辑
安装MSSQL2008出现的问题记录
摘要:前一段时间安装MSSQL2008的时候,并不是很顺利,中间出现一些问题。至于安装过程怎么样,大家google一下就OK。我在此不做记录,仅记录一下我安装过程出现的几个问题。第一个问题是操作系统首先先安装.net3.5 framework.因为安装MSSQL2008引导启动程序是.net3.5开发的,另外SQL2008运行的时候也需要.net3.5的环境。第二个问题有点特殊,估计别人很少遇到的,就提示你安装的visual studio 2008是早期版本,需要安装SP1版本。我就奇怪了,我系统安装的是VS2010,跟VS2008的早期版不沾边。但无论怎么样,这样规则检测不通过,就是不给安装。上百
阅读全文
posted @
2011-03-04 15:59
陈国利
阅读(1557)
推荐(0) 编辑
清理缓冲区的方法
摘要:1. 理解一下输入输出缓冲区的概念 以一个例子说明,比如我想把一篇文章以字符序列的方式输出到计算机显示器屏幕上,那么我的程序内存作为数据源而显示器驱动程序作为数据目标,如果数据源直接对数据目标发送数据的话。数据目标获得第一个字符,便将它显示。然后从端口读取下一个字符,可是这时就不能保证数据源向端口发送的恰好是第二个字符(也许是第三个,而第二个已经在数据目标显示时发送过了)。这样的话就不能保证输出的数据能完整的被数据目标所接受并处理。 为了解决这个问题,我们需要在数据源与数据目标中间放置一个保存完整数据内容的区域,那就是 “缓冲区”。这样的话,数据源可以不考虑数据目标正在处理哪部分数据,只要把数
阅读全文
posted @
2011-01-25 15:23
陈国利
阅读(4834)
推荐(0) 编辑
VC字符串转换常用函数
摘要:最近在做一些关于VC的ActiveX小插件,经常会遇到字符串处理的问题,狂查CSDN和MSDN,结果并不理想。先说明一下,相关处理函数在VC++6.00测试通过。也许很多人不能理解,现在都什么年代了,还用VC6.0,其实VC开发插件有一个好处就是部署的时候方便一些,不用考虑浏览器端用户是否安装了.net Framework。那个.net Framework随着推出新版本越来越大,要让用户花那么多时间去安装那个庞然大物,而实际用到的东西却很少很少,这样很多人会不干的。另外,服务端的是java开发的,要加上.net更加不可能。因此,VC开发的东西就不用担心这些东西。说多了。。。。。在VC编程中经常
阅读全文
posted @
2011-01-20 17:26
陈国利
阅读(5592)
推荐(0) 编辑
时间机器代码串VC转换
摘要:最近用VC在写一个Activex小插件。其实是操作串口数据通信,通过某个硬件读取串口数据,然后把数据上传到B/S平台。仪器硬件底层是用C语言编写,具体怎么写法,不是我重点关注的东西,我主要负责仪器与PC接口的开发。每一个原器件的串口通讯都有一套协议,这个协议是由硬件方定制提供。声明:在这里只希望通过博客日志记录的方式总结记录一点东西,以方便本人总结一下,希望各路高手们不要取笑,如果你有更好建议请给我留言,非常感谢!下面插件读取的数据进行一个简单的分析,从串口读到数据如下:0003FE4500000000004000F81EA8000000838BE61400800000000000000180
阅读全文
posted @
2011-01-20 17:02
陈国利
阅读(431)
推荐(0) 编辑
发现C++的sizeof关键字的奇怪问题
摘要:在调试程序的时候发一个关于关键字sizeof的令我感到困惑的问题看下面的例子:int a[5]所有人都明白这里定义了一个数组,其包含了5 个int 型的数据。我们可以用a[0],a[1]等来访问数组里面的每一个元素。当我们定义一个数组a 时,编译器根据指定的元素个数和元素的类型分配确定大小(元素类型大小*元素个数)的一块内存,并把这块内存的名字命名为a。名字a 一旦与这块内存匹配就不能被改变。a[0],a[1]等为a 的元素,但并非元素的名字。数组的每一个元素都是没有名字的。那现在再来看看sizeof 关键字时的几个问题:sizeof(a)的值为sizeof(int)*5,32 位系统下为20
阅读全文
posted @
2010-11-29 17:28
陈国利
阅读(653)
推荐(0) 编辑
比较无聊的while与for的较量。
摘要:谈起程序循环,一般都会想到while或者for来控制。但是两者之间除了大家熟识的控制结构有所不同之外,两都运行效率又是如何。最近比较做了一个简单而且无聊的比较,发现两者运行效率的确略不同。之前在 彭博 著 《游戏编程指南》一书中看过说 for(;;)的执行速度比while(1)要快。书中的描述是用C++.为验证作者的观点,我用C#写了简单的测试语句(在Vs2008上运行),对比一下。结果相反。先看简单的测试程序。1.用while循环 DateTime dt1 = DateTime.Now; for (long i = 0; i < 100000000; i++) { while (tru
阅读全文
posted @
2010-11-08 17:28
陈国利
阅读(451)
推荐(1) 编辑
求和比较高效的做法
摘要:写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)一般做法是:int sum(int n){long sum=0;for(int i=0;i<n;i++) { sum+=i;}return sum;}上面这种做法简单,方便可是效率怎么样,应该不是最好。在数学上,我们有一个求和公式。n*(n+1)/2于是有int sum(int n){ return n*(n+1)/2;}显然,这样效率显然比上面要好得很多。所以有时候算法高效只需要一个转变。而数学公式正是求解的导向。
阅读全文
posted @
2010-11-05 16:46
陈国利
阅读(321)
推荐(0) 编辑
C++学习小记之static和const关键字
摘要:static关键字至少有下列n个作用:(1)函数体内static变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值;(2)在模块内的static全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问;(3)在模块内的static函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内;(4)在类中的static成员变量属于整个类所拥有,对类的所有对象只有一份拷贝;(5)在类中的static成员函数属于整个类所拥有,这个函数不接收this指针,因而只能访问类的static成员变量。const 是constant 的
阅读全文
posted @
2010-11-05 14:21
陈国利
阅读(714)
推荐(0) 编辑
从一组数据中寻找第K大的数
摘要:问题描述:给出一组数据,如:整型数组 int a[]={10,1,3,6,9,39,20,12,33,54} 用尽可能快的方法找出第K大的位置(如:k=5时即第5大的数据应为12)。分析问题:首先,如果求解问题是需要从一组数据寻找最值时(最大值或者最小值时)可能比较方便,一般作法是先排序,然后最首或者尾位置即可。但现在需要求解的不一定是指最值,而是求第K大最值。那么同样处理思路是分步,即先排序然后求对应K位置。经过简单的分析,下面给出Demo(C语言)//下面为排序设计两个函数int partition(const int * na, int low, int hight);//标注位置int
阅读全文
posted @
2010-10-22 17:20
陈国利
阅读(2351)
推荐(0) 编辑