小土刀

【松本行弘的程序世界】读书笔记

所有应用程序的开发过程都可以说是设计语言的过程


  • 任何编程语言都脱胎于 Smalltalk 和 LISP。
  • 每种技术、思想都有其特定的目的、渊源和发展进步的过程
  • 使用编程语言写好程序是有技巧的
    • 编程风格指的是编程的细节,比如变量名的选择方法、函数的写法等等
    • 算法是剞劂问题的方法。算法和特定的数据结构关系很大
    • 设计模式是指设计软件时,根据以前的设计经验对设计方法进行分类。算法和数据结构从广义上来说也是设计模式的一种分类
    • 开发方法是指开发程序时的设计方法,指包括项目管理在内的整个程序开发工作。小的软件项目可能不是很明显,在大的软件项目中,随着开发人员的增加,整个软件工程的开发方法就很重要
  • 面向对象这个词本身是很抽象的,越抽象的东西,人们就越难理解。并且对于面向对象这个概念,如果没有严密的定义,不同的人就会有不同的理解。
  • 多态性的优点
    • 数据可以统一处理。程序只要关注处理什么(What),而不是怎么去处理(How)
    • 感觉对象的不同自动选择最合适的方法,而程序内部则不发生冲突
    • 如果有新数据需要对应处理的话,通过简单的追加就可以实现了,而不需要改动以前的程序,这就让程序具备了扩展性
  • 复杂性是面向对象的敌人
  • 结构化编程的『限制』和『抽象化』是人类处理复杂软件的非常有效的方法
  • 在静态语言中,不能给变量赋不同类型的值,因为那样会导致编译错误
  • 结构化编程基本上实现了控制流程的结构化。但是程序流程虽然结构化了,要处理而数据却没有被结构化。面向对象的设计方法是在结构化编程对控制流程实现了结构化后,又加上了对数据的结构化
  • 所有应用程序的开发过程都可以说是设计语言的过程
  • 设计模式是程序抽象化的延伸
  • 在软件开发的过程中,会遇到各种各样的问题,原因归结起来主要有两个方面,一个是复杂性,一个是变化性。
  • 软件的规模越大,各个部分之间的牵连越复杂,更改也就越难。
  • 为了让本来只能表示二进制数的计算机能够处理文字,就必须将文字变换为相应的数字。这种对应于文字的数值就称为文字编码。
  • 纸带每排有 8 个孔,用于表示一个字节,不打孔表示 0,打孔表示 1,一旦纸带上有了 bug,只能用剪刀将纸带剪掉,然后再接上修正的方法,成为恰如字面意义上的补丁。而 ASCII 码中,删除字符串所用的 DEL 也分配了一个编码 127,也就是八个 1,在纸带上就是全部打孔,自然所有信息就消失了。
  • 计算机虽然只有一个 CPU,但操作系统能够将程序的执行单位细化,然后分开执行,从而实现伪并行执行。这种伪并行执行称为并发(concurrent)。使用多个 CPU 真的同时执行称为并行(parallel)
  • 并行处理主要会遇到的两个问题是数据完整性的丧失和死锁。
  • 锁模型:如果竞争足够少,多数情况下能保持较高性能。但是,对于资源的竞争,不能忘记加锁。要做到完美无缺较难。
  • 队列模型:在竞争少的时候,其性能比不上锁模型,但对于程序员来说,它比锁模型更容易贯彻。虽然各种处理系统的表现不尽相同,但这种方法很少会因为线程增多而带来性能低下的恶果。
  • Actor 是(仅)通过消息(message)进行通信的实体,向 Actor 发送消息,仅仅是发送消息而不等返回结构,是一种异步方式。Actor 由于没有消息以外的信息传递手段,所以不用担心 Actor 之间的资源竞争。发送给 Actor 的消息,都配送到各个 Actor 所拥有的邮箱里。多个消息同时到达时的竞争,已经由内嵌系统中的排除机制来处理了。
  • Actor 有一个很大的优点是安全,但更大的优点是易懂。Actor 根据消息进行进行处理,必要的话,会向其他 Actor 传递消息,或者向源 Actor 返回消息。
  • 多个控制流同时运行的线程,非常简单和容易实现,如果协调和同步方面不需要花费很大成本的话,就能够得到很高的性能。
  • 帕累托法则:这一法则本来是经济学中表示全体数值的大部分,是由构成全体的少部分因素所产生的,现在被广泛应用到各种各样的领域。帕累托法则通常以 80/20 法则这种变形形式来应用。
  • 漏洞从大的方面分为四种:DDOS 攻击;信息泄露;权限夺取;权限升格
  • 对软件漏洞的攻击有很多种。对软件开发者的程序错误的攻击,有代表性的有以下 5 种:缓冲区溢出、整数溢出、跨站点脚本攻击(XSS)、SQL 注入、跨站点伪造请求(CSRF)
  • 垃圾收集是一种管理程序使用的内存区域的方法。使用具有垃圾收集功能的编程语言或处理程序的话,程序中不需要编写内存管理的代码,也就是说不用编写代码来释放使用过的内存区域。
  • 垃圾回收的性能可以由以下两个指标来测定:吞吐量和暂停时间
  • 吞吐量(throughput)是垃圾回收在程序全部执行时间中所占的比例,该比例越小越好。
  • 暂停时间(pause time)是一次垃圾回收所中断的时间。暂停时间过长的话,程序反应就会变慢。
  • 常见垃圾回收方法:引用计数、标记和扫除、标记和紧缩、复制方式、分代垃圾收集、保守垃圾收集、增量垃圾收集、并行垃圾收集、位图标志,这些技术的组合也是有可能的
您的支持是对我创作最大的鼓励!

热评文章