知识重要吗?
程序员这个工种有一个特别有趣的现象:基础知识就是区分它们水平高低的分水岭。
像我虽曾在课堂上学习:“程序=数据结构+算法”,却多年从事“中小型WEB开源程序二次开发”,在我的职业生涯中,“程序=数组+业务逻辑(还经常被产品经理改来改去)”。我想起那天夕阳下的奔跑,追忆自己人生算法和数据结构知识的最巅峰,是在准备电话面试的那一天,那是我逝去的青春。
程序员这个准入门槛可能只比产品经理略高一点的职业,最终决定境界高低的却是这门学科最基础最基础的入门课程。因为以很多人工作内容的简单程度之低,还根本谈不到用基础知识的地步。
推荐三本书:
MAW的C语言版是传世之作,JAVA版也是篇篇珠玑,虽然翻译是唯一槽点。
比大部头的《算法导论》薄一点,也许催眠效果会稍微好一点(自欺欺人的假设)

可以像小说一样读的计算机神作读一本少一本,大家且读且珍惜吧。
亲爱的朋友,你肯定不愿意写一辈子业务逻辑吧!
你每天还在学习吗?
快资讯时代,如何有效的收集和整理知识?是我长久以来思考的一个问题。下图是我最近总结的一套模式,希望对大家有所帮助。

按顺时针方向包括四个维度:来源、收集、整理、保管
知识来源
选择的四个网站其实都算是内容聚合或者西为中用的网站。
我最喜欢的是“开发者头条”,从刚开始的邮件推送,到现在的APP版,体现着一个认真做事的小团队从零到壹踏实做事的理想主义。掘金网和它类似,都是当日技术圈好文聚合。
ImportNew更偏重于Java基础,编辑尤其会取标题,类似《Java堆外内存使用详解》《Java内部类final语义实现》,好像是在告诉你:“不收藏不是程序员”。但有些文章点进去会觉得有点浅尝辄止,我一般用来检阅自己的Java基础知识,保障做到看到标题能明白文章要讲什么的程度。
并发编程网,内容会比它的名称宽泛一点,但主要还是集中并发编程领域。并发编程作为Java程序面试中压箱底的三驾马车之一,一般属于程序员想学但实际不学的圣之领域。还是那句话,以我们大多数人工作的简单程度之发指,根本用不到并发编程。
博客推荐我个人比较喜欢的两个,江南白衣(非常文艺)和云风(真大神)。
现在公众号也已经是一种非常重要的知识来源,推荐我最近看的比较多的美团、携程(口味就是这么独特。我一直觉得携程的技术分享还挺真诚的)和中生代技术。
欢迎大家留意补充更多更好的知识来源。
(由于微信公众号禁止使用外链,我会在文末统一给出文中提到的资源的正确打开方式)
知识收集
我用的最多的就是有道云笔记的网页简报,实现方式是在Chrome的书签栏中生成一个“收藏到有道云笔记”的快捷方式,点击一下就能将当前网页自动提取正文保存到有道云笔记。
我每天早上花10到15分钟时间,快速浏览上文提到的网站和博客资源,极速扫描标题、配图和文章大义,感觉是干货就迅速收集到有道云笔记,以供日后整理。
GistBox Clipper和云笔记的网页简报功能类似,不过更偏向于代码code或者markdown文档,能自动识别出当前网页的<pre>块,然后能自动保存到基于Gist的GistBox下(后文讲述知识保管时会简单介绍Gist)。我个人用的不多,不习惯将还未经精心编辑的内容纳入知识保管模块。
由于微信Mac客户端已经支持查看收藏,所以微信收藏在整理下也比较方便,适合用来收藏微信公众号。
知识整理
重点推荐两款工具,在同类型的工具里,这两款工具做到了:“未来的软件、本质的软件、高维的软件”。
Markdown文档撰写工具:Typora
像写Word文档一样写所见即所得的Markdown文档,这才是我心目中真正的md文档编辑器的样子。相比之下神器Ulysess也要被它按在地上摩擦。配合iPic插入图片的体验,简直爽到飞起。如果硬要说有什么缺点的话:一,它是免费的。二,没有云端同步功能。(但也保证了功能的纯粹性,咱又不是笔记型应用)
把云笔记里各种杂乱格式的文章整理成美观、容易分享的md文档,因为有Typora,变成了一种享受。
思维导图工具:MindNode
有很多软件,使用的体检就像用刀子和叉子,而有一种软件,是在用筷子。我在用过MindNode之后,已经完全忘记其它思维导图软件是怎么用的,也觉得世界上只应该有这样一种思维导图软件。作为收费软件,支持iCloud同步,三端齐全,完美,无懈可击。
WenTu是一款在线制作数据报表的网站,可以制作美观的数据可视化图表。我在知乎的一篇“疑似软文”的文章中看见的,自己没有用过,但考虑到可能有人有这方面的需求,简单列在这里,是否好用,大家自行判断。
知识保管
先要非常痛心的控诉GFW,堪称神器的Dropbox和Gist只能翻墙使用。
好在国内现在iCloud Drive服务还算好用,付费之后,也可以存更多照片,我现在已经拿来替代Dropbox,将有道云笔记上某个Tag下的多篇文章在Typora里整理好,保存在iCloud里用于同步,iPhone和Mac上都非常方便的查阅。
唯一遗憾的是不提供文件版本历史查看的高级功能,不能像SVN或者Git一样追查某篇文档每次commit的diff情况。
本来全球最大男性交友网站Github提供的代码片段和小文档保存服务Gist是解决这一遗憾的最好方式。支持你能想到的所有代码类型文件和Markdown文件,能享受Git的一切功能便利。在国内不翻墙不能用。残念。
好在不翻墙的情况下,可以使用GistBox服务,由于Gist本身的服务比较简单,GistBox在它的基础上封装了常用功能,还加上非常重要的tag和retrieve功能,无需翻墙使用,Github账号直接登录,非常好用。
我现在把一些中间态的文档,即可能需要跨天长期编辑长期修改的文档,和一些实现特定功能和算法的代码,都放在GistBox上,最终整理完毕之后,也可以查阅各个版本的修改情况,回顾下知识的梳理过程。
资源链接
大家在pc上手动打开这个链接 [dwz.cn/resources008] ,或者本公众号点击“阅读原文”,都可以查看带资源链接的文档版本。拖到底部,自取所需吧。
下集预告
《如何阅读开源代码?》
用心写一些Java后台开发的干货,偶尔也会吐槽。




