读书笔记
个人读过的书
贫道法号说不得
萌新初长成~~~
展开
-
【《现代操作系统 第4版》】3、调度算法
当一个计算机是多道程序设计系统时,会频繁的有很多进程或者线程来同时竞争 CPU 时间片。当两个或两个以上的进程/线程处于就绪状态时,就会发生这种情况。如果只有一个 CPU 可用,那么必须选择接下来哪个进程/线程可以运行。操作系统中有一个叫做 调度程序(scheduler) 的角色存在,它就是做这件事儿的,该程序使用的算法叫做 调度算法(scheduling algorithm) 。尽管有一些不同,但许多适用于进程调度的处理方法同样也适用于线程调度。当内核管理线程的时候,调度通常会以线程级别发生,很少或者根原创 2020-07-28 06:57:23 · 1054 阅读 · 0 评论 -
【《现代操作系统 第4版》】4、进程间的通信之互斥
进程之间经常需要进行通信。进程间通信(Inter Process Communication,IPC)需要面临如下三个问题:一个进程如何把信息传递给另一个进程如何确保两个或更多的进程在关键活动中不会出现交叉比如两个进程为不同的客户视图争夺飞机上的最后一个座位如何确定程序正确的执行比如进程A产生数据而进程B打印数据,那么B在打印之前必须等待,直到A已经产生一些数据由于在不同地址空间进行通信的线程属于不同进程间的通信,所以除了第一个问题外,后两个问题在线程间的通信中也存在,它们的解决原创 2020-07-24 09:40:20 · 552 阅读 · 0 评论 -
【《现代操作系统 第4版》】2、进程与线程
进程进程是OS的核心概念,它是对正在运行程序的一个抽象。进程模型一个进程就是一个正在执行程序的实例,包括程序计数器、寄存器和变量的当前值。从概念上说,每个进程拥有它自己的虚拟CPU。真正的CPU在各进程间来回切换,这种快速切换称作多道程序设计。由于CPU在各进程之间来回快速切换,所以每个进程执行其运算的速度是不确定的。而且当同一进程再次运行时,其运算速度通常也不可再现。所以,在对进程编程时决不能对时序做任何想当然的假设。进程和程序间的区别是很微妙的,但非常重要。用一个比喻可以更容易理解这一点。想象原创 2020-07-24 09:39:34 · 336 阅读 · 0 评论 -
读书笔记:《Effective Java 3rd》创建和销毁对象 02.当构造方法参数过多时考虑用 builder 模式
文章目录1、可伸缩性的构造方法2、JavaBean模式JavaBean规范Java模式案例优点缺点1)阻止了把类做成不可变的可能性2)多线程情况下存在线程安全问题3、builder模式常见场景中使用类层次结构中使用优点缺点4、总结静态工厂和构造方法都有个共同的不足之处:它们不能很好地扩展到很多可选参数的情景。当构造方法的参数较多时,有如下几种处理方式:可伸缩性的构造方法JavaBean ...原创 2020-02-12 22:50:43 · 328 阅读 · 0 评论 -
读书笔记:《Effective Java 3rd》创建和销毁对象 01.用静态工厂方法代替构造方法
文章目录概述优点1、有名称,可读性好2、不用重复创建一个对象3、可以返回原返回类型的任何子类型4、返回的对象可以随着每次调用时所传的参数值而改变5、在编写静态工厂方法的类时返回对象的类可以不存在服务提供者框架服务接口 UserService服务具体实现类 UserServiceImpl服务提供者接口 UserServiceProvider服务提供者具体实现类 UserServiceProvider...原创 2020-02-12 16:13:57 · 252 阅读 · 0 评论 -
读书笔记:《代码大全第2版》软件工艺
征服复杂度软件开发的核心是降低复杂度降低复杂度的方法将系统拆分成多个子系统设计抽象的接口,隐藏底层细节(抽象最能降低复杂度)避免使用全局变量避免深层次的继承避免深度嵌套的循环或条件判断不用 goto正确而统一的使用错误处理方法统一的异常处理类的设计应该保持简单(单一职责)短小的子程序良好的命名减少子程序的参数形成良好的编码风格软件开发过程开发过程决...原创 2020-02-05 21:13:45 · 117 阅读 · 0 评论 -
读书笔记:《代码大全第2版》软件行业应有的性格
人的性格对其编程能力有直接影响。好性格与培养正确的习惯关系甚大。要成为杰出的程序员,先要养成良好习惯,其他自然水到渠成。聪明与谦虚按照一定的原则,降低程序的复杂度,减少大脑的负荷,就能够在软件开发方面有深刻的造诣软件工程的首要任务就是降低管理复杂度,对程序员来说就是减少程序的复杂度将系统进行模块化分解举行评审、code review、测试。将负荷分摊到多个人身上,从而减少单个人的...原创 2020-02-05 20:15:26 · 106 阅读 · 0 评论 -
读书笔记:《代码大全第2版》布局与风格
文章目录类的布局注释自说明代码傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码。类的布局接口的布局顺序描述类的作用和用法的注释构造函数public方法protected方法private方法实现的布局顺序类上面的注释,用于解释类的内容成员变量public方法protected方法private方法注释自说明代码类你的类...原创 2020-02-05 20:13:25 · 242 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 08.语句
文章目录1、直线型代码2、条件语句2.1 if-else 语句2.2 if-else if 语句2.3 case语句3、表驱动法4、一般控制问题4.1 布尔表达式4.2 空语句4.3 深度嵌套4.3.1 重复判断一部分条件4.3.2 使用break块简化嵌套if4.3.3 转换成if-then-else4.3.4 转换成case语句4.3.5 把深层嵌套的代码提取成单独的子程序4.3.6 使用工厂...原创 2020-02-05 17:59:09 · 161 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 07.变量
文章目录1、使用变量的一般事项1.1 变量初始化原则1.2 作用域1.3 变量的单一职责1.3.1 每一个变量只用于单一用途1.3.2 避免让代码具有隐含含义1.3.3 确保使用了所有已经声明的变量1.4 总结2、变量的命名2.1 变量名中的计算值限定词2.2 变量名中的常用对仗词2.3 为特定类型的数据命名2.3.1 循环变量2.3.2 状态变量2.3.3 临时变量2.3.4 布尔变量2.3.5...原创 2020-02-05 16:03:03 · 214 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 06.创建高质量的代码之伪代码编程
文章目录伪代码编程过程1、类和子程序的创建过程2、伪代码3、通过伪代码创建子程序3.1 设计子程序3.2 编写子程序的代码3.3 检查代码3.4 收尾工作4、总结伪代码编程过程创建类和子程序通常都是一个迭代的过程。在创建子程序的过程中获得的认识常常会反过来影响类的设计。1、类和子程序的创建过程类的创建过程子程序的创建过程2、伪代码如何编写一段伪代码:用类似英语的语句来精确描述...原创 2020-02-05 15:56:00 · 371 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 05.创建高质量的代码之防御式编程
文章目录防御式编程1、保护程序免遭非法输入数据的破坏2、断言3、错误处理技术4、异常5、隔栏(Barricade)6、线上代码中该保留多少防御式代码7、总结防御式编程防御式编程的主要思想:方法应该不因传入错误数据而被破坏,哪怕是由其他方法产生的错误数据。防御式编程的最佳方式就是在一开始不要在代码中引入错误。使用迭代、编码前先写伪代码、写代码前先写测试用例、低层设计检查等活动,都有助于防止引入...原创 2020-02-05 15:52:30 · 139 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 04.创建高质量的代码之高质量的方法
文章目录高质量的方法1、创建方法的理由2、内聚性(cohesion)3、方法命名4、方法参数5、总结高质量的方法1、创建方法的理由降低复杂度引入中间的,易懂的抽象避免代码的重复支持子类重写(子类重写简短而规整的方法要比冗长而邋遢的方法更好)隐藏顺序隐藏指针操作提高可移植性简化复杂的布尔判断(有时候将一些简单的操作写出独立的方法会具有更好的可读性)...原创 2020-02-05 15:50:53 · 139 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 03.创建高质量的代码之创建高质量的类
6、创建高质量的类成为高效程序员的一个关键就在于,当你开发程序任何一部分代码时,都能安全地忽视程序中尽可能多的其余部分。抽象类 = ADT(抽象数据类型)+ 继承 + 多态创建高质量类的最关键一步是创建一个好的接口(这里的接口指的是类中能够被外部访问的方法)。类的接口应该提供一致的抽象。很多问题都是由于违背该原则而引起的。一个呈现出很好的抽象的类接口通常也有很高的内聚性。而具有很强内聚...原创 2020-02-05 15:47:06 · 148 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 02.创建高质量的代码之软件构建中的设计
文章目录软件构建中的设计软件设计的特征与挑战管理复杂度好的设计所具有的特征软件设计的层次软件设计方法找出现实世界中的对象形成一致的抽象封装实现细节有可能的情况下继承信息隐藏找出容易改变的区域保持松散耦合使用设计模式其他的设计方法软件设计实践总结软件构建中的设计软件设计的特征与挑战软件的设计是一个“险恶”的问题,所谓“险恶”就是你必须首先把这个问题"解决"一遍以便能够明确地定义它,然后才能再次...原创 2020-02-05 15:41:59 · 228 阅读 · 0 评论 -
读书笔记:《代码大全第2版》 01.打好基础
文章目录前言理解软件开发软件开发经历建筑过程与软件工程前期准备前期准备的意义前期准备的工作明确软件类型问题定义需求分析架构设计前期准备工作不周全的原因在构建期间处理需求变更构建之法前言精华部分:6、7、10~19初级:先看18高级:先看4P M:先看33低年级学生:先看11高年级学生:先看8制定编码标准:先看32自学编程:先看7喜欢网上争论:先看13.3和17.3理解软件开...原创 2020-02-05 15:38:03 · 337 阅读 · 0 评论