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

2022-05-15
Go Core - Entity

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-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...

2022-10-10
Cloud Native Foundation - Go GC
Heap 管理 Allocator (向 OS 申请)初始化连续内存块作为 Heap Mutator 申请内存,Allocator 从 Heap 中未分配的区域中分割小的内存块 用链表将已分配内存连接起来 内存块元数据:大小、是否使用、下一个内存块的地址 Collector 会扫描 Heap,将不再被使用的内存设置为 unused 内存分配TCMalloc TC = Thread Caching page:内存页,大小为 8k,Go 与 OS 之间的内存申请和内存释放,都是以 page 为单位的 span:内存块,一个或者多个连续的 page 组成一个 span sizeclass:空间规格,每个 span 都带有一个 sizeclass,标记着该 span 中的 page 该如何使用 sizeclass - 8,16,32,48,64,80 … object:对象,用来存储一个变量数据的内存空间 span 在初始化时,会被切割成一堆等大的 object 如果 object 的大小为 16B,Span list 1 中的 span 为 8k,该 span 中的 page 会...

2022-12-11
Go - Design Philosophy
简单 语言特性始终保持少且足够的水平,不走语言融合的道路,简单的设计哲学是 Go 生产力的源泉 仅有 25 个关键字,主流编程语言最少 内置 GC,降低开发人员内存管理的心智负担 首字母大小写决定可见性,无需通过额外关键字修饰 变量初始为类型零值,避免以随机值作为初值的问题 内置数组边界检查,极大减少越界访问带来的安全隐患 内置并发支持,简化并发程序设计 内置接口类型,为组合的设计哲学奠定基础 原生提供完善的工具链,开箱即用 显式 Go - 程序员应该明确知道在做什么;C - 信任程序员 Go 不允许不同类型的变量进行混合计算,也不会进行隐式自动转换 Go 采用基于值比较的错误处理方案 函数或方法的错误会通过 return 语句显式地返回,并且调用者通常不能忽略对返回的错误的处理 组合 组合是构建 Go 程序骨架的主要方式,可以大幅度降低程序元素间的耦合,提高程序的可扩展性和灵活性 在 Go 中,找不到经典的 OOP 语法元素、类型体系和继承机制,Go 推崇的是组合的设计哲学 提供正交的语法元素,以供后续组合使用 包之间相对独立,没有子包的概念 没有类型层次体系,各类型之间互相独...
Announcement
Things are always unexpected!





