Go
这不是一门语言, 而是一套新的方法论
go是世界上最好的语言!
静谧之心
专业摩的佬
业余吉他手
退役喷子
展开
-
每期一个小窍门: docker 多阶段镜像打包
使用多阶段镜像 本质上是打包与运行期的依赖分离 可以减小最终镜像大小。打包使用800M的 golang:1.23。运行期使用几M的alpine。原创 2024-08-27 09:39:21 · 143 阅读 · 1 评论 -
每期一个小窍门 golang中 CGO_ENABLED 含义
总结起来,使用CGO_ENABLED=0编译会慢一些是因为编译器需要额外的时间来处理CGO相关的代码,并且无法使用C语言的优化技术,同时还需要处理更多的Go代码。CGO_ENABLED是一个环境变量,用于控制Go编译器是否启用CGO(C语言调用Go函数)功能。当CGO_ENABLED=0时,表示禁用CGO功能。原创 2024-08-26 17:39:10 · 431 阅读 · 0 评论 -
每期一个小窍门: 关于 golang 2006年1月2日15时4分5秒 这个时间彩蛋
在Go语言中,time.Format方法的参数使用的是一种固定的格式化布局,这个布局是以Go的发布日——2006年1月2日15时4分5秒(对应于常量Mon Jan 2 15:04:05 MST 2006)为模板来指示时间的格式。在使用 time.Format 方法时,必须使用上面这个准确的时间来指定你想要的格式,因为Go语言将使用这个布局字符串中的数字位置来识别相应的时间部分。比如,如果你想要小时和分钟,你就使用 “15:04” 作为格式字符串。原创 2024-08-22 11:15:58 · 247 阅读 · 0 评论 -
每期一个小窍门: Goland 配置跳板机登陆并使用dlv 远程调试
本地 访问 localhost:6000 --> 转发到跳板机:22 --> 再转发到指定内网地址。好了 第一件事完毕 本地已经可以直接登陆到远程被跳机了。本机公钥 copy 到跳板机 和内网被跳机。本机 .ssh/config。原创 2024-08-15 20:52:45 · 209 阅读 · 0 评论 -
每期一个小窍门:全世界最简单的go exporter 例子
调用链路我大概描述下。原创 2024-08-07 16:35:09 · 242 阅读 · 0 评论 -
每期一个小窍门: 使用kubebuilder 生成operator脚手架 并操作控制自定义CRD副本数 (下)
然后这边 kubectl get pod 可以看到如我们所愿 有5个启动的pod 对应了上方的部署文件。通过拿到的运行期状态 来跟部署文件的期望状态对比 然后进行不同业务响应就ok了。写好这个文件后 直接通过自带的make命令 install 到k8s中。有了这个dacar类型之后 我们徒手制作一个这个类型的部署文件。由于这个是demo 我们就不把operator部署到集群侧了。在这个文件中定义 dacar 这个crd的spec。我们发现可以查看到这个crd了。apply 这个文件后。原创 2024-08-03 15:30:52 · 403 阅读 · 0 评论 -
使用kubebuilder 遇到的 262144 bytes 超长问题
make install报错metadata.annotations: Too long: must have at most 262144 bytes。修复方法:打开Makefile,在。最后成功install。原创 2024-08-01 20:25:10 · 309 阅读 · 0 评论 -
每期一个小窍门: 使用Gin 与 client-go 操作k8s (中)
本文承接上文后面应该还会有个下 应该是个operator的全程demo。原创 2024-07-30 20:19:16 · 491 阅读 · 0 评论 -
每期一个小窍门: 使用client-go 操作k8s (上)
然后把apiserver公网暴露出来 并拿到apiserver的远程conf文件。身边要有一个k8s集群 阿里云ask可以免费使用 注意是ask 不是ack。好了 各位再见 下次再会。运行结果: 可以通的。原创 2024-07-27 16:20:24 · 267 阅读 · 0 评论 -
每期一个小窍门: go不同项目之间的引用
那么你有一个包moda, 放在/home/aio/moda下面, 然后你想用go mod, 那么会执行go mod init A包名。然后你的modb也需要用go mod, 所以你执行go mod init modb。然后你就得到了go.mod文件。不出意外的话, 应该就引用到了。原创 2024-01-28 13:02:54 · 291 阅读 · 0 评论 -
golang视角下 protobuf 的安装 从proto文件到go文件
Protocol Buffers(protobuf)是一种由Google开发的轻量级、高效的数据序列化格式。它设计的目的是为了在不同系统之间进行数据交换,同时保持数据的结构化和高效传输。原创 2024-01-25 18:27:01 · 769 阅读 · 0 评论 -
go: 高性能json工具 easyjson 简介
【代码】go: 高性能json工具 easyjson 简介。原创 2023-08-27 13:40:48 · 762 阅读 · 0 评论 -
解决 go mod tidy 加载模块超时
如果go mod tidy 加载模块超时。原创 2023-08-23 13:48:36 · 1802 阅读 · 0 评论 -
每期一个小窍门: go 实现单例
go语言实现单例很简单 不需要类似java的double check 双重锁这种。通过 sync.Once 的once.Do() 只运行一次来实现。原创 2023-08-19 10:30:00 · 84 阅读 · 0 评论 -
每期一个小窍门: go 中 不确定的select语句
由于 goroutine 的执行顺序不确定,所以这里也不确定到底是该输出 42 43 还是 The default case!,可以用下面的脚本执行 5000 次看看(大家把下面的脚本保存成 for.sh,然后 chmod a+x for.sh,接着 ./for.sh)然后到 for.txt中看输出,大部分都是 default,很小部分是 42 和 43。所以他还是会优先的选择 case 去执行,只是我们不要写这种 select,一旦写了,我们大抵要为这种不确定性付出代价。原创 2023-08-15 23:24:40 · 96 阅读 · 0 评论 -
每期一个小窍门: 通过 两个小例子 玩转go channel
通道类似一个没有持久化功能的, 完全基于内存的, 消息队列原创 2023-08-15 00:15:32 · 195 阅读 · 0 评论 -
编程小窍门: 一个简单的go mutex的小例子
【代码】编程小窍门: 一个简单的go mutex的小例子。原创 2023-08-14 22:37:18 · 489 阅读 · 0 评论 -
深入理解 go协程 调度机制
Go 启动的时候,会有一个守护线程 G0,计数,会记录每个 Processor 运行完成的协程的数量,如果发现某一个 Processor 在一段时间内没有发生变化(阻塞),就会往这个协程的任务栈里面插入一个特殊的标记,当协程运行遇到非内联函数,就会读到这个标记,将自己中断下来,插到等待协程队列的队尾,切换到其他队列的队尾。内核线程是由CPU直接调度,如果一个用户线程对应一个内核线程,调度效率来看肯定是快于多个用户线程对应一个内核线程的。当协程被中断的时候,它在寄存器中的运行状态,也会保存在协程对象中;原创 2023-08-14 14:08:58 · 647 阅读 · 0 评论 -
每期一个小窍门: 玩转go mod 命令
这个工具类的 package name = util666。这个工具类的 物理路径是 = test666/util。可以使用下面两个命令来确保依赖正常加载。挎包调用需要大写 方法/变量 首字母。test666 是自身的mod名称。当然 你也可以使用别名来调用。main中引用了 一个工具类。原创 2023-08-13 21:58:35 · 486 阅读 · 2 评论 -
每期一个小窍门: go处理异常的一些小窍门
判断异常时, 异常逻辑在前, 即使有复杂业务逻辑判断, 也同样是扁平结构。go设计者更偏向于C的error处理方式, 快速失败是更简单高效的。我们可以利用error接口和多返回值来实现异常传递。error可以利用变量来复用 等价判断。没有类似java的exception。原创 2023-08-13 13:05:04 · 148 阅读 · 1 评论 -
每期一个小窍门: go 的小接口多组合思想
go中的接口更加灵活。原创 2023-08-12 21:51:42 · 126 阅读 · 1 评论 -
每期一个小窍门: go语言的两种接受者
在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数 u ,这个 u 就称作接收者。原创 2023-08-12 16:51:11 · 204 阅读 · 0 评论 -
每期一个小窍门: go中通过函数式编程, 将目标方法计时
【代码】每期一个小窍门: go中通过函数式编程, 将目标方法计时。原创 2023-08-09 23:30:45 · 84 阅读 · 0 评论 -
每期一个小窍门: 关于 go 的 iota 计数器
准确的说:iota出现在const语句块中的第几行,那么它就是几,当然这里的行数的索引也是以0为开始。因为iota一般出现在const语句块的第一行,不少的初学者会将之认为iota就是0,这是不对的。const中每新增一行常量声明将使iota计数一次,当然前提是iota在const中出现。iota是常量的计数器,可以理解为const定义常量的行数的索引,注意是行数。原创 2023-08-08 17:48:46 · 167 阅读 · 0 评论 -
GoLang 快速入门 合理实用常量
go的常量很方便iota 是一个只能在常量表达式中使用的一个标识符, 是一个常量计数器, 初始值为0, 新增一行, 下面的常量会+1下面是关于常量的小例子package constant_testimport "testing"/*constant 012*/const ( a = iota + 1 // 1 b // 2 c // 3)/*constant 可以跳过*/const ( a = iota + 1 // 1原创 2022-02-15 11:27:19 · 371 阅读 · 1 评论
分享