摘要:
示例:闭包的记忆效应 闭包对它作用域上部变量的引用可以进行修改,修改运用的变量就会对变量进行实际修改。 被捕获到闭包中的变量让闭包本身拥有了记忆效应,闭包中的逻辑可以修改闭包捕获的变量,变量会跟随闭包声明周期一直存在,闭包本身就如同变量一样拥有了记忆效应。 package main import " 阅读全文
摘要:
热加载更新配置 在 Prometheus 的日常维护中,一定会对配置文件 prometheus.yml 进行再编辑操作,通常对 Prometheus 服务进行重启操作即可完成对配置文件的加载。 当然也可以通过动态的热加载来更新 prometheus.yml 中的配置信息,一般热加载有两种方法: 查看 阅读全文
摘要:
闭包(Closure)——引用了外部变量的匿名函数 闭包是引用了自由变量的函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境也不会被释放或者删除,在闭包中可以继续使用这个自由变量。因此,简单的说: 函数+引用环境=闭包 同一个函数与不同引用环境组合,可以形成不同的实例,如下图: 一个 阅读全文
摘要:
函数类型实现接口(把函数作为接口来调用) 函数和其他类型一样都属于 "一等公民",其他类型能够实现接口,函数也可以。 我们对比下结构体和函数实现接口的过程。 先实现一个接口: //调用器接口 type Invoker interface { //需要实现一个 Call() 方法 Call(inter 阅读全文
摘要:
关于golang指针的理解和引用 引用:https://studygolang.com/articles/29273 一、Go指针理解 Go 有指针,但是没有指针运算。你不能用指针变量遍历字符串的各个字节。在 Go 中调用函数的时候,得记得变量是值传递的。 通过类型作为前缀来定义一个指针’ * ’: 阅读全文
摘要:
同步——保证并发环境下数据访问的准确性(竞态检测、互斥锁、读写互斥锁) Go 程序可以使用通道进行多个 goroutine 间的数据交换,但这仅仅是数据同步中的一种方法。通道内部的实现依然使用了各种锁,因此优雅代码的代价是性能。在某些轻量级的场合,原子访问(atomic包)、互斥锁(sync.Mut 阅读全文
摘要:
示例:Telnet 回音服务器——TCP服务器的基本结构 本节使用 Go 语言中的 Socket、goroutine 和通道编写一个简单的 Telnet 协议的回音服务器。 回音服务器的代码分成4个部分,分别是接受连接、会话处理、Telnet 命令处理和程序入口。 1、接受连接 Go 语言中可以根据 阅读全文
摘要:
centos8.0 使用kubeadm部署 k8s-v1.18.20+etcd-v3.4.3+flannel-v0.10.0 高可用集群 一、资源规划: 主机名 IP地址 配置 角色 系统版本 k8s-master01 10.100.12.168 2C2G master/Work/etcd cent 阅读全文
摘要:
关闭通道后继续使用通道 通道是一个引用对象,和 map 类似。map 在没有任何外部引用时 ,Go 程序在运行(runtime)会自动对内存进行垃圾回收(Garbage Collection,GC)。类似的,通道也可以被垃圾回收,但是通道也可以被主动关闭的。 1、格式 使用 close() 来关闭一 阅读全文
摘要:
示例:使用通道响应计时器的事件 Go语言中的 time 包提供了计时器的封装。 由于 Go 语言中的通道和 goroutine 的设计,定时任务可以在 goroutine 中通过同步的方式完成,也可以通过 goroutine 中异步回调完成。 1、一段时间之后(time.After) package 阅读全文