学习路线图-施工中
"What I cannot create, I do not understand" - Richard Feynman.
制定个计划,让自己不再迷茫。
每天投点时间进去。
从找点事做,到更好的发挥有限时间的价值,是接下来要考虑的。要做的事情越来越多,可支配的时间却越来越匮乏,需要时间去思考,如何发挥时间/付出的价值。
定期的复盘也是需要提上日程的。
不去考虑现在能否抽出时间做某些事情,先开始,之后自然能挤出时间,一直等有时间了,只会一直等下去。
感觉收获很多,
一是处在管理岗位,确实应该有很多管理上的能力,得加强学习,不能两眼只盯着技术栈;
二是隔一段时间去面试下,避免坐井观天,活在自己的世界里;
最后,技术更迭变迁,但底层和原理是共通的,掌握了这些,才能走的更远。
那些赚到大钱的人,没有一个是靠时间换取收入的。他们要么通过积累资产致富,要么购买他人的时间,为自己创造财富。你应该警惕,不要落入”时间换取收入”的陷井,不要只顾着为别人生产代码,而要注意积累自己的资产,以及适时开展属于自己的业务。 —转自:阮一峰
🔗收藏:
Teach Yourself Computer Science
OSSU ( Open Source Society University )
计算机专业推荐书:https://github.com/CodingDocs/awesome-cs
面试准备及指导:https://github.com/Snailclimb/JavaGuide
计算机公开课
一、浙江大学
Github 地址:https://github.com/QSCTech/zju-icicles
二、B 站的公开课
Github 地址:https://github.com/elder-frog/OpenCourseCatalog
《计算机科学概论》(finish)
✨《计算机程序的构造和解释》 SICP – Structure and Interpretation of Computer Programs
- UC Berkeley CS 61A
- Programming by poking: why MIT stopped teaching SICP
- 第一轮将使用汉化版,第二轮原版 + 视频
- 持续进行中,lisp的认识、前缀表达式的认识,虽然很费时,但收获颇多
- 前三章感觉还能看懂一些,但到第四章尤其是数据库部分,就有点看不懂了,还有些急躁,也许今年,也许明年,静下心来再看看这部分
- 到第五章,开始讲寄存器和编译,感觉看的更急躁了,更加浮于表面,习题也几乎没做,感觉需静下心了,但初略看后,感觉这一章的收获依旧很多,还在进行,十一之后能完成。
- 之后再看看函数式编程相关的文章
- 编译原理也会提上日程
《数据结构与算法分析 Java语言描述》(finish)
- (表、图、树 )–(AVL树、红黑树、DSL、AA树、KMP算法)
- 这个与LeetCode上的算法相比,比较基础,且没有动态规划、位运算等部分,面向面试的算法学习还是要卷LeetCode才行。
✨《深入理解计算机系统》 CSAPP – Computer System : A Programmer’s Perspective
- UC Berkeley CS 61C CMU-15-213/15-513
- 已完成第一轮,第二轮预计原版 + 视频
- 处理器、内存、存储器、缓存、性能优化、IO、网络、汇编语言、C 语言、并发编程
- 寄存器的各种操作指令是一个挑战,第二轮前需要看看汇编语言相关的书籍
- 此书被各种推荐
《深入Java虚拟机》(finish)
- 由于JVM在1.6、1.7、1.8都有调整,需注意下实效性
- 只针对1.2版本,时效性不是很高,后续看看《深入理解Java虚拟机》
- 方法执行的出/入栈,并不是Java特有,学算法的时候,将x86的指令执行也是基于栈的,方法/函数栈
《深入理解Java虚拟机》(finish)
- 不负期待,这本的确很不错,并且基于Java 11 是学习JVM的不错的📚
《Java核心技术》(finish)
- 略去Swing和AWT部分,与Swing类似的是JavaFX
- Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。框架中进行了诸多的封装,为JavaWeb的开发提供了诸多的便利。
- Java核心技术从一个偏低层的角度介绍Java,理解了这些,可以更好的理解这些框架的低层及原理
《编译原理》(龙书)
《计算机网络:自顶向下方法》(finish)
- 应用层(应用层、表示层、会话层)、传输层、网络层、链路层、物理层. (七层 -> 一层)
- 这里讲的内容,与准备面试时看的内容,会有些差集存在
《算法》(第4版)(have bought the book)
《算法导论》
《C Primer Plus》
《Think in Java》(finish)
《设计模式:可复用面向对象软件的基础》(finish)
- 看的比较浅,后续回来再翻翻,并逐步用在项目中
- 收获还是不少的,后续看看C++的基础语法,这样能更好的理解里面的例子
《重构:改善既有代码的设计》(finish)
- 小步重构,每步进行Unit Test
《Java性能优化权威指南》(finish)
- 前面讲述了性能相关的影响因素及JVM,性能监控、性能分析、性能调优
《英语》(complete round 1)
- 词汇量、阅读、听力、口语
- 这是一个持续的过程,期待一年能有提升,并长期持续下去(只是投入时间会少一些)
- 耗时一年、完成round 1,收获不好说,但之后负担会轻一些
《高等数学》
《线性代数》
《概率论与数理统计》
《离散数学及其应用》
《汇编语言:基于x86处理器》
《计算机组成原理》(完成第一轮)
- 组成原理的确如传闻,比较难
- 如其名,主要讨论计算机各 大部件的基本组成原理 ,以及各大部件互连构成整机系统的技术,是其他课程的基础
- 跟着课程虽然慢,但效果远比干看书好,先看书预习->再看课程->再完成课后题
- 后续计划结合另一版的教材回顾
《操作系统导论》
- Berkeley CS 162
- 这个是最权威的书籍,有时间看一下
《操作系统概念》(恐龙书)
- 跟着视频过了一遍,后续有时间再看看教材,但还是先看 导论
《操作系统设计与实现》
《数据密集型应用系统设计》 Designing Data-Intensive Application – DDIA
- MIT 6.824
- https://vonng.gitbooks.io/ddia-cn/content/
- 结束第一轮,📖还不错,并且较虚无缥缈的高并发、分布式,讲的是更实际的内容。
- 后面会看看视频 MIT 6.824
《数据库系统概念》
- 这本也是经典
《C程序设计》(第五版)(finish)
- 这本是大学教材,通过这个来入门,感觉还可以
- 库函数并不是C语言的一部分
汇编语言的学习,至少寄存器相关要了解一下
《Go 语言圣经》
《人月神话》
C
- C只是入了门,了解了简单的语法
- 接下来看看 《C Primer Plus》
Kotlin
- Kotlin作为JVM Base的语言,有着许多Java很长时间内未有的Feature,从各种角度有了解的必要,并且依托Java的基础,学习曲线会平缓一些
- 当前已了解Basic Syntax & Coroutines,更深入的会视机会继续
Go
- 会学一下,但会放在24年,Sense of Basic Syntax
- https://github.com/0voice/Introduction-to-Golang
- 《Go 语言圣经》
ChatGPT
- 如何使用,如何发挥价值,当前用来答疑还是很不错的
- Copilot
Subject | Why study? | Book | Videos |
---|---|---|---|
Programming | Don’t be the person who “never quite understood” something like recursion. | Structure and Interpretation of Computer Programs | Brian Harvey’s Berkeley CS 61A |
Computer Architecture | If you don’t have a solid mental model of how a computer actually works, all of your higher-level abstractions will be brittle. | Computer Systems: A Programmer’s Perspective | Berkeley CS 61C CMU 15-213/15-513 |
Algorithms and Data Structures | If you don’t know how to use ubiquitous data structures like stacks, queues, trees, and graphs, you won’t be able to solve challenging problems. | The Algorithm Design Manual | Steven Skiena’s lectures |
Math for CS | CS is basically a runaway branch of applied math, so learning math will give you a competitive advantage. | Mathematics for Computer Science | Tom Leighton’s MIT 6.042J |
Operating Systems | Most of the code you write is run by an operating system, so you should know how those interact. | Operating Systems: Three Easy Pieces | Berkeley CS 162 |
Computer Networking | The Internet turned out to be a big deal: understand how it works to unlock its full potential. | Computer Networking: A Top-Down Approach | Stanford CS 144 |
Databases | Data is at the heart of most significant programs, but few understand how database systems actually work. | Readings in Database Systems | Joe Hellerstein’s Berkeley CS 186 |
Languages and Compilers | If you understand how languages and compilers actually work, you’ll write better code and learn new languages more easily. | Crafting Interpreters | Alex Aiken’s course on edX |
Distributed Systems | These days, most systems are distributed systems. | Designing Data-Intensive Applications by Martin Kleppmann | MIT 6.824 |
书名 | 计划 | 一轮 | 二轮 |
《Think in Java》/《On Java 8》 | 2020 | ||
《计算科学概论》 | 2020 | ||
《数据结构与算法分析》 | 2020~2021 | ||
🌟《深入理解计算机系统》/《CSAPP》 | 2024 | 2021 | |
《计算机网络:自顶向下方法》 | 2021 | ||
《Java核心技术》 | 2021 | ||
《深入Java虚拟机》/《深入理解Java虚拟机》 | 2022/2023 | ||
《算法(第4版)》 | |||
《设计模式》 | 2022 | ||
《Java性能优化权威指南》 | 2022 | ||
《重构》 | 2022 | ||
《C Primer Plus》 | |||
《408-数据结构》 | 2023 | ||
《408-操作系统》 | 2023 | ||
《408-计算机组成原理》 | 2022~2023 | ||
《408-计算机网络》 | 2023 | ||
🌟《计算机程序的构造与解释》/《SICP》 | 2023 | ||
《数据密集型应用系统设计》/《DDIA》 | 2023 | ||
《数据库系统概念》 | 2024 | ||
《领域驱动设计》/《DDD》 | 2023 |
The End of an Era