重磅推荐
【产品特色】


【编辑推荐】

√ 《半小时漫画计算机》《码农翻身》作者作品。

√ 书中把计算机元素和行为用拟人手法编成一个个精彩纷呈的故事,深入浅出地演绎晦涩枯燥的编程知识。

√ 编程初学者可以津津有味地学习,老手也能饶有兴致地查漏补缺。


【内容简介】

本书采用故事的方式讲解了软件编程,尤其是后端编程的重要领域,侧重原理性知识。

本书分为7章,第1章介绍了负载均衡和双机热备的原理,以及系统调用、阻塞、异步等重要概念;第2章介绍了session、token、缓存、数据复制、分布式ID、NoSQL 等后端编程的知识;第3章介绍了后端编程常用软件的原理;第4章介绍了各种编程语言的特性;第5章介绍了各种编程语言的本质;第6章介绍了网络安全相关知识;第7章则总结了作者多年的工作经验。

这不是一本编程的入门书,刚开始学习编程的“纯小白”读起来会比较吃力,读后可能会失望,但是稍有编程基础的读者读起来会非常过瘾,读后会产生一种“原来如此”的感觉。


【作者简介】

刘欣(@码农翻身):畅销书《码农翻身》作者,15年的软件行业从业经验,曾任IBM系统架构师,擅长企业应用架构和设计,领导过多个企业级应用架构设计和开发工作。


【媒体评论】

大咖力荐:

作为非技术出身的产品人,我总是特别感谢那些能跟我们深入浅出地讲解和沟通技术方案的研发伙伴们。我常问很多问题,有时还需要和他们一同决策,因为不同阶段不同技术方案的选择,对业务的发展节奏也十分重要。而刘欣的这本书,从故事和场景切入,真正做到让人对技术问题“知其然,更知其所以然”。从管理视角来看,知道“why”能问出更有效的问题,进而产生更优的决策,实在是价值千金。

陈怡静,领英中国前产品总监

这是一本“奇特”的书,与传统的教科书不同,在这本书中刘欣用讲故事的方式,生动有趣地讲解计算机技术的各种知识,让读者在轻松愉快的氛围中学习计算机技术知识。

晁岳攀,微服务框架rpcx作者,《深入理解Go并发编程》作者

现在业界的各家公司不仅自己开发软件,同时也大量使用各种优秀的开源组件,如LVS、Nginx、MySQL、Redis、RPC、HDFS等。很多同学在学习这些技术的时候一上来就陷入了技术细节,这其实是不对的。任何一门技术都不是凭空出现的,一定是为了解决业界中的某个问题。这本书最大的特点是先抛出问题,然后再用某个技术去解决,我认为这是非常正确的学习路径。理解为什么有这个东西,它解决了什么痛点,更有助于你对开源组件的理解和灵活运用。

张彦飞,《深入理解Linux网络》作者

在阅读本书时,会发现作者总能提前“知道”读者的疑惑,很快引出相关的故事线解答疑惑,同时又会顺理成章地引出下一个问题。当所有的疑惑都解答完毕,作者会告诉大家原来这就是大名鼎鼎的某某技术。深入浅出、通俗易懂、映射现实,你只需要跟着作者的故事读下去,不知不觉中会将整本书读完,丝毫不会感觉到疲倦。《码农翻身》和《码农翻身2》结合起来将整个计算机底层技术和上层应用打通,我相信你会通过这本书爱上计算机!

闪客,《Linux源码趣读》作者


【目录】

1章 基础知识
1.1 负载均衡的原理
1.1.1 隐藏真实服务器
1.1.2 偷天换日
1.1.3 四层还是七层
1.1.4 责任分离
1.1.5 后记
1.2 双机热备的原理
1.2.1 夜半惊魂
1.2.2 详细设计
1.2.3 汇报工作
1.2.4 充分利用资源
1.3 “软件巨头”卧谈会
1.4 作系统和Web服务器那点事儿
1.4.1 作系统老大
1.4.2 系统调用
1.4.3 read和write
1.4.4 sendfile
1.5 我是一条内存
1.5.1 次序问题
1.5.2 编译器
1.5.3 信息=位 上下文
1.5.4 指针
1.5.5 第二天
第2章 后端风云
2.1 “干掉”状态,从session到token
2.1.1 美好的旧时光
2.1.2 session
2.1.3 沉重的负担
2.1.4 时间换空间
2.1.5 如何出
2.2 MySQL:缓存算什么
2.2.1 从进程内到进程外
2.2.2 数据不一
2.3 Redis:MySQL算什么
2.3.1 黑客攻击
2.3.2 缓存空值
2.3.3 布隆过滤器
2.3.4 数据失效
2.4 MySQL:硬盘罢工了,我该怎么办
2.4.1 读写分离
2.4.2 基于SQL语句的复制
2.4.3 基于行的复制
2.4.4 数据延迟
2.5 分布式ID
2.5.1 重复执行
2.5.2 遗漏执行
2.5.3 各显通
2.5.4 抛弃数据库
2.6 我建议你了解一点儿Serverless
2.6.1 局域网时代
2.6.2 数据中心
2.6.3 虚拟化
2.6.4 理想模式
2.6.5 Serverless的点
2.7 NoSQL:一个帝国的崛起
2.7.1 关系数据库帝国
2.7.2 危机
2.7.3 新希望
2.7.4 反抗
2.7.5 新的帝国
第3章 软件是怎么炼成的
3.1 搜索之路
3.1.1 引子
3.1.2 倒排索引
3.1.3 更进一步
3.1.4 架构
3.1.5 抽象
3.1.6 互联网应用的新需求
3.1.7 从Java API 到 Web API
3.1.8 分布式
3.1.9 集群
3.1.10 Elasticsearch的真正传奇
3.2 HDFS的诞生
3.2.1 牛刀小试
3.2.2 分布式
3.2.3 元数据
3.2.4 读取文件
3.2.5 写入文件
3.2.6 结束还是开始
3.2.7 并行计算
3.2.8 深入讨论
3.2.9 MapReduce
3.3 一个的任务调度系统是怎么设计的
3.3.1 实生张大胖
3.3.2 crontab达人的烦恼
3.3.3 另起炉灶
3.3.4 持久化
3.3.5 高可用
3.3.6 开源
3.4 咖啡馆的故事
3.4.1 两个古怪老头儿
3.4.2 RPC
3.4.3 XML-RPC
3.4.4 SOAP
3.4.5 几年以后
3.4.6 RESTful的硬伤
3.4.7 中间层
3.4.8 灵活查询
3.4.9 古怪的查询
3.5 ZooKeeper到底是什么
3.5.1 小梁的邮件
3.5.2 小王的Master选举
3.5.3 小蔡的分布式锁
3.5.4 ZooKeeper
3.6 一件程序员备武器的诞生
3.6.1 调试的基础
3.6.2 JVM接口
3.6.3 通信
3.6.4 调试器
3.6.5 早朝
第4章 编程语言帝国争斗
4.1 Java帝国对Python的渗透能成功吗
4.1.1 引子
4.1.2 泛型
4.1.3 反射
4.1.4 动态代理
4.1.5 锦囊妙计
4.1.6 真相大白
4.2 为什么Python不用设计模式
4.2.1 Python没有接口
4.2.2 Adapter模式
4.2.3 单例模式
4.2.4 Visitor模式
4.2.5 尾声
4.3 Java小王子历险记
4.3.1 JavaScript帝国
4.3.2 再次出发
4.3.3 Go帝国
4.4 Java能抵挡住JavaScript的进攻吗
4.4.1 JavaScript的进攻
4.4.2 非阻塞异步I/O
4.4.3 京城酒楼
4.4.4 I/O
4.4.5 异步作
4.4.6 为什么是Vert.x
4.5 JVM和Python解释器的硬盘夜话
4.5.1 JVM先生
4.5.2 垃圾回收
4.5.3 GIL
4.5.4 尾声
4.6 Java国王:这才是真正的封装
4.6.1 把类隐藏起来
4.6.2 类的朋友
4.6.3 模块化
4.6.4 ServiceLoader
第5章 编程语言的本质
5.1 C语言这么厉害,它自身又是用什么语言写的.
5.2 为什么面向对象糟透了
5.3 C语言:春节回老家过年,我发现只有我没有对象
5.3.1 聚会
5.3.2 串门
5.3.3 封装
5.3.4 继承
5.3.5 多态
5.4 什么是元编程
5.4.1 临下班的紧急任务
5.4.2 模板:用程序来生成程序
5.4.3 元编程
5.5 为什么“无人问津”的Lisp可以这么硬气
5.5.1 Lisp
5.5.2 程序就是数据
5.5.3 开发语言的语言
5.5.4 后的反击
5.6 JavaScript打工记
5.6.1 栈
5.6.2 的员工:单线程
5.6.3 异步函数怎么办
5.6.4 队列
5.6.5 事件队列
5.7 简单的this,复杂的this
5.8 编程语言的
5.8.1 数组
5.8.2 条件分支
5.8.3 函数调用
5.8.4 一切归于汇编
第6章 网络
6.1 浏览器家族的反击战
6.1.1 前言
6.1.2 Cookie失窃
6.1.3 密码失窃
6.1.4 家族会议
6.1.5 凡事有例外
6.2 黑客三兄弟
6.2.1 代码注入
6.2.2 伪造请求
6.2.3 另辟蹊径
6.2.4 牛刀小试
6.2.5 狂注入SQL
6.2.6 破解密码
6.2.7 后记
6.3 黑客攻日记
6.3.1 小黑的日记2010-6-22 晴
6.3.2 张大胖的日记2010-6-23阴
6.3.3 小黑的日记2010-6-24多云
6.3.4 张大胖的日记2010-6-25阴
6.3.5 小黑的日记2010-6-26晴
6.3.6 张大胖的日记2010-6-27小雨
6.3.7 小黑的日记2010-6-28晴
6.3.8 张大胖的日记2010-6-29中雨
6.3.9 小黑的日记2010-6-30阴天
6.3.10 张大胖的日记2010-6-30暴雨
6.3.11 小黑的日记2010-7-1多云
6.4 缓冲区溢出攻击
第7章 “老司机”经验
7.1 用费曼技巧自学编程
7.1.1 费曼技巧
7.1.2 实战演练
7.1.3 小结
7.2 曾经废寝忘食学到的技术,没用了
7.3 程序员七问
7.4 用你的技术赚更多的钱
7.5 阅读源码的三种境界
7.5.1 昨夜西风凋碧树,独上高楼,望尽天涯路
7.5.2 衣带渐宽不悔,为伊消得人憔悴
7.5.3 众里寻他千百度,蓦然回,那人却在灯火阑珊处
7.6 Code Review的
7.6.1 Checkstyle和“连坐”
7.6.2 Check List
7.6.3 代码量控制
7.6.4 结对编程
7.7 看问题要看到本质:从Web服务器说起
7.7.1 动态内容


【前言】

前言

转眼间,距离《码农翻身》的出版已经过了5 年时间,很多读者催问:“什么时候出《码农翻身2》?我已经等不及了!”“疫情都结束了,《码农翻身2》在哪儿?”……现在《码农翻身2》终于来了,之所以拖了这么长的时间,主要是因为中间“插播”了另外一本书——《半小时漫画计算机》,该书使用纯漫画的方式来讲解计算机基础知识,这对我来说是一个全新的尝试,花费了我不少的时间和精力。

近几年来,我一直在微信公众号“码农翻身”上坚持输出原创技术文章,慢慢地,竟然积累了近1000篇,可见坚持的力量是非常惊人的。

有一次,我参加一个同学组织的聚会,并在聚会上无意中提起了自己正在运营的微信公众号“码农翻身”,有几个我并不认识的朋友搜索并关注了该公众号以后就惊呼:“哇,这么多我的好友都在关注啊!”可见公众号的读者越来越多,影响力也越来越大。

熟悉我的朋友应该知道,我不太喜欢追热点写文章,因为热点过后很快就“烟消云散”了,我更喜欢写那些稳定的、不容易过时的知识。

《码农翻身》主要关注的是计算机的底层,比如进程、线程、硬盘、键盘、TCP/IP、Socket、HTTPS、数据库原理、Web服务器原理等。

本书则把焦点稍微向上移了一点儿,关注了一些中间层及以上的内容,比如负载均衡、双机热备、数据复制、缓存、分布式ID等。但是我在选择相关技术的时候,依然会把稳定的、不容易过时的技术作为重要标准。

我也不喜欢那种上来就讲解技术细节、安装步骤、配置方法的枯燥文章,因为读者看了之后往往一头雾水,也不知道为什么有这个东西,解决了什么问题。所以,本书会尽量避免讲解技术细节,而是会采用故事的方式来讲解技术本质。

还是那句话,Why有时候比How重要得多,懂得Why以后,再去看How,就犹如开启了“上帝视角”,一切都变得简单起来。

本书特色

我记得自己在高中暑假时阅读金庸的武侠小说,被曲折的故事情节吸引,沉迷其中,阅读速度极快,只要三四天就能读完一部,虽然主要是走马观花,但足见故事的魅力。

所以,我在写文章的时候也有意把枯燥乏味的技术包装一下,变成好玩有趣的故事,在故事中让主人公不断遇到问题,不断制造悬念,吸引大家看下去,不知不觉就把技术掌握了。

从《码农翻身》到《码农翻身2》,这种采用故事的方式讲解技术的风格一直延续下来,也受到了大量读者的热烈欢迎。

本书和《码农翻身》一样,每个章节都是独立的,读者不用从头到尾阅读,完全可以查看目录,挑选自己喜欢的章节去阅读。

读者对象

这不是一本编程的入门书,刚开始学习编程的“纯小白”读起来会比较吃力,读后可能会失望,但是稍有编程基础的读者读起来会非常过瘾,读后会产生一种“原来如此”的感觉。

比如,对于“C语言:春节回老家过年,我发现只有我没有对象”这一节,如果你没有学过面向对象的相关知识,就可能无法透彻理解其中的一些“梗”,但是有一定基础的读者就能心领神会。再比如,对于“编程语言的巅峰”这一节,如果你对基本的数组、条件分支、函数都不了解,就无法领略汇编语言的厉害之处。

虽然本书侧重于服务器端的知识,偏向后端编程,似乎更适合后端程序员,但是它并没有讲解技术细节,而是主要讲解技术原理,所以对前端程序员来说,也是一个了解后端编程的好机会。

另外,本书也不是一本参考书,它的目的不是希望大家看完以后照搬,而是希望帮助大家理解一些技术的本质。


返回顶部