Go Core - List + Ring
|Word Count:0|Reading Time:1mins
Author: zhongmingmao
Copyright Notice: All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
Related Articles

2022-05-15
Go Core - Entity

2022-05-15
Go Core - Array + Slice

2022-04-30
Go Engineering - Foundation - RD
功能需求 为 iamctl 新增 helloworld 命令,该命令向终端打印 hello world 开发阶段代码开发 选择 Git Flow:适用于大型非开源项目 创建分支 基于 develop 分支,新建一个功能分支 feature/helloworld 1$ git checkout -b feature/helloworld develop branch 名要符合 Git Flow 的分支命名规范,会通过 pre-commit 的 githook 来确保分支名符合规范 123$ md5 ./githooks/pre-commit ./.git/hooks/pre-commitMD5 (./githooks/pre-commit) = 3324d20a738461f3b6347f9ce7dae6b6MD5 (./.git/hooks/pre-commit) = 3324d20a738461f3b6347f9ce7dae6b6 ./.git/hooks/pre-commit123456789101112131415161718#!/usr/bin/env bashLC_A...

2022-05-02
Go Engineering - Foundation - Log - Package
开源日志包标准库 log 包 标准库自带,无需安装 只提供 Print、Panic、Fatal 函数用于日志输出 Go 标准库大量使用了该 log 包 glog Kubernetes 使用的 klog 是基于 glog 进行封装 Google 推出的轻量级日志包 特性 支持 4 种日志级别: Info、Warning、Error、Fatal 支持命令行选项 支持根据文件大小切割日志文件 支持日志按级别分类输出 支持 V level – 开发者自定义日志级别 支持 vmodule – 开发者对不同的文件使用不同的日志级别 支持 traceLocation – 打印指定位置的栈信息 logrus Github star 数量最多的日志包,Docker 和 Prometheus 也在使用 logrus 支持常用的日志级别 可扩展:允许使用者通过 Hook 的方式,将日志分发到任意地方 支持自定义的日志格式:内置支持 JSON 和 TEXT 结构化日志记录:Field 机制允许使用者自定义字段 预设日志字段:Default Field 机制,可以给一部分或者全部日志统一添加共同的日志字段...

2022-03-26
Go Engineering - Specification - Directory
平铺式 主要用在 Go 包(框架、库)中,相对来说比较简单,如 glog 12# lsLICENSE README.md glog.go glog_file.go glog_test.go go.mod 结构化 主要用在 Go 应用中,相对来说比较复杂,事实规范:project-layout 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485├── api│ ├── openapi│ └── swagger├── build│ ├── ci│ ├── docker│ │ ├── iam-apiserver│ │ ├── iam-authz-server│ │ └── iam-pump│ ├── package├── CHANGELOG├── cmd│ ├...
2022-02-06
Cloud Native Foundation - Go Sync
线程安全 锁 Go 不仅提供了基于 CSP 的通讯模型,也支持基于共享内存的多线程数据访问 sync 包提供了锁的基本原语 同步工具 用途 sync.Mutex 互斥锁:Lock加锁,Unlock解锁 sync.RWMutex 读写分离锁:不限制并发读,只限制并发写和并发读写 sync.WaitGroup 等待一组 goroutine 返回,类似于 Java 的 CountDownLatch sync.Once 保证某段代码只执行1次,典型场景:单例模式 sync.Cond 让一组 goroutine 在满足特定条件时被唤醒,典型场景:生产者消费者模型 Mutex12345678910111213141516171819202122232425262728293031323334353637func unsafeWrite() { // fatal error: concurrent map writes conflictMap := map[int]int{} for i := 0; i < 100; i++ ...
Announcement
Things are always unexpected!






