登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 聯絡我們  | 運費計算  | 幫助中心 |  加入書簽
會員登入   新用戶註冊
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2024年度TOP分類閱讀雜誌 香港/國際用戶
最新/最熱/最齊全的簡體書網 品種:超過100萬種書,正品正价,放心網購,悭钱省心 送貨:速遞 / 物流,時效:出貨後2-4日

2024年12月出版新書

2024年11月出版新書

2024年10月出版新書

2024年09月出版新書

2024年08月出版新書

2024年07月出版新書

2024年06月出版新書

2024年05月出版新書

2024年04月出版新書

2024年03月出版新書

2024年02月出版新書

2024年01月出版新書

2023年12月出版新書

2023年11月出版新書

『簡體書』计算之道 卷II:Linux内核源码与Redis源码

書城自編碼: 4060022
分類: 簡體書→大陸圖書→計算機/網絡操作系統/系統開發
作者: 黄俊 秦羽
國際書號(ISBN): 9787302675747
出版社: 清华大学出版社
出版日期: 2024-12-01

頁數/字數: /
書度/開本: 16开 釘裝: 平装

售價:NT$ 709

我要買

share:

** 我創建的書架 **
未登入.



新書推薦:
租税转嫁与归宿
《 租税转嫁与归宿 》

售價:NT$ 500.0
保险原理与实务(第五版)(普通高等学校应用型教材·金融)
《 保险原理与实务(第五版)(普通高等学校应用型教材·金融) 》

售價:NT$ 230.0
十三邀Ⅱ:行动即答案(全五册)
《 十三邀Ⅱ:行动即答案(全五册) 》

售價:NT$ 1469.0
家族财富传承:实务案例与解决方案
《 家族财富传承:实务案例与解决方案 》

售價:NT$ 454.0
恶女的告白:时隔十年,《绝叫》作者叶真中显再写“恶女”的复仇与重生
《 恶女的告白:时隔十年,《绝叫》作者叶真中显再写“恶女”的复仇与重生 》

售價:NT$ 281.0
从零开始·复古娃衣制作书
《 从零开始·复古娃衣制作书 》

售價:NT$ 449.0
民主崩溃的政治学(精装版)
《 民主崩溃的政治学(精装版) 》

售價:NT$ 423.0
交易撮合者:私募股权的经验与教训(泰丰资本创始人葛涵思投资秘籍!)
《 交易撮合者:私募股权的经验与教训(泰丰资本创始人葛涵思投资秘籍!) 》

售價:NT$ 403.0

編輯推薦:
本书以清晰易懂的语言深入剖析深度学习的核心原理,从基础算法到复杂模型架构,为读者揭开技术神秘面纱。书中详细阐述大模型的构建、训练与优化策略,结合丰富的实践案例,使抽象理论具象化。无论是深度学习初学者渴望入门,还是专业人士欲深入探索大模型奥秘,本书都能提供全面且深入的指引,是一本不可多得的深度学习与大模型学习宝典,帮助读者在这个前沿技术领域快速提升认知与实践能力,紧跟时代技术浪潮。
內容簡介:
本书是一本全面深入探讨深度学习领域的核心原理与应用实践的专业书籍。本书旨在为读者提供系统的学习路径,从深度学习的基础知识出发,逐步深入到复杂的大模型架构和算法实现。本书适合深度学习初学者、中级开发者以及对大模型有深入研究需求的专业人士。通过阅读本书,读者不仅能够掌握深度学习的理论基础,还能通过丰富的实战案例,提升解决实际问题的能力。
關於作者:
黄俊
专注于研究Java语言
专注于研究Hotspot
专注于研究Linux内核
专注于研究C语言与汇编
专注于研究架构设计
专注于研究多线程并发处理
专注于研究高效学习方式
曾就职于美团、阿里
前新东方业务架构师
秦羽
专注于研究Java语言
专注于研究Hotspot
专注于研究Linux内核
专注于研究C语言与汇编语言
专注于研究代码框架设计
专注于研究多线程并发处理
曾就职于华为,负责移动营业项目,担任技术开发负责人
目錄
第1章 Redis结构分析
1.1 C语言相关的前置知识复习
1.2 Redis背景
1.2.1 什么是Redis
1.2.2 ANSI C与GNU C
1.2.3 Redis源码下载
1.3 Redis sds函数分析
1.3.1 sds结构体分析
1.3.2 sdsnewlen函数分析
1.3.3 sdscatlen函数分析
1.3.4 sdslen函数分析
1.3.5 sdsMakeRoomFor函数分析
1.3.6 redisObject结构分析
1.3.7 Redis的压缩链表分析
1.4 通过Redis数据结构引发的思考
1.4.1 地址与值的思考
1.4.2 NULL的思考
1.4.3 数组与指针的思考
1.5 小结
第2章 操作系统相关介绍
2.1 进入Linux
2.1.1 内核源码下载
2.1.2 Linux目录解读
2.1.3 内核概览
2.1 历史背景
2.1.1 Linux相关背景
2.1.2 Intel相关背景
2.2 操作系统
2.2.1 什么是操作系统
2.2.2 操作系统启动过程
2.2.3 操作系统调用层级
2.3 地址空间
2.3.1 内存模型
2.3.2 为什么要有地址空间
2.3.3 什么是线性地址空间
2.3.4 段寄存器
2.3.5 指令指针寄存器
2.4 实模式与保护模式
2.5 特权级
2.5.1 CPL、RPL、DPL
2.5.1 一致性与非一致性
2.5.2 切换特权级的调用过程
2.6 小结
第3章 进程管理分析
3.1 进程的相关背景
3.1.1 单道批处理
3.1.2 多道批处理
3.1.3 分时系统
3.2 进程概览
3.2.1 元数据
3.2.2 上下文切换
3.2.3 进程描述符
3.2.4 任务状态段
3.3 内核初始化
3.3.1 内核的main函数
3.3.2 从内核态进入用户态
3.3.3 创建0号进程
3.4 进程调度
3.4.1 进程状态
3.4.2 execv函数
3.4.3 schedule函数
3.3.4 switch_to函数
3.4.5 sys_pause函数
3.4.6 sleep_on函数
3.4.7 interruptible_sleep_on函数
3.4.8 wake_up函数
3.4.9 sys_exit函数
3.4 中断处理分析
3.4.1 什么是中断
3.4.2 中断与异常的来源
3.4.3 中断描述符表
3.4.4 状态寄存器
3.4.5 程序调用
3.4.6 中断处理过程
3.4.7 系统调用
3.5 硬中断原理
3.5.1 request_irq函数
3.5.2 setup_irq函数
3.5.3 init_IRQ函数
3.5.4 interrupt[i] 数组生成
3.5.5 do_IRQ函数
3.5.6 handle_IRQ_event函数
3.6 软中断原理
3.6.1 raise_softirq函数
3.6.2 wakeup_softirqd函数
3.6.3 ksoftirqd内核线程的创建
3.6.4 ksoftirqd 函数
3.6.5 do_softirq函数
3.7 内核线程原理
3.7.1 sys_clone函数
3.7.2 do_fork函数
3.7.3 copy_files函数
3.7.4 copy_fs函数
3.7.5 copy_sighand函数
3.7.6 copy_mm函数
3.7.7 copy_thread函数
3.7.8 ret_from_fork函数
3.7.9 syscall_exit函数
3.8 信号原理
3.8.1 sys_kill函数
3.8.2 group_send_sig_info函数
3.8.3 handle_stop_signal函数
3.8.4 sig_ignored函数
3.8.5 LEGACY_QUEUE宏
3.8.6 send_signal函数
3.8.7 group_complete_signal函数
3.8.8 信号处理汇编
3.8.9 do_signal函数
3.9 小结
第4章 内存管理分析
4.1 分页概览
4.1.1 为什么分页?
4.1.2 控制寄存器
4.1.3 段选择子
4.1.4 段描述符
4.1.5 全局描述符表
4.1.6 局部描述符表
4.1.7 分页过程
4.2 内存描述符
4.3 mmap函数原理
4.3.1 sys_mmap函数
4.3.2 do_mmap2函数
4.3.3 do_mmap_pgoff函数分析
4.3.4 get_unmapped_area函数
4.3.5 find_vma_prepare函数
4.4 munmap函数原理
4.4.1 do_munmap函数
4.4.2 find_vma_prev函数
4.4.3 split_vma函数
4.4.4 find_vma函数
4.4.5 detach_vmas_to_be_unmapped函数
4.4.6 vma_merge函数
4.5 小结
第5章 I/O原理分析
5.1 I/O原理
5.1.1 提升I/O性能的基本思想
5.1.2 I/O执行流程
5.2 文件系统
5.2.1 虚拟文件系统
5.2.2 文件系统概览
5.2.3 文件系统布局
5.2.4 用户权限
5.3 open函数原理
5.3.1 sys_open函数
5.3.2 open_namei函数
5.3.3 dir_namei函数
5.3.4 get_dir函数
5.3.5 find_entry函数
5.3.6 new_inode函数
5.3.7 add_entry函数
5.4 close函数原理
5.4.1 sys_close函数
5.4.2 iput函数
5.5 read函数原理
5.5.1 sys_read函数
5.5.2 block_read函数
5.5.3 file_read函数
5.5.4 bmap函数
5.5.5 new_block函数
5.5.6 get_super函数
5.6 write函数原理
5.6.1 sys_write函数
5.6.2 block_write函数
5.6.3 file_write函数
5.7 高速缓冲区
5.7.1 buffer_head结构体
5.7.2 bread函数
5.7.3 breada函数
5.7.4 brelse函数
5.7.5 getblk函数
5.7.6 get_hash_table函数
5.7.7 wait_on_buffer函数
5.7.8 sync_dev函数
5.7.9 find_buffer函数
5.7.10 remove_from_queues函数
5.7.11 insert_into_queues函数
5.8 块设备驱动
5.8.1 块设备定义
5.8.1 ll_rw_block函数
5.8.2 make_request函数
5.8.3 lock_buffer函数
5.8.4 unlock_buffer函数
5.8.5 add_request函数
5.8.6 do_hd_request函数
5.9 高版本文件写入原理
5.9.1 sys_open函数
5.9.2 filp_open函数
5.9.3 open_namei函数
5.9.4 dentry_open函数
5.9.5 fd_install函数
5.9.6 sys _write函数
5.9.7 vfs_write函数
5.9.8 generic_file_write函数
5.9.9 generic_file_aio_write_nolock函数
5.9.10 generic_commit_write函数
5.10 小结
第6章 数据同步机制
6.1 同步机制概览
6.1.1 同步函数介绍
6.1.2 同步流程
6.1.3 page/buffer cache
6.1.4 create_buffers函数
6.2 O_DIRECT标志
6.2.1 generic_file_direct_IO函数
6.2.2 filemap_fdatawrite函数
6.2.3 mpage_writepages函数
6.2.4 ext2_writepage函数
6.2.5 filemap_fdatawait函数
6.2.6 ext2_direct_IO函数
6.2.7 do_direct_IO函数
6.2.8 submit_page_section函数
6.2.9 dio_bio_submit函数
6.3 O_SYNC标志
6.3.1 generic_osync_inode函数
6.3.2 sync_mapping_buffers函数
6.3.3 wait_on_buffer函数
6.3.4 ll_rw_block函数
6.3.5 write_inode_now函数
6.3.6 write_inode函数
6.3.7 wait_on_inode函数
6.4 sync函数
6.4.1 sys_sync函数
6.4.2 sync_inodes函数
6.4.3 sync_supers函数
6.5 fsync/fdatasync函数
6.5.1 sys_fsync/sys_fdatasync函数
6.5.2 ext2_sync_file函数
6.5.3 ext2_sync_inode函数
6.6 msync函数
6.6.1 sys_msync函数
6.6.2 msync_interval函数
6.6.3 filemap_sync函数
6.2.4 filemap_sync_pte_range
6.2.5 虚拟地址转化物理地址
6.2.5 set_page_dirty
6.7 小结
第7章 网络相关函数分析
7.1 TCP/IP流程概览
7.1.1 TCP流程
7.1.2 TCP状态变更
7.1.3 三次握手与四次挥手
7.1.4 TCP/IP四层模型
7.1.5 socket结构体
7.2 socket函数
7.2.1 sys_socket函数
7.2.2 sock_create函数
7.2.3 sock_alloc函数
7.2.4 inet_create函数
7.2.5 sock_init_data函数
7.2.6 sock_map_fd函数
7.3 bind函数
7.3.1 sys_bind函数
7.3.2 inet_bind函数
7.4 listen函数
7.4.1 sys_listen函数
7.4.2 inet_listen函数
7.4.3 tcp_listen_start函数
7.5 connect函数
7.5.1 sys_connect函数
7.5.2 inet_stream_connect函数
7.5.3 tcp_v4_connect函数
7.5.4 tcp_connect函数
7.5.5 tcp_transmit_skb函数
7.6 accept函数
7.6.1 sys_accept函数
7.6.2 inet_accept函数
7.6.3 tcp_accept函数
7.7 recv函数
7.7.1 sys_recv函数
7.7.2 inet_recvmsg函数
7.7.3 tcp_recvmsg函数
7.8 send函数
7.8.1 sys_send函数
7.8.2 inet_sendmsg函数
7.8.3 tcp_sendmsg函数
7.8.4 tcp_write_xmit函数
7.9 close函数
7.5.1 sys_close函数
7.9.2 inet_release函数
7.9.3 tcp_close函数
7.10 小结
第8章 Redis源码分析
8.1 Redis主流程分析
8.1.1 main函数
8.1.2 initServerConfig函数
8.1.3 initServer函数
8.1.4 setupSignalHandlers函数
8.1.5 createSharedObjects函数
8.1.6 adjustOpenFilesLimit函数
8.1.7 slowlogInit函数
8.1.8 bioInit函数
8.1.9 aeSetBeforeSleepProc函数
8.1.10 aeMain函数
8.1.11 aeDeleteEventLoop函数
8.2 Redis事件循环
8.2.1 event结构
8.2.2 Redis 事件循环设计
8.2.3 aeEventLoop结构体
8.2.4 aeFiredEvent结构体
8.2.5 aeTimeEvent结构体
8.2.6 aeFileEvent结构体
8.2.7 事件循环操作函数原型
8.2.8 ae_select实现
8.2.9 ae_epoll实现
8.3 Redis多路复用器
8.3.1 如何根据环境选择多路复用器
8.3.2 aeCreateEventLoop函数
8.3.3 aeCreateFileEvent函数
8.3.4 aeDeleteFileEvent函数
8.3.5 aeCreateTimeEvent函数
8.3.6 aeDeleteTimeEvent函数
8.3.7 aeMain函数
8.3.8 aeProcessEvents函数
8.3.9 processTimeEvents函数
8.3.10 aeWait函数
8.4 Redis请求与响应整体流程
8.4.1 anetTcpServer函数
8.4.2 anetUnixServer函数
8.4.3 acceptTcpHandler函数
8.4.4 acceptUnixHandler函数
8.4.5 acceptCommonHandler函数
8.4.6 createClient函数 437
8.4.7 readQueryFromClient函数
8.4.8 processInputBuffer函数
8.4.9 resetClient函数
8.4.10 processCommand函数
8.4.11 lookupCommand函数
8.4.12 queueMultiCommand函数
8.4.13 call函数
8.4.14 addReply函数
8.4.15 sendReplyToClient函数
8.5 小结
內容試閱
市面上大多数的计算机书籍都是从某个技术入手,对于如何运用已经讲解得十分透彻,如果是有一定计算机基础的读者,学习起来并不困难,但如果想要进一步地了解技术出现的原因并探究其产生的过程,则需要学习更深的计算机底层知识。当读者对计算机底层有了一定的了解并形成了自己的思维体系,再来看许多上层框架就会豁然开朗,运用起来也会更加得心应手。
在整个计算机体系中,基础硬件一定是计算机运行的根本要素,为了能够控制机器的指令,汇编语言应运而生并将硬件的各种行为抽象成了语言模型,正因为汇编的存在,程序员不用再对着密密麻麻的0和1进行编程和校正。但极度简单且纯粹的汇编语言对于编程而言实在太过烦琐,同一条汇编指令需要在不同的地方反复使用,为了能够简化相同流程的调用,又诞生了C语言,在C语言的基础上衍生出了操作系统,诸如我们现在所熟知的 Linux 及其发行版、Mac OS 等都是在 UNIX 系统的基础上演变而来的,有了操作系统后,才能基于操作系统发展其他的上层语言和框架。
现在,绝大多数公司都会选择 Linux作为服务器进行上层开发,Linux相比于Mac OS和 Windows 系统而言,最大的好处就是开源,能够让阅读它的人深刻了解底层到底做了什么,开发人员最担心的事情是不可控的 inux,而可控的 Linux 给了我们足够的安全感和信心来搭建上层框架。这样一来探究底层的理由也非常明显了,任何事物知其因,才得其果,Linux 聚集了全世界计算机精英的智慧,更有其创始人Linus 为每一次的代码审核和版本迭代把关,我们不仅可以通过学习内核来了解优秀的上层框架如何利用底层函数解决问题,还可以获取到他人对于程序设计的思想和流程的把控,学习如何在精简的代码下完成庞大的项目,实属当今时代的最大宝藏。
为了能将上层应用和底层原理融会贯通,本书将通过概念与源码结合的方式带领读者探寻内核,从最简单的0.11版本走向2.6版本,从根本上了解内核的设计思想,把握内核各个模块的主流程,梳理内核脉络,让大家对内核有整体的认知。
学习内核是为了能够更好地理解上层框架是如何编写的,本书将以Redis作为例子探究其对底层的运用思路。Redis是一个小而美的缓存数据库,几乎各家互联网公司都会用到,我们同样以 2.6 版本的 Redis 向读者展示,中间过程肯定也少不了对源码的解读,毕竟 Linus 的名言:Talk is cheap.Show me the code.(大意为废话少说,放“码”过来)
为什么要写这本书
起初黄俊老师通过混沌学堂这门课,从计算机的发展史讲到了如今热门的各大框架,他深悟混沌之道,知道任何事物都有其发展的过程,探究原因和发掘历史是学习前辈思想的最佳路径,也是探索未来的唯一途径,他在课堂上将计算机从底层原理开始娓娓道来细心地为我们讲解着每一个重要的知识点。
开始探索的过程是艰难的,初探内核的我们是迷茫的,对于庞大的内核,我们无从下手。直到 0.11版本的内核讲解结束,我们从低版本的内核中看到了 Linux 的全貌,它足够简单,这让我们吸收到了很多初代设计的精华,此外,其中涉及的许多汇编代码通俗易懂,硬件设备的交互也容易理解,这为后续的学习打下了坚实的基础。
来到2.6版本后,我们发现内核的整体架构依然没有大的变化,块划分也在初期就定型了(因为Linux的前身是 UNIX操作系统,其诞生于 20 世纪 70年代初,距Linux 的诞生已有二十来年,UNIX系统为 Linux的诞生奠定了基础),但其难度在于扩展性有了极大的提升,由于高版本的内核是由多人协作完成的,代码风格相对初代有了巨大的变化,为了保证内核高可扩展,大量的函数指针会让初学者晕头转向。另外,高版本的内核功能也在不断迭代,虽然模块与模块、层与层之间划分明确,但每进入一层,就仿佛走入了无尽的深渊,几长的调用链同样让初学者措手不及,往往研究了许久才发现自己只是走向了某个支线场景,背离了主干道,不得已又要从头开始探索。
在此感谢黄俊老师的悉心教导,每次碰壁后都是他的引导将我拉回主干道重新出发,在经历了无数次的“折磨”后,我对内核的兴趣越发浓郁,对于某个技术点的探究,我始终坚信自己一定能够克服,在这种心理下,终于艰难地将大部分2.6版本内核梳理完毕。
当2.6版本的内核学习完成后,我再翻阅上层源码框架时,仿佛整个人都脱胎换骨般,很容易就能理解源码的开发者为什么要这样做,知道技术的优点和弊端是什么,什么场景下适用什么框架,原因无他,即使再优秀的开源框架也要基于内核进行开发,内核中的系统调用是上层框架实现函数的必经之路。虽然框架的目的是更加方便应用开发,但过于简单的接口调用和极为严密的高度封装,已让应用开发者在面对许多生产问题时措手不及。
既然内核是一道绕不开的坎,那么趟过去了,后面就是一条光明大道。随着框架源码的大量阅读,就会发现其中的很多思想都借鉴了内核,不管如何变化,总归还是逃离不了进程、内存、文件、设备、网络这几大模块,而其中面向上层的又是那些重要的系统调用函数,上层框架往往是针对内核里的某个特性进行了适配和拓展,达到针对某些场景简化代码编写和提升性能的目的。
至此,计算机混沌之道分别由黄俊老师的三名学生基于混沌学堂课程进行总结完成其中包含了黄俊老师在课堂上讲解的绝大部分精华,本书是计算机混沌之道系列的第篇,第一篇已经为读者分析了汇编相关知识,本篇将基于汇编进而分析内核的相关内容而第三篇将为读者分析计算机网络和JVM,愿读者能从中获益,找到属于自己的混沌之道。
背景知识
本书需要一些简单的汇编知识,但涉及的内容并不会特别复杂,如果阅读过计算机混沌之道第一篇或有一定汇编基础的读者会更加容易理解本书出现的一些系统调用实现和硬件交互过程。
本书使用大量的图片和生活中的例子来解释内核中某些重点函数设计的技巧,方便读者理解,此外,由于内核是一个很深很大的话题,作者无法全面解释所有内容,但所述之处,皆为重点,每一个知识点的出现都有其推理过程,请读者放心阅读。
如果您有一定的编程基础,但对于内核并不是特别熟悉,那么本书将为您打开内核的大门,通读完本书,您将会对内核有一定的认识和理解。
如果您的编程技术尚浅,语言基础薄弱,那么本书对于您而言,可能会显得稍有难度您可以自行斟酌阅读。
本书适合以下读者阅读。
有一定语言的基础(如C、C 、Java 等),想学习内核,希望有一本简单易懂的入门内核书籍。
想通过学习内核,提升源码的阅读能力和设计思维能力。
有开发的工作经验,但底层原理总是吃不透,阅读优秀的开源代码十分吃力。
有运维的工作经验,但对于inux系统始终没有一个体系思维。
如何阅读这本书
设计程序的主要思想是为了在尽量少地消耗资源的情况下,提升更高的性能,因此理解进程,可以从资源分配上进行优化;理解内存,可以从空间存储上进行优化;理解 IO,可以从数据传输上进行优化;理解同步机制,可以从资源协调上进行优化;理解网络,可以从收发数据上进行优化。一旦对内核的每个模块都有了清晰的认知,那么读者可以很容易地根据合适的场景,选择合适的技术,做出最匹配项目的选择。此外,任何程序都不可能做到一劳永逸,一切事物都会更新迭代,这世上只有变才是唯一不变的,因此即使某种技术放在当下是最好的选择,也会因为时代的变更而被淘汰掉。读者通过学习内核,可以看到大师们对于各个模块里的难题的处理思路,如果能感同身受地代入思考问题并将难题想通后有种恍然大悟的感觉,那真是最让人兴奋的事情了。引用《桃花源记》里的一句古文:“初极狭,才通人。复行数十步,豁然开朗。”刚开始学习内核当然是痛苦的,这让我们进入了一个陌生的领域,一旦能够坚持下来,相信读者也会有所明悟。
本书以 Redis 的基本结构为开篇,带入C语言一些重要的特性,第1章阅读起来并不困难,对于熟知C语言的开发者甚至会觉得是小菜一碟,但“开胃菜”总是要有的,这也是为了不让后续的“大菜”显得突兀且不易消化。
从第2章开始,将进入Linux操作系统的世界,本章会详细讲述inux的相关背景和一些内核的基础知识,该部分内容多半来自Intel白皮书,毕竟操作系统的编写需要依赖硬件的指导,其中列出的许多内容都是高度关联的,有极高的参考价值,在此作者也建议有兴趣的读者能够在网上搜索Intel白皮书并下载阅读。
第3章讲述了进程的相关知识,进程是资源调度的发起者,一切动作的执行都需要由进程来完成,了解进程的创建过程、调度过程可以在很大程度上帮助我们理解进程的执行原理,对于后续探索多进程协作和高并发也有益处。此外,程序的执行是由中断驱动的,本章概述了中断的相关概念,也展示了信号的处理过程。
第4章讲述了内存的相关知识,如果说进程执行的程序是资源的处理过程,那么内存就是在某个阶段所存储的结果,其中最重要的概念就是以页为单位进行数据的存取过程,分页对于整个IO过程来说都是绕不开的一道坎,读者将在后续的章节中看到大量分页的存在。
第5章讲述了 I/0的原理,通俗易懂的说法就是读和写的过程,这是一切IO运行的本质。由于磁盘的存取速度远不及内存,为了匹配处理器的处理速度和数据的存取速度,处理器只执行内存上的数据,而不是磁盘数据。如此以来,内存的目标就被明确地划分出了两个方向:上对应用程序,下对磁盘存储。此外,磁盘读取速度相对较慢,对于经常会被修改的数据不便于在内存与磁盘间反复读写,由此高速缓冲区就随之出现了,因此,理解高速缓冲区的存在、内存与高速缓冲区之间如何读写、高速缓冲区到磁盘之间如何读写就是本章的重点内容了。
第6章讲述了数据的同步机制,高速缓冲区的作用是在内存与磁盘之间缓存数据,避免重复调度磁盘存取,达到优化性能、减少资源浪费的目的,但高速缓冲区带来的弊端也很明显,原本内存可以直达磁盘,现在却多了一层高速缓冲区,此外,高速缓冲区是共享的,还要为它考虑脏数据的问题。那么,什么时候刷新高速缓冲区和怎样刷新高速缓冲区就是本章探索的主要内容。
第7章讲述了 TCP/IP 网络编程的相关内容,网络一直以来都是计算机行业的热门话题,互联网行业能发展得如此辉煌,计算机网络功不可没。TCP协议如何保证数据的可靠是每个开发者需要了解的基础知识,本章从TCP的编程流程、连接过程、三次握手、四次挥手等重点知识来解读相关源码。
相信学习完前7章内容的读者,已经有了一定的阅读源码的能力,此时我们再回到 2.6 版本的 Redis 中,从主流程开始分析,将Redis 大体脉络梳理一遍,此时的你应该能够深刻地感受到,阅读优秀的开源框架是如此轻松的一件事!
勘误和支持
由于作者水平有限,且编写的时间也较为紧促,书中难免存在疏漏之处,恳请读者批评指正。读者可以通过账号bxiava,添加作者微信,提出您宝贵的意见。此外,书中许多内容由于篇幅原因无法展开描述,仅涉及某些技术的主体内容但并非详尽内容,作者会在个人的博客中更新优质的文章为读者分析更多的技术要点。同时,如果您遇到任何问题,也可以与作者交流探讨,作者将尽量在线上为读者提供满意的解答。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 台灣用户 | 香港/海外用户
megBook.com.tw
Copyright (C) 2013 - 2025 (香港)大書城有限公司 All Rights Reserved.