2011年10月11日
摘要: gcc and g++分别是gnu的c & c++编译器 gcc/g++在执行编译工作的时候,总共需要4步1.预处理,生成.i的文件[预处理器cpp]2.将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]3.有汇编变为目标代码(机器代码)生成.o的文件[汇编器as]4.连接目标代码,生成可执行程序[链接器ld][参数详解]-x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这个参数,这个参 阅读全文
posted @ 2011-10-11 21:01 Jiang, X. 阅读(300) 评论(0) 推荐(0) 编辑
2011年10月7日
摘要: 1、位操作a 11101b 00111a = a^b 11010b = b^a 11101a = a^b 00111#include<stdio.h>#include <iostream>using namespace std;int main(){ int a = 29, b = 7; a = a ^ b; printf("%d,%d\n", a, b); b = b ^ a; a = a ^ b; printf("%d,%d\n", a, b); system("pause"); return 0;}2、算 阅读全文
posted @ 2011-10-07 19:52 Jiang, X. 阅读(214) 评论(0) 推荐(0) 编辑
2011年9月27日
摘要: //我的第一个Qt程序 留个纪念吧!#include <QtGui/QApplication>#include "qmlapplicationviewer.h"#include <QLabel>#include <QPushButton>int main(int argc, char *argv[]){ QApplication app(argc, argv); QLabel *label = new QLabel("<h2><i>Hello </i>" "<font 阅读全文
posted @ 2011-09-27 13:56 Jiang, X. 阅读(175) 评论(0) 推荐(0) 编辑
2011年9月18日
摘要: 欧几里德算法描述:E1.[求余数] 以n除m并令r为所得余数。(我们将有0 ≤ r ≤ n。)E2[余数为0?] 若r=0,算法结束,n即为答案。E3[减少] 置m←n, n←r,并返回步骤E1.其原理依赖于下面的定理:gcd(a, b) = gcd(b, a mod b)证明:a可以表示成a = kb + r,则r = a mod b假设d是a, b的一个公约数,则有d | a, d | b,而r = a - kb,因此d | r因此d是(b, a mod b)的公约数假设d 是(b,a mod b)的公约数,则d | b , d |r ,但是a = kb +r 因此d也是(a,b)的公约数 阅读全文
posted @ 2011-09-18 16:25 Jiang, X. 阅读(300) 评论(0) 推荐(0) 编辑
摘要: Volatile关键字· The compiler assumes that, at any point in the program, avolatile variable can be accessed by an unknown process that uses or modifies its value. Therefore, regardless of the optimizations specified on the command line, the code for each assignment to or reference of avolatile vari 阅读全文
posted @ 2011-09-18 15:09 Jiang, X. 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 1、要使用可变参数就要包含头文件 #include <stdarg.h>。2、在该头文件中定义了一个va_list类型,在vadefs.h中发现:typedef char * va_list;3、在该头文件中还定义了用来遍历参数列表的4个宏:#define va_start _crt_va_start#define va_arg _crt_va_arg#define va_end _crt_va_end#define _crt_va_start(ap,v) ( ap = (va_list)_ADDRESSOF(v) + _INTSIZEOF(v) )#define _crt_va_ 阅读全文
posted @ 2011-09-18 14:36 Jiang, X. 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 从外部特性来看:#include <stdio.h>#include <string>int main(){ char array[] = "12345"; int n = sizeof(array); // n is 6 int m = strlen(array); // m is 5 array[3] = 0; n = sizeof(array); // n is 6 m = strlen(array); // ... 阅读全文
posted @ 2011-09-18 13:40 Jiang, X. 阅读(379) 评论(0) 推荐(0) 编辑
2011年9月10日
摘要: Some Const Objects Are Defined in Headers首先明确一点:const型变量的作用域为其定义的文件,在其它文件中无法调用。example:// file1:const int var1 = 10;int var2 = 20;// file2:#include <stdio.h>extern int var1;extern int var2; int main(){ printf("%d", var1); printf("%d", var2); getchar(); return 0;} //error LN 阅读全文
posted @ 2011-09-10 18:13 Jiang, X. 阅读(244) 评论(0) 推荐(0) 编辑
2011年9月8日
摘要: 内存对齐 变量的存储不是简单的堆砌,而是要按照一定的规则对齐。Example:// 内存对齐.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>//#pragma pack(1) //用来设定变量以n字节方式对齐using namespace std;struct st_1{ char a; int b; short c;}; struct st_2{ short c; ... 阅读全文
posted @ 2011-09-08 19:36 Jiang, X. 阅读(192) 评论(0) 推荐(0) 编辑
2011年8月27日
摘要: 你的代码,整洁还是优秀? 最近我和其他的开发人员讨论了如何编写代码。我总认为一些开发者过分强调代码整洁的重要性。(别误会,当然我也会努力使我的代码整洁。在过去的那些年里我写过很多很多关于代码整洁的文章。)但是在我的编程中,代码整洁始终是第二位的,比他更重要的,是让代码能够正常工作,最好是让它运行得更出色。 很多人喜欢谈论关于整洁代码的话题。他们喜欢强调他们对此的贡献,甚至希望穿着绿色的外套,来时刻提醒他们整洁代码的重要性。据我观察,不幸的是,他们总是认为编写整洁代码的重要性要高于代码功能的实现。有时他们甚至不用心去想他们的ORM在幕后做了什么。或者他们使用像Automapper这样的东西来匹配 阅读全文
posted @ 2011-08-27 09:18 Jiang, X. 阅读(186) 评论(0) 推荐(0) 编辑
2011年8月26日
摘要: 如何进行函数式编程周末有人问我,如何进行函数式编程,我的回答是:使用你现在的语言编写纯粹的函数。 对纯粹的函数而言,它唯一的输入是它的参数列表,它唯一的输出是它的返回值。如果你未曾接受过这样的概念,也许你会误以为所有的函数都是所谓的纯粹的函数,因为所有的函数都会根据输入进行输出。但是传统的编程通常带有其它方式的信息传递。比方说,一个非函数式的函数可能会依赖于一个外部变量或者向数据库写入数据。这样,函数就带有了其返回值以外的副作用。 你可以通过任意一种语言进行函数式编程,尽管这种方法在不同的语言中难度不一。比方说没人愿说Fortran是一种函数式的语言但是却有不少人喜欢用Fortran编写函数式 阅读全文
posted @ 2011-08-26 16:43 Jiang, X. 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 分割视图视图分割分为动态和静态两种。从概念上来讲:动态分割是指对同一个视图进行分割,典型的例子就是Office中用多个窗口显示同一个文档的不同部分,视野之间相互独立。静态分割是指分割后的窗口完全独立,各个窗口可以显示不同的视图,分割条可以移动但不可以消失。从实现方法上来讲:相同的是,两种分割方法都是通过CSplitterWnd类来实现。不同的是:动态分割是通过create()方法实现的,例如:m_wndSplitter.Create(this, 2, 2, // TODO: adjust the number of rows, columns ... 阅读全文
posted @ 2011-08-26 10:13 Jiang, X. 阅读(245) 评论(0) 推荐(0) 编辑
2011年8月21日
摘要: http://www.fortystones.com/tips-to-make-c-program-effective/代码之美不仅在于能够寻求一种合理的解决方案,更在于其简洁、高效与紧凑。代码的设计往往比实际的代码编写要难。因此,每一个程序员在代码编写的过程中,需要在头脑中时常保持一些基本的原则。这里有10种使你的C程序更加高效的方法:1. 避免不必要的函数调用考虑下面两个函数调用:Void str_print(char * str){ int I; for(I = 0; I < strlen(str); i++){ Print... 阅读全文
posted @ 2011-08-21 22:00 Jiang, X. 阅读(238) 评论(0) 推荐(0) 编辑
2011年8月19日
摘要: 程序中野指针的存在是一件非常危险的事情,比如: CEdit *pEdit; pEdit->Create(WS_CHILD, CRect(0, 0, 0, 0), this, 1);这样会导致Test.exe中的0x006d0e4d出有未经处理的一场:0xc0000005:读取位置0xcccccccc时发生访问冲突。并显示异常代码为:Winctrl1.cpp中的////////////////////////////////////////////////////////////////////////// CEditBOOL CEdit::Create(DWORD ... 阅读全文
posted @ 2011-08-19 18:20 Jiang, X. 阅读(347) 评论(0) 推荐(0) 编辑
2011年8月12日
摘要: 过去的20年,是中国程序员快意恩仇的江湖时代,程序员通过知识实现梦想和财富。历数曾经的数字英雄,名利双收的并不多见。而程序、经营两手抓的更是凤毛麟角。2011年7月,仅仅47岁的“中国第一程序员”求伯君彻底退隐江湖。这代表着一个时代的过去,在求伯君风光的年代,程序员身上充满着个人英雄主义的浪漫情怀。而随着时间的不断推移,单个程序员的能力显得越来越渺小,程序员逐渐沦为软件生产流水线上一颗螺丝钉,这让第一代程序员的神话再难重现。“中国第一程序员”求伯君彻底退隐江湖过去的20年,是中国程序员快意恩仇的江湖时代,程序员通过知识实现梦想和财富。历数曾经的数字英雄,名利双收的并不多见。而程序、经营两手抓的 阅读全文
posted @ 2011-08-12 21:47 Jiang, X. 阅读(224) 评论(0) 推荐(0) 编辑
2011年8月8日
摘要: Before You AskBefore asking a technical question by e-mail, or in a newsgroup, or on a website chat board, do the following:Try to find an answer by searching the archives of the forum you plan to post to.Try to find an answer by searching the Web.Try to find an answer by reading the manual.Try to f 阅读全文
posted @ 2011-08-08 16:28 Jiang, X. 阅读(141) 评论(0) 推荐(0) 编辑
摘要: Readability and Naming ThingsLink: http://www.codesimplicity.com/post/readability-and-naming-things/#more-797很多人认为决定代码可读性的关键在于他们所使用的字母和符号。他们相信对符号的调整可以改善程序的可读性。在一定程度上,他们是正确的。然而,更基本的原则是:代码的可读性首先由字母和符号的长度(所占空间)决定。这将意味着:代码中需要适当数量的字母,不多也不少。在一行代码中需要通过空格来分离不同的部分,不同的操作应该在不同的行中出现并使用适当的缩排。它实际上是通过空缺来使代码具备更好地可读 阅读全文
posted @ 2011-08-08 16:19 Jiang, X. 阅读(301) 评论(0) 推荐(0) 编辑
2011年8月7日
摘要: 一、当前用户专有的启动文件夹 这是许多应用软件自动启动的常用位置,Windows自动启动放入该文件夹的所有快捷方式。用户启动文件夹一般在:\DocumentsandSettings\<用户名字>\“开始”菜单\程序\启动,其中“<用户名字>”是当前登录的用户帐户名称。 二、对所有用户有效的启动文件夹 这是寻找自动启动程序的第二个重要位置,不管用户用什么身份登录系统,放入该文件夹的快捷方式总是自动启动——这是它与用户专有的启动文件夹的区别所在。该文件夹一般在:\DocumentsandSettings\AllUsers\“开始”菜单\程序\启动。 三、Load注册键 介绍 阅读全文
posted @ 2011-08-07 10:02 Jiang, X. 阅读(432) 评论(0) 推荐(0) 编辑
2011年8月5日
摘要: MSDN CListBox::DeleteString Mistake链接:http://msdn.microsoft.com/zh-cn/library/466e49kb(v=VS.80).aspx其Example为:// The pointer to my list box.extern CListBox* pmyListBox; // Delete every other item from the list box.for (int i=0;i < pmyListBox->GetCount();i++){ pmyListBox->DeleteString( i );} 阅读全文
posted @ 2011-08-05 10:37 Jiang, X. 阅读(358) 评论(0) 推荐(0) 编辑
2011年8月4日
摘要: Using the Python Interpreter2.1. Invoking the Interpreter¶The Python interpreter is usually installed as /usr/local/bin/python on those machines where it is available; putting /usr/local/bin in your Unix shell’s search path makes it possible to start it by typing the commandpythonto the shell. 阅读全文
posted @ 2011-08-04 11:08 Jiang, X. 阅读(3488) 评论(0) 推荐(0) 编辑
2011年8月1日
摘要: HTML样式style 属性的作用在于提供了一种改变所有 HTML 元素的样式的通用方法。例子:<html><body style="background-color:PowderBlue;"><h1>Look! Styles and colors</h1><p style="font-family:verdana;color:red">This text is in Verdana and red</p><p style="font-family:times;col 阅读全文
posted @ 2011-08-01 17:02 Jiang, X. 阅读(200) 评论(0) 推荐(0) 编辑
摘要: HTML文本格式化文本格式化<html><body><b>This text is bold</b><br /><strong>This text is strong</strong><br /><big>This text is big</big><br /><em>This text is emphasized</em><br /><i>This text is italic</i><br /& 阅读全文
posted @ 2011-08-01 16:58 Jiang, X. 阅读(907) 评论(0) 推荐(0) 编辑
摘要: HTML基本标签HTML 标签对大小写不敏感:<P> 等同于 <p>。许多网站都使用大写的 HTML 标签。<! This is a comment > 注释<p> 元素定义了 HTML 文档中的一个段落。浏览器会自动地在段落的前后添加空行<body> 元素定义了 HTML 文档的主体。<html> 元素定义了整个 HTML 文档。<br /> 标签定义换行。个空的 HTML 元素。由于关闭标签没有任何意义,因此它没有结束标签。<hr /> 水平线HTML 标题(Heading)是通过 <h1 阅读全文
posted @ 2011-08-01 16:45 Jiang, X. 阅读(465) 评论(0) 推荐(0) 编辑
2011年7月31日
摘要: 创建非模态对话框void CMyView::OnShow() { // TODO: Add your command handler code here CDIALOG1 dlg; dlg.Create(IDD_DIALOG1) ; dlg.ShowWindow(SW_SHOW); } 作为非模态对话框,这里定义的dlg是一个局部对象,那么执行完dlg.ShowWindow(SW_SHOW);后一到}符号处OnShow()函数结束,dlg这个局部对象的生命周期也到了,系统会随之把为dlg所关联的对话框资源也销毁,所以无法看到该对话框显示,而把dlg改变成CMyView的类成员变量来定义就可解决 阅读全文
posted @ 2011-07-31 10:59 Jiang, X. 阅读(442) 评论(0) 推荐(0) 编辑
2011年7月24日
摘要: #include "stdafx.h"#include <iostream>#include <conio.h>using namespace std;int main(int argc, char* argv[]){ cout << "。。。请按回车键。。。" << endl; char c; c=getch(); cout << "按回车键后,得到的ascii码是: " << int(c) << endl; // 13 cout << 阅读全文
posted @ 2011-07-24 14:42 Jiang, X. 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 科德十二定律(Codd's 12 rules)是由数据库的关系模型的先驱埃德加·科德(Edgar F. Codd)提出的,使数据库管理系统关系化需满足的十三条(从0至12)准则。全关系系统应该完全支持关系模型的所有特征。关系模型的奠基人埃德加·科德具体地给出了全关系系统应遵循的基本准则。准则0一个关系形的关系数据库系统必须能完全通过它的关系能力来管理数据库。准则1 信息准则关系数据库系统的所有信息都应该在逻辑一级上用表中的值这一种方法显式的表示。准则2 保证访问准则依靠表名、主码和列名的组合,保证能以逻辑方式访问关系数据库中的每个数据项。准则3 空值的系统化处理全关 阅读全文
posted @ 2011-07-24 09:47 Jiang, X. 阅读(803) 评论(0) 推荐(0) 编辑
2011年7月23日
摘要: #include <stdio.h> #define M 50 void main() { int i,j,n,count; int dada[M][M] = {0}; printf("Input n(0~%d):",M); scanf("%d",&n); count = 1; for(i=0;i<(n+1)/2;i++) { for (j=i;j<n-i;j++) { dada[i][j] = count++; } for (j=i+1;j<n-i... 阅读全文
posted @ 2011-07-23 19:58 Jiang, X. 阅读(287) 评论(0) 推荐(0) 编辑
2011年7月19日
摘要: 在你的代码中使用注释语句和统一命名法则是一个很好的习惯,它们会使你的代码更加通用。作者已经在微软工作了近五年的时间了。我不知道你是否跟我一样,在集成和除BUG时遇到很多问题----因为开发者没有遵守统一的命名法则和写注释语句。在以前版本的Visual Studio中,微软曾建议使用匈牙利命名法来写代码,并鼓励开发这位写出统一格式的代码而使用相同的法则。例如: 在最近发布的.NET和它的编程语言中,微软更换了他的这一法则。如果你用过Delphi编程,你会看到新的法则与Delphi(Pascal)有些相似。为避免代码冲突(这样做也会让你的代码更为通用),就要使用命名法则,这是一个很好的编程习惯。. 阅读全文
posted @ 2011-07-19 13:59 Jiang, X. 阅读(309) 评论(0) 推荐(0) 编辑
2011年7月18日
摘要: CString经验string 变为 CString : string str;CString cstr = str.c_str();////////////////////////////////////////////////////////////CString中查找子串: CString cstr.Find(_T(“abc”));///////////////////////////////////////////////////////////截取CString : CString to_cut, result; result = to_cut.Mid(0, to_cut.GetLe 阅读全文
posted @ 2011-07-18 15:29 Jiang, X. 阅读(191) 评论(0) 推荐(0) 编辑
2011年7月16日
摘要: 1.记录自己学习、成长的历程;2.记录自己学习的心得体会;3.为自己的思考成果留下记录,也许一段时间之后自己对某些问题的认识会发生变化,就在博客中进行修改,用博客提醒自己曾经进行了怎样的思考;4.与大家分享经验成果,使大家都能够少走弯路,人的思考力总是有限的。 阅读全文
posted @ 2011-07-16 16:19 Jiang, X. 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 缓冲是计算机领域非常常见的一种思想。其主要目的是为了平衡设备之间的能力差异。从硬件到软件,缓冲思想无处不在。 CPU的Cache,绘图时的双缓冲方法等等都是缓冲的具体实践。C语言中的fflush(FILE *stream)函数。fflush(stdin)刷新标准输入缓冲区,把输入缓冲区里的东西丢弃 fflush(stdout)刷新标准输出缓冲区,把输出缓冲区里的东西打印到标准输出设备上。下面的程序从不停地从键盘读取数据到int data中,同时显示data的值。#include <stdio.h>int main(){ int data = 0; while(1){ scanf(& 阅读全文
posted @ 2011-07-16 15:25 Jiang, X. 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 默认情况下,“MFC 应用程序向导”用文档类和视图类创建应用程序主干。MFC 将数据管理分成这两类。文档存储数据和管理数据的打印,并协调更新多个数据视图。视图显示数据并管理用户与数据之间的交互,包括选择和编辑。尽管可以容易地重写或者忽略文档/视图的分离,但在大多数情况下都有颇具说服力的理由需要遵循此模型。最有说服力的理由之一是在需要同一文档的多个视图时,例如同时需要电子数据表格和图表视图。文档/视图模型使一个单独的视图对象得以表示每个数据视图,而对所有视图通用的代码(例如计算引擎)可以驻留在文档中。文档还承担在每次数据更改时更新所有视图的任务。MFC 文档/视图结构使支持多视图、多文档类型、. 阅读全文
posted @ 2011-07-16 14:46 Jiang, X. 阅读(545) 评论(0) 推荐(0) 编辑
2011年7月15日
摘要: Whetting Your Appetite 如果你有很多工作是通过计算机来完成的,那么你一定希望其中的很多事情能够自动地实现。比方说,你希望在文本文件中实现查找和替换的功能,以某一种机制实现照片的重命名以及重新排序的功能,一个小型的数据库甚至是一个自己的游戏。 如果你是一个专业的软件开发者,你要使用诸如C/C++/Java这样的开发语言却发现他们的开发周期太长了(编程/编译/测试/重新编译)。也许你正在为编写这样的一个库或者是一组测试用例而苦恼。或者你曾经已经写过一些能够被其它语言扩展的代码,而你又不希望设计一个全新的语言来实现你的目的。 Python就是那个你苦苦期盼的语言。 你可能会写一 阅读全文
posted @ 2011-07-15 21:20 Jiang, X. 阅读(749) 评论(0) 推荐(0) 编辑
2011年7月14日
摘要: Python是一种社区驱动的、开源的、拥有独特的简洁和可读性的、多用途的、动态的脚本语言。优点:能够使开发速度最优化,同时还可以保证代码的高度可读性,使程序员能够快速完成项目开发。缺点: 执行速度不够快(与C、C++相比)。Python代码常保存在后缀为.py的文件中,不需要编译链接的过程。其实现机制为:源代码→字节码→Python Virtual Machine如果需要生成.exe文件(冻结二进制文件),往往可以借助一些工具:Py2exe(WINDOWS) / PyInstaller (Linux / UNIX)。其机制是将python嵌入于二进制文件从而实现Python的环境。在交互解释. 阅读全文
posted @ 2011-07-14 19:11 Jiang, X. 阅读(264) 评论(0) 推荐(0) 编辑
摘要: Ubuntu[国际音标:[uːˈbuːntuː](英语);[ùɓúntú](祖鲁语)]是一个以桌面应用为主的GNU/Linux操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词(译为吾帮托、乌班图、有奔头或乌斑兔),意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。 阅读全文
posted @ 2011-07-14 18:57 Jiang, X. 阅读(1153) 评论(0) 推荐(0) 编辑
2011年7月13日
摘要: 文件分类技巧 随着磁盘中文件数据的急剧增长,文件分类技巧已经到了限制自己文件管理的程度,有必要探究一下文件分类的技巧。 这里主要探究个人文件的管理。语言、数据结构、算法、库、技术、思考、探究、工具AlgorithmData StructureExplorationLanguage C C++ Python LISPHTMLLibraryTechnologyThinkingTools DreamWeaver SRENG 阅读全文
posted @ 2011-07-13 19:42 Jiang, X. 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 图灵机图灵机,又称确定型图灵机,是英国数学家阿兰·图灵于1936年提出的一种抽象计算模型,其更抽象的意义为一种数学逻辑机,可以看作等价于任何有限逻辑数学过程的终极强大逻辑机器。图灵的基本思想图灵的基本思想是用机器来模拟人们用纸笔进行数学运算的过程,他把这样的过程看作下列两种简单的动作:在纸上写上或擦除某个符号;把注意力从纸的一个位置移动到另一个位置;而在每个阶段,人要决定下一步的动作,依赖于(a)此人当前所关注的纸上某个位置的符号(b)此人当前思维的状态。为了模拟人的这种运算过程,图灵构造出一台假想的机器,该机器由以下几个部分组成:一条无限长的纸带TAPE。纸带被划分为一个接一个的小 阅读全文
posted @ 2011-07-13 19:11 Jiang, X. 阅读(460) 评论(0) 推荐(0) 编辑
2011年7月12日
摘要: 什么是 HTML?HTML 是用来描述网页的一种语言。·HTML 指的是超文本标记语言 (Hyper Text Markup Language)·HTML 不是一种编程语言,而是一种标记语言 (markup language) ·标记语言是一套标记标签 (markup tag) ·HTML 使用标记标签来描述网页 【超文本维基百科】:超文本是一种用户接口范式,用以显示文本及与文本相关的内容。现时超文本普遍以电子文档的方式存在,其中的文字包含有可以链接到其他字段或者文档的超文本链接,允许从当前阅读位置直接切换到超文本链接所指向的文字。超文本的格式有很多,目 阅读全文
posted @ 2011-07-12 17:43 Jiang, X. 阅读(207) 评论(0) 推荐(0) 编辑
2011年7月5日
摘要: 0041134A int 3 0041134B int 3 0041134C int 3 0041134D int 3 0041134E int 3 0041134F int 3 --- e:\programing\反汇编\main functon\main functon\main functiong.cpp -------------#include <stdio.h>int main(){00411350 push ebp //压入ebp 0... 阅读全文
posted @ 2011-07-05 20:03 Jiang, X. 阅读(355) 评论(0) 推荐(0) 编辑
2011年7月2日
摘要: 缓冲区溢出是目前最常见的一种安全问题,操作系统以及应用程序大都存在缓冲区溢出漏洞。缓冲区是一段连续内存空间,具有固定的长度。缓冲区溢出是由编程错误引起的,当程序向缓冲区内写入的数据超过了缓冲区的容量,就发生了缓冲区溢出,缓冲区之外的内存单元被程序“非法”修改。一般情况下,缓冲区溢出导致应用程序的错误或者运行中止,但是,攻击者利用程序中的漏洞,精心设计出一段入侵程序代码,覆盖缓冲区之外的内存单元,这些程序代码就可以被CPU所执行,从而获取系统的控制权。8.1 缓冲区溢出攻击原理1. 局部变量与堆栈的关系在一个程序中,会声明各种变量。静态全局变量是位于数据段并且在程序开始运行的时候被初始化,而局. 阅读全文
posted @ 2011-07-02 14:51 Jiang, X. 阅读(4126) 评论(0) 推荐(0) 编辑