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 - Array + Slice

2022-05-15
Go Core - Entity

2022-04-16
Go Engineering - Specification - Design Method
Go 项目 Go 项目是一个偏工程化的概念,包含 Go 应用 Go 应用 代码结构按层拆分 最大的问题:相同功能可能在不同层被使用,而这些功能又分散在不同的层中,容易造成循环引用 12345678910├── controllers│ ├── billing│ ├── order│ └── user├── models│ ├── billing.go│ ├── order.go│ └── user.go└── views └── layouts 按功能拆分 Go 项目最常用的拆分方法 不同模块,功能单一,可以实现高内聚低耦合的设计哲学 所有功能只实现一遍,引用逻辑清晰,大大减少循环引用的概率 12345pkg├── billing├── order│ └── order.go└── user 代码规范编码规范 Uber Go 语言编码规范 静态代码检查工具:golangci-lint 最佳实践 Effective Go Go Code Review Comments Style guideline for Go packages 代码质量编写...

2022-03-19
Go Engineering - Specification - Commit
规范化的优势 优势:Commit Message 可读性更好 + 自动化 清晰地知道每个 Commit 的变更内容 基于 Commit Message 进行过滤查找:git log --oneline --grep "^feat|^fix|^perf" 基于 Commit Message 生成 Change Log 基于 Commit Message 触发 CICD 流程 确定语义化版本的版本号 fix 类型映射为 PATCH 版本 feat 类型映射为 MINOR 版本 带有 BREAKING CHANGE 的 Commit 映射为 MAJOR 版本 Angular 规范 Angular 格式清晰,使用最为广泛;Angular 规范是一种语义化的提交规范 Commit Message 是语义化的 Commit Message 都会被归为一个有意义的类型,用来说明本次 Commit 的类型 Commit Message 是规范化的 Commit Message 遵循预先定义好的规范,可以被开发者和工具识别 样例 规范 Commit Message 组成部分:...

2022-03-14
Go Engineering - IAM
概述 IAM:Identity and Access Management 用途:在特定条件下,用户能够对哪些资源做哪些操作 工作流程 3 种平台资源:User、Secret、Policy 系统架构 核心功能 创建平台资源 用户通过 iam-webconsole 或者 iamctl 请求 iam-apiserver,完成 User、Secret、Policy 的 CRUD iam-apiserver 将这些资源持久化到 MySQL 中 请求 API 完成资源授权 用户通过 iam-authz-server 的 /v1/authz 接口进行资源授权 请求 /v1/authz 接口需要通过密钥认证,认证通过后会查询授权策略,从而决定资源是否被允许 为了提高 /v1/authz 接口的性能,iam-authz-server 将密钥和策略缓存在内存中 iam-authz-server 通过 gRPC 调用 iam-apiserver,将密钥和策略缓存到内存中 为了保证数据的一致性,借助 Redis Channel 当 iam-ap...

2023-05-02
Go Engineering - Design Pattern
设计模式 创建型模式 提供了一种在创建对象的同时隐藏创建逻辑的方式 单例模式饿汉方式 在包被加载时创建 12345678910package singletontype Singleton struct {}var instance *Singleton = &Singleton{}func GetInstance() *Singleton { return instance} 懒汉方式 在第一次使用时创建 - 使用最多,但非并发安全,需要加锁 不加锁1234567891011121314package singletontype Singleton struct {}var instance *Singleton// GetInstance is not thread-safefunc GetInstance() *Singleton { if instance == nil { instance = &Singleton{} ...
Announcement
Things are always unexpected!






