2012-02-09 18:45 by menggucaoyuan, 1511 visits, 网摘, 收藏, 编辑
摘要:当你启动计算机之后,windows的启动过程就开始执行了。下面是详细步骤:1BIOS执行一些初始系统检查,并读取磁盘的第零簇的内容。第零簇内容有一个特殊的称谓-操作系统主引导扇区MBR(MasterBootRecord)。2 MBR保护两部分: 1系统启动代码(共有446bytes) 2分区表入口(16bytescoloredentriesinthebottom)3 根据系统代码,我们可以找到系统所有的分区,并找到系统启动分区。如果分区表入口的第一个字节值为0x80,那么可以确认这就是分区表入口,它也被称为根分区或系统卷.MBR中有四个分区入口,是不是意味着我们只能有四个系统驱动?这也就意..
阅读全文
2011-09-10 20:29 by menggucaoyuan, 38 visits, 网摘, 收藏, 编辑
摘要:程序中的变量初次声明时,应该初始化。 如:int i = 0; 但是今天一个朋友给了如下两个测试程序,用gcc编译后,效率还是相差很多的。 下面的函数func中数组没有初始化,函数被执行1000000次,则运行3ms。 void func(void) { char array[512]; } int main(int argc, char* argv[]) { int i = 0; for (i = 0; i < 1000000; i++) { func(); } } 如果把func函数中数组初始化,则运行时间为512ms。 v...
阅读全文
2011-08-23 22:48 by menggucaoyuan, 106 visits, 网摘, 收藏, 编辑
摘要:Delauney三角网的优点使得它有着广泛的应用,而根据二维平面内一定量的离散点生成这个三角网的算法也一直是研究的热点。 比较成熟的算法有几种。个人比较熟悉的有生长法和Bowyer-Watson法,08年曾经写过生长法的算法,其大概步骤如下: 1 随机选择一个起始点A,然后选择一个离这个点距离最近的点B,构成初始边,加入边表; 2 在剩余点中选择一个点作为第三个点C,使得角ACB最大,新生成两个边AC和BC加入边表,并把三角形ABC作为第一个三角形加入三角形表中; 3 从边表中取出一条边DE,边的两个端点是E和D,设其已在三角形DEF中;边DE把平面分成两个半平面,在剩余的离散点中寻找一个离.
阅读全文
2011-08-20 19:49 by menggucaoyuan, 146 visits, 网摘, 收藏, 编辑
摘要:解一元三次方程一般用盛金公式求解,算法高效且求出来的解精确。 百度百科关于盛金公式有如下解释:盛金公式 Shengjin's Formulas 一元三次方程aX^3+bX^2+cX+d=0,(a,b,c,d∈R,且a≠0)。 重根判别式:A=b^2-3ac;B=bc-9ad;C=c^2-3bd, 总判别式:Δ=B^2-4AC。 当A=B=0时,盛金公式①: X⑴=X⑵=X⑶=-b/(3a)=-c/b=-3d/c。 当Δ=B^2-4AC>0时,盛金公式②: X⑴=(-b-Y⑴^(1/3)-Y⑵^(1/3))/(3a); X(2,3)=(-2b+Y⑴^(1/3)+Y⑵^(1/3))/
阅读全文
2011-07-24 10:49 by menggucaoyuan, 110 visits, 网摘, 收藏, 编辑
摘要:如果要交换两个变量的值,一段典型的代码如下: void swap(type& a, type& b) { type temp = a; a = b; b = temp; } 如果要求不借助于临时变量,则可能有如下代码: void swap(type& a, type& b) { a = a + b; b = a - b; a = a - b; } 上面这段代码是比较危险的,有数值溢出的危险。 如果交换的数值是整形,则可以有如下可用代码: void swap(int& a, int& b) { a = a ^ b; b = a ^ b; a = a
阅读全文
2011-07-13 09:14 by menggucaoyuan, 469 visits, 网摘, 收藏, 编辑
摘要:在sz的tx面试时,有以下几道好题,面试时没有思路,面试人给提示下,觉得算法很好。不敢独享,特列出。朋友中又觉得我把题列出来是不妥当行为的,请及时告知,我会马上删除。题1:找出集合{A, B, C, ..., Z}的所有子集。分析:如果集合为{A,B,C},则所有的子集如下: A B C 0 0 0 值为0 代表空集 0 0 1 值为1 代表{C} 0 1 0 值为2 代表{B} 0 1 1 值为3 代表{B,C} 1 0 0 值为4 代表{A} 1 0 1 值为5 代表{A,C} 1 1 0 值为6 代表{A,B} 1 1 1 值为7 代表{A,B,C} 能看出点什么规律吧?集合的总数为2.
阅读全文
2011-07-04 22:31 by menggucaoyuan, 141 visits, 网摘, 收藏, 编辑
摘要:在C#中,程序员可以写出如下风格的代码设置属性值:private int _x;public int x{ get { return _x; } set { _x = value; }}然后可以对_x值进行赋值或者取值:someObject.x = 50; 如果C++也能写出如此风格的代码,则其应有如下形式:private: int x;public: int getX() { return x; } void setX(int value) { x = value; }调用这些函数时,有如下调用法:someObject.setX(50); int x = someObject.getX();
阅读全文
2011-06-17 07:10 by menggucaoyuan, 173 visits, 网摘, 收藏, 编辑
摘要:C++中定义const型变量,可以用一个非const型变量或者const变量初始化这个const变量,但是如果不用类型强制转换则不可以用一个const变量初始化一个非const变量。另外,我的观点是const只能修饰一个变量。上面的最后一句话,你可能有非议,我可以说明。第一,一个const不能修饰一个全局函数。第二,你可能举例说明C++的类中const可以修饰一个函数,但是你还记得每个函数中都可以用一个默认的this指针?C++编译的时候会在函数的参数列表中添加一个类的this指针(静态函数除外),此时如果函数被const修饰,则这个const实际上是修饰这个this的,const修饰的函数.
阅读全文
2011-06-15 07:06 by menggucaoyuan, 1743 visits, 网摘, 收藏, 编辑
摘要:本文不是一篇介绍如何在x86架构上详细地实现异常处理(exception handling)的手册,只是一篇入门的讨论性文章。本文只是讨论一些处理步骤在理论上应该如何实现,其具体的实现步骤可能跟文章所讨论的并不一致。如果你关注异常处理的细节,并实现它,这可能要花费你数年之功。
阅读全文
2011-06-13 07:10 by menggucaoyuan, 130 visits, 网摘, 收藏, 编辑
摘要:从VC5.0开始,ATL正式作为VC的一部分开始发布,可能M$对它的成熟度已经很自信。在阅读这个版本的ATL的源码时,ATLWIN.cpp中有如下代码:BOOL CDynamicChain::SetChainEntry(DWORD dwChainID, CMessageMap* pObject, DWORD dwMsgMapID /* = 0 */){// first search for an existing entry for(int i = 0; i < m_nEntries; i++) { if(m_pChainEntry[i] != NULL && m_pCh
阅读全文
2011-06-12 07:35 by menggucaoyuan, 813 visits, 网摘, 收藏, 编辑
摘要:经常使用MFC做界面开发的人,可能会经常使用CString这个字符串类。个人也经常使用这个类,前几天在翻阅ATL2.1的源码时,发现了CString类的源码,就顺便把它解剖下,虽然它比起现在高级版本的CString类,还比较原始,但是原理应该是一致的。
阅读全文
2011-06-10 07:23 by menggucaoyuan, 957 visits, 网摘, 收藏, 编辑
摘要:MFC自动创建的应用程序中,主窗口的类名是固定的。但在许多情况下,你可能希望自己拟定MFC的主窗口的类名。
如果你想进行进程间通信(IPC),这种技术就更显得简洁有效。最早的实现不同进程间通信的方法是发送消息,但是发送消息需要知道发送的目标对象,即确定目标窗口,识别出它的ID。
阅读全文
2011-06-09 00:19 by menggucaoyuan, 2162 visits, 网摘, 收藏, 编辑
摘要:本文是为了帮助一些人弄清一些关于Windows API, C运行时程序库(CRT), 和标准C++库(STL)的基本概念。有很多人甚至是有经验的程序员在这些概念上是含糊不清的甚至是有错误观点。如果你想知道他们是在什么基础上实现的并且一直没时间弄清楚这些概念,请花费点时间阅读下本文。
阅读全文