Chenhao

个人网站:https://coolshell.cn 《左耳听风》专栏:https://time.geekbang.org/column/intro/100002201

在《左耳听风》推荐的书单

学习前 #

编程入门 #

Python #

这两本书除了编程语法方面的讲述有所不同之外,其他都差不多,主要是通过书中的示例来强化你对编程的学习。第一本偏文本处理,包括处理 Word、Excel 和 PDF,第二本中有一些 Web 项目和代码部署方面的内容。如果可能的话,你可以把两本书中的示例都跑一遍。如果你时间有限的话,我推荐你看第二本。

JavaScript #

编程语言 #

Java #

不要迷失在那 23 个设计模式中,你一定要明白这两个原则:

  • Program to an ‘interface’, not an ‘implementation’
  • 使用者不需要知道数据类型、结构、算法的细节。
  • 使用者不需要知道实现细节,只需要知道提供的接口。
  • 利于抽象、封装,动态绑定,多态。符合面向对象的特质和理念。
  • Favor ‘object composition’ over ‘class inheritance’
  • 继承需要给子类暴露一些父类的设计和实现细节。
  • 父类实现的改变会造成子类也需要改变。
  • 我们以为继承主要是为了代码重用,但实际上在子类中需要重新实现很多父类的方法。
  • 继承更多的应该是为了多态。

如果你把上面的这些知识都融汇贯通的话,那么,你已是一个高级的 Java 程序员了,我保证你已经超过了绝大多数程序员了。基本上来说,你在技术方面是可以进入到一线公司的,而且还不是一般的岗位,至少是高级程序员或是初级架构师的级别了。

C/C++ 语言 #

Go #

数据库 #

关系型数据库 #

闭源:Oracle #

开源:MySQL #

操作系统入门 #

Linux #

Linux 教程 ,W3CSchool 上的在线教程

编程工具 #

Visual Studio Code #

Web 编程入门 #

前端基础 #

MDN 的相关的技术文档,文档很大,你要学习的并不是所有的东西,而是了解 CSS 和 HTML 是怎么相互作用来展示数据的,然后,不用记忆文档中的内容,这两个文档是用来查找知识的

后端基础 #

学习要点: #

  • 学习 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),再到数据库。这其中需要你查阅很多的知识。

这里有几个技术点你需要关注一下。

  1. 用户登录时的密码不应该保存为明文,应该用 MD5+Salt 来保存(关于这个是什么,希望你能自行 Google)。
  2. 用户登录后,对于用户自己的贴子可以有“重新编辑”或 “删除”的功能,但是无权编辑或删除其它用户的贴子。
  3. 数据库的设计,你需要三张表:用户表、文章表和评论表,它们之间是怎么关联的,你需要学习一下。这里有个 PHP 的 blog 教你怎么建表,你可以 前往一读

如果你有兴趣,你可以顺着这个小项目,研究一下下面这几个事。

  • 图片验证码。
  • 上传图片。
  • 阻止用户在发文章或评论时输入带 HTML 或 JavaScript 的内容。
  • 防范 SQL 注入。参看PHP 官方文档微软官方文档 ,或者你自己 Google 一下。

上面这些东西,不是什么高深的东西,但是可以让你从中学到很多。相信你只需要自己 Google 一下就能搞定。

理论学科 #

数据结构与算法 #

如果能够把这些算法能力都掌握了,那么你就有很大的概率可以很容易地通过这世界上最优的公司的面试,比如:Google、Amazon、Facebook 之类的公司。对你来说,如果能够进入到这些公司里工作,那么你未来的想像空间也会大很多。

理论学习 #
  1. 基础:
  2. 理论加持:
    • 算法导论 》 美国计算机科学本科生的教科书。
  3. 思维改善:
    • 编程珠玑 》经典的算法书,其中都是一些非常实际的问题,并以其独有的洞察力和创造力,来引导读者理解并学会解决这些问题的方法,也是一本可以改善你思维方式的书。
训练 #
其他 #

优秀设计的聚集地 #

  • Awwwards ,这个网站给一些设计得不错网站的评分,在这里你可以看到很多设计不错的网站。
  • One Page Love ,就是一个单页的网页设计的收集。
  • Inspired UI (停止运营),移动 App 的设计模式。
  • Behance ,这个地言有很不错的很有创意的作品。
  • Dribbble ,这应该是设计师都知道也都爱去的网站。除了你可以看到一些很不错的作品外,你还可以在这里看到很多不错的设计师。
  • UI Movement (停止运营),也是个设计的收集网站,上面有很多很不错的 UI 设计,大量的动画。虽说会像抖音一样,让你不知不觉就看了好几小时,但是它比抖音让你的收获大多了。

更新于: 2023 年 8 月 30 日