自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 k8s学习pod第一天

创建了一configmap,然后引用cm-appvars中的环境变量。我们配置了两个两个key,value,可以被其他文件引用。

2023-04-10 11:39:56 69

原创 k8s常用命令集

返回default空间下的pods列表Name:pod的名称READY:启动成功的数量/pod中的数量STATUS:状AGE:启动时间。

2023-03-25 18:46:41 327

转载 k8s从0到1安装

执行完kubeadm init --image-repository=registry.aliyuncs.com/google_containers命令后,如果最后输出的信息为kubeadm join.....等,说明启动成功了,接着执行。可以看到我们设置成功了,多了一个service/nginx-service服务,映射的外网的端口是30593,那我用本机的ip:30593测试一下(注意是本机的ip,不是上面的CLUSTER-IP )至此,k8s安装与配置已完成,下面内容是测试。

2023-03-25 17:56:21 526

原创 按位与操作

例如,可以使用 & 运算符来获取本地 IP 地址或设置 socket 的地址。在多线程编程中,& 运算符可以用于同步线程之间的数据访问。例如,可以使用 & 运算符来创建线程安全的数据结构或者进行线程间的互斥访问。例如,可以使用 & 运算符来将一个整数的某些位设置为 0 或 1,或者获取某些位的值。例如,可以使用 & 运算符来控制电子设备的某些位,或者读取传感器的数据。& 是 Golang 中的位运算符,主要用于按位与操作。在算法和数据结构中,& 运算符可以用于位运算的算法和数据结构,例如位图和哈希表等。

2023-03-10 14:29:38 225

原创 移位操作场景

移位操作。

2023-03-10 14:25:54 96

原创 GC内存回收

分代收集(Generational Garbage Collection)。节点复制(Copying Garbage Collection)引用计数(reference counting)标记-清除(mark & sweep)

2023-03-10 13:58:35 61

原创 死锁的场景

当一个锁已经被一个 goroutine 获取了,另一个 goroutine 尝试获取相同的锁时,会发生死锁。当一个 goroutine 执行一个需要长时间处理的操作时,如果其他 goroutine 尝试获取该 goroutine 持有的锁,则会被阻塞。当一个 goroutine 持有资源 A,尝试获取资源 B,而另一个 goroutine 持有资源 B,尝试获取资源 A,会发生死锁。当一个 goroutine 在持有一个锁的情况下递归调用函数,而该函数尝试获取相同的锁时,会导致死锁。

2023-03-10 13:46:35 227

原创 深入讲解竞态

当两个或多个 goroutine 同时访问和修改共享变量时,就会发生竞态条件。这种情况下,程序的行为就不再可预测,可能会导致数据不一致或者崩溃等问题。竞态条件是并发程序中常见的问题,因此在 Golang 中,有很多机制可以帮助我们避免竞态条件。

2023-03-09 19:57:53 194

原创 死锁检测原理

定义等待图节点,用于记录每个节点的状态和依赖关系。节点状态可以用一个 bool 变量表示,表示该节点是否被访问过。依赖关系可以用一个切片表示,记录该节点所依赖的所有节点。

2023-03-09 14:14:15 155

原创 死锁检测工具

go tool trace 分析器可以显示 goroutine 的创建和销毁情况,以及 goroutine 之间的依赖关系,从而帮助我们分析死锁问题。使用 sync 包中的 WaitGroup 和 Mutex 类型:在编写代码时,可以使用 sync 包中的 WaitGroup 和 Mutex 类型来避免死锁问题。race 检测器会监控程序运行时的内存访问和 goroutine 调度情况,如果检测到死锁问题,就会输出相应的警告信息。因此,在编写代码时,应该确保加锁和解锁的次数相等。是需要检测的文件名。

2023-03-09 14:10:31 1908

原创 内存泄漏的场景

例如,在使用 goroutine 时,如果没有及时停止不再需要的 goroutine,那么这些 goroutine 占用的内存将一直存在,无法被垃圾回收。例如,如果一个对象 A 持有一个指向对象 B 的指针,而对象 B 又持有一个指向对象 A 的指针,那么这两个对象将无法被垃圾回收,从而导致内存泄漏。例如,在使用切片时,如果频繁地追加元素,但是没有及时删除不再需要的元素,那么切片占用的内存将一直增加,无法被垃圾回收。例如,在使用缓冲区时,如果代码中存在死循环,可能会导致缓冲区一直被占用,从而无法释放。

2023-03-09 11:40:45 382

原创 空结构体的使用场景

struct{}空结构体是一个非常有用的 Golang 特性,因为它既可以减小内存开销,又可以用来表示某些状态或者信号。

2023-03-09 11:37:26 234

原创 opentelemetry

opentelemetry是什么。

2023-03-05 17:00:18 94

原创 你能看到你自己么?

观观观、念念念、无观不成念。一念反一念、年年无极限。一念生地狱、一念生人间。无念无无念,世间在心间。你能看到你自己么?你究竟是什么样的存在?你可能比任何人都努力,你相信只要努力,迟早一天会成功,你相信天道酬勤,你看到的身边发生的一切,原来的你和现在的你,是不是同一个你,究竟是时代托起了你,还是你爬上了时代的肩膀,此二者看的的风景无二,难道真的是无二么?巍巍众山行,付纬透天间,焉知驾月去,如何有人间!你看的的、你听到的、你闻到的、你触到的、你感觉到的、你想到的,这是你么?

2023-03-05 16:21:12 124

原创 命名空间负载均衡

缓存节点信息:为了减少对ZooKeeper的频繁访问,可以将服务节点信息缓存在本地,以便快速获取服务节点信息。缓存可以使用内存缓存、本地文件缓存或者远程缓存等方式实现。实现节点权重调整:在负载均衡过程中,可以根据节点的负载情况,动态调整节点的权重,以实现更加均衡的负载。可以使用平滑加权轮询算法等方式来实现节点权重调整。实现负载均衡算法:根据服务节点列表和负载均衡算法,计算出要访问的服务节点。获取服务节点列表:首先需要获取服务节点列表,可以通过监听服务节点变化或定时刷新的方式来获取最新的服务节点列表。

2023-03-03 12:31:41 85

原创 zookeeper配置文件安全性

在Zookeeper中实现分布式配置管理时,需要考虑配置文件的安全性。因为配置文件中可能包含敏感信息,如密码、密钥等。

2023-03-03 10:56:27 420

原创 go doc 命令

【代码】go doc 命令。

2023-03-02 09:35:10 171

原创 go install

单独使用go install命令的场景一般是安装本地自定义包,比如修改了一个已有的第三方包,想要使用本地的版本,就可以使用go install命令。

2023-03-02 09:33:25 1400

原创 go list 命令

【代码】go list 命令。

2023-03-02 09:32:43 423

原创 go get命令

【代码】go get命令。

2023-03-02 09:29:41 484

原创 go clean 命令

【代码】go clean 命令。

2023-03-01 13:28:36 427

原创 go tool 命令

【代码】go tool 命令。

2023-03-01 12:16:05 79

原创 go.fmt 命令

这个工具就是用来规范代码的,具体可以稍后研究下,优先级不高。

2023-03-01 12:13:25 123

原创 go vet命令

vet 是 golang 中自带的静态分析工具,可以让我们检查出 package 或者源码文件中一些隐含的错误。这个工具还是比较有用的,可以多研究下。

2023-03-01 12:13:23 618

原创 go version 命令

go version 命令。

2023-03-01 12:08:17 347

原创 go mod命令

go mod 指定包版本号。

2023-03-01 12:07:17 191

原创 Glossary go中的术语

/major version主要版本:语义版本中的第一个数字(v1.2.3中的1)。//deprecated module不建议使用的模块:作者不再支持的模块(尽管为此目的,主要版本被认为是不同的模块)。//module graph pruning模块图修剪:Go 1.17中的更改,通过省略指定go 1.17或更高版本的模块的传递依赖关系来减少模块图的大小。//lazy module loading惰性模块加载:Go 1.17中的更改,避免在指定go 1.17或更高版本的模块中为不需要的命令加载模块图。

2023-03-01 12:00:38 193

原创 go build

下载.mod或.zip文件后,go命令计算加密哈希,并检查它是否与主模块的go.sum文件中的哈希匹配。然后,它可能会发送$module/@v/$version.mod和$module/@v/$version.zip请求来加载go.mod文件和源代码。请注意,.mod和.zip请求是分开的,即使go.mod文件通常包含在.zip文件中。如果缓存中没有go.mod文件,go命令将使用$module/@v/$version.mod请求从代理中下载它(其中$module是模块路径,$version是版本)

2023-03-01 11:58:12 305

原创 go test

【代码】go test。

2023-03-01 11:50:24 82

原创 Zookeeper API封装

在使用Zookeeper API开发业务时,可以根据具体的业务需求和场景,对API进行封装,以满足高性能、灵活配置和灵活使用的要求。

2023-03-01 11:41:34 206

原创 适配器模式

在这个示例中,适配器模式被用来将一个外部服务的接口适配成内部系统的接口。通过这种方式,内部系统就可以使用适配后的接口来调用外部服务,而不需要修改内部系统的代码。适配器模式可以让系统更加灵活,降低耦合度,使系统更容易扩展和维护。这个适配器类型将外部邮件服务的接口适配成了内部系统需要的接口,通过调用外部邮件服务的。// 将外部邮件服务的接口适配成内部系统需要的接口。类型来发送邮件,而不需要关心外部邮件服务的具体实现。// 创建外部邮件服务的实例。现在,内部系统就可以使用。

2023-02-28 09:43:03 105

原创 range实现

在 Golang 中,range实际上是使用了迭代器模式来实现的。具体来说,对于数组、切片、字符串等容器类型,range实际上是调用了容器对象的迭代器对象的Next()方法来依次遍历容器中的元素。对于 map 类型,range实际上是遍历了容器的 key 集合,并依次取出每个 key 对应的 value 值进行返回。对于通道(channel)类型,range实际上是在遍历通道的同时进行等待,直到通道被关闭或者发生阻塞等待才退出循环。在遍历通道时,使用range。

2023-02-28 09:42:21 123

原创 状态模式State Pattern

状态模式(State Pattern)是一种对象行为型模式,它主要解决的是一个对象在其内部状态发生改变时会导致其行为的变化,通过将状态封装成独立的对象,可以使得状态的变化独立于对象的行为,从而实现状态和行为之间的解耦。状态模式通常包含以下角色:Context(上下文):定义客户端感兴趣的接口,维护一个对具体状态类的实例,以便于客户端调用具体状态类的方法。State(抽象状态):定义一个接口以封装与Context的一个特定状态相关的行为。ConcreteState(具体状态):实现State接口。

2023-02-28 09:42:18 137

原创 迭代设计模式

设计模式中的迭代器模式(Iterator Pattern)是一种行为型模式,它允许客户端通过迭代器访问聚合对象中的元素,而无需了解底层的实现细节。迭代器模式通常由以下几个角色组成:迭代器(Iterator):定义访问和遍历聚合对象元素的接口。具体迭代器(Concrete Iterator):实现迭代器接口,提供具体的访问和遍历聚合对象元素的实现。聚合对象(Aggregate):定义一个或多个迭代器的接口,通常包含一个用于获取迭代器的方法。

2023-02-28 09:42:14 144

原创 代理模式Proxy

代理模式(Proxy Pattern)是一种结构型设计模式,它允许对象通过代理来控制对其它对象的访问。在代理模式中,代理对象与实际对象具有相同的接口,因此代理对象可以替代实际对象使用,而且客户端不需要知道实际对象的存在。代理对象负责与实际对象交互,它可以在调用实际对象之前或之后执行一些操作,如验证权限、缓存数据等。

2023-02-28 09:42:10 296

原创 模板方法模式

说白了,就是定义一套标准(接口),接口中的方法就是模板,一个base类实现这个接口,子类继承base类,base类实现公用的方法, 子类延迟实现想重写的方法模板方法模式的核心思想是将算法的实现分解成一系列步骤,其中某些步骤的实现可以延迟到子类中,这些步骤称为“钩子”。模板方法模式由一个抽象类和若干个具体子类组成。抽象类中定义了模板方法,具体子类实现了其中的一些步骤。

2023-02-28 09:42:06 128

原创 责任链模式

责任链模式是一种行为型设计模式,它将多个对象组成一条责任链,请求在责任链上传递,直到有一个对象处理该请求或者请求到达链的末尾而无法处理。责任链模式的主要目的是解耦发送者和接收者之间的关系,将其通过一个链条连接起来,让请求在链条上流动。在责任链模式中,通常会定义一个抽象处理者类(Handler),它包含一个指向下一个处理者的引用。每个具体的处理者类(ConcreteHandler)实现处理请求的方法,如果它不能处理该请求,则将请求传递给下一个处理者。

2023-02-28 09:41:40 187

原创 适配器模式

这个适配器类型将外部邮件服务的接口适配成了内部系统需要的接口,通过调用外部邮件服务的 SendEmail 方法来实现 SendMail 方法。在这个示例中,适配器模式被用来将一个外部服务的接口适配成内部系统的接口。通过这种方式,内部系统就可以使用适配后的接口来调用外部服务,而不需要修改内部系统的代码。假设内部系统需要调用外部的邮件服务,但是外部邮件服务的接口与内部系统的接口不一致,此时可以通过适配器模式将外部接口适配成内部系统需要的接口。实际就是接口转换而已适配器模式的应用通常不需要太多的代码。

2023-02-27 12:22:49 72

原创 策略模式Strategy

在上述示例中,Operation 是一个策略接口,其中定义了一个 Do 方法,具体的加法、减法和乘法策略分别实现了该接口。Calculator 是一个计算器对象,包含一个策略对象的引用,通过该引用调用具体的算法,实现了运算的多态性。在策略模式中,定义了一个抽象策略类(Strategy),其中定义了一个算法的接口,具体策略类(ConcreteStrategy)继承抽象策略类,并实现其中的算法接口。策略模式通过定义一组算法,并将其封装在单独的类中,从而实现了算法的独立性。

2023-02-27 12:13:14 74

原创 装饰者模式

一层层往上加东西,而且东西想加就能加,不相加就不用加,非常容易在原来的基础上扩展。主要用于在不改变对象原有逻辑的情况下,动态地给对象增加新的行为。它通过把装饰行为包裹在对象外部来扩展对象的功能。这种方式的好处是,可以在不修改现有代码的情况下,给对象增加新的行为,从而增强其功能。装饰器模式通常包括一个抽象组件、具体组件、抽象装饰器和具体装饰器。抽象组件是被装饰对象的抽象类或接口,具体组件是被装饰对象的具体实现,抽象装饰器和具体装饰器则是用于扩展组件功能的类。

2023-02-27 12:08:40 143

空空如也

空空如也

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

TA关注的人

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