深度探索Go语言-对象模型与runtime的原理特性及应用_第1页
深度探索Go语言-对象模型与runtime的原理特性及应用_第2页
深度探索Go语言-对象模型与runtime的原理特性及应用_第3页
深度探索Go语言-对象模型与runtime的原理特性及应用_第4页
深度探索Go语言-对象模型与runtime的原理特性及应用_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

深度探索Go语言——对象模型与runtime的原理特性及应用读书笔记模板01思维导图读书笔记作者介绍内容摘要目录分析精彩摘录目录0305020406思维导图对象原理书探索模型特性原理代码小结内存函数指令类型第章指针方法线程调度器方式本书关键字分析思维导图内容摘要内容摘要本书主要讲解了Go语言一些关键特性的实现原理,NicklausWirth大师曾经说过:算法+数据结构=程序,语言特性的实现也不外乎就是数据结构+代码逻辑。全书共分为4个部分:第一部分是基础特性(第1章~第3章),第二部分是对象模型(第4章~第5章),第三部分是调度系统(第6章~第7章),第四部分是内存管理(第8章~第9章)。书中主要内容包括:指针、函数栈帧、调用约定、变量逃逸、FunctionValue、闭包、defer、panic、方法、MethodValue、组合式继承、接口、类型断言、反射、goroutine、抢占式调度、同步、堆和栈的管理,以及GC等。书中包含大量的探索示例和源码分析,在学会应用的同时还能了解实现原理。书中绝大部分代码都是用Go语言实现,还有少部分使用汇编语言,都可以使用Go官方SDK直接编译。探索过程循序渐进条理清晰,用到的工具也都是SDK自带,方便读者亲自上手实践。读书笔记读书笔记之前就在b站**了作者,讲解知识非常生动。纸质书过了一遍,讲真这本书对关键语言特性的解释是我见过最透彻的了,没看那些汇编代码,结合伪代码和作者的解释也理解的差不多,期待电子版看着方便,能多过几遍,收获颇多。终于读完了此书的纸质版。相比于视频,书籍更侧重于源码,讲解也更为细致。目录分析1.1x86通用寄存器1.3内存分页机制1.2常用汇编指令第1章汇编基础1.5本章小结1.4汇编代码风格第1章汇编基础1.1x86通用寄存器1.1.132位架构1.1.264位架构1.2常用汇编指令1.2.1整数加减指令1.2.2数据传输指令1.2.3入栈和出栈指令1.2.4分支跳转指令1.2.5过程调用指令1.3内存分页机制1.3.1线性地址1.3.280386两级页表1.3.3PAE三级页表1.3.4x64四级页表1.3.5虚拟内存2.2相关操作2.1指针构成第2章指针2.4本章小结2.3unsafe包第2章指针2.1指针构成2.1.1地址2.1.2元素类型2.2相关操作2.2.1取地址2.2.2解引用2.2.3强制类型转换2.2.4指针运算2.3unsafe包2.3.1标准库与keyword2.3.2关于uintptr2.3.3内存对齐3.1栈帧3.2逃逸分析3.3FunctionValue3.4defer第3章函数3.6本章小结3.5panic第3章函数3.1栈帧3.1.1栈帧布局3.1.2寻址方式3.1.3又见内存对齐3.1.4调用约定3.1.5Go1.17的变化3.2逃逸分析3.2.1什么是逃逸分析3.2.2不逃逸分析3.2.3不逃逸判断3.3FunctionValue3.3.1函数指针3.3.2FunctionValue分析3.3.3闭包3.4defer3.4.1最初的链表3.4.2栈上分配3.4.3高效的opencodeddefer3.5panic3.5.1gopanic()函数3.5.2gorecover()函数3.5.3嵌套的panic3.5.4支持opencodeddefer4.1接收者类型4.2MethodValue4.3组合式继承4.4本章小结第4章方法4.1接收者类型4.1.1值类型4.1.2指针类型4.1.3包装方法4.2MethodValue4.2.1基于类型4.2.2基于对象4.3组合式继承4.3.1嵌入值4.3.2嵌入指针4.3.3多重继承5.1空接口5.3类型断言5.2非空接口第5章接口5.5本章小结5.4反射第5章接口5.1空接口5.1.1一个更好的void∗5.1.2类型元数据5.1.3逃逸与装箱5.2非空接口5.2.1动态派发5.2.2具体实现5.2.3接收者类型5.2.4组合式继承5.3类型断言5.3.1ETo具体类型5.3.2EToI5.3.3ITo具体类型5.3.4IToI5.4反射5.4.1类型系统5.4.2类型元数据详细讲解5.4.3对数据的操作5.4.4对链接器裁剪的影响6.1进程、线程与协程6.2IO多路复用6.3巧妙结合6.4GMP模型6.5GMP主要数据结构12345第6章goroutine6.6调度器初始化6.7G的创建与退出6.8调度循环6.9抢占式调度第6章goroutine6.10timer6.11netpoller6.12监控线程6.13本章小结第6章goroutine6.1进程、线程与协程6.1.1进程6.1.2线程6.1.3协程6.2IO多路复用6.2.13种网络IO模型6.2.2示例对比6.4GMP模型6.4.1基本概念6.4.2从GM到GMP6.5GMP主要数据结构6.5.1runtime.g6.5.2runtime.m6.5.3runtime.p6.5.4schedt6.6调度器初始化6.6.1调度器初始化过程6.init()函数6.7G的创建与退出6.7.1相关汇编函数6.oc()函数6.8调度循环6.ule()函数6.unnable()函数6.9抢占式调度6.9.1Go1.13的抢占式调度6.9.2Go1.14的抢占式调度6.10timer6.10.1一个示例6.10.2数据结构6.10.3操作函数6.11netpoller6.11.1跨平台的netpoller6.11.2TCP连接的Read()方法6.12监控线程6.12.1按需执行timer和netpoll6.12.2抢占G和P6.12.3强制执行GC7.1HappensBefore7.2内存乱序7.3常见的锁7.4Go语言的同步7.5本章小结12345第7章同步7.1HappensBefore7.1.1并发7.1.2并行7.2内存乱序7.2.1编译期乱序7.2.2执行期乱序7.2.3内存排序指令7.3常见的锁7.3.1原子指令7.3.2自旋锁7.3.3调度器对象7.3.4优化的锁7.4Go语言的同步7.7.4.2semaphore7.7.4.4channel8.1内存分配8.3本章小结8.2垃圾回收第8章堆8.1内存分配8.1.1sizeclasses8.1.2heapArena8.1.3mspan8.1.4mcentral8.1.5mcache8.1.6mallocgc8.2垃圾回收8.2.1GCroot8.2.2三色抽象8.2.3写屏障8.2.4触发方式8.2.5GCWorker8.2.6gctrace9.1栈分配9.2栈增长9.3栈收缩9.4栈释放9.5本章小结12345第9章栈9.1栈分配9.1.1栈分配初始化9.1.2栈分配逻辑9.2栈增长9.2.1栈增长检测代码9.2.2栈增长函数9.4栈释放9.4.1小于或等于16KB的栈空

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论