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 - List + Ring

2022-05-15
Go Core - Array + Slice

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

2023-05-08
Go Engineering - Error Code
预期功能 有业务 Code 码标识 - HTTP Code 码有限 安全 - 对内对外展示不同的错误信息 设计方式 无论请求成功与否,都返回 200,在 HTTP Body 中包含错误信息 HTTP Code 通常代表 HTTP Transport 层的状态信息 缺点:性能不佳(需解析 Body) + 对客户端不友好 返回 4xx or 5xx,并在 Body 中返回简单的错误信息 返回 4xx or 5xx,并在 Body 中返回详细的错误信息 - 推荐 设计思路 区别于 http status code,业务码需要有一定的规则,可以通过业务码判断出是哪类错误 请求出错时,可以通过 http status code,直接感知到请求出错 需要在请求出错时,返回详细的信息:Code + Message + Reference(Optional) 返回的错误信息,需要是可以直接展示给用户的安全信息,不能包含敏感信息 但同时也要有内部更详细的错误信息,方便 Debug 返回的数据格式应该是固定的,规范的 错误信息要保持简洁,并提供有用的信息 Biz Code 纯数字表示,不同部位代表不同的服...

2022-02-08
Cloud Native Foundation - Go Thread Scheduling
进程 & 线程 进程:资源分配的基本单位 线程:调度的基本单位 在内核视角,线程与进程无本质差别,在 Linux 中都是以**task_struct**进行描述 glibc 中的 pthread 库提供了 Native POSIX Thread Library 支持 Native POSIX Thread Library (NPTL) is an implementation of the POSIX Threads specification for the Linux operating system. 子进程通过 fork 的方式产生,基于父子关系形成进程树,Linux 中的初始进程一般为systemd 12$ pmap 11: /lib/systemd/systemd --system --deserialize 37 Linux 进程内存 虚拟地址 https://ggirjau.com/text-data-bss-heap-stack-and-where-in-memory-are-stored-variables-of-c-program/ Segme...
2022-05-01
Go Engineering - Foundation - Log - Design
功能需求基础功能 支持基本的日志信息:时间戳、文件名、行号、日志级别、日志内容 支持不同的日志级别:Trace(可选)、Debug、Info、Warn、Error、Panic(可选)、Fatal 期望级别:glog.Info("This is info message") 开关级别:glog -v=4,只有日志级别高于等于 4 的日志才会被打印 支持自定义配置:不同的运行环境,需要不同的日志输出配置,在不重新编译代码的情况下,改变记录日志的行为 支持输出到标准输出(实时读取)和本地文件(采集索引) 高级功能 支持多种日志格式:TEXT、JSON 按日志级别分类输出:至少 Error 级别的日志输出到独立的文件中 支持结构化日志:使用 JSON 或者其它编码方式使日志结构化 支持日志轮转:借助 Linux Logrotate 来完成,不在日志包中实现 具备 Hook 能力 例如:当 Error 级别的日志产生时,发送邮件或者调用告警接口进行告警 日志告警的最佳方案:通过旁路功能,将日志采集到第三方组件(如 ES),日志包功能应尽量内聚 1234567891011121...
Announcement
Things are always unexpected!






