> For the complete documentation index, see [llms.txt](https://thinking.simonaking.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://thinking.simonaking.com/weekly/3.md).

# 第 3 期 - 信息技术 与 人类的相似性

### 介绍

我们每天都会接收到过载的信息，然而明月与砾同囊，其中的优质信息往往会被淹没，因此需要一个信息过滤服务来提升接收的信息质量。

思考的价值由此而来，分享内容的不限，偏向于 计算机技术 与 科技人文的方向。

* 内容存档可见：<https://thinking.tomotoes.com/>
* Newsletter 订阅：<https://simon.zhubai.love/>

### 封面

![](/files/XNyTELlnADA92eOSS6N4)

小橘 *10-30 15:19 北海公园*

### 话题

本周的话题是 信息技术 与 人类的相似性，我一直觉得 人类在某种程度来说 是一种更高维的计算机，这种思维在我学计算机之后就一直存在。

**由于本人对生物学知之甚少，所以以下内容有可能在胡说八道（狗头。**

常言道，人有五觉：视觉、听觉、嗅觉、味觉、触觉。如果把这五觉理解为是人的外在接口，那么可以得到：

* 视觉：平时生活时，眼睛以 1s 60帧左右的频率不停被调用，眼睛接受到 外部的光线，并生成中间态信息，通过 神经传输到大脑。
* 听觉：耳朵解析周围的空气震动，生成中间态信息，通过 神经传输到大脑。
* 其他同理

在传输中，神经好比网络链路，不同的是 神经的带宽可达到 每秒16.625 GB的数据，比 5G 通信的最快速度，还要快几十倍。

这些信息传输到大脑后，大脑根据 一系列规则进行 解析与判断，如视觉的信息 根据对常见物品的认知、听觉的信息 根据语言的规则。

而这过程中，人脑也会对信息进行一些“存储”，类似于缓存过期策略，频率最高的信息往往不会被清除，而甚至有部分信息会上升到 “寄存器数据”，还有的信息会像 “JIT” 被优化，处理时甚至不过脑子，成了下意识。

还有一些实例能够很好地佐证 人类 与 信息技术的相似性。

* 脑机接口：当人类想进行输出时，往往由大脑发出指令，所以我们可以检测到指令的特征，用机器实现我们的需求。
* 神经网络：受到人脑启发，对处理信息进行行为分层。
* 错觉的图片：如明明的平行的线，看起来就像是斜的，大脑在做模式匹配吗？

![](/files/VbJK1ip3aMFmQlv3EFbt)

除此之外，我还有一个观点是：人脑是单核的，无法真正的并行。

因为我从来没有做到过 同时思考两件事，貌似一直是在抢占式 串行运行，就比如工作..

PS：同时，指的是当前时间片 同时进行两件事情，没有任何中断发生。

嘿 这是不是有点意思？如果你觉得自己不是单核的，欢迎给我来信\~

### 文章

#### [Sass 完整指南](https://mp.weixin.qq.com/s/BVzYDxK7F_IAzV6NxnMj7A)

一篇介绍 Sass 技术的基础知识文章。

之前只是熟悉 Sass，读完本文后 发现原有还有很多没有使用过的能力，如 变量作用域、自定义命名空间等。

多年前，我也曾写过一篇有关 css 预处理器的文章，是有关 less 的，感兴趣的同学也可以阅读下：

<https://tomotoes.com/blog/learning-less-seeing-this-is-enough/>

#### [Making a Go program 42% faster with a one character change](https://hmarr.com/blog/go-allocation-hunting/)

文章介绍了 一段优化 Go 程序的经历。

程序原有的写法是 copy 值 去处理，换成 copy 引用后，GC 压力大幅下降，性能也随之提高了。

那么为什么 copy 值 会导致性能差呢？原因在于 copy 引用 等价于 写入栈，只需要把值分配到栈顶即可，无需分配内存空间；而 copy 值等价于 写入堆，需要在写入之前找到大小适合的内存空间 然后再写入。

并且在读取方面，栈一般处于高速缓存中，堆往往存在内存，还栈指针来访问。

#### [这 20+ 个 App 和用法，是所有 Mac 用户必备的「高效」指南](https://mp.weixin.qq.com/s/jp7VI1w7TFFYSFPgs9fhKQ)

一篇介绍 Mac 常见流 与 快捷软件的文章，内容非常全面，也发现了一些之前没有用过的工具，如 [kindaVim](https://kindavim.app/)。

#### [Hybrid 远程调试的前世今生](https://mp.weixin.qq.com/s/R4iULRX-IYXKY_aarf2WGg)

团队本周出品的优质文章，介绍了 Devtool 的历史 与 现在调试的最佳实践。

延伸阅读：

* [DevTools 实现原理与性能分析实战](https://mp.weixin.qq.com/s/H8iahg5WUOHXeRzvf0R01w)
* [10 Years of Web Inspector](https://webkit.org/blog/5718/10-years-of-web-inspector/)

推荐一个 CDP 的开源实现：<https://github.com/liriliri/chobitsu>

如果你想实现一个类 DevTools 的跨端调试工具，完全可参考 CDP 协议做到。

#### [浅入浅出WebGPU，你懂了吗？](https://www.51cto.com/article/698100.html)

一篇介绍 WebGPU 的文章，作者开始梳理了 WebGPU 的发展历史，后面介绍了一些工程实践。

从我的视角来看，WebGPU 等价于 Better WebGL。

#### [Go Style Best Practices](https://google.github.io/styleguide/go/best-practices.html)

Google 出品的 Go 编码风格最佳实践。

文章很多建议也适用于其他语言（我真的没想到 Go 的编码风格 能这么长

#### [后台服务架构高性能设计之道](https://mp.weixin.qq.com/s/hsH7LMBEDGe_df9UbfOvbQ)

一篇介绍架构设计的好文。

文章 梳理了 服务端 高性能相关的最佳实践，覆盖了 编码时的一些关键、数据传输与中间件设计，内容很全面且质量很高，推荐阅读。

开始介绍了无锁化(lock-free)，分为 Reactor 模式 与 原子操作，Reactor 从执行层面能保障单线程 无竞争，原子操作 从代码层面 通过硬件保障 无竞争。

单 Reactor 多线程就是传统的 事件机制 也称为 dispatcher，业界实现 如 epoll、libuv；多 Reactor 多线程则是进阶版，等价于前者的 上一层分发层，业界实现 如 Nginx、Netty。

原子操作则是在竞争场景下的比较常见的解决方案，但一般对语言而言，只支持 基础类型的原子化，如果是复杂的数据结构建议使用一些成熟的库。

第二 part 零拷贝等价于 DMA，这里推荐一篇 IBM 的文章：[Efficient data transfer through zero copy](https://developer.ibm.com/articles/j-zerocopy/)

文章介绍了 Web 应用的场景下，传统的文件传输与使用零拷贝技术传输的性能差异。

第三 part 介绍了 序列化，老生常谈的话题了，业界中的佼佼者是 Google 的 Protobuf、FlatBuffer。

第四 part 梳理了池化概念的一些应用：内存池（low level pl）、线程池、连接池（db、tcp）、对象池。

并发、异步章节 较常见，跳过。

中间件设计部分，分为 4 部分：缓存、分片、存储、队列，作者介绍的都很详细，就不展开了。

![](/files/alzYtucPmRoPhfAB9AfO)

#### [Rust要冲吗？](https://juejin.cn/post/7101147590166577188)

最近想冲 rust 了，说来也奇怪。我一直很讨厌把底层复杂度透传到上层的语言，如存在 指针、inline、手动 gc 这些概念的语言。

但发现 工程中是绕不开，语言、框架、产品 之类的创造者是需要与 复杂度周旋的，往往完美的语言 都是找到 复杂度的平衡点，而不是一味的封装。

#### [为什么很多程序员不用 switch，而是大量的 if...else if ...？](https://www.zhihu.com/question/300975864/answer/1805558020)

文章介绍了 CPU 分支预测 这一黑魔法，以及是如何 在 编码层做优化的，这谁又能想得到呢？

#### [History of Web Programming (2014)](http://www.observationalhazard.com/2018/06/history-of-web-programming.html)

如题，一篇介绍 Web 编程的历史发展文章。

前端语言 从最开始的 大公司竞争到 JS 一直独秀，不得不说 拥抱标准 才是发展的正道。

而后端语言 由于网络协议、CGI 的规范性，所以 技术选择可以很多样。

文末又介绍了 浏览器的发展，感兴趣的同学可以看下。

#### [Raft - Understandable Distributed Consensus](http://thesecretlivesofdata.com/raft/)

一个介绍 Raft 分布式共识的 交互式案例，很形象生动、

### 项目

#### [reptyr](https://github.com/nelhage/reptyr)

> Reparent a running program to a new terminal

一个利用 ptrace 改变进程 IO 与 terminal 的工具。

#### [log](https://github.com/adamschwartz/log)

> Console.log with style.

#### [listening.io](https://listening.io/)

> Listen to any article in your podcast player

可以将任何文章在 padcast 进行播放的一个软件，看起来很理想形态。

#### [Parcel v2.8.0](https://parceljs.org/blog/v2-8-0/)

Parcel 发布 2.8 版本，带来了全新高性能的 Bundle 算法，Code splitting、Tree shaking、热更新 均有很大提升。

#### [Deno 1.28: Featuring 1.3 Million New Modules](https://deno.com/blog/v1.28)

Deno 发布 1.28 版本，开始兼容了 现有 Nodejs 生态，Express、React、Next.js 都可以在 Deno 上运行了。

但由于抛弃 package.json 的做法，使得兼容时会遇到一些困难。

#### [npkill](https://github.com/voidcosmos/npkill)

> List any node\_modules 📦 dir in your system and how heavy they are. You can then select which ones you want to erase to free up space 🧹

一个清理 node\_modules 的工具，很好用。

#### [happy-dom](https://github.com/capricorn86/happy-dom)

> Happy DOM is a JavaScript implementation of a web browser without its graphical user interface. It includes many web standards from WHATWG DOM and HTML.

一个 DOM 生成库，竞品：[jsdom](https://github.com/jsdom/jsdom)，在处理 HTML 数据的场景很实用。

#### [vue-concurrency](https://vue-concurrency.netlify.app/)

> A library for encapsulating asynchronous operations and managing concurrency for Vue and Composition API

一个异步场景下的状态管理库，项目的解决的场景确实是很常见的。

#### [burst-valve](https://github.com/codenothing/burst-valve)

> An in memory queue for async processes in high concurrency code paths.

Wrap any async method in a fetcher process to create a buffer where there will only ever be a single active request for that method at any given time.

一个 NodeJS 的节流库，源文件很小，在特定场景下会很有用。

### 资源

#### 个人 Newsletter

个人订阅的 newsletter 分享：[Newsletter](https://bytedance.feishu.cn/docx/doxcn71pI52De0EyD1QDlZQ4QKh)，newsletter 算是我消费最多的信息源之一了\~

大家可以新建一个邮箱账号，按需关注。

#### Vim 的学习资源

关于vim - 掌握基本的 Vim 概念和使用方式

<https://missing.csail.mit.edu/2020/editors/>

* 一款基于 vim 键盘快捷键的在线游戏 <https://vim-adventures.com/>
* 利用 vim 玩贪吃蛇 <https://vimsnake.com/>
* [推荐 Vimgolf](https://www.vimgolf.com/) 刷题

### 生活

忙碌的一周，工作不停地在抢占我的时间片，不过都很顺利的完成了。

昨天回顾发现，自己好像很久没有学习成长了，很怀念大学无忧无虑的学习时刻，每天一个人由着性子探索计算机的世界。现在虽然工作一直在强调个人成长，但实话实话 很少有成长的机会。

并且之前学到的技能也在慢慢遗忘，举个例子：我大学时 是一个不折不扣的 gopher，持续很长时间一直在学习 golang 的体系与生态，也做过一些或大或小的项目，不过到现在已经忘得差不多了..

最近我打算学一下 Rust（一门内存安全、重 comp-time 的语言），虽然我很反感 将编译器、操作系统复杂度转移出上层的语言，但也算一种新的尝试吧。

对我而言学习一门新的语言 有诸多的好处，下期的主题可能会讲一下。

周末 Leann 当了回大厨，给大家欣赏下：

![img](https://raw.githubusercontent.com/Tomotoes/image/master/img\(null\)-20221126190251834.\(null\))

先这样，see you next week.

### 历史回顾

#### [思考的价值 第 1 期周刊 - 大厂垄断的 LaaS](/weekly/1.md)

#### [思考的价值 第 2 期周刊 - 鸭子理论与第一性原理](/weekly/2.md)
