书籍推荐
这个书单我在不断更新。有一些书名头响亮,有一些书写得精彩,但未必值得推荐。我只推荐觉得特别精彩、很有帮助且颇有推荐价值的书。
- 《Thinking C++》:由浅入深,其他不解释,虽然工作以后一直不写 C++代码,不过这本书的影响一直存在。
- 几本 “effective” 的书:《Effective C++》《Effective STL》《Effective Java》。从原理上面入手,这些书对于赋予一个良好的代码习惯颇有助益。
- 《JSP2.0 技术手册》和 《Spring 2.0 技术手册》:前者是我在大学时期刚开始学 JavaEE 的时候看的书,用来入门最好了。后者也是我学习 Spring 没多久后看的书,二者都包含很多例子,适合在系统阅读以后按需翻阅查询参考。
- 《jQuery 实战》:对于当时的我来说,JavaScript 入门不久,而 jQuery 也是初涉疆场,它作为描述详尽的一本书,很适合阅读学习,之后可以放在手边查阅。
- 《Grails 权威指南》:拿这本书学习 Grails 是最好的了,这也是国内最早的一批 GoG 的图书。当时我也是 Groovy 中国论坛的总斑竹,书的译者之一在它的学习上面给了我不少帮助。
- 《Head First 设计模式》:学习设计模式看这本书入手比那本 Gang of 4 的经典图书要实用得多,行文极其浅显易懂,例子很有趣和幽默。至今我都认为,许多艰深的经典书籍,空有名声而已,即便能把道理阐述,但是如果不清不楚、无法消化,实在是弊大于利的。
- 《从一到无穷大》:科学中的事实和臆测:科学,特别是数学方面,开阔眼界和理性思维的启蒙读物。
- 《Unix 编程艺术》:了解 Unix 的发展史,了解一些至今影响着软件设计的 Unix 设计思想。从中我可以看到,当今的软件设计,处处透露着 Unix 的影子。
- 《计算机网络》:是谢希仁的书,很多大学都拿来做教材了。我的网络基础就是从这本书开始打下的。作为软件工程师,网络基础务必打扎实。在毕业以后几年,我还经常翻出来温故知新。
- 《算法导论》:书是挺厚的,但是对于想系统了解算法的人来说再合适不过了,问题的描述和解析都非常详尽。对于已经有一定算法基础的人来说,确实不需要每个章节都阅读,但是依然需要耐心。不过正如书名,这本书阅读之后,再去阅读算法的进阶书籍。
- 《浪潮之巅》:了解 IT 产业进化史,了解 IT 各大公司潮起潮落的好书,很大气,我很喜欢。
- 《白帽子讲 web 安全》:系统了解互联网安全,实战的好书。
- 《七周七语言:理解多种编程范型》:了解几种编程范型的好书,有介绍,也有实践。我也是因为看了这本书才去接触 Io 语言的。
- 《Rework》:整本书都在宣扬 37Signals 的价值观,我很喜欢。你可以看看我总结的这个摘录。后来有一本类似风格的书,叫做《Remote》,我看的是电子版。
- 《数学之美》:适合我这种数学基础不很优秀的程序员。如果你觉得数学乏味,那多半是教材和老师的问题,不是你的问题。有些遗憾的是这个道理直到我工作几年后才懂得。
- 《深入理解 Java 虚拟机》:很实战,中文的 JVM 介绍的书本来也没几本,还有一本是 《深入 Java 虚拟机》,出了好几个版本,我看的是第二版,现在好像都没得卖了。
- 《大败局》:目前有 I 和 II。了解中国的经济和企业,这本书非常值得推荐。故事很精彩,有句话说得好,成功的人总是不一样的,但是失败的人你总能总结出一些共性。相比于各种成功学和心灵鸡汤,看这些失败的企业案例很有触动。
- 《Hadoop In Action》:学习 Hadoop 正儿八经看的第一本书,我当时看的是电子版。另外,这本书已经出过若干个版本了,看的时候记得找最新的,因为 Hadoop 的版本也在升级。
- 《Java 并发编程实战》:原著是《Java Concurrency in Practice》,基本是最好的系统介绍 Java 并发的书了。
- 《代码的未来》:松本行弘的大作,书名有点标题党,但是 Go/Dart/CoffeeScript/Lua……对于了解各种各样的程序语言和编程范式大有裨益。他还有一本出得更早的书,我也看了,叫做《松本行弘的程序世界》,讲的内容比较杂,但是对我来说,最大收获是介绍的一些编程范型。
- 《思考的乐趣》:非常喜欢的一本介绍数学的书,都是很有乐趣的问题,有许多问题的证明简直让人拍案叫绝。有一些过往的疑惑得到了解答和串联。国庆期间看完了这本书,再次感慨,数学真的太有意思了。另,作者的网站在这里。
- 《Don’t Make Me Think》:产品设计的必读图书,也有中文版卖。这本书的最大好处在于篇章短小而且图文并茂,每看一小点都会有思考,很适合零散时间阅读和思考。
- 《大型网站技术架构:核心原理与案例分析》:这本书其实对如今的我来说其实没有太多新东西,但是很系统,帮我回顾和整理了这些知识。
- 《大数据时代:生活、工作与思维的大变革》:科普大数据用,视野宽阔。非程序员也可以看得懂。
- 加来道雄的两本物理学科普书籍:《超越时空:通过平行宇宙、时间卷曲和第十维度的科学之旅》和《物理学的未来》,加来道雄是最好的物理学科普作家。对物理的了解是兴趣使然,读书的时候就很喜欢。
- 《J2EE Development without EJB》:这本书看得比较早了,但是里面有很多观点我还记忆犹新。对于刚接触 JavaEE 的程序员来说,这本可以说是必读书。
- 《时间简史》和 《果壳中的宇宙》,这两本书都是史蒂芬·霍金的大作,也都是吴忠超翻译的版本,倘若你和我一样对天体物理和宇宙论之类的东西感兴趣,你一定读过它们。虽说图文并茂,但是很多内容理解起来都很不容易。
- 《大规模分布式存储系统: 原理解析与架构实战》:这本书是我了解和学习分布式存储的正儿八经的第一本书,作者是阿里巴巴的工程师。有的部分看了几遍,因为并不好懂,但是整本书尤其是前半部分还是非常具有知识普及价值的,对于学习分布式没多久的同学可以买下来阅读,碰到行文简略的部分自己再上网去找资料。
- 《全世界人民都知道》,李承鹏(大眼)的杂文集,在中国我不喜欢谈论那些敏感话题,但是也有例外。最近这几年,我想我们比任何时候都更想看清人和尊严,看清这个国家和民族。
- 《Learning Spark: Lightning-Fast Big Data Analysis》,详细的 Spark 入门读物,我学 Spark 的第一本书。
- 《上帝掷骰子吗——量子物理史话》,最好的量子物理历史科普书籍,关于科学历史的书其实不多。当然,主要是讲历史,其次才是科普。
- 《Java 性能优化权威指南》,比较系统地介绍 Java 性能优化的各个方面,而且很务实。
- 《腾讯传》,吴晓波写的经济书籍总是让我这样的外行很有兴趣阅读。这本书里面最精彩的部分,是了解腾讯怎样在这个互联网野蛮生长的国度,和各种各样的对手,用怎样的手腕和技巧,斗争、革命,并生存下来,发展壮大。要读懂中国互联网,不读腾讯是不行的。
- 《JavaScript 异步编程:设计快速响应的网络应用》,整本书只有一百页多一点,但是是对 JavaScript 异步编程很好的指导性书籍。好书不一定厚,边查资料边阅读,这本我看了两遍。
- 《那些古怪又让人忧心的问题》,这本书讲的是那些奇思妙想的问题,用 “正儿八经” 的幽默和科学的方式解读。就像机器猫里面的 “假如” 电话亭,涉及面很广,其中总有一些内容让你感觉眼前一亮 。
零散资源
系统
- GitHub project: system-design-interview; How to answer a system design question: link
- In-Process Caching vs. Distributed Caching
- Visual Guide to NoSQL Systems
- Distributed systems: for fun and profit
- NoSQL 数据库笔谈
- select / poll / epoll: practical difference for system architects
- Layers vs. Tiers
- Papers, more are here:
- TCP State Machine,另一个版本:TCP connection status
- 分布式系统的事务处理
- Top 5 Mistakes to Avoid When Writing Apache Spark Applications
- Turning the Tables on Disk I/O, Oracle SQL tuning – Tune individual SQL statements
- A Distributed Systems Reading List
- The Availability Digest Article Archive
- 缓存更新的套路
- Difference between binary semaphore and mutex
- What is the difference between a process and a thread?
- Scalability Availability Stability Patterns
- Scalable Web Architecture and Distributed Systems
- System Design Study Group
- 分布式系统领域经典论文翻译集
- High Scalability – All Time Favorites
- Optimizing web servers for high throughput and low latency
- System Design Interview:YouTube 的频道,里面有针对多个典型系统类型的系统设计
- 微信 “揭秘” 文章:微信朋友圈技术之道:三个人的后台团队与每日十亿的发布量,从无到有:微信后台系统的演进之路
- 如何打造千万级 Feed 流系统
- 微博平台分布式存储系列–Sharding With Mysql(上)
- GFS — 取舍的艺术
- 分布式系统学习资料
平台、框架和库
- Tuning Spark
- Cassandra partition key, composite key 和 clustering key 的区别
- Spring annotations cheat sheet
- Alexey Grishchenko: Spark Architecture, Spark Architecture: Shuffle, Spark Memory Management
- Comparison between 4 actor frameworks
- WSL vs Cygwin
- Hyper-V vs WSL2
- Understanding Docker Storage Drivers: Choosing the Right Option for Your Needs
- 【译】从零开始编写一个时序数据库(原文找不到了)
设计
前端
- Angular: “Thinking in AngularJS” if I have a jQuery background?, Angular-Design-Patterns-Best-Practices, Anti Patterns
- slides comparing ngRoute to ui-router
- Best Practices for Speeding Up Your Web Site
- Browser compatibility: ECMAScript compatability table, Can I use…
- jQuery Cheatsheet
- Text Escaping and Unescaping in JavaScript
- Graphism.fr: interesting games for designers
- jQuery 中的 bind(), live(), on(), delegate()
- A comparison of the two-way binding in AngularJS, EmberJS and KnockoutJS by Marius Gundersen
- Is Angular.js or Ember.js the better choice for JavaScript frameworks?
- Flux Comparison by Example
- React/Flux/Redux Pros, Cons, and Discussion
- React Examples
- ECMAScript 6 Features
- ECMAScript 6,让我们启程吧
- Getting Started with Redux
- Awesome Redux
编程语言
- Haskell 趣学指南,Haskell 之难,难于上青天,相较而言,我觉得它是化繁为简,最好的 Haskell 上手读物
- adit.io,有不少关于 Haskell 的漫画
- 悟透 JavaScript,对于要修行 JavaScript 的初级程序员来说,强烈推荐
- 论面向组合子程序设计方法,里面对 log 对象面向组合子的设计这个例子,写得太好了
- The principal programming paradigms,编程范型一览
- Programming languages,Git Hub 上各种编程语言的 show case
- A Scala Tutorial for Java Programmers,像我这种多年 Java 经验的上手 Scala,看这个就好了,一边比较,一边熟悉。配套还有这个,Scala for Java programmers – Joakim Ohlrogge & Enno Runne,Youtube 上的视频,很直观
- Scala Functions vs Methods, Difference between method and function in Scala
- Coroutine vs Continuation vs Generator
- regular expressions cheat sheet
- java8 best practices cheat sheet
- java8 streams cheat sheet
- Python Anti-Patterns
- Kotlin: let, run, with, apply, and also (another link)
算法
- Cracking the coding interview– 问题与解答
- KHAN ACADEMY
- 背包问题九讲
- 几个图的基本算法:
- 最小生成树:Prim、Kruskal;
- 最短路径:Dijkstra、Bellman-Ford、Floyd–Warshall、A*;
- Big-O Cheat Sheet
- 数据结构 – 哈夫曼树
- Data Structure Visualizations:一些常见的算法都有动态的动画效果,这个很厉害。
- Tarjan 算法:Tarjan 算法:求解图的割点与桥(割边)
综合
- free-programming-books
- Awesome:各种 “awesome” 的项目、技巧、教程,有名的无名的,都有
- Xah Code:各种颇有价值的教程
- Oh My Zsh
- GIT CHEAT SHEET
- YUM COMMAND CHEAT SHEET
- SQL cheat sheet
- Most Important Penetration Testing commands Cheat Sheet for Linux Machine
- other cheat sheets
- vi Editor “Cheat Sheet”
- Vim Cheat Sheet for Programmers
- Eclipse Shortcuts
- Bourne shell idioms
- The Art of SLOs (Participate Handbook)
看到记忆钢琴键位和五线谱会心一笑
发现火哥的大火山,以后得多来看看
博主地方内容丰富。报告个错别字 Hadoop in Action 这段中 “这本书已经出国若干个版本了” 应做 这本书已经出过若干个版本了
居然看了这么多书,膜拜中。。。差距不是一天两天形成的啊
有理想 有抱负 , 火哥好
贵站做的也是站群?小站群啊。学习了。不过我编程有点弱。
惭愧,我是平庸的工作多年的码农,虽然也装模作样弄了个自己的博客,但技术水平很不值得一提,看到你的博客,订阅了,坚持学习
您好,看了您几篇文章,非常的受教!非常感谢!
可以和贵站叫唤个友情链接吗