计算机系统的设计原则【译】

0.前言

这些原则,或者又称为启发式方法或经验法则,它们都是为了寻找一条通往问题真解的道路,是殊途同归的。这些法则可以指导你理解当前所在的系统,使你集中精力寻找正确的解决方案,并凸显出可能有潜在问题的方面。

Read More

清醒思考的艺术

1.幸存偏误

  • 幸存偏误:由于日常生活中更容易看到成本、看不到失败,你会系统性地高估成功的希望。

2.游泳选手身材错觉

  • 快乐的人不愿认识到,其实快乐大多是与生俱来的,在生活中恒定不变。
  • 凡有人讴歌某种东西值得追求——强健肌肉、美貌、高收入、长寿、影响力、快乐,你都要看仔细。在跨入泳池之前,不妨先找找镜子,你要诚实地对待自己。

Read More

计算机系统漫游(CS:APP)

1.计算机系统漫游

1.1 信息就是 位 + 上下文

  1. 计算机系统是由硬件和系统软件组成的,它们共同工作来运行应用程序
  2. 安全漏洞很有可能由存储缓冲区溢出错误引起
  3. 计算机系统中所有的信息——包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串 bit 表示的。区分不同数据对象的唯一办法就是读到这些数据对象时的上下文

Read More

程序是怎样跑起来的

1.对程序员来说 CPU 是什么

  1. 程序是指计算机每一步动作的一组指令,程序是由指令和数据组成的
  2. 硬盘和磁盘等媒介上保存的程序被拷贝到内存后才能运行
  3. 内存地址是在内存中保存指令和数据存储位置的数值,是一个整数值
  4. 机器语言是 CPU 可以直接识别并使用的语言,可以理解为一个个电路状态的矩阵转换,高级编程语言必须编译为机器语言才能被CPU 处理

Read More

思考,快与慢

序言

  • 专制体制对独立媒体施压的现象不是偶然的
  • 当面对难题时,我们往往会对相对简单的问题进行回答,却忽略了自己已经置换了原始问题这个事实
  • 有时,我们无法自然地凭直觉找出问题的解决方案,在这种情况下,我们往往想要找到一种更慢、更严谨、需要投入更多脑力的思考形式,这就是本书中提到的慢思考
  • 直觉和严谨思考的特点就像是大脑中两种性格的特征和性情
  • 我们对自己认为熟知的事物确信不疑,我们显然无法了解自己的无知程度,无法确切了解自己所生活的这个世界的不确定性。我们总是高估自己对世界的了解,却低估了事件中存在的偶然性。当我们回顾以往时,由于后见之明,对有些事会产生虚幻的确定感,因此我们变得过于自信
  • 记忆的自主形成是有其原则的,使经验自我快乐的事不一定会让记忆自我满足

Read More

计算机是怎样跑起来的

1.计算机的三大原则

输入、运算、输出、指令、数据、计算机的处理方式、计算机不断进化的原因

  • 在GBK编码下,一个汉字占用2个字节。而在UTF-8字符编码下,一个汉字占用3个字节
  • 什么是编码?

通常将为了便于计算机处理而经过数字化处理的信息称作编码。
计算机内部会把所有的信息都当成数字来处理,尽管有些信息本来不是数字。
由于表示字符的数字是“字符编码”,用于表示颜色的数字是“颜色编码”。

Read More

编码 - 隐匿在计算机软硬件背后的语言

1.电筒密谈

2.编码与组合

3.布莱叶盲文与二元编码

4.手电筒剖析

Read More

程序员修炼之道

1.我的源码让猫给吃了

  • 注重实效的程序员的特征是什么?

    我们觉得是他们处理问题、寻求解决方案时的态度、风格、哲学。
    他们能够越过直接的问题去思考,总是设法把问题放在更大的语境中,总是设法注意更大的图景。
    毕竟,没有这样的更大的语境,你又怎能注重实效?你又怎能做出明智的妥协和有见识的决策?
    他们成功的另一关键是他们对他们所做的每件事情负责。
  • 在所有的弱点中,最大的弱点就是害怕暴露弱点

  • 责任是你主动负担的东西

  • Provide Options, Don’t Make Lame Excuses. 提供各种选择,不要找蹩脚的借口

Read More

理解Rust中的类型设计(borrow,ownership)

Rust这门语言因为它的内存管理模型而闻名,它使用编译期检查代替了运行时的GC(垃圾回收)来确保内存安全。Rust能够做到没有GC但仍然能让程序员从易错的内存管理中解脱出来的秘诀就是:Borrowing and ownership,即借用检查和所有权设计,这个一个简约但并不简单的设计实现。

Read More

理解Rust中的类型设计(objects,behavior)

数据类型是编程语言的基石。数据类型之于编程语言,就像26个字母之于单词、偏旁部首之于汉字,是构成程序语句最基础的元素,是我们编写statement/expressionliteral,从本文开始我会涵盖Rust中常用的数据类型介绍和简单使用。

Read More