Go Core - Entity
|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 - Array + Slice

2022-05-15
Go Core - List + Ring

2023-05-01
Go Engineering - Elegant Project
优雅项目 Go 应用 代码结构 按功能拆分 - Kubernetes / Docker / Helm / Prometheus 代码规范 编码规范 - https://github.com/xxjwxc/uber_go_guide_cn 静态代码检查 - https://github.com/golangci/golangci-lint 最佳实践 https://go.dev/doc/effective_go https://go.dev/wiki/CodeReviewComments https://rakyll.org/style-packages/ 代码质量 单元测试 可测试 将依赖的数据库等抽象成接口,在被测代码中调用接口的方法,在测试时传入 Mock 类型 尽量减少 function 中的依赖 + 依赖是容易 Mock 的 高覆盖率 Code Review Mock 工具 https://github.com/golang/mock 官方 Mock 框架,与 Golang 内置的 testing 包集成,最常用 实现基于 interface...

2022-10-08
Cloud Native Foundation - Go Scheduling
线程加锁 线程安全 123456789// fatal error: concurrent map writesfunc unsafeWrite() { conflictMap := map[int]int{} for i := 0; i < 1<<10; i++ { go func(i int) { conflictMap[0] = i }(i) }} 锁 Go 不仅支持基于 CSP 的通信模型,也支持基于共享内存的多线程数据访问 Sync 包提供了锁的基本原语 原语 描述 sync.Mutex 互斥锁 sync.RWMutex 读写分离锁 sync.WaitGroup 等待一组 goroutine 返回 sync.Once 保证某段代码只执行 1 次 sync.Cond 让一组 goroutine 在满足特定条件时被唤醒 Mutex12345678910111213141516171819...

2022-03-19
Go Engineering - Specification - Open Source + Document + Version
规范 分类 规范 非编码类规范 开源规范 文档规范 版本规范 提交规范 发布规范 编码类规范 目录规范 代码规范 接口规范 日志规范 错误码规范 开源规范开源协议 Apache 是对商业应用友好的协议,大公司的开源项目通常会采用 Apache 2.0 开源协议 开源项目 较高的单元覆盖率 代码库中不能包含敏感信息 及时处理 PR、ISSUE 等 持续更新和 Bug Fix 文档规范 文档属于软件交付的一个重要组成部分 README12345678910111213141516171819202122# 项目名称## 功能特性## 软件架构(可选)## 快速开始### 依赖检查### 构建### 运行## 使用指南## 如何贡献## 社区(可选)## 关于作者## 谁在用(可选)## 许可证 项目文档12345678910111213141516171819202122232425262728docs├── devel # 开发文档,可以提前规划好,英文版文档和中文版文档│...
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!






