架构整洁之道--SOLID原则 SRP:单一职责不要将不同行为者的代码混在一起。 一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中,即又定义有且仅有一个原因使类变更。 OCP:开闭软件系统想要更容易被改变,那么其设计就必须允许新增代码来修改系统行为,而非只能靠修改原来的代码。 一个好的软件架构设计师会努力将旧代码的修改需求量降至最小,甚至为 0。但该如何实现这一点呢?我们可以先将满足不同需求的代码分组(即 SRP) 2022-10-22 设计
go zero使用记录 格式化api文件1goctl api format --dir=. 根据.api文件生成swagger安装: 1GOPROXY=https://goproxy.cn/,direct go install github.com/zeromicro/goctl-swagger@latest 生成文件: 1~/mylocalfile/aWork/code/flora-gopacket-api & 2022-10-22 golang
go的mapstructure库 github地址:github.com/mitchellh/mapstructure 简介该库的作用是用于将map转换为结构体,或者将结构体转换为map,该库还做了很多处理时的错误处理。 比如当你获取到json或者gob数据的时候,不知道其具体结构,只能先将其转换为map[string]interface{},然后可以用该库将map[string]interface{}转换为方 2022-09-29 golang #原创
linux命令太长换行 可以在末尾加上 \,然后写第二行,如下: 1234docker run -d --name=service-test --net=host \-v $PWD/config/config.yml:/usr/local/app/config.yml \-v $PWD/logs:/usr/local/app/logs \service -c=config.yml 直接把这个命令粘贴到Terminal 2022-09-28 运维 #原创
struct转为map,并使得未被赋值的字段不出现在map里 问题今天写代码遇到了一个函数实现的问题,该函数的功能是根据某个struct的json tag,构建对应的map[string]interface{}。如果struct中某个字段未赋值或者为默认值,那么得到的map中不要出现该字段。比如 1234type Student struct { Name string `json:"name"` Age int `js 2022-09-25 golang #原创
kibana可视化饼状图增加过滤条件 前提:在kibana可视化中,需要选择饼图呈现统计结果。 要求:饼图只统计http_type:response的数据。 修改前只有这一个Buckets: 需要在这个Bucket前面增加一个Split chart,Split chart内增加过滤条件。 修改后: 2022-09-18 运维 #原创
更改通过docker运行的kibana的显示语言 因为kibana是通过 docker compose启动的,docker compose通过I18N_LOCALE: "zh-CN"定义了显示语言为中文: 1234567891011121314151617181920version: "3.5" services: elasticsearch: container_name: elasticse 2022-09-16 运维
docker学习小记 docker学习小记 Dockerfile命令解析COPY语法 12COPY [--chown=<user>:<group>] <源路径>... <目标路径>COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"] 2022-09-01 运维
gohangout项目代码阅读总结 原文 功能gohangout类似logstash,从输入(ES,Kafka,Stdin等)读取数据,经过一些过滤和加工,将处理好的数据输出到指定输出中(ES,Stdin等) 代码可学习多个flag的结构化如果有多个flag参数,可以把参数的读取定义在init()中,这些参数在main所在文件里定义成一个option 注意option是个指针 1234567891011121314151617181 2022-08-17 golang
go设计模式 原文 Go语言并非是像C++和Java一样的面向对象语言,但是设计模式同样适用 创建型Creational Design Patterns单例Singleton主要用于保证一个类仅有一个实例,并提供一个访问它的全局访问点。 如何判断一个对象是否应该被建模成单例? 通常,被建模成单例的对象都有“中心点”的含义,比如线程池就是管理所有线程的中心。所以,在判断一个对象是否适合单例模式时,先思考下,这个对 2022-08-15 golang