码农翻身2
  • 推荐0
  • 收藏0
  • 浏览111

码农翻身2

刘欣 (作者)  张月萍 (责任编辑)

  • 书  号:9787121466977
  • 出版日期:2024-02-01
  • 页  数:280
  • 开  本:16(170*240)
  • 出版状态:上市销售
  • 维护人:博文小编
《码农翻身2》采用故事的方式讲解了软件编程,尤其是后端编程的重要领域,侧重原理性知识。
《码农翻身2》分为7章,第1章介绍了负载均衡和双机热备的原理,以及系统调用、阻塞、异步等重要概念;第2章介绍了session、token、缓存、数据复制、分布式ID、NoSQL 等后端编程必备的知识;第3章介绍了后端编程常用软件的原理;第4章介绍了各种编程语言的特性;第5章介绍了各种编程语言的本质;第6章介绍了网络安全相关知识;第7章则总结了作者多年的工作经验。
这不是一本编程的入门书,刚开始学习编程的“纯小白”读起来会比较吃力,读后可能会失望,但是稍有编程基础的读者读起来会非常过瘾,读后会产生一种“原来如此”的感觉。
畅销书《码农翻身》第2部,用故事给技术加点料,讲解前后端开发、编程语言、网络安全、老司机经验分享,帮你理解技术起源和本质
刘欣(@码农翻身):畅销书《码农翻身》作者,15年的软件行业从业经验,曾任IBM系统架构师,擅长企业应用架构和设计,领导过多个企业级应用架构设计和开发工作。
前言
转眼间,距离《码农翻身》的出版已经过了5 年时间,很多读者催问:“什么时候出《码农翻身2》?我已经等不及了!”“疫情都结束了,《码农翻身2》在哪儿?”……现在《码农翻身2》终于来了,之所以拖了这么长的时间,主要是因为中间“插播”了另外一本书——《半小时漫画计算机》,该书使用纯漫画的方式来讲解计算机基础知识,这对我来说是一个全新的尝试,花费了我不少的时间和精力。
近几年来,我一直在微信公众号“码农翻身”上坚持输出原创技术文章,慢慢地,竟然积累了近1000篇,可见坚持的力量是非常惊人的。
有一次,我参加一个同学组织的聚会,并在聚会上无意中提起了自己正在运营的微信公众号“码农翻身”,有几个我并不认识的朋友搜索并关注了该公众号以后就惊呼:“哇,这么多我的好友都在关注啊!”可见公众号的读者越来越多,影响力也越来越大。
熟悉我的朋友应该知道,我不太喜欢追热点写文章,因为热点过后很快就“烟消云散”了,我更喜欢写那些稳定的、不容易过时的知识。
《码农翻身》主要关注的是计算机的底层,比如进程、线程、硬盘、键盘、TCP/IP、Socket、HTTPS、数据库原理、Web服务器原理等。
本书则把焦点稍微向上移了一点儿,关注了一些中间层及以上的内容,比如负载均衡、双机热备、数据复制、缓存、分布式ID等。但是我在选择相关技术的时候,依然会把稳定的、不容易过时的技术作为重要标准。
我也不喜欢那种上来就讲解技术细节、安装步骤、配置方法的枯燥文章,因为读者看了之后往往一头雾水,也不知道为什么有这个东西,解决了什么问题。所以,本书会尽量避免讲解技术细节,而是会采用故事的方式来讲解技术本质。
还是那句话,Why有时候比How重要得多,懂得Why以后,再去看How,就犹如开启了“上帝视角”,一切都变得简单起来。
本书特色
我记得自己在高中暑假时阅读金庸的武侠小说,被曲折的故事情节吸引,沉迷其中,阅读速度极快,只要三四天就能读完一部,虽然主要是走马观花,但足见故事的魅力。
所以,我在写文章的时候也有意把枯燥乏味的技术包装一下,变成好玩有趣的故事,在故事中让主人公不断遇到问题,不断制造悬念,吸引大家看下去,不知不觉就把技术掌握了。
从《码农翻身》到《码农翻身2》,这种采用故事的方式讲解技术的风格一直延续下来,也受到了大量读者的热烈欢迎。
本书和《码农翻身》一样,每个章节都是独立的,读者不用从头到尾阅读,完全可以查看目录,挑选自己喜欢的章节去阅读。
读者对象
这不是一本编程的入门书,刚开始学习编程的“纯小白”读起来会比较吃力,读后可能会失望,但是稍有编程基础的读者读起来会非常过瘾,读后会产生一种“原来如此”的感觉。
比如,对于“C语言:春节回老家过年,我发现只有我没有对象”这一节,如果你没有学过面向对象的相关知识,就可能无法透彻理解其中的一些“梗”,但是有一定基础的读者就能心领神会。再比如,对于“编程语言的巅峰”这一节,如果你对基本的数组、条件分支、函数都不了解,就无法领略汇编语言的厉害之处。
虽然本书侧重于服务器端的知识,偏向后端编程,似乎更适合后端程序员,但是它并没有讲解技术细节,而是主要讲解技术原理,所以对前端程序员来说,也是一个了解后端编程的好机会。
另外,本书也不是一本参考书,它的目的不是希望大家看完以后照搬,而是希望帮助大家理解一些技术的本质。

目录

第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

读者评论