自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 VMware Workstation 17 Player 安装好虚拟机无法连接网络问题

记vmvare安装好虚拟机后无法访问网络问题

2024-04-22 20:26:26 522

原创 windows下的golang代码依赖视图分析工具

goland graph 可视化工具

2023-12-13 16:45:25 526

原创 分享一个goland使用多版本go sdk的方法

goland 使用 多版本 go sdk

2022-06-24 18:58:56 3902 1

原创 Helm安装失败,“渲染的清单包含已存在的资源”(ClusterRole)

clusterrole 资源清单 already exists

2022-05-24 16:47:01 5922

原创 亲和性(affinity) 如何理解拓扑域(topologyKey)?

亲和性(affinity) 如何理解拓扑域(topologyKey)?官方描述pod 间亲和性与反亲和性官方描述pod 间亲和性与反亲和性 Pod 间亲和性与反亲和性的规则格式为“如果 X 上已经运行了一个或多个满足规则 Y 的 Pod, 则这个 Pod 应该(或者在反亲和性的情况下不应该)运行在 X 上”。 这里的 X 可以是节点、机架、云提供商可用区或地理区域或类似的拓扑域, Y 则是 Kubernetes 尝试满足的规则。最终pod调度到哪里的范围就是拓扑域。k8s根据用户的匹配规则获取到一

2022-05-05 19:05:04 1332

原创 单体应用会遇到的问题

这里主要针对比较庞大的单体应用来讲,因为微服务本身在带来各种优势的同时也会引入非常多的问题,而处理这些问题需要攻克很多技术难题,而这些代价对于整个业务功能而言并没有什么好处。所以如果是小型应用,单体会更好一些。就像istio最终回归单体应用就是一个很好的例子,并不是微服务就比单体应用好,具体问题具体分析代码庞大单体应用规模非常庞大,导致一个开发者很难了解代码的全貌,修改问题成本非常高,而且很有可能出错。而不能完全理解所有场景,在修复错误时候可能导致代码更加难以理解,从而进入一个恶性循环。开发速度慢代

2021-10-29 23:11:28 249

原创 容器中配置的command和args 和Dockerfiler中的entrypoint,cmd的生效规则

区别如下:如果容器中配置了command,那么就使用容器中的command,参数args如果配置了则使用,如果没有配置,就不带参数执行command如果容器中没有配置command,只是配置了args:使用Dockerfile中提供的命令,参数使用容器中配置的args如果容器中command,args都没有配置:使用Dockerfile中的默认配置总体来可以这样来记:以容器配置优先,Dockerfile配置补充。果只有command,则执行无参数命令。关于entrypoint 和 cmd的配置

2021-10-29 10:10:43 822

原创 golang 策略模式

策略模式策略模式定义了算法族,分别封装起来,让他们直接可以互相替换,此模式让算法的变化独立于使用算法的客户。go不同于java,本身没有继承的概念,天然只支持接口的组合模式。符合设计原则:多用组合,少用继承。策略模式是把变化的部分抽象出来,封装成单独的接口,然后在主接口利用“委托”(组合)的方式调用变化的部分,因为变化的部分单独成一个接口,所以它的各种实现直接可以互相替换,达到随时改变,添加,删除,不会影响到已经实现的代码部分,下面是示例代码,分析也写在了注解里面type Interface1 in

2021-09-09 10:06:15 609

原创 kubernetes 中的使用的缓存 ---lru.Cache

lru.Cachelru 源码位置 https://github.com/golang/groupcache/tree/master/lruLRU(Least Recently Used)特点:即最近最少使用,优先移除最久未使用的数据,按时间维度衡量。数据结构:双向链表和HashMap淘汰原则:根据缓存数据使用的时间,将最不经常使用的缓存数据优先淘汰。如果一个数据在最近一段时间内都没有被访问,那么在将来他被访问的可能性也很小先看一下Cache代码结构type Cache struct {

2021-09-01 16:41:59 330

原创 kubernetes 事件(Events)源码分析(四)---事件处理逻辑

事件处理这里把对事件的处理单独出来分析,之前主要是分析事件从上报到最终每个watcher里面执行处理。对于事件的处理k8s并不是简单的做了发送kube-apiserver,还有一个压缩的逻辑。先回顾一下3个注册方法:StartRecordingToSink()StartLogging()StartStructuredLogging()func (e *eventBroadcasterImpl) StartLogging(logf func(format string, args ...inter

2021-09-01 09:44:11 630

原创 kubernetes 事件(Event)源码分析(三)---三大杀器之EventBroadcaster&broadcasterWatcher

EventBroadcasterEventBroadcaster 接口有以下方法:// EventBroadcaster knows how to receive events and send them to any EventSink, watcher, or log. type EventBroadcaster interface { StartEventWatcher(eventHandler func(*v1.Event)) watch.Interface #启动

2021-08-27 17:58:27 559

原创 kubernetes 事件(Event )源码分析(一)---总章/使用

首先展示一张大致的流程图来说明k8s记录事件的大致流程,否则后面一头扎进代码里面可能会看懵圈。下面是一段使用示例,可以自己写一下,然后根据示例来一层层分析代码,每一步我都做了简单的注释,清晰明了 broadcaster := record.NewBroadcaster() #创建广播 broadcaster.StartLogging (func(format string, args ...interface{}) { #注册watcher klog.Info(fmt.Sprint

2021-08-27 17:52:14 350

原创 kubernetes 事件(Event)源码分析(二)---三大杀器之EventRecorder

EventRecorderEventRecorder 接口,拥有3种记录方式:Event(object runtime.Object, eventtype, reason, message string)Eventf(object runtime.Object, eventtype, reason, messageFmt string, args ...interface{})AnnotatedEventf(object runtime.Object, annotations map[string]

2021-08-27 17:50:51 462

原创 golang 单例模式

单例模式,全局只有一个实例,无法再新建饿汉模式:提前创建实例,提供一个对外方法,返回此实例代码如下:// Singleton 饿汉式单例, 都使用小写,无法导出,外部包没法直接创建type singleton struct{ name string}// 通过一个导出类型暴露出去*singleton,由于Singleton内部属性无法导出,所以外部也没法创建(只能创建一个空对象)type Singleton struct { *singleton}var single *Sing

2021-08-27 10:59:15 1279

原创 菜鸟学go 技巧总结(一)--默认配置

我们经常需要写一些配置性的内容,而这些配置可能非常的复杂,信息比较多,可扩展性多。这时候经常会有一种技巧就是提供默认配置,同时提供自定义配置方法,因为很多人可能使用最常用的几个配置就可以了,比较配置的复杂性。这种做法在go里面非常常见这里举一个pflag的例子:var CommandLine = NewFlagSet(os.Args[0], ExitOnError)// NewFlagSet returns a new, empty flag set with the specified name,

2021-07-22 17:57:40 238

原创 golang 实现接口的重写

golang能像java一样实现接口的重写吗,答案是可以的,看下面这波操作type Test interface { a() b()}type TestCommon struct {}func (t TestCommon)a() { fmt.Println("this TestCommon.a()")}func (t TestCommon)b() { fmt.Println("this TestCommon.b()")}type TestShade struct{ Test

2021-07-22 16:06:55 1497 1

原创 strings.TrimPrefix 和 strings.TrimLeft 的区别

先来直观的感受一下他们的执行结果:const Prefix = "abc"func main() { str := "abccbsfjs" result1 := strings.TrimLeft(str, Prefix) fmt.Println(result1) fmt.Println("----------------") result2 := strings.TrimPrefix(str, Prefix) fmt.Println(result2)}result:sfjs--

2021-06-15 20:46:26 688

原创 k8s network policy配置,看这篇就够了

这是一篇关于k8s的网络策略配置说明用户在使用k8s中,有对网络策略的配置需求,有时候希望不同的namespace之间不能互相访问,但是我们知道k8s中所有的pod之间都是可以互相访问的,这个时候就需要网络策略来帮助我们实现这个诉求,网络策略依赖于cni网络插件,不是所有的网络插件都支持网络策略,calico支持网络策略,而flannel不支持。接下来我以一张图来说明k8s的networkpolicy资源的配置整个图总接下来如下:入口规则: 仅允许 1.来自(from)命名空间(spec

2021-06-10 12:40:55 6392

原创 makefile的赋值操作

= 正常赋值:= 覆盖之前的赋值,只能使用定义过的变量?= 如果之前没有赋值,则赋值+= 给原来的值后面添加新的值=示例:= 示例?=示例+=示例

2021-05-28 17:38:54 213

原创 go语言函数类型的一般使用(一)

go语言的函数类型函数在go语言中也是一种变量,我们是通过type来自定义类型的,函数的类型是所拥有的相同参数与相同返回值的一种函数类型函数作为类型的最大好处在于可以把这个类型的函数当做值来传递:...

2021-05-25 10:55:01 229

原创 执行kubectl exec 报错

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-05-11 16:53:15 2455 1

原创 开篇-必定是生活感悟

生活感悟,写给自已,与君共勉最近项目刚刚结束,在找别的项目,也在看别的公司。参加了几场面试,颇有感悟。也许很low,可是,我还想走向优秀首先是对自己负责的模块,熟悉所有细节吗?知道所有实现的原理跟理由。如果让自己一个人做,能想到吗,能做出来吗我们在开发中一定会对接整个模块,对于自己接触到的东西,有没有过思考?有没有想过我提供的东西别人会怎么使用,如何跟他们对接的,我的东西在他们看来又是起什么样的作用。再有机会也要学习一下别的模块的东西,技多不压身,也能对整体项目加深了解,了解各个模块才能看清楚整个项目

2021-01-20 23:18:02 221 3

helm-v3.6.1-linux-amd64.tar.gz

helm-v3.6.1 linux x86安装包

2021-07-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除