![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习笔记
晓彬哟
但行好事,莫问前程
展开
-
《人月神话》读书笔记(十三)
第十四章 祸起萧墙项目进度经常以一种难以察觉,但是残酷无情的方式慢慢落后。每件事情都只会将某项活动延迟半天或一天,但是积累起来,整个项目进度就出现了灾难性的偏移。“通常灾祸来自白蚁的施虐,而不是龙卷风的侵袭”。要想严格地控制项目进度。第一步是要制定一个进度表,进度表上的每一件事被称为“里程碑”,有一个明确的期限日期。里程碑必须要是具体的、特定的、可度量的事件。如果里程碑定义得非常明确,无法自欺欺人时,很少有人会就里程碑的进度弄虚作假。但是如果里程碑很模糊,老板就常常会得到一份与实际情况不符的报告。当里原创 2021-11-11 23:44:54 · 177 阅读 · 0 评论 -
《人月神话》读书笔记(十二)
第十三章 整体部分产品的概念完整性在使他易于使用的同时,也使开发更容易进行,而且bug更不容易产生。细致的功能定义、仔细的规格说明、规范化的功能描述以及这些方法的实施,大大减少了系统中必须查找的bug数量。自上而下的设计可以自上而下的设计方法对系统进行设计,先将系统分割成独立的模块,再识别各个模块里面的功能组件继续往下分解,分解的细化程度决定了程序的适用性和可变化的程度。采用这种设计方法的优点为以下几点:首先,清晰的结构和表达方式更容易对需求和模块功能进行精确地描述。其次,模块分割和模块独立性避原创 2021-11-09 21:21:54 · 130 阅读 · 0 评论 -
《人月神话》读书笔记(十一)
第十二章 干将莫邪每个编程人员根据自己习惯、技能的不同,会有自己的一套个性化的工具集。但是,在软件项目中并不提倡个性化的工具集。原因是以下三点:第一、对软件项目来说,最关键的问题是沟通,个性化的工具会妨碍而非促进沟通。第二、当机器和工具语言发生变化时,技术也会随之变化,所有工具的生命周期都是很短的。第三、在团队里提倡开发和维护公共的通用编程工具的效率会更高“工欲善其事,必先利其器”。因此,项目经理必须要考虑、计划并分配项目中的通用工具资源。可以配备一名工具管理人员。这个角色管理所有的通用工具,能原创 2021-11-08 21:47:36 · 131 阅读 · 0 评论 -
《人月神话》读书笔记(十)
第十一章 未雨绸缪开发人员交付的是用户满意度,而不仅仅是有形的产品。用户的实际需要和用户感觉会随着程序的构建、测试和使用而变化。项目目标上的一些变化无可避免,事先为它们做准备总比假设它们不会出现要好很多。不但目标上的变化不可避免,而且设计策略和技术上的变化也不可避免。对于大多数项目,第一个开发的系统并不合用。它可能太慢、太大,而且难以使用,或者三者兼而有之。要解决所有的问题,除了重新开始以外,没有其他的办法(也就是我们现在常说的重构)。这一块我是深有体会,曾经做过一套停车服务的系统,因为是首次接触原创 2021-11-06 23:09:26 · 147 阅读 · 0 评论 -
《人月神话》读书笔记(九)
第十章 提纲挈领文档在管理工作中非常重要。如果没有清晰明朗的文档,项目往往会处于无休止的混乱之中。文档的作用主要分为以下三点:首先,书面记录决策是必要的。只有记录下来,分歧才会明朗,矛盾才会突出。第二,文档能够作为同其他人的沟通渠道。项目经理的基本职责是使每个人都向着相同的方向前进,所以他的主要工作是沟通,而不是做出决定。文档能极大地减轻他的负担。最后,文档可以作为汇报的数据基础和检查列表。通过周期性的回顾,项目经理可以清楚项目所处的状态,以及哪些需要重点进行更改和调整。通过遵循文档开展工作,项原创 2021-11-04 21:21:47 · 151 阅读 · 0 评论 -
《人月神话》读书笔记(八)
第八章 胸有成竹这一章的开头标语是“实践是最好的老师,但智者还能从其他的地方有所收获”。本章引用了大量实践过程中的数据和图表,用来说明了估计开发工作量的技术。主要以单个程序员每年产生的指令代码行作为生产率的估计单位。生产率也会根据任务本身的复杂度和困难程度表现出显著差异。因为我平时工作中几乎用不到这种估计的技术,这里就不详细讨论了。第九章 削足适履对项目经理而言,规模控制是技术工作的一部分,也是管理工作的一部分。他必须研究用户和用户需求,以设置待开发系统的规模。接着,把这些系统划分成若干部分,并设定原创 2021-11-03 23:01:17 · 212 阅读 · 0 评论 -
《人月神话》读书笔记(七)
第七章 为什么巴比伦塔会失败据《创世纪》记载,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,同时,其也是一个彻底失败的工程。我们把建造巴比伦塔单纯作为一个工程项目来看待,进行经验总结。(1)项目的目标:建造一座高达云霄的高塔(2)项目资源:人力资源非常充足,在美索不达米亚有丰富的泥土和柏油沥青,材料资源也很充足(3)项目工期:没有任何时间限制的迹象(4)项目所需的技术:对砖石建筑技术,人类已经有过建造金字塔这种稳定结构的经验人们已经具备了以上的条件,然而这个项目还是失败了。失败的原因,是因为上原创 2021-10-22 22:47:40 · 163 阅读 · 0 评论 -
《人月神话》读书笔记(六)
第六章 贯彻执行我们组建好了一个团队,要正式开始执行项目任务了。那么在执行过程中,如何确保项目团队的每个人都能听到、理解项目的需求?如何保证系统概念的完整性?可以通过以下几种方式来达到目的:一、需求规格说明书书里的文字描述是“文档化的规格说明-手册”,根据我的理解,这里说的应该就是用于项目团队内部以及外部沟通对接需求的“需求规格说明书”。为了保持文字风格和产品的一致性,须由一个或两个人来完成将结论转成书面规格的说明的工作。需求规格说明书的风格必须要清晰、完整和准确。我们可以结合形式化定义和记叙性定原创 2021-10-19 22:00:10 · 125 阅读 · 0 评论 -
《人月神话》读书笔记(五)
第五章 画蛇添足估算和责任分工是制定计划很关键的一环。实际情况中,尽早交流和持续沟通能够使项目经理能有更好的成本意识,项目经理能及时改进他的估算或修订计划,使开发人员获得对设计的信心,并且不会混淆各自的分工。面对估算过高的时候,项目经理有两个选择:削减设计(砍需求)或者采用成本更低的实现方法。若采取后者,项目经理则是在向开发人员的做事方式提出挑战,想要成功,必须:(1)牢记开发人员承担主要的功能实现创造任务,所以项目经理只能建议其使用成本更低的方法,而不是支配;(2)时刻准备着一种实现方法的建议,同原创 2021-10-09 23:34:26 · 127 阅读 · 0 评论 -
《人月神话》读书笔记(四)
第四章 贵族专制、民主政治和系统设计在系统设计中,概念完整性应该是最重要的考虑因素。软件的目的是使计算机更加容易使用,能用最简洁和直接的方式来指明事情的系统是最好的,而简洁和直白就来自系统概念的完整性。系统的每个部分必须反映一致的原理需求,保持统一的设计思想。但是,绝大多数的系统都体现出了概念差异和不一致性。这是由于设计被分成了由若干人完成的若干任务。为了保证概念完整性,因此要求设计必须由一个人,或者非常少数互有默契的人员来实现。这就是本章提及的“贵族专制统治”。然而,大型的项目为了满足进度要求,必须原创 2021-09-28 23:31:03 · 143 阅读 · 0 评论 -
《人月神话》读书笔记(三)
第三章 外科手术团队由一流人才组成的小型、精干的团队是非常高效的。优秀的程序员和较差的程序员的生产率有10倍之差!“需要协作沟通的人员数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流”。所以,在一般的中小型系统开发中,应该由尽可能少的人来开发,这是小型精干团队的优势。但是,在面对大型系统时,小型团队的生产率是有限的,“它太慢了”!为什么会慢,布鲁克斯用了OS/360的开发规模来很好的描述了上述的问题:OS/360项目的总投入成员超过1000人,从1963年到1966年,总工作量花费了大约50原创 2021-09-27 00:49:37 · 186 阅读 · 0 评论 -
《人月神话》读书笔记(二)
第二章 人月神话“在众多软件项目中,缺乏合理的进度安排是造成项目滞后的最主要原因”,为什么会缺乏合理的进度安排,布鲁克斯从以下几点进行了说明:一、所有的编程人员都是乐观主义者程序员对自己的任务进度都非常乐观:“一切都将运作良好”,“所有的任务都可以按时完成”。然而,程序员的构思是会有缺陷的,因此总会发现bug。如果每个任务都保持着太乐观的心态,一旦每个任务都延误了,那就是整个项目的大型崩溃现场了。二、用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话人月单位仅适用于以下场景:某个任务可以单独原创 2021-09-25 00:39:50 · 149 阅读 · 0 评论 -
《人月神话》读书笔记(一)
这是我第二遍读《人月神话》,然而惭愧的是,我第一遍读完还只是两天前的事。读第一遍的时候,里面很多的内容我觉得非常晦涩难懂,但还是坚持读了下来。第一遍读完之后,就开始看书后的读者感言,也在网上找其他人的读后感来看,才真正加深了理解。如果有跟我一样,在第一次读这本书觉得很难读的,我还是建议您坚持读完,然后去参考其他人的读后感,你也能领会到这本书的精华所在。“这个领域的知识在于累积”。这句话是我在读第二遍的时候才从序言里注意到的,我这段时间开始读书,也不断地在寻找着读书的理由,当我再次翻开第一章开头,“前车之原创 2021-09-24 00:03:18 · 199 阅读 · 0 评论 -
JDBC笔记
JDBC是java提供的一套用于访问数据库的核心技术。 接口: Connection(连接),Statement(SQL执行器),ResultSet(表示一个查询结果)。 利用JDBC访问数据库: (1)添加数据库驱动mysql-connector.jar; (2)配置URL、USER、PASSWORD、DRIVE变量值; (3)设置驱动Class.forName(DRIVE); (4原创 2016-07-05 13:30:41 · 371 阅读 · 0 评论 -
IO与文件笔记
一、File1.1、//通过路径指向了磁盘的一个资源File file = new File("c:\\temp\\abc");1.2、//创建文件或目录file.createNewFile();//建文件file.mkdir();//建目录file.mkdirs();//建目录(连同父目录一起创建)1.3、//判断文件是否存在if(file.exists()){}//判断是否是文件或目原创 2016-07-05 14:18:13 · 479 阅读 · 0 评论 -
网络编程笔记
借助代码的方式实现不同计算机(不同进程)之间的通讯称为网络编程。 核心要素: (1)网络定位 IP + 端口 Port(唯一,一个进程对应一个端口号,1024-65535之间) (2)通讯协议 TCP:传输控制协议 UDP:用户数据报协议 (3)基于TCP协议的网络编程 客户端:Socket client = new Socket(url,port); 服务端:ServerSoc原创 2016-07-05 17:39:12 · 452 阅读 · 0 评论 -
多线程笔记
一、程序、进程与线程的区别1.1、程序 利用某种编程语言,结合某些开发工具开发出来的应用程式,没运行前是静态的。 1.2、进程 正在运行的程序,动态的,进程与进程间独立存在,数据独享。 1.3、线程: 进程在运行过程中的走向二、实现多线程2.1、实现Runnable接口public class A implements Runnable { @Override public原创 2016-07-05 18:09:45 · 381 阅读 · 0 评论 -
URL、URI和URN三者之间的区别
原文:“http://web.jobbole.com/83452/#article-comment”区别首先我们要弄清楚一件事:URL和URN都是URI的子集。换言之,URL和URN都是URI,但是URI不一定是URL或者URN。为了更好的理解这个概念,看下面这张图片。通过下面的例子(源自 Wikipedia),我们可以很好地理解URN 和 URL之间的区别。如果是一个人,我们会想到他的姓名和住址。转载 2016-08-22 16:42:12 · 5061 阅读 · 1 评论 -
异常笔记
一、异常处理的作用能够将异常提示给变成人员或者用户,使本来已经终端的程序能够继续运行或者推出,并且能保存用户当前的操作或者数据回滚,并能把占有的资源释放掉。二、Error与Exception的区别(1)都继承Throwable类 (2)Error表示系统错误,如内存溢出、虚拟机错误(VirtualMachineError)、线程死锁(ThreadDeath),是系统或者硬件的错误 (3)Exce原创 2016-11-24 18:13:27 · 375 阅读 · 0 评论 -
反射笔记
一、Class类(1)类是对象,类是java.lang.Class的实例对象 (2)数据类型不是对象,静态的东西也不是对象 (3)Class类的对象表示:如 Class A{}//A类的实例对象如何表示 A a = new A(); //a就表示A类的实例对象//任何一个类都是Class类的实例对象,有三种表示形式//第一种→实际在告诉我们任何一个类都有一个隐含的静态成员变量clas原创 2016-12-21 17:26:09 · 419 阅读 · 0 评论 -
注解笔记
一、Java中常见注解(1)JDK自带注解 @Override 覆盖了父类或接口的方法(重写) @Deprecated 标记方法过时 @SuppressWarnings 标记忽略警告(2)第三方注解 如Spring的:@Autowired @Service二、注解分类(1)按运行机制分为 1.1、源码注解 只在源码存在,编译成.class文件后不存在 1.2、编译时注解 在源码和.c原创 2016-12-26 16:03:55 · 423 阅读 · 0 评论 -
常用SQL命令
CRUD–(创建、读取、更新、删除)一、 创建数据1.1、建表语句 CREATE TABLE table_name(column_1 data_type,column_2 data_type,column_3 data_type,); 1.2、插入式添加数据 INSERT INTO TABLE table_name (column_1,column_2,…,column_3) VALUES (原创 2016-12-28 16:10:23 · 401 阅读 · 0 评论 -
面向对象笔记
一、面向对象与面向过程的区别 面向对象: 侧重于一个功能执行中会涉及到哪些对象,对象有什么属性与功能,对象与对象之间处于一种什么样的关系。 面向过程: 侧重于一个功能执行的具体流程。 二、面向对象的核心概念 类: 针对某种实体所提供的一套设计模板,定义了他们的共同特征与共同功能。 对象: 通过设计模板所创造出来的具体产品。 构造方法: 生产线。 三、面向对象的基本特征 抽象原创 2016-07-05 13:17:05 · 504 阅读 · 0 评论