解决windows下github访问速度慢的问题,方法参考了路人Q的博客。该方法也同样适用于所有其他的网站。
在windows上通过vagrant和virtualbox一键搭建k8s集群
更加详细的操作方法请参考宋净超的github项目。
1、准备工作
安装vagrant和virtualbox
vagrant
官方下载地址(我使用的版本是2.2.6): https://www.vagrantup.com/downloads.html
virtualbox
官方下载地址(我使用的版本是2.2.65.2.14 r123301): https://www.virtualbox.org/wiki/Download_Old_Builds_5_2
获取虚机镜像
centos
的vagrant
镜像地址
leetcode课程记录(讲师:林沐)
讲师:林沐
配合视频食用更佳哦!B站链接:https://www.bilibili.com/video/av36288901
1、链表
206. 反转链表
题目
反转一个单链表。
示例:
1 | 输入: 1->2->3->4->5->NULL |
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
leetcode题解持续更新
搜索相关
301. 删除无效的括号
题目
删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果。
说明: 输入可能包含了除 ( 和 ) 以外的字符。
示例 1:
1 | 输入: "()())()" |
示例 2:
1 | 输入: "(a)())()" |
示例 3:
1 | 输入: ")(" |
深入理解k8s中的list-watch机制
我们知道,在kubernetes
中,有5个主要的组件,分别是管理节点上的kube-apiserver
、kube-controller-manager
和kube-scheduler
,node
节点上的kubelet
和kube-proxy
。这其中kube-apiserver
是对外和对内提供资源的声明式API的组件,其它4个组件都需要和它交互,在这个交互过程中,有一个非常关键的机制就是list-watch
。我们知道kube-apiserver
提供了一个kubernetes
中各种资源的增删改查的接口,不对需要对内给这4个组件用,还需要给外外部的用户以及集群内可能安装的插件使用,因此它接收到的请求量是十分巨大的,为了减少这种请求量,降低kube-apiserver
的压力,便设计出了list-watch
机制。client
端在跟server
端长期进行交互时,并不是每次需要查询时都去调用server的接口,而是使用list
+watch
的方式来维护一个缓存将server
端的数据缓存起来,当需要获取数据的时候直接从缓存中获取,一方面可以降低server
端的压力,另一方面也可以减少自己获取数据的时间。当然,增删改还是需要调用server端的接口。
本文的目的是将list-watch
的机制搞清楚,各位看官且往下看。
说明:本文使用的k8s代码为1.13版本,其他版本代码可能会有少许差异。
如何整理和分析commit
在同步代码或者升级社区开源组件的版本时候经常需要分析不同分支之间的差异,或者分析某一个开源组件中的自验代码的情况,这时候可以通过git工具来批量导出所有commit。
k8s中的go-restful库
go-restful库是一个用go语言实现的REST风格的Web服务框架,
1 关键数据结构
对于任何代码,数据结构是基础,搞清楚了数据结构才能搞清楚代码运行的逻辑。借用钟大师的一段话:
数据结构是什么?数据结构就是舞台上的角色,而函数方法就是这些角色之间演出的一幕幕戏。对象是有生命的,从创建到数据流转,从产生到消亡。而作为开发者来说,首先是搞懂这些人物设定,是关公还是秦琼,是红脸还是黑脸?看懂了人,就看懂了戏。 ——摘自钟大师的博客
因此在分析go-restful这个库的功能和使用方法之前,我们先来了解一下这个库的几个关键数据结构。
kube-apiserver代码解读
1 关键数据结构
1.1 Master
Master
包含了kube-apiserver
中的所有参数
1 | // Master contains state for a Kubernetes cluster master/api server. |
其中最关键的元素是GenericAPIServer *genericapiserver.GenericAPIServer
。