自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (4)
  • 问答 (2)
  • 收藏
  • 关注

原创 数据结构基础(10)------------二分查找算法(BinarySearch)

数据结构基础(9)------------二分查找算法(BinarySearch)1.二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如

2014-03-31 14:35:59 1033

原创 基本语言细节--C语言标准库函数 atoi ()

基本语言细节--C语言标准库函数 atoi ()1. C语言库函数名:  atoi,功 能: 把字符串转换成整型数。名字来源:ASCII to integer 的缩写。                原型: int atoi(const char *nptr);2.下面由自己动手编写一个实现此功能的函数    首先考虑测试用例:                         

2014-03-31 13:53:22 1260

原创 测试的基本理论与方法(3)

测试的基本理论与方法(3)企业的测试策略  理念:  企业的主要目的是获取利润,降低测试成本也是盈利的一种方式。  用较低的代价实现有效的测试,不应为了追求完美的测试而不失一切代价。  如何合理地减少测试工作量  减少冗余的测试  白盒测试与黑盒测试的方式虽然不同,但往往有“异曲同工”之妙。在很多地方,白盒测试与黑盒测试会产生一模一样的效

2014-03-29 11:33:53 1380

原创 测试的基本理论与方法(2)

测试的基本理论与方法(2) 七、测试的分类与比较  测试方式  白盒测试:关心软件内部设计和程序实现,主要测试依据是设计文档  黑盒测试:不关心软件内部,只关心输入输出,主要测试依据是需求文档  测试阶段  单元测试、集成测试、系统测试、验收测试。是“从小到大”、“由内至外”、“循序渐进”的测试过程,体现了“分而治之”的思想。  单元测试

2014-03-29 10:29:29 1426

原创 测试的基本理论与方法(1)

测试的基本理论与方法(1)一、对软件测试的误解  1、如果发布出去的软件有质量问题,那是软件测试人员的错。  2、软件测试技术要求不高,至少比编程容易多了  3、软件测试随便找一个能力差的人就能做。  4、软件测试是测试人员的事,与开发人员无关。  5、设计-实现-测试,软件测试是开发后期的一个阶段  二、如何理解软件测试  软件测试

2014-03-29 10:12:45 4278

原创 3DFDTD三维仿真中长方体显示代码(OpenGL)

3DFDTD三维仿真中长方体显示代码(OpenGL)/*double i=0;double j=0;double k=0;const double x1=m_pCenterLocation->GetCenterLocationX()-m_Length/2;const double x2=m_pCenterLocation->GetCenterLocationX()+m_

2014-03-28 18:05:00 950

原创 3DFDTD三维仿真中取样面显示代码(OpenGL)

3DFDTD三维仿真中取样面显示代码(OpenGL)此是最初版本,由于在多面取样时,其会造成一定程度的视觉遮掩,故而已将此显示代码重写,旧有代码仅做保留使用。/*glBegin(GL_QUAD_STRIP);if ("X方向"==SourceDirection){for (auto surface:m_SurfacesList){glVertex3d(surfa

2014-03-28 16:32:41 1446

原创 Linux操作系统基础理论(5)-----EXT2文件系统的实现机制

Linux操作系统基础理论(5)-----EXT2文件系统的实现机制目录摘要:... 21.引言... 21.1  Linux操作系统的简介... 21.2 Linux文件系统的简介... 32.  EXT2文件系统的实现... 32.1  EXT2简介... 32.2  EXT2文件系统的实现... 42.2.1  EXT2

2014-03-25 09:23:24 1297

原创 Linux操作系统基础理论(4)-----Linux 存储管理的实现

《操作系统分析与设计》论文(2)-----Linux 存储管理的实现目录摘要:... 21.     引言... 21.1       存储管理简介... 21.2 虚拟存储管理... 22.  Linux 存储管理的实现... 22.1 80386内存管理机制和功能... 22.2 80386的分段机制在Linux中的应用... 3

2014-03-25 09:19:31 3367

原创 Linux操作系统基础理论(3)-----浅析Linux 与Minix 下进程实现的异同

《操作系统分析与设计》论文(1)-----浅析Linux 与Minix 下进程实现的异同目录摘要:... 11.     引言... 11.1  Minix简介... 11.2  Linux简介... 11.3  进程简介... 22.     Minix和Linux中进程的实现... 22.1 进程的概述... 22.2

2014-03-25 09:17:04 1944

原创 数据结构基础(9)------------简单选择排序(Simple Selection Sort)

数据结构基础(9)------------简单选择排序(Simple Selection Sort) 1.简单选择排序:就是通过n-i次关键字比较,从n-i-+1个记录中找出关键字最小的记录,并和第i个记录进行交换;void SimpleSelectionSort(int *a,int len) //此算法其实与冒泡排序的第一个思想比较雷同,之前的那个算法{ int temp=0;

2014-03-21 14:13:47 695

原创 数据结构基础(8)------------冒泡排序(Bubble Sort)

数据结构基础(7)------------冒泡排序(Bubble Sort)1.冒泡排序的思想就是交换排序,基本思想是两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止;void BubbleSort1(int *a,int len) //最简单的算法,但是其并非标准的排序算法,因为不满足两两交换的前提,由此可知{

2014-03-21 13:52:53 675

原创 数据结构基础(7)------------插入排序

数据结构基础(7)------------插入排序1. 插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。例如有一个长度为N的无序数组,进行N-1次的插入即能完成排序;第一次,数组第1个数认为是有序的数组,将数组第二个元素插入仅有1个有序的数组中;第二次,数组前两个元素组成有序的数组,将数组第三个元素插入由两个元素构成的有序数组中......第N-1次,数组前N-1个元素

2014-03-21 12:55:28 501

原创 Linux操作系统基础理论(2)----fork系统调用

Linux操作系统基础理论(1)----fork系统调用1.函数原型:pid_t fork( void);     // #include (pid_t 是一个宏定义,其实质是int 被定义在#includesys/types.h>中)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1函数说明:一个现

2014-03-13 20:37:12 875

原创 数据结构基础(6)------------AVL树的理解

数据结构基础(6)------------AVL树的理解1.在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis,他

2014-03-13 09:44:34 715

原创 基本语言细节--C语言标准库函数strcpy

基本语言细节--C语言标准库函数strcpy1.介绍原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include string.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。

2014-03-12 16:10:42 757

原创 Shell基础编程(1)-----dialog图形化工具

Shell基础编程(1)-----dialog图形化工具1.   gdialog工具是以GNOME用户接口来显示对话框的,使用与dialog一样!2.    举一个例子,创建一个简单的消息框:    dialog --msgbox "Hello Wolangjushi" 9 183.所能创建的对话框的额主要类型:                   4.每种类型所需要的参数

2014-03-12 14:03:57 1637 1

原创 Linux操作系统基础理论(1)----文件系统层次结构标准(FHS)

Linux 文件系统层次结构标准File Hierarchy Standard1.有此标准的目的不言而喻,就是定义Linux文件系统的标准路径,让用户和开发者可以在合理的位置找到需要的东西!2.今天的这种架构是演变多年的结果。3.简要介绍根目录下每个标准子目录的用途;/bin:包含可以被rooot用户和普通用户使用的二进制文件,都可以在单用户模式下运行。即在其他目录结构

2014-03-12 10:14:34 845

原创 C++强大的背后

在31年前(1979年),一名刚获得博士学位的研究员,为了开发一个软件项目发明了一门新编程语言,该研究员名为Bjarne Stroustrup,该门语言则命名为——C with classes,四年后改称为C++。C++是一门通用编程语言,支持多种编程范式,包括过程式、面向对象(object-oriented programming, OP)、泛型(generic programming,

2014-03-10 16:15:25 673

原创 Java语言学校的危险性

我觉得翻译难度很大,整整两个工作日,每天8小时以上,才译出了5000字。除了Joel大量使用俚语,另一个原因是原文涉及"编程原理",好多东西我根本不懂。希望懂的朋友帮我看看,译文有没有错误,包括我写的注解。====================JAVA语言学校的危险性作者:Joel Spolsky译者:阮一峰原文: http://www.joelonsof

2014-03-10 13:16:17 933

原创 云主机是什么?

一、共享主机和云主机从互联网诞生至今,大部分站长都是从"共享主机"(shared hosting)开始学习建站的。所谓"共享主机",就是一台服务器上有许多网站,大家共享这台服务器的硬件和带宽。如果它发生故障,那么上面的所有网站都无法访问。"云主机"(Cloud hosting)可以看成是新一代的共享主机。首先,主机公司将它的硬件和网络线路,做成一朵"云",然后提供一些通向这

2014-03-10 12:44:29 736

原创 Unix目录结构的来历

Unix(包含Linux)的初学者,常常会很困惑,不明白目录结构的含义何在。举例来说,根目录下面有一个子目录/bin,用于存放二进制程序。但是,/usr子目录下面还有/usr/bin,以及/usr/local/bin,也用于存放二进制程序;某些系统甚至还有/opt/bin。它们有何区别?长久以来,我也感到很费解,不明白为什么这样设计。像大多数人一样,我只是根据《Unix文件

2014-03-10 12:40:05 483

原创 寻找优秀程序员

下面的正文非常精彩,不过请先花2分钟,阅读我的说明。上个月,我同图灵公司签了合同,翻译More Joel on Software一书。敲定合同后,我问:可以将我的翻译,像原文那样开源吗?回答是不行。我又问:可以将部分翻译开源吗?比如25%......回答是可以。(感谢图灵公司,虽然你们没有预见到,允许整个中译本自由转载,将

2014-03-10 12:37:13 1094

原创 我为什么喜欢编程?

这个周末,我在家核对More Joel on Software的最后定稿。此书已经在申请书号了,一拿到书号,就可以印刷和销售了。所以,不出意外的话,年底之前就能上架。在复核的过程中,我又读到了书中让我最有共鸣的一段话:Joel谈为什么公正对程序员很重要。我不知道别人的情况,我自己喜欢编程,很大的原因就是觉得程序的世界更公平公正,谁对谁错,只要运行一下代码就知道了。这同现

2014-03-10 12:19:51 1705

原创 四位计算机的原理及其实现

你是否想过,计算机为什么会加减乘除?或者更直接一点,计算机的原理到底是什么?Waitingforfriday有一篇详细的教程,讲解了如何自己动手,制作一台四位计算机。从中可以看到,二进制、数理逻辑、电子学怎样融合在一起,构成了现代计算机的基础。一、什么是二进制?首先,从最简单的讲起。计算机内部采用二进制,每一个数位只有两种可能"0"和"1",运算规则是"逢二进一"。

2014-03-08 12:59:32 621

原创 DOS的历史

昨日(7月27日),微软公司的DOS操作系统迎来了30岁生日。DOS是历史上一个划时代的产品,标识着PC(个人电脑)的崛起和普及,对计算机行业影响深远。只有了解DOS的历史,才能理解今天的计算机工业从何而来。下面就是我对这一段历史的介绍。==========================================DOS的历史作者:阮一峰1.

2014-03-08 12:56:17 591

原创 《Eric Raymond对于几大程序开发语言的评价》

今天在网上看到一篇《Eric Raymond对于几大程序开发语言的评价》。我对编程懂的很少,一直想加强学习,就把它转贴过来了。我的感受是学习程序语言,一定必须从徒手写每一行代码开始学,这样可能是最容易的方法。我最早学的是微软的Visual Basic,按理说BASIC比较简单,应该最好学,可是微软帮你把所有图形界面都做好了,成了一个完全的黑箱,用户等于在对这个黑箱编程,对程序的

2014-03-08 12:47:03 728

原创 互联网协议基本介绍 (2)

上一篇文章分析了互联网的总体构思,从下至上,每一层协议的设计思想。这是从设计者的角度看问题,今天我想切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。==============================================================互联网协议入门(二)作者:阮一峰(接上文)七、一个小结

2014-03-08 12:38:22 867 1

原创 互联网协议基本介绍 (1)

wo们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。它们对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联

2014-03-08 12:28:21 890

原创 IETF:互联网精神的典范

今年是IETF成立25周年,ars technica有一篇介绍文章,回顾了它的辉煌成就。IETF的全称是"互联网工程任务组"(Internet Engineering Task Force),主要目标是协调制定互联网标准。几乎所有重要的网络底层协议,都是由IETF制定的,比如TCP协议、IP协议、HTTP协议、等等。可以毫不夸张地说,没有IETF就没有互联网。我

2014-03-07 16:29:24 652

原创 进程(process)和线程(thread)解释

进程(process)和线程(thread)是操作系统的基本概念,但是它们比较抽象,不容易掌握。最近,我读到一篇材料,发现有一个很好的类比,可以把它们解释地清晰易懂。1.计算机的核心是CPU,它承担了所有的计算任务。它就像一座工厂,时刻在运行。2.假定工厂的电力有限,一次只能供给一个车间使用。也就是说,一个车间开工的时候,其他车间都必须停工。

2014-03-07 16:14:39 811

原创 代码抽象三原则

所谓"抽象化",就是指从具体问题中,提取出具有共性的模式,再使用通用的解决方法加以处理。开发软件的时候,一方面,我们总是希望使用别人已经写好的代码,另一方面,又希望自己写的代码尽可能重用,以求减少工作量。要做到这两个目标,这需要"抽象化"。最近,我读到美国程序员Derick Bailey的一篇文章,谈到"抽象化"应该遵循的三个原则,觉得很有启发。一、DRY原则

2014-03-07 16:10:45 633

原创 为什么寄存器速度大于内存

计算机的存储层次(memory hierarchy)之中,寄存器(register)最快,内存其次,最慢的是硬盘。同样都是晶体管存储设备,为什么寄存器比内存快呢?Mike Ash写了一篇很好的解释,非常通俗地回答了这个问题,有助于加深对硬件的理解。下面就是我的简单翻译。原因一:距离不同距离不是主要因素,但是最好懂,所以放在最前面说。内存离CPU比较远

2014-03-07 16:05:33 800

原创 Stack的三种含义

学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样一层层堆起来,后面加入

2014-03-07 15:45:59 741

原创 Linux的启动流程

半年前,我写了《计算机是如何启动的?》,探讨BIOS和主引导记录的作用。那篇文章不涉及操作系统,只与主板的板载程序有关。今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操作系统的启动流程。这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关

2014-03-07 15:33:58 442

原创 计算机是如何启动的?

从打开电源到开始操作,计算机的启动是一个非常复杂的过程。我一直搞不清楚,这个过程到底是怎么回事,只看见屏幕快速滚动各种提示...... 这几天,我查了一些资料,试图搞懂它。下面就是我整理的笔记。零、boot的含义先问一个问题,"启动"用英语怎么说?回答是boot。可是,boot原来的意思是靴子,"启动"与靴子有什么关系呢? 原来,这里的boot是bootst

2014-03-07 15:19:36 478

转载 Linux 的昨天与今天

Linxu如今已经席卷数据中心,成为全世界x86服务器用户最喜欢的操作系统,当然有人会说还有Windows,但是Windows Server在大规模部署中还难以实现和Linux媲美的效率、准确性和可靠性。相比历史悠久的Unix,甚至相比Windows,Linux的历史并不算长,但却后来居上。历史上有三个事件对Linux的发展有着重要的意义,如果没有这些事情,Linux恐怕也不是今天这个样子

2014-03-07 12:20:44 438

原创 数据结构基础(5)------------二叉排序树(BST)

1.概念:二叉排序树,又名为二叉查找树。要么是一棵空树,要么是具有以下三性质的二叉树:        A.若其左子树不为空,则其左子树的所有结点的值均小于根结点的值;        B.若其右子树不为空,则其右子树的所有结点的值均大于根结点的值;        C.它的左右子树也分别为二叉树。          其定义依然采用了递归的定义方法!而且其元素之间满足一定的次序关系,使得

2014-03-06 19:52:22 724

原创 数据结构基础(4)————next数组的理解

1.理解KMP算法,先懂得求解next数组是关键;下面的这篇是求解next数组时的运行过程;程序代码如下:void get_next(String *T,int * next){    int i=1,j=0;    next[1]=0;   while(i  {         if(j==0 || T[i]==T[j])            {

2014-03-06 10:27:15 3889

原创 数据结构基础(3)-------------树

1.树的定义:其是n(n>=0)个节点的有限集。n=0时为空树。在任意一颗飞空树中:(1)有且仅有一个特定的称为根的结点;(2)当n>1时,其余结点可以分为m个互不相交的有限集,其中每一个集合本身都是一棵树,并且称之为根的子树;2.树的基本概念:子树的数目称为节点的度;孩子,双亲,兄弟,层次,树中结点最大层次称为树的深度或高度;3.树是一对多的结构,不论是顺序存储还是链式存储都不恩能够单独

2014-03-05 16:16:11 671

Visual_assist_X_for_VC6.0破解版

Visual_assist_X_for_VC6.0破解版

2013-03-20

C++实现三维动态数组,赋值加减乘算法

C++实现三维动态数组,赋值,加减乘算法,适用于三维空间对象之间的运算实现。

2013-03-19

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除