注:结合书中的大概内容以及笔者自身的k8s经验 总结学到的一些新知识每一篇篇幅不会很长
书很棒强烈推荐买一本读

本次读书来自于《kubernetes源码剖析》 作者郑东旭

因为第二章确实笔者只看了一遍,也是有很多地方不懂,所以只能根据自己的能力大概写,如果觉得有补充或者等等可以留言或者私聊,学习就是需要不断地交流才能进步

第二章 kubernetes构建过程

第二章分为几个部分
1.构建方式
自己的理解:基本在大型的go项目中都会有makefile 的存在 我们就可以使用makerfile去构建开源的应用
k8s还可以用bazel构建和测试kubernetes源码
这个构建方式这里就不多说了 因为确实我也不太看得懂 可以买一本《kubernetes源码剖析》 来看一下

2.代码生成器

conversion-gen 自动生成convert函数的代码生成器,用于资源对象的版本转换函数
deepocpy-gen 自动生成deecopy函数的代码生成器,用于资源对象的深复制函数
defaulter-gen 自动生成defaulter函数的代码生成器,用于资源对象的默认值函数
go-bindata 是一个第三方工具/她能够将静态资源文件嵌入go语言中,例如web开发中将静态的html,javascript等静态文件嵌入go语言代码文件中并提取一些操作方法
openapi-gen 自动生成openapi定义文件的代码生成器

3.代码生成过程
代码生成器的代码生成方式都类似
(1)构建deepcopy-gen二进制文件
(2)生成.todu文件
(3)生成deepcopy深复制相关函数
4.gengo代码生成器核心
目录结构

args 代码生成器的通用flags参数
examples 包含deepcopy-gen、defaulter-gen、import-boss、set-gen代码生成器的生成逻辑
generator 代码生成器通用接口generator
namer 命名惯例支持创建不同类型的名称
parser 代码解析器,用来构造抽象语法树
types 类型系统,用于数据类型的定义及类型检查算法的实现

代码生成原理
(1)Gather The Info 手机Go语言源码文件信息及内容
(2)Lexer/Parser 通过Lexer词法分析器进行一系列此番分析
(3)AST Generator:生成抽象语法树
(4)Type Checker 对抽象语法树进行类型检查
(5)Code Generation 生成代码 将抽象语法树转换为机器代码

kubernetes源码剖析读后感(二)相关推荐

  1. kubernetes源码剖析读后感(一)

    注:结合书中的大概内容以及笔者自身的k8s经验 总结学到的一些新知识每一篇篇幅不会很长 书很棒强烈推荐买一本读 本次读书来自于<kubernetes源码剖析> 作者郑东旭 第一章kuber ...

  2. STL源码剖析学习二:空间配置器(allocator)

    STL源码剖析学习二:空间配置器(allocator) 标准接口: vlaue_type pointer const_pointer reference const_reference size_ty ...

  3. cmd怎么运行http_Scrapy源码剖析(二)Scrapy是如何运行起来的?

    阅读本文大约需要 15 分钟.本文章代码较多,如果手机端阅读体验不好,建议先收藏后在 PC 端阅读. 在上篇文章:Scrapy源码剖析(一)架构概览,我们主要从整体上了解了 Scrapy 的架构和数据 ...

  4. GDAL源码剖析(二)之编译说明

    一.简单的编译 1.使用VisualStudio IDE编译 首先进入GDAL的源代码目录,可以看到有几个sln为后缀的文件名,比如makegdal10.sln,makegdal80.sln,make ...

  5. UDT源码剖析(二):UDT自带例程recvfile注释

    这几天学习了UDT自带的例子,结合源码进行了测试如下: #ifndef WIN32 #include <arpa/inet.h>    #include <netdb.h> # ...

  6. Azureus源码剖析(二) ---解析Torrent种子文件

    BT种子文件使用了一种叫bencoding的编码方法来保存数据. bencoding有四种类型的数据:srings(字符串),integers(整数),lists(列表),dictionaries(字 ...

  7. Python源码剖析学习二

    Python对象初探 在Python中,一切都是对象.连类型也是一种对象. 在Python中,对象就是为C中的结构体在堆上申请的一块内存.一般来说,对象是不能被静态初始化的,并且也不能在栈空间上生存. ...

  8. Redis源码剖析(二)io多路复用函数及事件驱动流程

    作为服务器监听客户端请求的方法,io多路复用起到了不可忽略的作用,利用io复用监听的方法叫Reactor模式,在前一篇也提到过,使用io复用是现在常用的提高并发性的方法,而且效果显著. 通常io多路复 ...

  9. MySQL · 引擎介绍 · Sphinx源码剖析(二)

    在本节中,我将会介绍索引文件sph的生成,从上一节我们得知sph文件保存了Sphinx的索引元信息以及一些索引相关的配置信息 SPH文件生成 先来看代码,其中sph文件的生成是在CSphIndex_V ...

最新文章

  1. 如何在notebook中的markdown中插入截取的图片_96编辑器教你如何在文章中插入图片、视频、音频!...
  2. 【caffe】windows下caffe+vs2013+python2.7+cuda8.0+cmake3.8编译与配置
  3. java怎样开关语句随机数 不重复_怎样用java产生一个指定范围而且不重复的随机数?...
  4. 【MM模块】 Cash Discounts 现金折扣
  5. 微信小程序封装storage(含错误处理)
  6. linux下ftp服务阶段实验(3)
  7. iOS开发常用输入校验
  8. linux 软件 名称 更新,linux软件版本管理命令update-alternatives使用详解
  9. c语言程序设计华北电力大学,2016年华北电力大学电气与电子工程学院C语言程序设计(同等学力加试)考研复试题库...
  10. termux php 出错,android上的终端——termux
  11. 【python教程入门学习】什么是生成器?
  12. POI设置单元格格式
  13. Numbers 档案如何转Excel .xlsx 格式?
  14. yy神曲url解析php_用PHP如何实现解析抖音无水印视频
  15. C语言开发FlyBird小游戏,飞翔小鸟小游戏,可以直接运行!
  16. window10运行不了1stopt_1stopt运行不了,到底为什么?
  17. 运动坐标系的旋转角速度与旋转角(转换角)的关系
  18. Google的愚人节
  19. mysql设置校对规则_MySQL校对规则
  20. Python 开发桌面应用居然如此简单

热门文章

  1. java IO流基础 万字详解(从拷贝文件到模拟上传头像)
  2. oracle ora 3136,oracle中ORA-3136,ORA-609
  3. Photoshop2022 23.0.0绿色精简版
  4. Chrome 谷歌分页打印 去除页眉页脚 点击取消或打印关闭当前窗口
  5. 多御浏览器新出的手机版本有什么功能?
  6. 20款Adobe AIR小游戏
  7. 卸载vue-cli过程中npm uninstall vue-cli -g 一直显示 up to date in 0.042s无法卸载
  8. stroage——SAN存储与WINDOWS主机连接
  9. MySQL Workbench报错说 seems to be a different OS
  10. Qt quick 示例:推特搜索小程序开发