新書推薦:

《
玫瑰花园
》
售價:HK$
54.8

《
智能体时代
》
售價:HK$
86.9

《
镇馆之宝 精讲66家博物馆文物珍品 从新石器时代到大清王朝
》
售價:HK$
756.8

《
周期与财富
》
售價:HK$
108.9

《
STEM科学新知:炫酷科技
》
售價:HK$
75.9

《
文化的曜变:日本国宝中的唐风汉骨
》
售價:HK$
86.9

《
好孕,从卵子开始(第3版)
》
售價:HK$
86.9

《
父母会规划,孩子能成才
》
售價:HK$
65.8
|
編輯推薦: |
在编程语言与虚拟机技术深度交融的当下,本书以独特的 “推理式” 视角,打通 C 语言特性与 JVM 底层实现的技术脉络,为系统级开发者与语言爱好者构建从上层设计到源码级实现的完整认知体系。书中从 C 语言的演进逻辑切入,拆解面向对象编程的核心原理(如类、多态、泛型),并通过与 C 语言、Java 的对比,揭示编程语言设计的共性与差异;继而深入计算机网络底层,结合 Linux 内核网络包处理源码,解析 TCP/UDP 协议栈、HTTP/HTTPS 通信机制,展现网络技术从理论到工程实现的全链路。聚焦 JVM 技术栈,本书以 “Hello World” 程序为起点,逐层剖析字节码结构、类加载机制及 Hotspot 虚拟机启动原理,涵盖 JVM 执行引擎、垃圾回收(GC)等核心模块,辅以《JVM 规范手册》的实践指引,帮助读者掌握 Java 语言 “一次编写,到处运行” 的底层奥秘。
无论是深耕 C 的系统工程师、探索 JVM 原理的 Java 开发者,还是致力于编程语言研究的学生,均可通过本书的 “原理推导 源码分析” 双维度讲解,突破技术瓶颈,建立 “语言设计 — 运行时环境 — 系统
|
內容簡介: |
《计算之道卷 Ⅲ:C 语言与 JVM 源码》是一本深入探讨计算机科学与技术的图书。本书旨在帮助读者更深入地理解计算机内部的工作原理,并探索从高级编程语言到 JVM 源码等核心概念。本书适合对计算机科学和底层技术感兴趣的读者,无论是学习计算机基础知识还是进一步扩展技术视野,都能从本书中获益良多。
來源:香港大書城megBookStore,http://www.megbook.com.hk 在《计算之道卷Ш:C 语言与JM 源码》中,作者以清晰易懂的语言详细介绍了高级编程语言的工作原理。通过本书,读者将了解编程语言的特性和原理、计算机网络、JVM 等关键概念,从而更好地理解计算机执行程序的方式。以及将学习JVM 源码,并了解 hotspot、全局模块等底层机制。结合实例和案例研究,读者将能够编写高效、可靠的高性能应用程序。
无论是学生、工程师还是对计算机科学感兴趣的读者,本书都将成为你不可或缺的参考资源。
|
關於作者: |
黄俊
专注于研究Java语言
专注于研究Hotspot
专注于研究Linux内核
专注于研究C语言与汇编
专注于研究架构设计
专注于研究多线程并发处理
专注于研究高效学习方式
曾就职于美团、阿里
前新东方业务架构师
赖志环
十年游戏及互联网应用的技术研发经历。负责过5000以上注册用户,日活跃用户达800万,10万多用户同时在线,年流水达1亿的游戏产品研发。熟悉技术研发的多重领域。自2016年至今创办深圳帝国互娱网络在线有限公司,联合创始人负责技术部。
|
目錄:
|
第1 章 C 语言的推理 1
1.1 编程语言演变过程 1
1.2 C 语言出现的原因 3
1.2.1 C 语言图书管理系统 4
1.2.2 C 语言的出现原因 5
1.2.3 C 语言图书管理系统 7
1.3 面向过程和面向对象 8
1.4 C 语言特性来源 11
1.5 其他编程语言原理推导 12
1.6 编程语言的共性 13
1.7 小结 15
第2 章 C 语言的特性和原理 17
2.1 对象和类原理 17
2.1.1 C 语言的class 关键字 19
2.1.2 C 语言的new/delete运算符 19
2.1.3 C 语言的this 指针 22
2.2 异常处理 23
2.2.1 C 语言异常处理 23
2.2.2 Java 异常处理 24
2.3 C 语言的特性 26
2.3.1 C 语言的hello world 26
2.3.2 C 语言的数据类型 27
2.3.3 C 语言的指针和引用 28
2.3.4 C 语言的类与对象 29
2.3.5 C 语言的多态 31
2.3.6 C 语言的泛型编程 32
2.4 汇编、C 和C 语言存在的问题 35
2.4.1 汇编语言 35
2.4.2 C 语言 36
2.4.3 C 语言 37
2.4.4 最常见的问题 38
2.5 Java 语言出现的推论 40
2.5.1 内存泄漏和野指针规避 40
2.5.2 新语言的设计要求 42
2.5.3 新语言的两种实现方法 43
2.6 如何通过底层来学习不同的编程语言 45
2.7 小结 48
第3 章 计算机网络推理 50
3.1 计算机网络的研究内容 50
3.2 计算机网络协议 52
3.2.1 什么是协议 52
3.2.2 谁来制定协议 53
3.2.3 协议分层 54
3.3 计算机网络地址 56
3.3.1 MAC 地址 56
3.3.2 IP 地址 58
3.3.3 ARP 59
3.4 数据传输 61
3.5 计算机网络下三层 61
3.6 小结 62
第4 章 传输协议原理 64
4.1 UDP 65
4.1.1 四元组 65
4.1.2 UDP 的特点 66
4.1.3 UDP 的使用场景 66
4.2 TCP 68
4.2.1 TCP 包头部分 68
4.2.2 建立TCP 链接 69
4.2.3 释放TCP 连接 71
4.2.4 TCP 状态机 73
4.3 TCP 可靠传输重传机制 75
4.4 TCP 可靠传输—滑动窗口 82
4.5 TCP 可靠传输—流量控制 85
4.6 TCP 可靠传输—拥塞控制 86
4.6.1 TCP 的拥塞控制原理 87
4.6.2 拥塞控制的算法 88
4.7 TCP 和UDP 的区别 92
4.8 小结 93
第5 章 Linux 网络包处理源码分析 94
5.1 Linux 网络收包的总体流程 96
5.2 Linux 启动的网络准备 98
5.2.1 网卡e100 驱动初始化 99
5.2.2 启动网卡e100 105
5.2.3 网卡e100 网络数据发送队列初始化 107
5.2.4 网卡e100 网络数据接收队列初始化 109
5.2.5 网卡e100 的中断处理 112
5.2.6 开启硬中断 113
5.2.7 软中断ksoftirqd 内核线程 114
5.2.8 网络子系统初始化 121
5.2.9 协议栈注册 123
5.3 Linux 接收网络数据 129
5.3.1 e100 对网络数据包的存储 130
5.3.2 硬中断处理 131
5.3.3 软中断处理 132
5.3.4 网络层IP 协议栈处理 143
5.3.5 传输层UDP 协议栈处理 152
5.4 网络消息最终归途 159
5.4.1 激活用户进程 159
5.4.2 recvfrom 系统调用 167
5.4.3 Socket 数据结构 170
5.4.4 socket 创建 171
5.5 小结 179
第6 章 应用层协议原理 181
6.1 HTTP 协议 181
6.1.1 DNS 解析 182
6.1.2 发送HTTP 请求 183
6.1.3 HTTP 请求的响应 184
6.1.4 浏览器解析 185
6.1.5 浏览器进行页面渲染 186
6.1.6 一次完整的HTTP 请求小结 187
6.2 扫码支付背后那些事 188
6.2.1 扫码支付的工作流程 189
6.2.2 扫码支付如何保证交易安全 189
6.2.3 HTTPS 协议 191
6.2.4 Https 协议建立连接 194
6.3 直播使用的流媒体协议 197
6.3.1 直播的技术组成部分 197
6.3.2 直播的核心技术 197
6.4 小结 199
第7 章 Java Hello World 底层推理 201
7.1 回顾C 语言的Hello World 201
7.1.1 Hello World 在Linux 平台编译执行过程 202
7.1.2 hello.c 程序编译过程 202
7.1.3 hello.out 可执行文件格式及内存映像 203
7.1.4 hello.out 程序装载和执行的过程 203
7.1.5 入口函数和程序初始化 205
7.1.6 Windows 操作系统的hello.c 206
7.1.7 C 语言的平台关联性 207
7.2 Java 的HelloWorld 208
7.3 Hello World 的运行 211
7.4 HelloWorld 的字节码文件结构 213
7.5 执行HelloWorld 的main 方法前的过程 217
7.6 HelloWorld 的main 方法的执行过程 221
7.6.1 JVM 的执行引擎 221
7.6.2 JVM 的GC 222
7.7 《JVM 规范手册》 223
7.8 小结 224
第8 章 Hotspot JVM 启动原理 226
8.1 启动Hotspot VM 227
8.1.1 main()函数 228
8.1.2 JLI_Launch()函数 229
8.1.3 JVMInit()函数 232
8.1.4 ContinueInNewThread()函数 232
8.1.5 ContinueInNewThread0()函数 233
8.1.6 JavaMain()函数 234
8.2 类加载器 235
8.2.1 Bootstrap ClassLoader 类加载器 236
8.2.2 三层类加载器 239
8.2.3 双亲委派模型 244
8.3 Hotspot CreateVM 245
8.3.1 初始化系统属性及SystemProperites 247
8.3.2 给JVM 的主干添加枝叶——程序参数解释 250
8.3.3 线程安全点 255
8.3.4 初始化全局线程队列及vm_init_globals 257
8.3.5 JavaThread 257
8.4 初始化全局模块init_globals 258
8.4.1 JVM 解释器模块 261
8.4.2 代码高速缓存模块 265
8.4.5 universe_init 267
8.4.3 StubRountines 272
8.4.6 marksweep_init 275
8.5 小结 276
|
內容試閱:
|
1. 为什么要写这本书
本书是《计算之道》丛书的第III 卷。前两卷对计算机底层原理和计算机操作系统相关知识进行了深入探索,并结合混沌树进行串联。本书在前两卷的基础上进行扩展,使大家掌握的底层知识落地。同时,本书也是对混沌学堂课程内容的提炼和总结。
计算机网络是互联网和分布式系统的基石,了解网络协议、通信模型和网络编程是从事网络开发和系统架构的关键要素。
C 语言是一种高性能的编程语言,广泛应用于系统级开发、游戏开发和嵌入式系统等领域,掌握C 语言的语法和特性对于提升开发效率和代码质量至关重要。
JVM 是Java 应用程序的核心,它负责解释和执行Java 字节码,并提供垃圾回收、内存管理和线程调度等功能,深入了解JVM 的工作原理和调优技巧有助于编写高效的Java应用程序。
本书旨在对这三个主题进行综合介绍,帮助读者掌握扎实的基础知识,并理解它们在实际应用中的作用。
其实在现实学习过程中,大家经常学习计算机底层知识原理,但这种知识在工作中使用频率不高,又经常忘记。一边学习,一边遗忘,已经成为学习计算机底层知识原理的常态。有没有一种方法可以避免这种状况发生?这就是黄俊老师的计算机混沌学习法—尝试用混沌知识树,将计算机底层知识原理进行梳理,通过推理、推论的方式,提高大家对底层知识的理解,直到彻底掌握,不再遗忘。
本书适合以下读者阅读:希望学习计算机网络、C 语言和JVM 基础知识的读者;需要深入了解网络编程的读者;在工作中遇到网络、C 语言或JVM 相关问题,希望系统学习和解决的读者;需要深入了解计算机底层知识的读者。
2. 背景知识
本书假设读者已具备一定的编程基础和计算机科学知识。
最好是已经阅读过《计算之道》第I 卷、第II 卷的读者,理解本书内容将更为轻松。
本书将详细讲解C 语言、计算机网络和JVM 的基础知识,并提供实例和案例来帮助读者理解和应用所学知识。
3. 如何阅读本书
本书按照C 语言、计算机网络和JVM 的顺序组织,每个主题包含多个章节,依次递进地介绍相关概念和技术。每个章节都以清晰的流程和总结开头,帮助读者理解和记忆所学内容。
读者可以根据自己的需求和兴趣选择阅读顺序。如果已经熟悉某个主题,可以跳过相应章节,直接阅读感兴趣的内容。
第1 章 C 语言的推理
在这一章中,你将了解从机器语言到汇编语言,再到C 语言的语言演进过程,以及这些语言出现的原因和存在的缺点。也将了解C 语言的出现如何解决人们对计算机软件的需求,面向对象和面向过程的思想差异。并将领略学习计算机底层知识的魅力和各个编程语言的共性。
第2 章 C 语言的特性和原理
在这一章中,介绍了C 语言特性的底层原理。同时总结了C 类语言存在的问题。你将了解如何设计一门新语言,知道Java 语言的出现是为了专注于业务需求的开发,你还将了解如何通过底层原理来学习不同的编程语言。
第3 章 计算机网络推理
在这一章中,介绍了计算机网络下三层,同时让读者明确知道什么是计算机网络协议,计算机网络究竟研究什么。我们使用混沌学习推理方法,避免读者陷入大量名词堆砌的记忆。
第4 章 传输协议原理
在这一章中,你将了解TCP 是一个无比复杂的协议,需要解决网络传输中的许多问题。这些问题不仅涉及技术层面,还需要避免漏洞,如果存在漏洞被黑客利用,将会带来巨大损失。你还将了解TCP 中很多解决方案可以在不同业务场景中被借鉴。关于TCP 这个协议的细节,推荐阅读《TCP/IP 详解 卷1:协议》。
第5 章 Linux 网络包处理源码分析
在这一章中,深入分析了Linux 网络接受数据包的全过程。在Linux 操作系统中,最复杂的模块就是网络模块。在这里,你将了解Linux 操作系统网络收包细节:涉及网卡驱动、网络子系统、协议栈,以及内核ksoftirqd 线程等内核组件之间的交互。
第6 章 应用层协议原理
在这一章中,你将了解最常见却又最容易忽视的HTTP 协议。从网络支付出发,了解HTTPS 如何保证交易安全。你还将了解直播所使用的核心技术。
第7 章 Java Hello World 底层推理
希望了解虚拟机,首先要了解真实的物理机。在这一章中,首先介绍了C 语言程序Hello World 在真实的物理机下是如何编译的,编译后的二进制格式ELF,以及Linux 是如何执行ELF 的过程,作为相关知识背景。基于这些相关知识背景,我们推理出JVM 的设计目的。
第8 章 Hotspot JVM 启动原理
在这一章里,你将了解Hotspot 的启动过程,以JavaMain()函数为突破点,开启JVM源码的阅读。你还将了解类加载器,从JVM 虚拟机的角度出发,介绍三层类加载器和双亲委派模型,为深入理解JVM 原理打好基础。结合构建混沌树主干和枝叶的方法,将所学知识进行关联。
4. 勘误和支持
由于本书不可避免地存在一些疏漏或不够准确之处,欢迎读者批评指正。
|
|