精华内容
下载资源
问答
  • % 调整目录间距的宏包 \usepackage{setspace} \thispagestyle{empty} % 不要页眉页脚和页码 \setcounter{page}{-100} % 此命令仅是为了避免页码重复报错,不要在意 %---------以下生成目录---------- \newpage \...
    % 调整目录间距的宏包
    \usepackage{setspace}
    
    
    \thispagestyle{empty}   % 不要页眉页脚和页码
    \setcounter{page}{-100} % 此命令仅是为了避免页码重复报错,不要在意
    
    %---------以下生成目录----------
    \newpage
    \begin{spacing}{0.5}
    	\tableofcontents
    \end{spacing}   % 若不想要目录, 注释掉该句
    \thispagestyle{empty}   % 不要页眉页脚和页码
    \newpage
    
    
    %---------以下生成正文----------
    \setcounter{page}{1}    % 从正文开始计页码
    \section{Introduction}
    
    展开全文
  • 最近实验室师兄给派活了,需要使用KVM安装虚拟机,但是过程出现了问题,主要是系统默认给KVM可分配的磁盘大小很小很小,根本不够用。查看系统磁盘使用情况后发现还有很大的空闲磁盘没用,但是挂载在不同的地方...

    前言

            最近实验室师兄给派活了,需要使用KVM安装虚拟机,但是过程中出现了点问题,主要是系统默认给KVM可分配的磁盘大小很小很小,根本不够用。查看系统磁盘使用情况后发现还有很大的空闲磁盘没用,但是挂载在不同的地方,开始调整卷使其挂载在同一个目录下,但是没成功没啥效果, 还出现了很多很迷的服务器问题(搞的人心惶惶的hh)。后来索性直接调整了不同目录下的LVM卷分配大小,完事,就此记录。

            因为主要是想到了这个方法后,百度看到具体的调整方式,觉得以后可能会用到就此记录一下。点开链接即可查看。

    调整过程

    http://www.piis.cn/jiaocheng/web1340.asp

    总结

            一句话,熟能生巧。这次本来想着以前搞过一次,以为会很快弄完。没想到很久没做,很多很基本的虚拟机操作(类似网络配置、远程连接等)都生疏的很,还是要多多练习;另外就是及时记录吧,以免后续忘了还得百度,不如查笔记来的快。

    展开全文
  • 虚拟机文件和目录的相关操作

    万次阅读 2018-03-28 22:09:47
    1.linux系统结构 1)linux是一个倒数结构 2)linux所有东西都是文件 3)这些文件都在系统顶级...2.系统二级目录的作用 /bin #常用系统命令 /sbin #系统管理命令 /boot #启动分区 /sys #内核参数调整 /dev ...

    1.linux系统结构

    1)linux是一个倒数结构

    2)linux中所有东西都是文件

    3)这些文件都在系统顶级目录“/”就是根目录

    4)/目录为二级目录,都是装机时系统自动建立的

    2.系统中二级目录的作用

    /bin        #常用系统命令

    /sbin        #系统管理命令

    /boot        #启动分区
    /sys        #内核参数调整
    /dev        #设备文件

    /lib        #32位库文件

    /lib64        #64文库文件
    /media /run /mnt #临时设备的挂载点
    /opt        #第三方软件安装位置
    /proc        #系统信息
    /etc        #系统配置目录
    /home        #普通用户家目录
    /root        #超级用户家目录
    /var,/srv    #系统数据

    3.路径

    绝对路径:文件所在系统的真实位置,在系统的任何位置都可以使用通常以"/"开头,如/etc/passwd这个目录

    相对路径:相对当前所在系统位置的一个文件名称的简写,他通常会自动添加"pwd"的值在名称前

    4.文件管理命令

    1)新建文件:touch file

    2)新建目录:mkdir test

    3)删除文件或目录:rm -f 文件名;rm -fr 目录名,-f表示强行删除,不提示;-r表示递归,也就是说,会将这个目录本身和里面的子目录和文件一起删除

    4)编写文件vim 文件名   之后会进入这个文件内容的浏览模式,然后按"i"键 进入插入模式后就可以编写内容了,编写结束后按"ESC"键 退出插入模式,最后按":wq" 保存并退出就可以了(编写时用上下左右键控制鼠标位置)

    5)查看文件内容:cat 文件名

    如果要加印行号呢?

    使用“cat -n 文件名”

    如果不想要空白的行号,可以使用“cat -b 文件名”

    6)文件复制:cp    文件名  新文件名称|目录   

     

    目录复制:cp -r 目录名   新名称|目录

     

     

    7)移动或重命名:mv这个命令除了移动还可以拿来作重命名的操作

                          格式  :  mv 文件   目录

                                        mv 目录1    目录2

                                        mv 目录/*  .    ##“.”表示当前所在系统目录

    8)pwd    #print work directory  显示当前所在系统位置的路径

    9)切换工作目录
    cd 目录名称
    cd ..        ##进入当前目录的上层目录

    cd -        ##进入当前目录之前所在目录

    10)文件的显示
    ls

    ls -a        ##显示所有文件包括以点开头的隐藏文件

    ls -R         ##递归显示目录中的所有内容

    5.字符匹配

    我们要对多个文件进行复制、删除或其他操作的时候,这时候就需要用到字符匹配,可以匹配想要操作的文件对它们进行操作

     *                   ###匹配0到任意字符

    ?                 ###匹配单个字符
    [[:alpha:]]      ###匹配单个字母
    [[:lower:]]      ###匹配单个小写字母
    [[:upper:]      ###匹配单个大写字母
    [[:digit:]]        ###匹配单个数字
    [[:alnum:]]     ###匹配单个数字或字母
    [[:punct:]]      ###匹配单个符号

    [[:space:]]     ###匹配单个空格

    6.正则表达式

    {1..9}           ###1-9

    {a..f}            ###a-f
    {1,3,5}         ###135
    {a,c,e}         ###a c e

    {1..3}{a..c}    ###1a 2a 3a 2a 2b 2c 3a 3b 3c

    [  ]

    [a-C]           ###aA bB cC
    [a-c]           ###aA或者bB或者c
    [1-3]           ###1或者2或者3
    [145]           ###1或者4或者5

    [^abc]|[!abc]   ###除了a并且除了b并且除了c

    { }和[ ]的区别在于{ }限定RE字符范围是连续的,比如删除file1到file5中所有存在的文件,但是如果之间少一个或几个文件的话,就不能用rm -f file{1..5},要用rm -f file[1-5],它会选择性匹配,找到file1到file5中所存在的文件进行删除,如果建立文件file1到file5需要用touch file{1..5},而不是touch file[1..5]

    7.linux中其他常用文本处理工具

    1)

    head                           ##显示指定文件的前多少行
    head -n 1 passwd     ##显示文件的第一行
    head -n 5 passwd     ##显示文件的前5行

    head passwd             ##默认显示文件的前10行

    2)

    tail                           ##显示文件的后多少行
    tail -n 1 passwd     ##显示文件的最后1行
    tail -n 5 passwd     ##显示文件的最后5行

    tail passwd             ##显示文件的最后10行

    3)  less            ##分页浏览

          less passwd

    less不仅可以看后面内容也可以向前翻页,可以使用上下键来前后翻页

    4)   file            ##查看文件类型

    格式:file 文件名称

    file.mp3和file.exe文件添加了相同的内容,显示的文件类型一样,所以文件类型由内容决定,而非文件名字

    5)

    wc               ##统计文件的字数,字符数,字节数
    wc -l            ##行数
    wc -m         ##字符数
    wc -c          ##字节数

    wc -w         ##字数

     

    展开全文
  • 读了很多个章节(软件构建的思想和规则),也就是在《代码大全》的世界里,有了很多个,但没有把这些从宏观上串起来,也就是没有形成面,所谓“皮之不存,毛将焉附”,没有骨架,血肉是附着不上去的,特别容易...

    读后感


    《代码大全》是一本指导“代码构建”的书,指导我们如何写出优秀的代码,如何成为优秀的程序员。


    这样一本900多页的大部头书,当我们基于既往的编程经验,在读每一个部分,每一个章节的时候,往往会对作者对软件构建的认知和思想,具体的、可操作的解决问题的办法及原因,由衷的理解和认同,感觉“就是应该这么做”。


    这像一本定义“规范”的书,我们很容易就理解了,但是想完全按照它定义的来做的时候,大多数却忘记了。


    当我囫囵吞枣一样,尽快的挑选着读了一部分的时候,和一些同事谈起这个问题的时候,曾经的看法是,这本书是需要重复读的,可能无法记住所有的规则,但是它对人的影响是潜移默化的。


    后来又想,这个“潜移默化”肯定是有的,也是好的,但是仅仅靠“潜移默化”,可能还是处于一个低层次。


    当我们无法准确讲出规范的时候,怎么能信心十足的让它指导我们的工作?


    当团队协作的时候,无法用对规范的准确描述,用引经据典的出处,说服别人,如何在协作中教育别人,提高团队水平?


    所以,还是需要领会,并记住。那么,如何做到这一点呢?


    首先,思考一下,为什么那么易忘,除了重复度不够之外,更重要的原因似乎是方法出了问题。读了很多个章节(软件构建中的思想和规则),也就是在《代码大全》的世界里,有了很多个点,但没有把这些点从宏观上串起来,也就是没有形成面,所谓“皮之不存,毛将焉附”,没有骨架,血肉是附着不上去的,特别容易就掉下来。


    所以,需要从宏观上,从整体上,理解、记住《代码大全》对于软件构建所定义的骨架,然后把每个章节的血肉附着上去,才能结实的组装起来,才不容易忘记。


    这是一本值得没事的时候,就翻翻的书,技术的浪潮汹涌先前,编程的技法变幻莫测,有些书可以在非常非常长的时间内指导我们的工作,不褪色,《代码大全》就是这样一本书。


    年轻时学过很多编程语言,大学里的Turbo C,工作中开始的ASP、VB、DELPHI、C++ Builder,到后来相当长的时间里使用C#,再到近几年使用Java,学习的Ruby,一直在变换着编程的技法,不是没有遇到过高人,实在是自己的悟性太慢,没有领会编程的真谛,并把大把的青春浪费在游戏上,浪费在编程无关的方面。


    编程的技法,固然重要,需要熟练,并能快速解决问题;但编程真正重要的东西,是思想和境界,是数据结构,是并发,之后可以是基础框架;编程的进步,来源于多写高质量的代码,最好能参与开源工程并贡献代码,也来源于多总结,比如写技术文章。


    Java生态,我们可以看这样几本书:《Java编程思想》、《深入理解Java虚拟机》、《Spring3.0企业应用开发指南》、《Spring Internals》、《Java与模式》,并熟练使用Linux,Java容器,Java IDE工具;看书的过程,学习的过程,都不是一蹴而就的,要有足够的耐心,投入充足的时间,三年有小成,五年可以进入专家行列。所以,在这么长的时间里,一定是自驱动的,兴趣驱动的,没有兴趣,是很难很难持续这么长时间的。


    骨架


    《代码大全》全书900多页,分为5个部分,35个章节。


    第一部分,“打好基础”


    分为4个章节,分别介绍了软件构建在软件开发中的地位,用现实中比较容易理解的问题类比软件研发(目的是更容易理解),前期充分准备的重要和必要性,如何对软件构建使用的语言、规范、框架等进行决策。


    第二部分,“创建高质量的代码”


    基础打好了(需求、产品、架构),开始进入软件构建的世界,从设计、类、子程序、编程方法角度,告诉我们如何创造高质量的代码。

    第5章:软件构建中得设计;第6章:可以工作的类;第7章:高质量的子程序;第8章:防御式编程;第9章:伪代码编程过程。


    第三部分,变量


    从整体角度领会如何创建高质量的代码之后,开始进入构建的细节,首先从变量开始。

    第10章:使用变量的一般事项,告诉我们怎么用变量,比如初始化、作用域等;

    第11章:变量名的力量,本章是变量命名规范,告诉我们怎么对变量命名;

    第12章:基本数据类型;

    第13章:不常见的数据类型;


    大部分公司的“编程规范”,都会对变量名进行部分约束,如果和本书冲突,应该先按照公司当前规定的来执行,并逐步推进成最好的方式。


    第四部分,语句


    组织语句,贯穿着构建的过程,这一部分先略过。

    第14章:组织直线型代码;

    第15章:使用条件语句;

    第16章:控制循环;

    第17章:不常见的控制结构;

    第18章:表驱动法;

    第19章:一般控制问题。


    第五部分,代码改善


    代码的改善,是一个贯穿整个软件生命周期的过程。开发者测试、调试、重构、调整,都是很必要的技法。


    第20章:软件质量概述;

    第21章:协同构建,本章描述的结对构建,可以仅当做一种思想,不具备现实操作性;

    第22章:开发者测试;

    第23章:调试;

    第24章:重构;

    第25章:代码调整策略 ;

    第26章:代码调整技术。


    第六部分,系统考虑


    第27章:程序规模对构建的影响;

    第28章:管理构建;

    第29章:集成;

    第30章:编程工具。


    第七部分,软件工艺


    第31章:布局与风格;

    第32章:自说明代码;

    第33章:个人性格;

    第34章:软件工艺的话题;

    第35章:何处有更多信息。


    第一部分:打好基础


    Laying the Foundation


    第1章 欢迎进入软件构建的世界

    Welcome to Software Construction


    Key Points


    软件构建是软件开发的核心活动:构建活动是每个项目中唯一一项必不可少的工作。

    软件构建的主要活动包括:详细设计、编码、调试、集成、开发者测试(developer testing)(包括单元测试和集成测试)。

    构建也长被称作“编码”和“编程”。

    构建活动的质量对软件的质量有着实质性的影响。

    最后,你对“如何进行构建”的理解程度,决定了你这名程序员的优秀程度--这就是本书其余部分的主题了。


    第2章 用隐喻来更充分地理解软件开发

    Metaphors for a Richer Understanding of Software Development


    Key Points


    隐喻是启示而不是算法。因此它们往往有一点随意(sloppy)。

    隐喻把软件开发过程与其他你熟悉的活动联系在一起,帮助你更好地理解。

    有些隐喻比其他一些隐喻更贴切。

    通过把软件的构建过程比作是房屋的建设过程,我们可以发现,仔细的准备是必要的,而大型项目和小型项目之间也是有差异的。

    通过把软件开发中的实践比作是智慧工具箱中的工具,我们又发现,每位程序员都有许多工具,但并不存在任何一个能适用于所有工作的工具,因地制宜地选择正确工具是成为能有效编程的程序员的关键。

    不同的隐喻彼此并不排斥,应当使用对你最有益处的某种隐喻组合。


    第3章 三思而后行:前期准备

    Measure Twice, Cut Once: Upstream Prerequisites


    Key Points


    构建活动的准备工作的根本目标在于降低风险。要确认你的准备活动是在降低风险,而非增加风险。

    如果你想开发高质量的软件,软件开发过程必须由始至终关注质量。在项目初期关注质量,对产品质量的正面影响比在项目末期关注质量的影响要大。

    程序员的一部分工作是教育老板和合作者,告诉他们软件开发过程,包括在开始编程之前进行充分准备的重要性。

    你所从事的软件项目的类型对构建活动的前期准备有重大影响--许多项目应该是高度迭代式的,某些应该是序列式的。

    如果没有明确的问题定义,那么你可能会在构建期间解决错误的问题。

    如果没有做完良好的需求分析工作,你可能没能察觉待解决的问题的重要细节。如果需求变更发生在构建之后的阶段,其代价是“在项目早期更改需求”的20至100倍。因此在开始编程之前,你要确认“需求”已经到位了。

    如果没有做完良好的架构设计,你可能会在构建期间用错误的方法解决正确的问题。架构变更的代价随着“为错误的架构编写的代码数量”增加而增加,因此,也要确认“架构”已经到位了。

    理解项目的前期准备所采用的方法,并相应地选择构建方法。


    第4章 关键的“构建”决策

    Key Construction Decisions


    Key Points


    每种编程语言都有其优点和弱点。要知道你使用的语言的明确优点和弱点。

    在开始编程之前,做好一些约定(convertion)。“改变代码使之符合这些约定”是近乎不可能的。

    “构建的实践方法”的种类比任何单个项目能用到的要多。有意识地选择最适合你的项目的实践方法。

    问问你自己,你采用的编程实践是对你所用的编程语言的正确响应,还是受它的控制?请记得“深入一种编程语言”,不要仅“在一种语言上编程”。

    你在技术浪潮中的位置决定了哪种方法是有效的--甚至是可能用到的。确定你在技术浪潮中的位置,并相应调整计划和预期目标。


    第二部分:创建高质量的代码


    Creating High-Quality Code


    第5章 软件构建中的设计

    Design in Construction


    Key Points


    软件的首要技术使命就是管理复杂度。以简单性作为努力工作的设计方案对此最有帮助。

    简单性可以通过两种方式来获取:一是减少在同一时间所关注的本质性复杂度的量,而是避免生成不必要的偶然的复杂度。

    设计是一种启发式的过程。固执于某一种单一方法会损害创新能力,从而损害你的程序。

    好的设计都是迭代的。你尝试设计的可能性越多,你的最终设计方案就会变得越好。

    信息隐藏是个非常有价值的概念。通过询问“我应该隐藏些什么?”能够解决很多困难的设计问题。

    很多有用有趣的、关于设计的信息存在于本书之外。这里所给出的观点只是对这些有价值资源的一点提示而已。


    第6章 可以工作的类

    Working Classes


    Key Points


    类的接口应提供一致的抽象。很多问题都是由于违背该原则而引起的。

    类的接口应隐藏一些信息--如某个系统接口、某项设计决策、或一些实现细节。

    包含往往比继承更为可取--除非你要对“是一个/is a”的关系建模。

    继承是一种有用的工具,但它却会增加复杂度,这有违于软件的首要技术使命--管理复杂度。

    类是管理复杂度的首选工具。要在设计类时给予足够的关注,才能实现这一目标。


    第7章 高质量的子程序

    High-Quality Routines


    Key Points


    创建子程序最主要的目的是提高程序的可管理性,当然也有其他一些好的理由。其中,节省代码空间只是一个次要理由;提高可读性、可靠性和可修改性等原因都更重要一些。

    有时候,把一些简单的操作写成独立的子程序也非常有价值。

    子程序可以按照其内聚性分为很多类,而你应该让大多数子程序具有功能上的内聚性,这是最佳的一种内聚性。

    子程序的名字是它的质量的指示器。如果名字糟糕但恰如其分,那就说明这个子程序设计得很差劲。如果名字糟糕而且又不准确,那么它就反映不出程序是干什么的。不管怎样,糟糕的名字都意味着程序需要修改。

    只有在某个子程序的主要目的是返回由其名字所描述的特定结果时,才应该使用函数。

    细心的程序员会非常谨慎地使用宏,而且只在万不得已时才使用。


    第8章 防御式编程

    Defensive Programming


    Key Points


    最终产品代码中对错误的处理方式要比“垃圾进,垃圾出”复杂得多。

    防御式编程技术可以让错误更容易发现、更容易修改,并减少错误对产品代码的破坏。

    断言可以帮助人尽早发现错误,尤其是在大型系统和高可靠性的系统中,以及快速变化的代码中。

    关于如何处理错误输入的决策是一项关键的错误处理决策,也是一项关键的高层设计决策。

    异常提供了一种与代码正常流程角度不同的错误处理手段。如果留心使用异常,它可以成为程序员知识工具箱中的一项有益补充,同时也应该在异常和其他错误处理手段之间进行权衡比较。

    针对产品代码的限制并不适用于开发中的软件。你可以利用这一优势在开发中添加有助于更快地排查错误的代码。


    第9章 伪代码编程过程

    The Pseudocode Programming Process


    Key Points


    创建类和子程序通常都是一个迭代的过程。在创建子程序的过程中获得的认识常常会反过来影响类的设计。

    编写好的伪代码需要使用易懂的英语,要避免使用特定编程语言中才有的特性,同时要在意图的层面上写伪代码(即描述该做什么,而不是要怎么去做)。

    伪代码编程过程是一个行之有效的做详细设计的工具,它同时让编码工作更容易。伪代码会直接转化成注释,从而确保了注释的准确度和实用性。

    不要只停留在你所想到的第一个设计方案上。反复使用伪代码做出多种方案,然后选出其中最佳的一种方案再开始编码。

    每一步完成后都要检查你的工作成果,还要鼓励其他人帮你来检查。这样你就会在投入精力最少的时候,用最低的成本发现错误。


    第三部分:变量


    Variables


    第10章 使用变量的一般事项

    General Issues in Using Variables


    Key Points


    数据初始化过程很容易出错,所以请用本章描述的初始化方法来避免由于非预期的初始值而造成的错误。

    最小化每个变量的作用域。把同一变量的引用点集中在一起。把变量限定在子程序或类的范围之内。避免使用全局数据。

    把使用相同变量的语句尽可能集中在一起。

    早期绑定会减低灵活性,但有助于减小复杂度。晚期绑定可以增加灵活性,同时增加复杂度。

    把每个变量用于唯一的用途。


    第11章 变量名的力量

    The Power of Variable Names


    Key Points


    好的变量名是提高程序可读性的一项关键要素。对特殊种类的变量,比如循环下标和状态变量,需要加以特殊的考虑。

    名字要尽可能地具体。那些太模糊或者太通用以致于能够用于多种目的的名字通常都是很不好的。

    命名规则应该能够区分局部数据、类数据和全局数据。它们还应当可以区分类型名、具名常量、枚举类型名字和变量名。

    无论做哪种类型项目,你都应该采用某种变量命名规则。你所采用的规则的种类取决于你的程序的规模,以及项目成员的人数。

    现代编程语言很少需要用到缩写。如果你真的要使用缩写,请使用项目缩写词典或者标准前缀来帮助理解缩写。

    代码阅读的次数远远多于编写的次数。确保你所取的名字更侧重于阅读方便而不是编写方便。


    第12章 基本数据类型

    Fundamental Data Types


    Key Points


    使用特定的数据类型就意味着要记住适用于各个类型的很多独立的原则。用本章的核对表来确认你已经对常见问题做了考虑。

    如果你的语言支持,创建自定义类型会使得你的程序更容易修改,并更具有自描述性。

    当你用typedef或者其等价方式创建了一个简单类型的时候,考虑是否更应该创建一个新的类。


    第13章 不常见的数据类型

    Unusual Data Types


    Key Points


    结构体可以使得程序更简单、更容易理解,以及更容易维护。

    每当你打算使用结构体的时候,考虑采用类是不是会工作得更好。

    指针很容易出错。用访问器子程序或类以及防御式编程实践来保护自己的代码。

    避免用全局变量,不只是因为它们很危险,还是因为你可以用其他更好的方法来取代它们。

    如果你不得不使用全局变量,那么就通过访问器子程序来使用它。访问器子程序能为你带来全局变量所能带来的一切优点,还有一些额外好处。


    第四部分:语句


    Statements


    第14章 组织直线型代码

    Organizing Straight-Line Code


    Key Points


    组织直线型代码的最主要原则是按照依赖关系进行排列。

    可以用好的子程序名、参数列表、注释,以及--如果代码足够重要--内务管理变量来让依赖关系变得更明显。

    如果代码之间没有顺序依赖关系,那就设法使相关的语句尽可能地接近。


    第15章 使用条件语句

    Using Conditionals


    Key Points


    对于简单的if-else语句,请注意if子句和else子句的顺序,特别是用它来处理大量错误的时候。要确认正常的情况是清晰的。

    对于if-then-else语句串和case语句,选择一种最有利于阅读的排序。

    为了捕捉错误,可以使用case语句中的default子句(默认子句),或者使用if-then-else语句串中的最后那个else子句。

    各种控制结构并不是生来平等的。请为代码的每个部分选用最合适的控制结构。


    第16章 控制循环

    Controlling Loops


    Key Points


    循环很复杂。保持循环简单将有助于别人阅读你的代码。

    保持循环简单的技巧包括:避免使用怪异的循环、减少嵌套层次、让入口和出口一目了然、把内务操作代码放在一起。

    循环下标很容易被滥用。因此命名要准确,并且要把他们各自仅用于一个用途。

    仔细地考虑循环,确认它在每一种情况下都运行正常,并且在所有可能的条件下都能退出。


    第17章 不常见的控制结构

    Unusual Control Structures


    Key Points


    多个return可以增强子程序的可读性和可维护性,同时可以避免产生很深的嵌套逻辑。但是使用它的时候要多加小心。

    递归能够很优雅地解决一小部分问题。对它的使用也要倍加小心。

    在少数情况下,goto是编写可读性和可维护代码的最佳方法。但这种情况非常罕见。除非万不得已,不要使用goto。


    第18章 表驱动法

    Table-Driven Methods


    Key Points


    表提供了一种复杂的逻辑和继承结构的替换方案。如果你发现自己对某个应用程序的逻辑或者继承树关系感到困惑,那么问问自己它是否可以通过一个查询表来加以简化。

    使用表的一项关键决策是决定如何去访问表。你可以采取直接访问、索引访问或者阶梯访问。

    使用表的另一项关键决策是决定应该把什么内容放入表中。


    第19章 一般控制问题

    General Control Issues


    Key Points


    使布尔表达式简单可读,将非常有助于提高你的代码的质量。

    深层次的嵌套使得子程序变得难以理解。所幸的是,你可以相对容易地避免这么做。

    结构化编程是一种简单并且仍然适用的思想:你可以通过把顺序、选择和循环三者组合起来而开发出任何程序。

    将复杂度降低到最低水平是编写高质量代码的关键。


    第五部分:代码改善


    Code Improvement


    第20章 软件质量概述

    The Software-Quality Landscape


    Key Points


    开发高质量代码最终并没有要求你付出更多,只是你需要对资源进行重新分配,以低廉的成本来防止缺陷出现,从而避免代价高昂的修正工作。

    并非所有的质量保证目标都可以全部实现。明确哪些目标是你希望达到的,并就这些目标和团队成员进行沟通。

    没有任何一种错误检测方法能够解决全部问题,测试本身并不是排除错误的最有效方法。成功的质量保证计划应该使用多种不同的技术来检查各种不同类型的错误。

    在构建期间应当使用一些有效的质量保证技术,但在这之前,一些具有同样强大功能的质量保证技术也是必不可少的。错误发现越早,它与其余代码的纠缠就越少,由此造成的损失也越小。

    软件领域的质量保证是面向过程的。软件开发与制造业不一样,在这里并不存在会影响最终产品的重复的阶段,因此,最终产品的质量受到开发软件所用的过程的控制。


    第21章 协同构建

    Collaborative Construction


    Key Points


    协同开发实践往往能比测试发现更多的缺陷,并且更有效率。

    协同开发实践所发现错误的类型通常跟测试所发现的不同,这意味着你需要同时使用详查和测试来保证你软件的质量。

    正式检查通过运用核对表、准备工作、明确定义的角色以及对方法的持续改善,将缺陷侦测的效率提升至最高。它往往能比走查发现更多的缺陷。

    通常,结对编程拥有和详查相同的成本,并能产生质量相当的代码。当需要缩短开发周期的时候,结对编程就非常有价值。相对于单独工作来说,有些开发人员更喜欢结对工作。

    正式检查可以应用在除代码之外的很多工作成果上,例如需求、设计以及测试用例等。

    走查和代码阅读是详查的替代方案。代码阅读更富有弹性,能有效地利用每个人的时间。


    第22章 开发者测试

    Developer Testing


    Key Points


    开发人员测试是完整测试策略的一个关键部分。独立测试也很重要,但这一主题超出了本书的范围。

    同编码之后编写测试用例相比较,编码开始之前编写测试用例,工作量和花费的实际差不多,但是后者可以缩短缺陷-侦测-调试-修正这一周期。

    即使考虑到了各种可用的测试手段,测试仍然只是良好软件质量计划的一部分。高质量的开发方法至少和测试一样重要,这包括尽可能减少需求和设计阶段的缺陷。在检测错误方面,协同开发的成效至少与测试相当。这些方法所检测错误的类型也各不相同。

    你可以根据各种不同的思路来产生很多测试用例,这些思路包括基础测试、数据流分析、边界分析、错误数据类型以及正确数据类型等。你还可以通过猜测错误的方式得到更多的测试用例。

    错误往往集中在少数几个容易出错的类和子程序上。找出这部分代码,重新设计和编写它们。

    测试数据本身出错的密度往往比被测代码还要高。查找这种错误完全是浪费时间,又不能对代码有所改善,因此测试数据里面的错误更加让人烦恼。要像写代码一样小心地开发测试用例,这样才能避免产生这种问题。

    自动化测试总体来说是很有用的,也是进行回归测试的基础。

    从长远来看,改善测试过程的最好办法就是将其规范化,并对其进行评估,然后用从评估中获得的经验教训来改善这个过程。


    第23章 调试

    Debugging


    Key Points


    调试同整个软件开发的成败息息相关。最好的解决之道是使用本书中介绍的其他方法来避免缺陷的产生。然而,花点时间来提高自己的调试技能还是很划算的,因为优秀和拙劣的调试表现之间的差距至少是10:1。

    要想成功,系统化地查找和改正错误的方法至关重要。要专注于你的调试工作,让每一次测试都能让你朝着正确的方向前进一步。要使用科学的调试方法。

    在动手解决问题之前,要理解问题的根本。胡乱猜测错误的来源和随机修改将会让你的程序陷入比刚开始调试时更为糟糕的境地。

    将编译器警告级别设置为最严格,把警告信息所报告的错误都改正。如果你忽略了明显的错误,那么要改正那些微妙的错误就会非常麻烦。

    调试工具对软件开发而言是强有力的支持手段。找出这些工具并加以应用,当然,请记得在调试的时候开动脑筋。


    第24章 重构

    refactoring


    Key Points


    修改是程序一生都要面对的事情,不仅包括最初的开发阶段,还包括首次发布之后。

    在修改中软件的质量要么改进,要么恶化。软件演化的首要法则就是代码演化应当提升程序的内在质量。

    重构成功之关键在于程序员应学会关注那些标志着代码需要重构的众多的警告或“代码臭味”。

    重构成功的另一要素是程序员应当掌握大量特定的重构方法。

    重构成功的最后要点在于要有安全重构的策略。一些重构方法会比其他重构方法要好。

    开发阶段的重构是提升程序质量的最佳时机,因为你可以立刻让刚刚产生的改变梦想变成现实。请珍惜这些开发阶段的天赐良机!


    第25章 代码调整策略

    Code-Tuning Strategies


    Key Points


    性能只是软件整体质量的一个方面,通常不是最重要的。精细的代码调整也只是实现整体性能的一种方法,通常也不是决定性的。相对于代码本身的效率而言,程序的架构、细节设计以及数据结构和算法选择对程序的运行速度和资源占用的影响通常会更大。

    定量测量是实现性能最优化的关键。定量测量需要找出能真正决定程序性能的部分,在修改之后,应当通过重复测量来明确修改是提高还是降低了软件的性能。

    绝大多数的程序都有那么一小部分代码耗费了绝大部分的运行时间。如果没有测量,你不会知道是哪一部分代码。

    代码调整需要反复尝试,这样才能获得理想的性能提高。

    为性能优化工作做好准备的最佳方式就是在最初阶段编写清晰的代码,从而使代码在后续工作中易于理解和修改。


    第26章 代码调整技术

    Code-Tuning Techniques


    Key Points


    优化结果在不同的语言、编译器和环境下有很大差异。如果没有对每一次的优化进行测量,你将无法判断优化到底是帮助还是损害了这个程序。

    第一次优化通常不会是最好的。即使找到了效果很不错的,也不要停下扩大战果的步伐。

    代码调整这一话题有点类似于核能,富有争议,甚至会让人冲动。一些人认为代码调整损害了代码可读性和可维护性,他们绝对会将其弃之不用。其他人则认为只要有适当的安全保障,代码调整对程序是有益的。如果你决定使用本章所述的调整方法,请务必谨慎行事。


    第六部分:系统考虑


    System Considerations


    第27章 程序规模对构建的影响

    How Program Size Affects Construction


    Key Points


    随着项目规模的扩大,交流需要加以支持。大多数方法论的关键点都在于减少交流中的问题,而一项方法论的存亡关键也应取决于它能否促进交流。

    在其他条件都相等的时候,大项目的生产率会低于小项目。

    在其他条件都相等的时候,大项目的每千行代码错误率会高于小项目。

    在小项目里的一些看起来“理当如此”的活动在大项目中必须仔细地计划。随着项目规模扩大,构建活动的主导地位逐渐降低。

    放大轻量级的方法论要好于缩小重量级的方法论。最有效的办法是使用“适量级”方法论。


    第28章 管理构建

    Managing Construction


    Key Points


    好的编码实践可以通过“贯彻标准”或者“使用更为灵活的方法”来达到。

    配置管理,如果应用得当,会使程序员的工作变得更加轻松。特别包括变更控制。

    好的软件评估是一项重大挑战。成功的关键包括采用多种方法、随着项目的开展而修缮评估结果,以及很好地利用数据来创建评估等。

    度量是构建管理成功的关键。你可以采取措施度量项目的任何方面,而这要比根本不度量好得多。准确的度量是制定准确的进度表、质量控制和改进开发过程的关键。

    程序员和管理人员都是人,在把他们当人看的时候工作得最好。


    第29章 集成

    Integration


    Key Points


    构建的先后次序和集成的步骤会影响设计、编码、测试各类的顺序。

    一个经过充分思考的集成顺序能减少测试的工作量,并使调试变容易。

    增量集成有若干类型,而且--除非项目是微不足道的--任何一种形式的增量集成都比阶段式集成好。

    针对每个特定的项目,最佳的集成步骤通常是自顶向下、自底向上、风险导向及其他集成方法的某种组合。T-型集成和竖直分块集成通常都能工作得很好。

    daily build 能减少集成的问题,提升开发人员的士气,并提供非常有用的项目管理信息。


    第30章 编程工具

    Programming Tools


    Key Points


    程序员有时会在长达数年的时间里忽视某些最强大的工具,之后才发现并使用之。

    好的工具能让你的日子过得安逸得多。

    下面这些工具已经可用了:编辑、分析代码质量、重构、版本控制、除错、测试、代码调整。

    你能打造许多自己用的专用工具。

    好的工具能减少软件开发中最单调乏味的工作的量,但它不能消除对“编程”的需要,虽然它会持续地重塑(reshape)“编程”的含义。


    第七部分:软件工艺


    Software Craftsmanship


    第31章 布局与风格

    Layout and Style


    Key Points


    可视化布局的首要任务是指明代码的逻辑组织。评估该任务是否实现的指标包括准确性、一致性、易读性和可维护性。

    外表悦目比起其他指标是最不重要的。然而,如果其他指标都达到了,代码又质量好,那么布局效果看上去也会不错。

    Visual Basic具有纯代码块风格,而Java的传统做法就是使用纯块风格,所以若用这些语言编程,就请使用纯代码块风格。C++中,模拟纯代码块或者begin-end块编辑都行之有效。

    结构化代码有其自身目的。始终如一地沿用某个习惯而少来创新。不能持久的布局规范只会损害可读性。

    布局的很多方面涉及信仰问题。应试着将客观需要和主观偏好区分开来。定出明确的指标,在此基础上再讨论风格参数的选择。


    第32章 自说明代码

    Self-Documenting Code


    Key Points


    该不该注释是个需要认真对待的问题。差劲的注释只会浪费时间,帮倒忙;好的注释才有价值。

    源代码应当含有程序大部分的关键信息。只要程序依然在用,源代码比其他资料都能保持更新,故而将重要信息融入代码是很有用处的。

    好代码本身就是最好的说明。如果代码太糟,需要大量注释,应先试着改进代码,直至无须过多注释为止。

    注释应说出代码无法说出的东西--例如概述或用意等信息。

    有的注释风格需要许多重复性劳动,应舍弃之,改用易于维护的注释风格。


    第33章 个人性格

    Personal Character


    Key Points


    人的个性对其编程能力有直接影响。

    最有关系的性格为:谦虚、求知欲、诚实、创造性和纪律,以及高明的偷懒。

    程序员高手的性格与天分无关,而任何事都与个人发展相关。

    出乎意料的是,小聪明、经验、坚持和疯狂既有助也有害。

    很多程序员不愿主动吸收新知识和技术,只依靠工作时偶尔接触新的信息。如果你能抽出少量时间阅读和学习编程知识,要不了多久就能鹤立鸡群。

    好性格与培养正确的习惯关系甚大。要成为杰出的程序员,先要养成良好习惯,其他自然水到渠成。


    第34章 软件工艺的话题

    Themes in Software Craftsmanship


    Key Points


    编程的主要目的之一是管理复杂性。

    编程过程对最终产品有深远影响。

    合作开发要求团队成员之间进行广泛沟通,甚于同计算机的交互;而单人开发则是自我交流,其次才是与计算机。

    编程规范一旦滥用,只会雪上加霜;使用得当则能为开发环境带来良好机制,有助于管理复杂性和相互沟通。

    编程应基于问题域而非解决方案,这样便于复杂性管理。

    注意警告信息,将其作为编程的疑点,因为编程几乎是纯粹的智力活动。

    开发时迭代次数越多,产品的质量越好。

    墨守成规的方法有悖于高质量的软件开发。请将编程工具箱中填满各种编程工具,不断提高自己挑选合适工具的能力。


    第35章 何处有更多信息

    Where to Find More Information


    展开全文
  • Linux分区挂载介绍,推荐容量仅供参考不是绝对,跟各系统用途以及硬盘空间配额等因素实际调整: 分区类型 介绍 备注 /boot 启动分区 一般...
  • 在Word的使用过程,当我们遇到大量的文档需要...在目标文档,点击正上方导航栏的“视图-大纲”,进入大纲设置界面,,选中将要升级的编号,下图相应的按钮即可进行任意层级调整,是不是感觉很方便很简单 ...
  • 硕士学位论文格式调整技巧

    千次阅读 2019-03-21 09:21:26
    文章目录如何插入封面如何制作三线表怎么实现奇数页页眉用本章标题,偶数页用论文标题? 如何插入封面 在指定的封面填好信息 在写正文的文件插入封面 如何插入封面? 插入-》对象 选择从文件创建,...
  • 3D的常用材质的调整方法

    千次阅读 2007-10-06 00:33:00
    一、木纹材质调整方法1. 木纹材质的肌理调整: A.使用过度色通道贴图后加入凹凸通道贴图,使木纹有凹凸感,肌理更明显凹凸通道...木纹的纹路调整可在过度色通道贴图下的U,V,W,坐标的W中调整。 D.自发光的调整
  • Word入门教程:用目录项域编制目录

    千次阅读 2009-08-21 09:51:00
    Word入门教程:用目录项域编制目录1.将插入置于所要标记对象的前面...4.设置其大纲级别,这将影响到“文字项”文字在目录中的显示效果,本例为突出显示,将域标记对象的大纲级别设置为四级,并事先将目录的四级样式设
  • Android 文件外/内部存储的获取各种存储目录路径

    万次阅读 多人点赞 2018-06-12 14:51:50
    内部存储位于系统很特殊的一个位置,如果你想将文件存储于内部存储,那么文件默认只能被你的应用访问到,且一个应用所创建的所有文件都在和应用包名相同的目录下。也就是说应用创建于内部存储的文件,与这个应用...
  • Word XPWord XP 中目录的编制方法 1.单击要插入目录的位置。 2.指向"插入"菜单上的"引用",再单击"索引和目录"。 3.单击"目录"选项卡。 4.若要使用现有的设计,请在"格式"框单击进行选择。 5.根据需要,选择...
  • Python源码目录

    千次阅读 2017-09-28 10:50:14
    从Python.org下载源代码压缩包并解压,我下载的是Python2.7.12,解压后:   对于主要的文件夹做出介绍: Include:包含Python提供的所有头文件,如果需要自己使用C或者C++编写自定义模
  • linux如何快速进入某个目录 2013-12-10 17:14 1784人阅读 评论(0) 收藏 举报  分类:   Linux(71)  转自:...
  • Linux文件系统以及目录结构简介

    千次阅读 2016-09-13 10:53:51
    在 linux 系统,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置。 在经过 chroot 命令之后,系统读取到的目录和文件将不
  • Word2013目录设置,页码对齐

    千次阅读 2019-05-01 18:23:14
    2.格式选择“来自模板”,显示级别一般选“3”,然后“修改”,在弹窗选择需要修改的目录级别,目录1代表标题1,以此类推。然后“修改”,确定。 3.在弹窗,设置字体大小格式,英文都要设置,对齐...
  • 个人博客网站文章添加目录导航

    千次阅读 2020-01-14 17:45:16
    关于网页文章添加目录预览的介绍与实现
  • 怎样改变Eclipse的左边目录显示结构

    万次阅读 多人点赞 2016-05-24 13:03:34
    默认情况下Eclipse的显示内容如下: 这种视图我们看起来不太方便,于是我们需要改变一下它的显示结构,我们点击一下下图蓝色...在弹出的框把鼠标放到“package presentation”上,选择右边的“Hierarchical”
  • 文章目录一、如何调整任务map数量1、FileInputFormat的实现逻辑介绍1.1 getSplits方法实现2、CombineFileInputFormat的实现逻辑介绍2.1 getSplits方法实现3、HiveInputFormat 的实现逻辑介绍4、...
  • .bat批处理(五):遍历指定目录下资源文件并更新

    千次阅读 热门讨论 2018-03-22 11:22:04
    前言 先来看这样一个需求,假设有A,B两个目录,其中A...这样当A目录中的一个资源文件更新后,需要手动复制A目录中更新的资源文件,然后在B目录中找到对应的位置,然后进行粘贴替换,这样的操作如果很久一次、或...
  • ubuntu 分区大小调整Whether you want to shrink your Ubuntu partition, enlarge it, or split it up into several partitions, you can’t do this while it’s in use. You’ll need a Ubuntu live CD or USB ...
  • 活动目录与域

    千次阅读 2010-10-27 15:44:00
    本文出自 “李涛的技术专栏” 博客,请务必保留此出处http://terryli.blog.51cto.com/704315/141686  活动目录概述 Active Directory(活动目录)是Windows Server 2003域环境提供目录服务的组件。目录服务在...
  • Word多级标题设置和自动生成目录

    万次阅读 2018-11-24 11:47:46
    在用word写学位论文或比较长的报告的时候,经常在写完主要内容后要设置多级标题的格式并自动生成目录,这里记录分享一下自己的一些经验,虽然不一定是最佳的方法,但理解起来比较简单,也能比较有效的解决问题。...
  • Linux 根目录爆满 解决

    千次阅读 2020-06-17 11:43:42
    一、使用df -h命令查看,发现/根目录的剩余空间为0。总共系统盘容量才20G。 文件系统 容量 已用 可用 已用% 挂载 /dev/mapper/centos-root 20G 20G 20k 100% / devtmpfs 7.7G 0 7.7G 0% /dev tmpfs 7.7G 168K 7.7G...
  • AltiumDesigner快速调整丝印

    千次阅读 2018-12-01 20:34:34
    今天我为大家讲的内容是实战AD快速调整丝印,这是我们做完PCB设计布线完成后的下一个步,很多朋友都是非常熟悉的。但是我们很多人只会用allegro,而不知道用AD这个软件设计,同时希望只会用allegro软件的朋友,都学...
  • 目录 0 引言 1 继电器标准 2 25HZ相敏轨道电路主要技术指标如下 ...6 在调整25Hz相敏轨道电路时应注意以下几 0 引言 25HZ相敏轨道电路有以下四种形式:旧型(JRJC-66/345)、97型(JRJC-7.
  • 关于Apache的目录浏览功能

    千次阅读 2018-10-15 10:24:01
    近日,公司有个需求需要使用到Apache的目录浏览功能。但是遇到了一点问题,所以出现了这篇文章。 linux安装Apache很简单,使用yum安装即可。命令:yum -y install httpd。 然后就使用命令:systemctl start ...
  • 安装微软活动目录的八个重要理由

    千次阅读 2020-06-24 11:12:59
    安装微软活动目录的八个重要理由 关于微软的活动目录有很多人了解的还不够深。不了解安装微软活动目录的重要...而目录服务是使目录中所有信息和资源发挥作用的服务,活动目录是一个分布式的目录服务,信息可以分散在多
  • LDAP:目录服务

    千次阅读 2007-07-26 14:46:00
    下载第16章LDAP:目录服务作者:Mark Kadrich本章内容包括:• 为什么使用目录服务• 目录服务功能• IP上的目录服务• OSI X.500目录模型• LDAP结构p• 目录系统代理和访问协议• 轻型目录访问协议• LDAP服务器—...
  • 敏捷测试-测试流程调整

    千次阅读 2018-10-31 16:44:42
    但是实际项目并没有碰到过,就一直没有系统的理解和调整过。前段时间接手一个使用敏捷开发的项目,从产品设计到第一版上线的时间只有2个月的时间。这让原有的测试流程饱受打击。如何快速的面对敏捷制定符合自己的...
  • 小程序目录结构篇

    千次阅读 2019-02-17 14:29:42
    小程序目录结构 小程序的目录结构主要分为以下四种: 1.wxml "wxml"是小程序的页面文件,小程序的模板和页面主要标签布局写在当前文件内。 2.wxss "wxss"是小程序的样式文件,主要是存放页面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 55,187
精华内容 22,074
关键字:

怎样调整目录中的点