《码农翻身 好玩又有趣的编程知识》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:刘欣著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121341175
  • 页数:324 页
图书介绍:本书用故事的方式讲解了软件编程的若干重要领域, 侧重于基础性、原理性的知识。第1章讲述计算机的基础知识,包括程序的运行原理,进程、线程、文件系统、I/O系统、数据库原理、TCP/IP,Socket,编译原理的概述,递归等。第2章侧重Java的基础知识,包括Java的历史、JVM、序列化、持久化、JDBC、JSP、动态代理、泛型、注解、日志、JMS、CAS等。第3章则偏重Web后端编程,包括HTTPS、SSO、OAuth、RPC、SOA、微服务、HTTP服务器的原理、缓存、分布式一致性算法、高可用性、数据库读写分离等。第4章讲解代码管理的本质,包括各种源码管理工具(SVN, Git)的原理,Ant和Maven的原理,如何做单元测试,烂代码的产生等。第5章讲述了JavaScript的历史、Node.js的原理、程序的链接、命令式和声明式的区别以及作者十多年来使用过的各种编程语言的感受。

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

我是一个线程 1

初生牛犊 1

渐入佳境 4

虎口脱险 5

江湖再见 8

TCP/IP之大明内阁 9

TCP/IP之大明邮差 12

CPU阿甘 17

启动 17

运行 18

新装备:缓存 19

自我提升:流水线 20

我是一个进程 21

批处理系统 22

多道程序 22

地址重定位 24

分时系统 26

分块装入内存 27

虚拟内存:分页 28

分段+分页 30

程序的装载 31

线程 35

我是一块硬盘 36

内部结构 37

文件 38

文件的存放 39

管理空闲块 44

文件系统 45

我是一个键盘 46

二等公民 46

总线和端口 47

轮询(程序式I/O) 48

中断 49

DMA 50

数据库的奇妙之旅 51

无纸化办公 51

数据的冗余和不一致 52

李氏查询 52

并发访问 54

原子性问题 56

安全 58

搞清楚Socket 59

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

CPU和内存 64

从1加到100 65

热身 65

正式出发 65

一个翻译家族的发家史 68

机器语言 68

汇编语言 69

高级语言 70

编程世界的那把锁 74

共享变量惹的祸 74

争抢吧,线程 75

改进 76

信号量 77

绕不开的加法器 81

递归那点事儿 85

第2章 Java帝国 91

Java:一个帝国的诞生 91

C语言帝国的统治 91

反抗 92

一鸣惊人 93

开拓疆土 93

帝国的诞生 94

我是一个Java Class 96

陌生警察 96

刺探信息 97

初识虚拟机 98

快乐假期 102

真相大白 103

持久化:Java帝国反击战 104

断电的威胁 104

数据库联合酋长国 105

表面风光的EJB 106

轻量级O/R Mapping框架 106

帝国的反击 107

JDBC的诞生 108

谈判 108

统一接口 110

面向接口编程 111

简单工厂 112

数据驱动 114

工厂方法 115

Java帝国之宫廷内斗 119

JDBC大臣 119

密谋 120

两阶段提交 121

JTA 123

塞翁失马,焉知非福 124

基本可用 125

走漏风声 127

宫廷激辩 128

JSP:一个装配工的没落 131

黑暗岁月 131

服务器端动态页面 132

标签库 134

模板引擎 134

草根搅局 135

Java帝国之消息队列 137

张家村的历史 137

拆分 138

新问题 139

消息队列 139

互不兼容的MQ 140

消息队列接口设计 141

配置和代码的分离 143

再次抽象 144

Java帝国之动态代理 147

深夜奏对 147

明察暗访 149

Java动态代理 150

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

XML大臣 153

安翰林献计 154

早朝争斗 157

Java帝国之泛型 159

新王登基 159

C++使者 159

泛型实现 162

泛型方法 163

泛型和继承 164

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

前言 166

张家村 167

小张的设计 167

正交性 170

Log4j 171

尾声 171

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

寒冬的蛰伏 172

XML和JSON的挑战 173

新协议的崛起 175

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

互斥锁 176

要不要加锁 177

CAS的扩展 179

Spring的本质 182

问题来源 183

设计模式:模板方法 184

设计模式:装饰者 186

AOP 187

实现AOP 188

对象的创建 189

IoC与DI 191

第3章 浪潮之巅的Web 192

Web的起源 192

两个程序的爱情故事 195

好感 195

分离 196

网络 197

Web 198

一个故事讲完HTTPS 199

总有一种被偷窥的感觉 199

RSA:非对称加密 200

非对称加密+对称加密 202

中间人劫持 202

你到底是谁 203

HTTPS 206

机房夜话 207

第一夜 207

第二夜 209

第三夜 211

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

我把密码献给你 215

token 216

授权码+token 218

后记 220

后端风云 220

数据库老头儿 220

危机 221

党委扩大会议 221

分家 223

Redis 224

余数算法 227

一致性Hash算法 229

Hash槽(Hash Slot) 233

故障转移 235

高可用的Nginx 237

高可用的Tomcat 238

数据库的读写分离 240

我是一个函数 243

从SOA到微服务 246

什么是框架 249

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

版本管理简史 258

“人肉”版本管理 258

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

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

分支:多版本并行 261

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

程序员也爱社交 264

Build的演进之路 265

手工Build的烦恼 265

自动化Build 267

Java与XML 268

消除重复 270

烂代码传奇 275

敏捷下的单元测试 277

敏捷运动 277

困惑 278

讨论 279

一年以后 280

再见!Bug 281

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

JavaScript:一个草根的逆袭 284

出世 284

成长 286

第一桶金 288

发明JSON 289

人生巅峰 291

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

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

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

让人怀疑的C语言 300

被忘却的VB&Visual FoxPro 301

蹂躏我的C++ 302

赖以谋生的Java 303

优雅的Ruby 304

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

一则小故事 306

命令式编程 306

声明式编程 307

第6章 老司机的精进 309

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

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

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

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

抛弃细节:抽象 312

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

我怕等不及:异步调用 313

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

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

好奇心 315

养成计算机的思维方式 315

扎实基础,融会贯通 317

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

能写漂亮的代码 318

抽象的能力 319

技术领导力 319

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

学习编程的四兄弟 322

摇摆不定的老大 322

“小仓鼠”老二 322

不看书的老三 323

半途而废的老四 323