我的书单(Book List)
code[class*="language-"],
pre[class*="language-"] {
background-color: #fdfdfd;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
margin-bottom: 1em;
}
:not(pre) > code[class*="language-"] {
position: relative;
padding: .2em;
-webkit-border-radius: 0.3em;
-moz-border-radius: 0.3em;
-ms-border-radius: 0.3em;
-o-border-radius: 0.3em;
border-radius: 0.3em;
color: #c92c2c;
border: 1px solid rgba(0, 0, 0, 0.1);
display: inline;
white-space: normal;
}
pre[class*="language-"]:before,
pre[class*="language-"]:after {
content: '';
z-index: -2;
display: block;
position: absolute;
bottom: 0.75em;
left: 0.18em;
width: 40%;
height: 20%;
max-height: 13em;
-webkit-box-shadow: 0px 13px 8px #979797;
-moz-box-shadow: 0px 13px 8px #979797;
box-shadow: 0px 13px 8px #979797;
-webkit-transform: rotate(-2deg);
-moz-transform: rotate(-2deg);
-ms-transform: rotate(-2deg);
-o-transform: rotate(-2deg);
transform: rotate(-2deg);
}
:not(pre) > code[class*="language-"]:after,
pre[class*="language-"]:after {
right: 0.75em;
left: auto;
-webkit-transform: rotate(2deg);
-moz-transform: rotate(2deg);
-ms-transform: rotate(2deg);
-o-transform: rotate(2deg);
transform: rotate(2deg);
}
.token.comment,
.token.block-comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #7D8B99;
}
.token.punctuation {
color: #5F6364;
}
.token.property,
.token.tag,
.token.boolean,
.token.number,
.token.function-name,
.token.constant,
.token.symbol,
.token.deleted {
color: #c92c2c;
}
.token.selector,
.token.attr-name,
.token.string,
.token.char,
.token.function,
.token.builtin,
.token.inserted {
color: #2f9c0a;
}
.token.operator,
.token.entity,
.token.url,
.token.variable {
color: #a67f59;
background: rgba(255, 255, 255, 0.5);
}
.token.atrule,
.token.attr-value,
.token.keyword,
.token.class-name {
color: #1990b8;
}
.token.regex,
.token.important {
color: #e90;
}
.language-css .token.string,
.style .token.string {
color: #a67f59;
background: rgba(255, 255, 255, 0.5);
}
.token.important {
font-weight: normal;
}
.token.bold {
font-weight: bold;
}
.token.italic {
font-style: italic;
}
.token.entity {
cursor: help;
}
.namespace {
opacity: .7;
}
@media screen and (max-width: 767px) {
pre[class*="language-"]:before,
pre[class*="language-"]:after {
bottom: 14px;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
}
.token.tab:not(:empty):before,
.token.cr:before,
.token.lf:before {
color: #e0d7d1;
}
pre[class*="language-"].line-numbers {
padding-left: 0;
}
pre[class*="language-"].line-numbers code {
padding-left: 3.8em;
}
pre[class*="language-"].line-numbers .line-numbers-rows {
left: 0;
}
pre[class*="language-"][data-line] {
padding-top: 0;
padding-bottom: 0;
padding-left: 0;
}
pre[data-line] code {
position: relative;
padding-left: 4em;
}
pre .line-highlight {
margin-top: 0;
}
pre.line-numbers {
position: relative;
padding-left: 3.8em;
counter-reset: linenumber;
}
pre.line-numbers > code {
position: relative;
}
.line-numbers .line-numbers-rows {
position: absolute;
pointer-events: none;
top: 0;
font-size: 100%;
left: -3.8em;
width: 3em; /* works for line-numbers below 1000 lines */
letter-spacing: -1px;
border-right: 1px solid #999;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line-numbers-rows > span {
pointer-events: none;
display: block;
counter-increment: linenumber;
}
.line-numbers-rows > span:before {
content: counter(linenumber);
color: #999;
display: block;
padding-right: 0.8em;
text-align: right;
}
-->
下面列了我读过的一些编程相关的书籍,写了一些对书的印象,都是个人观点。书名后是我个人对书的推荐强烈度打的分(5分满分),都是拍脑袋打的。
我比较习惯读纸质书,买书也比较谨慎,踩的坑少(围笑),分打得可能比较高一些。
操作系统
《Linux内核设计与实现》5分:全书都在讲 Linux 内核的设计思想,实现并不多,作为操作系统的入门书非常适合。没有很多复杂的接口,思想也容易理解。对我个人来说,解开了我很多对操作系统运行的疑惑,也对编程很有借鉴意义。建议对操作系统不清楚的早读这本书。(2018)
《Unix环境高级编程》4分:著名的 APUE,编程刚入门时看的,当时没什么基础,详细内容忘得差不多了,印象很深的就是文件操作接口的参数很多。书里介绍了很多操作系统常用接口,新手可以大概看一遍对系统提供的接口有个印象。我准备再读一遍。(2016)
《Unix网络编程 卷二 进程间通信》5分:把 UNP 放在这里是因为卷二讲了很多系统内部的 IPC,一直在用的 unix domain sockets 是真神器,推荐后端工程师一定要看这本书。(2016)
《深入理解计算机系统》3分:好像是一本用来作课本的书,全书确实讲了整个计算机系统,以操作系统为界分为上中下三篇,上篇讲操作系统以下,包括计算机体系结构、机器级的信息和存储体系等(略翻过的,看得有点懵),中篇讲操作系统的进程及内存管理,下篇则偏向于操作系统之上的内核接口和并发编程的相关知识。比较佩服用本书作课本的学校,一本书讲了我们四本书的知识。但总的来说,收获不大,上篇对程序员透明可以不多作过多了解,中篇不如《Linux内核设计与实现》全面,下篇则不如《Java并发编程实战》和《UNP》等书,全而不精,不太推荐看。(2017)
《性能之巅》5分:著名性能大神 Brendan Gregg 的大作,600 页的大部头,不过作为非原理性书籍,知识点并不“深奥”。这本书从内存、CPU、网络等各个方面总结了排查性能问题的方法,由名词概念到 Linux 命令再到结果分析,把原本非常散乱的知识系统化了。排查性能问题之前,如果读过这本书,应该会少走很多弯路。(2019)
《树莓派开始,玩转Linux》3分:由《协议森林》关注了作者。买这本书因为看目录觉得从硬件到系统讲得都很全,到手之后发现知识点全则全矣,深度却不够,像系统中极重要的”虚拟内存”的概念,本书只介绍了两三页,由于我之前对系统知识有了一定的了解,所以会觉得收获不够。不过算是很系统的书了,适合系统初学者读,对我来说,等玩起树莓派后可以作为工具书。(2018)
网络
《TCP/IP详解 卷一》5分:从链路层到传输层把各种网络协议都介绍了一遍,TCP 的各种实现也讲得非常细,新手可以略翻一下理解一下网络。对应用层协议熟悉了之后再回过来仔细读一下本书。(2016)
再读:4分 又带着一些问题更深入细节翻了一遍,对比看过的各种博客,细节上不输,全局观上更是完胜,只是少了些开发中的具体案例和应用。不过书中有很多实现算法之类的东西,由于用不到,看过之后就没什么印象了,可能需要存放起来作为工具书了。(2019)
《Unix网络编程 卷一 套接字联网API》4分:UNP。讲了很多网络 socket 相关接口,有很多客户端和服务器代码实现,同样我还得再读一遍。(2016)
《Web性能权威指南》3分:书的重点是性能,分别从传输层协议、无线网络和HTTP协议讲怎么做性能优化,不过全都是理论。最后还介绍了浏览器、websocket 和 WebRTC,最后一个做 B/S 的真心没听过,也算开了下眼界。(2017)
《构建高性能Web站点》4分:全书也在重点讲 Web 性能,不过更偏向于服务端架构和实践,如缓存的使用、数据库性能优化。书中列举了很多实用的方案,也对不同的方案使用 AB 和 strace 进行了充分的测试对比。中级后端工程师应该早点读这本书。(2017)
数据库
《Redis设计与实现》4分:从底层介绍了 Redis 多种数据结构的设计与实现,还有多种配套策略的实现,如数据持久化、集群等。可以说对 Redis 所有部分的设计都介绍得很清楚,毕竟是作者是分析过全部源码的。推荐 Redis 运维或对 Redis 的实现感兴趣的读。(2017)
《MySQL技术内幕:Innodb存储引擎》4分:如副标题,全书都在讲 Innodb 存储引擎。通过各个模块的设计实现,再给出我们使用 Innodb 时的需要注意的点和优化方案。推荐中级开发工程师读。(2017)
编程语言
《C Primer Plus》4分:C 语言入门的推荐书,主要是 C 的语法,详细而权威,没什么好说的。(2017)
《Java 核心技术 卷I》3分:确实是由浅入深的一本书,但感觉书里深浅知识在不停交错,书里 Swing 相关的东西篇幅还挺大,而且有很多跟 C++ 的对照,最主要的是翻译很奇怪地让我觉得有些句子很难读得通。不过也书里讲解得内容还是挺丰富的,通读的话会学到不少东西。(2018)
《Java并发编程实战》5分:这本书介绍 Java 并发编程非常全面,从内置关键字、锁、同步容器、同步工具类引入并发编程的基础知识,又介绍了 Executor、ThreadPool 等成熟的并发编程框架,然后又从死锁、性能、测试等方面来思考并发编程的安全性,最后通过显示锁、各种高级线程同步工具的对比、Java 线程模型等高级主题来深入理解并发编程。由浅入深,中级到高级都能从中有所收获。个人认为,Java 开发者至少应该读一遍,对并发编程有个整体的印象。(2018)
《深入理解Java虚拟机》5分:作为 JVM 语言,更偏向于 Java 本质的内容在于其虚拟机。本书相对于我看过的理论书偏实战一些,主要讲了 Java 内存模型、GC算法,字节码及虚拟机加载、执行字节码和优化效率的全过程。国人的书没了翻译味读着很舒服,理论讲得很清晰,特别是书里的一些调试案例非常赞。对于刚接解 Java 的小白来说看本书有些深,且 Java 的封装性让这些知识对程序员来说都是透明的,推荐想对 Java 有深入了解的中级来读。(2018)
《PHP和MySQL Web开发》1分:刚开始学PHP时,看过一部网络教学视频后看的,当时的感觉是真的简单,看完后收获不多。如果你也是初学者,建议你还是省点钱,看看视频或文档撸一下代码来得实在。(2015)
《JavaScript高级程序设计》5分:红宝书,Web 入门时看的,Js、Dom讲得很详细了,当时准备入前端坑时读了一遍,虽然有些朦胧,还是感觉收获很大。Js入了门的同学应该赶快读一下这本书,并且有几章还得跟着搜索引擎多看几遍。(2015)
《Linux Shell脚本攻略》3分:书的内容挺充实的,把 linux 内的各种 bash 命令都介绍到了(好像没有软件包安装相关命令),也提供了很多实例来解析命令。问题是介绍 shell 脚本相关技巧介绍较少,比如函数传数组参数这些常见的坑就没讲到,了解很多 bash 命令脚本也不一定能写得好啊。而且定位比较尴尬,不像鸟哥的私房菜(只看过前几章),由浅到深整体熟悉 linux,本书是分模块来讲解的,ls、cd
等常见命令后面才提到,所以它不太适合新手看,而对于比较熟悉 linux 命令的人来说,能学到的知识又较少。总之本书适合用来查漏补缺或当工具书。(2018)
《Effective Java 第二版》4分:我看过的唯一一本介绍语言的“进阶”书,可能 Java 确实有些复杂吧。书里 Java 1.6 及之前版本常见的各种坑都讲清楚了,看完很有收获,推荐在了解完 Java 语法后就读。(2018)
《Sprint Boot 实战》1分:首先在 Spring-Boot 里介绍 Grails、Actuator,不了解不多作评价,但整体来看像是很多篇博客堆叠出来的,没有层次感。其次 200 页的书竟然有 50 页是 Spring-Boot 包-特性速查,这些东西完全可以放在网站上,只用一个链接就搞定了,还便于实时更新。最后翻译后的版式我必须吐槽,中文和英文单词之间不加空格看着真的难受。(2019)
数据结构与算法
《数据结构与算法分析 - C语言实现》3分:作为一个数学渣,对算法有本能的恐惧,这本书是咬着牙读下去的,还跳过了很多部分。书很生硬,没有形象的比喻,通过一堆堆的代码和数学公式去理解算法真的挺不容易的。(2016)
代码
《Head First 设计模式》4分:跟外面的那些技术书籍一点也不一样,全书充满了插图,每一个设计模式都通过一个浮夸的故事来讲(外国人嘛)。文中代码中用 Java 实现,不过都是最基本的语法。好像只写了 16 个设计模式?不过我觉得用来学习设计模式完全 OK。(2017)
《代码大全 第二版》4分:中文名是真的俗,代码百货?不过书不是代码展览馆,而是教人怎么写出优良的代码的。可能我个人一直对代码质量比较在意,让我眼前一亮的地方不是特别的多,不过不可否认书真的不错,建议新手早读一遍。(2017)
《重构:改善既有代码的设计》2分:在一次重构之前买来看的,讲得是对小块代码的重构方式,全书就像一个整齐排放的货架,上面全是对一些代码重构方式的抽象,列得让人有点懵,如果新手看这本书并对照着重构代码的话,我觉得效果应该不会太好(委婉)。(2017)
再读:2分 试图再读一遍,结果读了一半就坚持不下去了,总结了一下这本书不合我口味的地方:很多重构方法的具体做法写得太详细太傻瓜式了,例子占大量篇幅又让我觉得没干货。可能看一遍目录,遇到一眼看不明白的方法进去看内容前一两段或总结会比较好。(2018)
思考
《黑客与画家》4分:总体感觉比期望差一些。我把内容分为三部分:由于中美环境不同,前面讲”书呆子”特质的部分我没有太大共鸣;中间讲财富的部分很精彩,让我觉得非常惊艳;后面讲编程语言的部分更像是硬贴在书后面的,虽然有所感悟,但却让人觉得有些突兀(我期望的不是此类内容);总的来说,是一本让我挺有收获的书。(2018)
《思考,快与慢》4分:网络上普遍将它分类为经济学书籍,实际上我感觉本书大部分篇幅都是心理学,从一开始的系统1和系统2,到对我们各种选择的分析(我印象最深刻的是怎样克服系统1的影响选择投资方式),再到最后由”幸福程度”引出的峰终定理,给人提出了各种思考的方向和可能性,可能思考得多了之后,也能帮我矫正一些想法吧。(2018)
《乌合之众.冯克利译》4分:这本书是大众心理学研究的经典著作,从通常意义上来说,它对个人并不是一本非常“有用”的书,但作为社会动物,我们不可避免地会常常陷入人群中,这本书可能会帮助你跳出人群看自己和他人,新的视角可能会有新的感悟。(2019)
书还在读,列表也会增加,之前读过的书还可能会再读一遍写一些新的感受,欢迎关注。
我的书单(Book List)的更多相关文章
- java提升路线书单(原文自知乎刘欣)
复制黏贴自知乎刘欣大神,作为个人的书单与指导路线 原文链接:https://www.zhihu.com/question/19848946/answer/92536822 刘欣 追寻内心的真正兴趣 ...
- .NET程序员走向高端必读书单汇总
.NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 4. 操作系统 5. 计算机网络 6. ...
- PHPer书单
想提升自己,还得多看书!多看书!多看书! 下面是我收集到的一些PHP程序员应该看得书单及在线教程,自己也没有全部看完.共勉吧! Github地址:https://github.com/52fhy/ph ...
- A Year Of Books - 2016 Javaer书单
A Year Of Books - 2016 Javaer书单 (PS:欢迎留言推荐,很多来自白衣大哥的推荐) 1. OS & Networking <编码 : 隐匿在计算机软硬件背后的 ...
- 我的GTD中收集的书单
在几年的GTD过程中,收集了一些想读的书目,没有系统地整理,每当读完一本之后,就翻翻书单,寻找下一本感兴趣的书,书是不可能读完的,只能找有兴趣的.符合自己目标方向的.有些书记录了豆瓣上的评分,虽然不是 ...
- C语言和数据结构的书单-再次推荐
一.推荐专业书单: 1) C语言方面: n 明解C语言——适合初学者 豆瓣链接:https://book.douban.com/subject/23779374/ 推荐理由:< ...
- 一个很不错的适合PHPER们书单,推荐给大家【转】
来我博客的访客们中,有一些是PHP的初学者,是不是很迷茫PHP应该怎么学?应该买什么样的书?到处问人,到处求助?这下好了. 正好看到黑夜路人在博客上推荐了一个书单,看上去都非常不错,很多我也没有读过, ...
- 【转载】.NET程序员走向高端必读书单汇总
原文:.NET程序员走向高端必读书单汇总 .NET程序员走向高端必读书单汇总 一.知识树 1. 基本能力 1.1 数学 1.2 英语 1.3 语言表达 2. 计算机组织与体系结构 3. 算法与数据结构 ...
- 架构师书单 2nd Edition--转载
作者:江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/03/06/1522032.aspx,转载请保留. 为了2007年的目标,列了下面待 ...
- java开发必读 书单
希望读的书单 重构 改善既有代码的设计 设计模式 可复用面向对象软件的基础 高性能MySQL第3版 Effective Java第1版 Effective Java第2版 Java核心技术I-基础知识 ...
随机推荐
- anaconda使用方法
我是用的win10.想写爬虫,所以使用了 anaconda .总结一下使用的方法. 安装阶段跳过.: 再终端输入 jupyter notebook 然后就会在. 浏览器显示一个网页.其实这个也不 ...
- PHP整理--PHP语句流程
PHP跟JS一样是从上往下的执行语句:同样的PHP也有if语句.循环.数组和函数. 一.条件语句 if..else... swich (1)多条if语句 $name=30; if($nam ...
- 自定义扩展实现相对于addRoutes的removeRoutes方法——vue-router
使用vue-router的addRoutes方法做登录权限控制,当用户推出登录回到login页后,切换不同权限的账号,如果不reload页面,会导致router权限问题,故在vue-router代码中 ...
- Mac使用Charles进行HTTPS抓包
技术来源: PengYunjing 第一步 配置HTTP代理,这步与抓取HTTP请求是一样的: 选择在8888端口上监听,然后确定.够选了SOCKS proxy,还能截获到浏览器的http访问请求. ...
- Python之路(第三十五篇) 并发编程:操作系统的发展史、操作系统的作用
一.操作系统发展史 第一阶段:手工操作 —— 真空管和穿孔卡片 第一代之前人类是想用机械取代人力,第一代计算机的产生是计算机由机械时代进入电子时代的标志,从Babbage失败之后一直到第二次世界大 ...
- node vue 项目部署问题汇总
场景:vue-router为history模式,不带项目名访问的部署,如果资源是用相对路径加载,则资源匹配路径不对 一.带项目名称访问,如部署到tomcat服务上 webpack: build/ut ...
- 文件扩展关联命令(assoc)
assoc 命令: // 描述: (association) --> 联想.关联 显示或修改文件扩展名关联. 如果在没有参数的情况下使用,assoc将显示所有当前文件扩展名关联的列表. // 语 ...
- oracle 12c centos 7 安装配置
1,安装centos 7 安装 宿主机配置信息: 内存:8G 系统盘:30G swap分区:30G (笑了oracle安装自检不过) /u01(50G) :oracle安装目录 /u02(50G): ...
- java的OSGi确实是个坑
sun已经把java的OSGi这个坑填得够深了,sun估计短时间想把这个坑调回来是不可能了,跟.net比包管理模块化开发确实java够烂的. java的模块化架构开发只能让OSGi回去睡觉,自定义模块 ...
- linux上安装mysql5.7
1.下载tar包,这里使用wget从官网下载 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.22-linux-glibc2. ...