跳转至

CS

语言相关

Java

2018 年,一位十三十四岁的少年因 Minecraft 误入了编程歧途

《Java 从入门到精通》是我入门编程的梦的开始,是引领我入门开发的第一本书。这本书写的内容很书面化离实践太远了,真正上手主要还是靠当时写 Minecraft 的 Bukkit 插件学习入门的。

此外,吐槽下 Java 是真的很啰嗦(

  • 《Java 从入门到精通》

C++

因为大一时候要学 C++ 课程就看了《C++ Primer Plus》当时没学过不带 GC 的语言,选了 Primer Plus 而不是 Primer。

  • 《C++ Primer Plus》

Python

学习 C++ 后入门的第三门语言是 Python ,因为已经有很多的语言基础了,因此对 Python 官方教程都是挑着看的。

爬虫入门,主要直接用和看的 Scrapy 的文档,直接实践爬取我做项目要的词典数据了。至于数据分析和机器学习,选择了 Kaggle 学习相关的部分课,还有Michael Nielsen 的NNDL,相关见人工智能与机器学习

Rust

前端类

由于想要开发应用和网站的需求,还是接触了前端的 HTML,CSS,TypeScript 入门。对于 HTML 和 CSS 部分主要看 MDN 学习,CSS 只看了选择器很基础的部分,布局什么的没看(因为自我觉得没 UI 设计天赋,主要还是靠 LLM 帮我处理 。TypeScript 只大概看了官方的HandBook

之后我就紧接着就去学习框架 Angular 了,顺带入门了 RxJS,看的是这篇博客,叫 The introduction to Reactive Programming you've been missing,GitHub 上有对应的翻译 RP 入门

算法与数据结构

这部分学习材料比较零散,都没有一个比较满意的系统书籍,主要还是靠做 CS61B lab 练习。

CS61B 没全部看完,做到实现简易的 Git 就没做了,后面的课也没看了。红皮的算法主要看的图和排序部分,Hello 算法主要是补充概念上的知识。 CLRS 主要是作为工具书便用变学看的。

  • CS61B 国外课程
  • 红皮的《算法(第四版)》
  • Hello 算法
  • Introduction to Algorithms (CLRS)

操作系统

《Operating Systems Principles and Practice》给我感觉收获很多,可惜没非常硬核的代码示例也没实际的工程实践结合。 对于只想了解多线程开发,这本书只有第二卷值得读,主要是以条件变量和锁去构建多线程应用,对于信号量(semaphore)非常少,CAS 有提及,但是也不是很深入,关于 CAS 编程推荐看 Jeff Preshing 的博客。除此之外,也另外做了一点 MIT 6.828 的 lab,但太枯燥了就没继续做下去。

  • 《Operating Systems Principles and Practice Vol.1 Kernels and Processes》
  • 《Operating Systems Principles and Practice Vol.2 Concurrency》
  • 《Operating Systems Principles and Practice Vol.3 Memory and Management》
  • 《Operating Systems Principles and Practice, Vol.4 Persistent Storage》(在读)

并发编程

因为发现读的 OS 书籍上讲的并发理论知识不够深入,也缺少实际代码为了和实践进行结合,额外找了两个大佬的博客作为未来的阅读材料。

计算机网络

《Computer Networking: A Top-Down Approach》这本书,看了从 1 到 6 章,以及第 8 章,至于 7、9 章节因为时间问题以及没那么感兴趣并没有读下去。除了读了上面那本书,还搓完了 CS144 2024 Winter 的所有 lab,不过这个 lab 主要还是对 TCP 和 ARP 协议上促进更深的理解。

  • Computer Networking: A Top-Down Approach 7ed
  • CS144 2024 Winter lab
  • 《TCP/IP Illustrated, Volume 1》(未来计划)
  • 《High Performance Browser Networking》(未来计划)

数据库

《Database System Concepts》这本书,主要是看的 Part 1 的 SQL 各种语句,其他部分还没看。

Use The Index, Luke! 是我读完《Database System Concepts》关于基础的 SQL 语句后看的第二个关于数据库系统的材料,这篇博客/书主要是教用如何用索引对数据库查询进行优化,以及索引背后的原理,很贴近实际的工程场景。

计算机体系结构

《Computer Organization and Design RISC-V Edition》这本书,只看了 1,2,3,5章,因为对实际开发启发比较少,等有时间再回来看看剩下的。

  • Computer Organization and Design RISC-V Edition
  • CS61C 的 risc-v 的 lab (没做完)

编译原理

因为对写一个字幕文件的解析器有需求,去了解了下相关工具处理看了 LLVM Tutorial 的前两章,前两章已经完全够我当时处理字幕文件的需求了。不过,我本身对编译原理并不是特别感兴趣,因此也没有继续深入学习下去。

  • LLVM Tutorial
  • 《Crafting Interpreters》(目前处于暂停阅读)

人工智能与机器学习

一开始,本身对机器学习没啥兴趣(但出于想做的东西需要就去学习了

Michael Nielsen 的 Neural Networks and Deep Learning,挺适合深度学习入门的。

系统设计

这里主要是搭建面向用户的系统时,读过的一些材料

系统

《Designing Data-Intensive Applications 2nd Edition》又名 DDIA,对于没有完整的生产级应用系统设计的小白来看,这本书很出色,非常值得一读。书的内容主要是涵盖面对密集数据要处理的应用,系统如何设计和权衡。

  • 《Designing Data-Intensive Applications 2nd Edition》(在看)

认证(Authentication)

接口规范

工具类

《Pro Git》这本书,主要是看了前几章对暂存区,工作区概念的学习,剩下的其他东西主要还是边用边学了。

Linux 入门主要看的社区翻译的 The Linux Command Line,不过翻译有些糟糕,不过有双语对照问题不大。

Docker 入门看的Docker Curriculum 主要是入门了解 Docker 的基本概念和使用。