Go高级知识
代码编译过程
-
全局变量会进行全局初始化
1 2
type noticeRepository struct{} var Notice = ¬iceRepository{}
-
model 层为何不全局实例化?因为 model 层的结构体带有属性,如果全局初始化则 model 层结构体实例的属性可能会出现重复,导致数据异常!
全局变量会进行全局初始化
|
|
model 层为何不全局实例化?因为 model 层的结构体带有属性,如果全局初始化则 model 层结构体实例的属性可能会出现重复,导致数据异常!
Go 的开发者极力推荐使用 Channel,不过,这两年,大家意识到,Channel 并不是处理并发问题的“银弹”,有时候使用并发原语更简单,而且不容易出错。
|
|
K8S部署环境下,不支持多个Pod部署,否则非GET方式的接口会出现以下错误提示【todo 具体原因不知:有空再查下】
同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)
两者定义的针对目标不同,异步同步是针对 响应 本身的,阻塞非阻塞是针对 请求 本身的。
输入法禁止联网,或者使用其他单机输入法
macos: 系统偏好设置->安全性与隐私->开启防火墙->防火墙选项->阻止传入连接【不好用,无法设置默认允许所有传入连接,只设定某个应用阻止连接】
canal 是阿里开发的一款基于数据库增量日志解析,提供增量数据订阅与消费的框架,可以很方便地同步数据库的增量数据到其他的存储应用。
整个框架纯JAVA开发,目前仅支持 Mysql 和 MariaDB(和mysql类似)。
一个专业的消息队列,必须要做到两点:
ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效、可扩展、稳定、安全的企业级消息通信。 它的设计目标是提供标准的、面向消息的、多语言的应用集成消息通信中间件。ActiveMQ 实现了 JMS 1.1 并提供了很多附加的特性,比如 JMX 管理、主从管理、消息组通信、消息优先级、延迟接收消息、虚拟接收者、消息持久化、消息队列监控等等。
Zabbix
statsd + influxdb + grafana(监控UI平台)
作用:限流、降级、接口请求链路追踪、接口响应时间等
ELK APM + Opentracing 『使用 Opentracing 在代码埋点,使用 ELK APM 展示追踪信息』
access_log:指的是访问日志,我们通过访问日志可以获取用户的 IP、请求处理的时间、接口响应状态、浏览器信息等
查看nginx日志存放地址:find / -name nginx.conf