Chenhao
个人网站:https://coolshell.cn 《左耳听风》专栏:https://time.geekbang.org/column/intro/100002201
在《左耳听风》推荐的书单
学习前 #
编程入门 #
Python #
这两本书除了编程语法方面的讲述有所不同之外,其他都差不多,主要是通过书中的示例来强化你对编程的学习。第一本偏文本处理,包括处理 Word、Excel 和 PDF,第二本中有一些 Web 项目和代码部署方面的内容。如果可能的话,你可以把两本书中的示例都跑一遍。如果你时间有限的话,我推荐你看第二本。
JavaScript #
- MDN JavaScript 教程 ,你可以认为这是最权威的 JavaScript 官方教程了,从初级到中级再到高级。
- W3School JavaScript 教程 ,这个教程比较偏 Web 方面的编程。
- JavaScript 全栈教程(廖雪峰) ,这是廖雪峰的一个比较偏应用的教程,也是偏 Web 方面的编程,同时包括涉及后端的 Node.js 方面的教程。
编程语言 #
Java #
- 入门:《Java 核心技术:卷 1 基础知识 》
- 框架:《Spring 实战 》和《Spring Boot 实战 》
- 进阶:
- 如何编写高效的代码:《Effective Java 》(第三版)
- Google Guava 库
- 编写并发程序:《Java 并发编程实战 》
- 优化 Java 的性能:《Java 性能权威指南 》
- 底层细节:《深入理解 Java 虚拟机 》
- 宏观角度了解 Java:《Java 编程思想 》
- 《精通 Spring 4.x 》
- 面向对象的设计模式,只有一本经典的书:《设计模式 》
- 如果太难:《Head First 设计模式 》
不要迷失在那 23 个设计模式中,你一定要明白这两个原则:
- Program to an ‘interface’, not an ‘implementation’
- 使用者不需要知道数据类型、结构、算法的细节。
- 使用者不需要知道实现细节,只需要知道提供的接口。
- 利于抽象、封装,动态绑定,多态。符合面向对象的特质和理念。
- Favor ‘object composition’ over ‘class inheritance’
- 继承需要给子类暴露一些父类的设计和实现细节。
- 父类实现的改变会造成子类也需要改变。
- 我们以为继承主要是为了代码重用,但实际上在子类中需要重新实现很多父类的方法。
- 继承更多的应该是为了多态。
如果你把上面的这些知识都融汇贯通的话,那么,你已是一个高级的 Java 程序员了,我保证你已经超过了绝大多数程序员了。基本上来说,你在技术方面是可以进入到一线公司的,而且还不是一般的岗位,至少是高级程序员或是初级架构师的级别了。
C/C++ 语言 #
- 入门
- 《C 程序设计语言 》
- 《C 语言程序设计现代方法 》
- 进阶
- 《C 陷阱与缺陷 》
- 转向 C++
- C++ 的坑真的多吗?
- 《C++ Primer 中文版 》:主要看:面向对象的多态,模板和重载操作符, STL。看看 C++ 是怎么玩泛型和函数式编程的。
- 《Effective C++ 》和《More Effective C++ 》:这两本书的内容会随着你经历的丰富而变得丰富,这也是对我影响最大的两本书,其中影响最大的不是书中的那些 C++ 的东西,而是作者的思维方式和不断求真的精神,这真是太赞了。
- 编译器到底干了什么事:《深度探索 C++ 对象模型 》
Go #
-
“GO 语言简介(上)- 语法 ” 和 “GO 语言简介(下)- 特性 ”
-
Effective Go :如何更好地使用 Go 语言,以及 Go 语言中的一些原理。
-
并发编程的模式:
Unix 老牌黑客罗勃·派克(Rob Pike)在 Google I/O 上的两个分享
-
其他资源
-
Go 资源列表 Awesome Go
数据库 #
关系型数据库 #
闭源:Oracle #
- 《Oracle Database 9i/10g/11g 编程艺术 》:必读的书。这本书的作者是 Oracle 公司的技术副总裁托马斯·凯特(Thomas Kyte),世界顶级的 Oracle 专家
开源:MySQL #
-
官方 PPT
-
《高性能 MySQL 》: MySQL 领域的经典之作
-
内部原理:
-
数据库的索引设计和优化:《数据库的索引设计与优化 》
-
相关文章
操作系统入门 #
Linux #
Linux 教程 ,W3CSchool 上的在线教程
编程工具 #
Visual Studio Code #
Web 编程入门 #
前端基础 #
MDN 的相关的技术文档,文档很大,你要学习的并不是所有的东西,而是了解 CSS 和 HTML 是怎么相互作用来展示数据的,然后,不用记忆文档中的内容,这两个文档是用来查找知识的
后端基础 #
- W3School 的 PHP 教程
- PHP 的官网文档 作为更全的文档来学习或查找相关的技术细节
学习要点: #
- 学习 HTML 基本语法。
- 学习 CSS 如何选中 HTML 元素并应用一些基本样式。
- 学会用 Firefox + Firebug 或 Chrome 查看你觉得很炫的网页结构,并动态修改。
- 在一台 Linux 机器上配置 LEMP - Ubuntu/Nginx/PHP/MySQL 这个环境。
- 学习 PHP,让后台 PHP 和前台 HTML 进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
- 把 PHP 连接本地或者远程数据库 MySQL(MySQL 和 SQL 现学现用够了)
实践项目 #
无论你用 Python,还是 Node.js,还是 PHP,我希望你能做一个非常简单的 Blog 系统,或是 BBS 系统,需要支持如下功能:
- 用户登录和注册(不需密码找回)。
- 用户发贴(不需要支持富文本,只需要支持纯文本)。
- 用户评论(不需要支持富文本,只需要支持纯文本)。
你需要从前端一直做到后端,也就是说,从 HTML/CSS/JavaScript,到后面的 PHP(Python/Node.js),再到数据库。这其中需要你查阅很多的知识。
这里有几个技术点你需要关注一下。
- 用户登录时的密码不应该保存为明文,应该用 MD5+Salt 来保存(关于这个是什么,希望你能自行 Google)。
- 用户登录后,对于用户自己的贴子可以有“重新编辑”或 “删除”的功能,但是无权编辑或删除其它用户的贴子。
- 数据库的设计,你需要三张表:用户表、文章表和评论表,它们之间是怎么关联的,你需要学习一下。这里有个 PHP 的 blog 教你怎么建表,你可以 前往一读 。
如果你有兴趣,你可以顺着这个小项目,研究一下下面这几个事。
上面这些东西,不是什么高深的东西,但是可以让你从中学到很多。相信你只需要自己 Google 一下就能搞定。
理论学科 #
数据结构与算法 #
如果能够把这些算法能力都掌握了,那么你就有很大的概率可以很容易地通过这世界上最优的公司的面试,比如:Google、Amazon、Facebook 之类的公司。对你来说,如果能够进入到这些公司里工作,那么你未来的想像空间也会大很多。
理论学习 #
- 基础:
- 理论加持:
- 《算法导论 》 美国计算机科学本科生的教科书。
- 思维改善:
- 《编程珠玑 》经典的算法书,其中都是一些非常实际的问题,并以其独有的洞察力和创造力,来引导读者理解并学会解决这些问题的方法,也是一本可以改善你思维方式的书。
训练 #
其他 #
- List of Algorithms 罗列了非常多的算法,可以当成一个算法字典,或是用来开阔眼界。
- Data Structure Visualizations 数据结构动画图的网站
优秀设计的聚集地 #
- Awwwards ,这个网站给一些设计得不错网站的评分,在这里你可以看到很多设计不错的网站。
- One Page Love ,就是一个单页的网页设计的收集。
- Inspired UI (停止运营),移动 App 的设计模式。
- Behance ,这个地言有很不错的很有创意的作品。
- Dribbble ,这应该是设计师都知道也都爱去的网站。除了你可以看到一些很不错的作品外,你还可以在这里看到很多不错的设计师。
- UI Movement (停止运营),也是个设计的收集网站,上面有很多很不错的 UI 设计,大量的动画。虽说会像抖音一样,让你不知不觉就看了好几小时,但是它比抖音让你的收获大多了。
更新于: 2023 年 8 月 30 日