重磅推荐
【产品特色】


【编辑推荐】

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

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

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

√ 学习优秀的架构师是如何思考、如何抽象、如何成长的,从操作系统、Java语言到Web技术,每个主题都深入浅出。


【内容简介】

码农翻身2

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

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

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

码农翻身1

《码农翻身》用故事的方式讲解了软件编程的若干重要领域,侧重于基础性、原理性的知识。

《码农翻身》分为6章。

第1章讲述计算机的基础知识;

第2章侧重讲解Java的基础知识;

第3章偏重Web后端编程;

第4章讲解代码管理的本质;

第5章讲述了JavaScript的历史、Node.js的原理、程序的链接、命令式和声明式编程的区别,以及作者十多年来使用各种编程语言的感受;

第6章是作者的经验总结和心得体会,包括职场发展的注意事项、作为架构师的感想、写作的好处等。

半小时漫画计算机

《半小时漫画计算机》用生动有趣的漫画深入理解计算机系统的基础知识,一共分为5章,每一章都有不同的风景。 在第1章,你可以花上几两银子,体验一下大明王朝TCP/IP 和HTTP。与此同时,张大胖会在和朋友的聊天中逐步"发明”HTTPS。 你还能看看那些可爱的网卡、CPU,内存是怎么从零开始上网的,以及一张身份证是怎么在网络中被切割和传输的。 到了第2章,可以看看操作系统是怎么"骗人”的,"一切皆文件”到底是怎么回事,程序员最喜欢的Hello World在执行时有什么秘密。第3章则能看到跑得飞快的CPU阿甘一天有趣的生活,不断打仗的黑毛部落和秃头部落居然促成了通用计算机的诞生,以及两段"相声”:从1加到100和函数调用的秘密。 第4章展示了数据库帝国的一次危机和内部斗争。第5章你可以用一个奇特的天平去称一称编程语言的重量,还可以"欣赏”一下字节码王国的兴起和扩张,顺便看看上帝是怎么教会人类面向对象编程的。 用一句话来总结 :有趣且硬核的技术漫画,肯定不会辜负的大家的期待!


【作者简介】

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


【媒体评论】

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

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

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

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

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

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

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

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

计算机是大家日常生活中很常见的东西,但其中的科技大多数人都习焉不察。我的朋友刘欣的漫画作品,妙趣横生地解读了计算机科技。你即使是计算机小白,看了以后也会记住大明王朝的TCP邮差、看报纸喝茶的交换机、诞生于夏威夷的ALOHA网络,等等。你是不是一下子就感觉自己的知识水平提高了很多呢?

——袁岚峰,中国科学技术大学副研究员、中国科学院科学传播研究中心副主任、“科技袁人”节目主讲人

当我翻了这本书的样稿时,感觉从未见过如此浅显易懂的计算机书籍,而且内容非常丰富,涉及计算机相关的多个方面,通过漫画这种非常有趣的方式表达出来。可以想象作者是花了多少的心思来编写。一定要给自己的孩子买一本!就连你,翻翻此书也会觉得非常有意思,赞赞赞!

——红薯,“开源中国”创始人

读这本书,我看到的是一个人对计算机科学的热爱和坚守,对计算机基础知识本质的观察和思考。在一切皆娱乐的时代,用这样一个个生动鲜活的古今故事演绎计算机微观世界里那些抽象又晦涩的概念,也是一种富有意义的创新。希望这些幽默的漫画故事能让更多人开始对计算机科学产生好奇心和探索欲望,充满激情地体验在创造代码过程中征服难题的成就感。从码农到科学家,也许你只差一本能让你找到内心热爱的书。

——李璐,IBM前高级软件架构师

这本书在用漫画讲故事,用故事讲技术,而且是复杂的计算机技术。通过把技术元素拟人化,把交互原理故事化,配上精心绘制的漫画,演绎出一幅幅奇妙的场景。全书妙趣横生,娓娓道来,让我们意兴盎然地完成学习之旅。这种事半功倍的学习体验,你值得拥有。

——白海飞,LinkedIn高级经理

计算机的很多知识是抽象的,抽象到你想逃之夭夭。但是,有了一本漫画计算机基础知识的书,你会发现CPU本来是亲切的,就如阿甘一样在我们生活的周围,网络协议也可以与大明王朝挂钩?操作系统就是个“骗子”?数据库帝国有内战?在乐趣中也能把曾经吓跑你的东西一股脑儿学会?是的,打开本书,你遇见不一样的知识,也碰到有趣的自己。

——陈莉君,Linux内核专家、西安邮电大学教授


【目录】

码农翻身2

*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 动态内容
7.7.2 Servlet
7.7.3 WSGI

码农翻身1

第1章 计算机的世界你不懂 1

1.1 我是一个线程 1

初生牛犊 1

渐入佳境 4

虎口脱险 5

江湖再见 8

1.2 TCP/IP之大明内阁 9

1.3 TCP/IP之大明邮差 12

1.4 CPU阿甘 17

启动 17

运行 18

新装备:缓存 19

自我提升:流水线 20

1.5 我是一个进程 21

批处理系统 22

多道程序 22

地址重定位 24

分时系统 26

分块装入内存 27

虚拟内存:分页 28

分段 分页 30

程序的装载 31

线程 35

1.6 我是一块硬盘 36

内部结构 37

文件 38

文件的存放 39

管理空闲块 44

文件系统 45

1.7 我是一个键盘 46

二等公民 46

总线和端口 47

轮询(程序式I/O) 48

中断 49

DMA 50

1.8 数据库的奇妙之旅 51

无纸化办公 51

数据的冗余和不一致 52

李氏查询 52

并发访问 54

原子性问题 56

安全 58

1.9 搞清楚Socket 59

1.10 从1加到100:一道简单的数学题挑战一下你的大脑 64

CPU和内存 64

从1加到100 65

热身 65

正式出发 65

1.11 一个翻译家族的发家史 68

机器语言 68

汇编语言 69

高级语言 70

1.12 编程世界的那把锁 74

共享变量惹的祸 74

争抢吧,线程 75

改进 76

信号量 77

1.13 绕不开的加法器 81

1.14 递归那点事儿 85

第2章 Java帝国 91

2.1 Java:一个帝国的诞生 91

C语言帝国的统治 91

反抗 92

一鸣惊人 93

开拓疆土 93

帝国的诞生 94

2.2 我是一个Java Class 96

陌生警察 96

刺探信息 97

初识虚拟机 98

快乐假期 102

真相大白 103

2.3 持久化:Java帝国反击战 104

断电的威胁 104

数据库联合酋长国 105

表面风光的EJB 106

轻量级O/R Mapping框架 106

帝国的反击 107

2.4 JDBC的诞生 108

谈判 108

统一接口 110

面向接口编程 111

简单工厂 112

数据驱动 114

工厂方法 115

2.5 Java帝国之宫廷内斗 119

JDBC大臣 119

密谋 120

两阶段提交 121

JTA 123

塞翁失马,焉知非福 124

基本可用 125

走漏风声 127

宫廷激辩 128

2.6 JSP:一个装配工的没落 131

黑暗岁月 131

服务器端动态页面 132

标签库 134

模板引擎 134

草根搅局 135

2.7 Java 帝国之消息队列 137

张家村的历史 137

拆分 138

新问题 139

消息队列 139

互不兼容的MQ 140

消息队列接口设计 141

配置和代码的分离 143

再次抽象 144

2.8 Java帝国之动态代理 147

深夜奏对 147

明察暗访 149

Java 动态代理 150

2.9 Java注解是怎么成功上位的 153

XML大臣 153

安翰林献计 154

早朝争斗 157

2.10 Java帝国之泛型 159

新王登基 159

C 使者 159

泛型实现 162

泛型方法 163

泛型和继承 164

2.11 一个著名的日志系统是怎么设计出来的 166

前言 166

张家村 167

小张的设计 167

正交性 170

Log4j 171

尾声 171

2.12 序列化:一个老家伙的咸鱼翻身 172

寒冬的蛰伏 172

XML和JSON的挑战 173

新协议的崛起 175

2.13 加锁还是不加锁,这是一个问题 176

互斥锁 176

要不要加锁 177

CAS的扩展 179

2.14 Spring 的本质 182

问题来源 183

设计模式:模板方法 184

设计模式:装饰者 186

AOP 187

实现AOP 188

对象的创建 189

IoC与DI 191

第3章 浪潮之巅的Web 192

3.1 Web的起源 192

3.2 两个程序的爱情故事 195

好感 195

分离 196

网络 197

Web 198

3.3 一个故事讲完HTTPS 199

总有一种被偷窥的感觉 199

RSA:非对称加密 200

非对称加密 对称加密 202

中间人劫持 202

你到底是谁 203

HTTPS 206

3.4 机房夜话 207

第一夜 207

第二夜 209

第三夜 211

3.5 从密码到token,一个有关授权的故事 215

我把密码献给你 215

token 216

授权码 token 218

后记 220

3.6 后端风云 220

数据库老头儿 220

危机 221

党委扩大会议 221

分家 223

Redis 224

余数算法 227

一致性Hash算法 229

Hash槽 (Hash Slot) 233

故障转移 235

高可用的Nginx 237

高可用的Tomcat 238

数据库的读写分离 240

3.7 我是一个函数 243

3.8 从SOA到微服务 246

3.9 什么是框架 249

3.10 HTTP Server:一个差生的逆袭 252

HTTP Server 1.0 252

HTTP Server 2.0:多进程 253

HTTP Server 3.0:select模型 254

HTTP Server 4.0:epoll模型 255

第4章 代码管理那些事儿 258

4.1 版本管理简史 258

“人肉” 版本管理 258

锁定文件:避免互相覆盖 259

允许冲突:退一步海阔天空 260

分支:多版本并行 261

分布式管理:给程序员放权 262

程序员也爱社交 264

4.2 Build的演进之路 265

手工Build的烦恼 265

自动化Build 267

Java 与 XML 268

消除重复 270

4.3 烂代码传奇 275

4.4 敏捷下的单元测试 277

敏捷运动 277

困惑 278

讨论 279

一年以后 280

4.5 再见!Bug 281

第5章 我的编程语言简史 284

5.1 JavaScript :一个草根的逆袭 284

出世 284

成长 286

第一桶金 288

发明JSON 289

人生巅峰 291

5.2 Node.js:我只需要一个店小二 292

5.3 C老头儿和Java小子的硬盘夜话 295

5.4 编程语言的“爱恨情仇” 300

让人怀疑的C 语言 300

被忘却的 VB & Visual FoxPro 301

蹂躏我的C 302

赖以谋生的Java 303

优雅的Ruby 304

5.5 命令式编程 VS 声明式编程 306

一则小故事 306

命令式编程 306

声明式编程 307

第6章 老司机的精进 309

6.1 凡事必先骑上虎背,和性格内向的程序员聊几句 309

6.2 码农需要知道的“潜规则” 311

上帝的规矩:局部性原理 311

坐飞机的怎么和坐驴车的打交道:缓存 311

抛弃细节:抽象 312

我只想和邻居打交道:分层 312

我怕等不及:异步调用 313

大事化小,小事化了:分而治之 314

6.3 15年编程生涯,一名架构师的总结 314

好奇心 315

养成计算机的思维方式 315

扎实基础,融会贯通 317

要透彻地理解一门技术的本质 317

能写漂亮的代码 318

抽象的能力 319

技术领导力 319

6.4 对自己狠一点,开始写作吧 320

6.5 学习编程的四兄弟 322

摇摆不定的老大 322

“小仓鼠”老二 322

不看书的老三 323

半途而废的老四 323


【前言】

码农翻身2码农翻身(好玩有趣的编程知识)半小时漫画计算机 (全彩)(《码农翻身》作者新作)


返回顶部