2022年2月25日
Docker大行其道,在运维端给我们带来了前所未有的便利和高效,同时又具备很好的隔离性和安全性。一般我们都是远程服务器shell环境管理docker,如果管理的服务器多了,你肯定会觉得很繁琐,此时可视化管理工具将会极大提供管理效率。 这样的管理工具很多,这里重点介绍一款轻量级管理工具Portainer。他可以管理本机单台服务器,也可以批量 ………
阅读全文
2022年1月11日
数据库事务 事务的四个特性(ACID) 一般来说,衡量事务必须满足四个特性:ACID,即 原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。 原子性(Atomicity):一个事务(transaction)中的所有操作,要么全部完成,要 ………
阅读全文
2021年12月24日
标准库sync包中,内置了一些实用的数据结构,而且保证线程安全。比如:Mutex、RWMutex、WaitGroup、Once 、Cond、Map、Pool 。 参考阅读: https://zhuanlan.zhihu.com/p/138214620 sync.Pool Go自带了很多实用的标准库,其中sync.Pool就是用于提高内存使 ………
阅读全文
2021年12月9日
OS Shell下批量操作Redis 1 2 3 4 5 6 7 # 批量删除库中的某些Key ./redis-cli -h ip -p 1001 -a xxx keys ip_* |xargs ./redis-cli -h ip -p 1001 -a xxx del ./redis-cli -h ip -p 1001 -a xxx ………
阅读全文
2021年11月26日
微服务保护机制 熔断降级机制是对系统的防护,比如受到一些恶意攻击,那么需要熔断机制来保护系统的微服务,做出响应,避免资源被耗尽。既要能响应,又要能防护,当我们的请求达到一个负载阈值,就启用熔断,把真实接口关掉,给客户端请求一个响应,这个响应,我们可以设置。服务熔断就是对该服务的调用执行熔断,对应后续请求,不在继续调用该目标服务,而是直接返 ………
阅读全文
2021年11月3日
现代CPU一般具有三级缓存,目的是追求性价比。CPU在存取内存的时候存在缓存命中的问题,因此一般内存占用少的程序有更高的缓存命中率,一般性能会更好,但是内存占用的大小究竟对程序性能有多大影响呢?今天我们用WEB框架中常见数据结构的设计来分析一下性能。 Web框架中间件设计 在Web框架中常见的路由数据结构都是数,每个叶子节点代表一条路由, ………
阅读全文
2021年10月26日
为了更好的实现GoFast,我看了很多Golang的Web框架,包括比较流行的:Gin、Echo、iris、go-zero等。他们关于中间件的实现有很多相似的地方,但也有特色的地方,这里我们就重点分析一下他们的实现,顺便说说我的看法,最后介绍一下GoFast的实现。 Gin构造中间件数组 Gin框架是对每个路由节点单独构建一个中间件切片, ………
阅读全文
2021年10月21日
应用为什么要限流 由于 API 接口无法控制调用方的行为,因此当遇到瞬时请求量激增时,会导致接口占用过多服务器资源,使得其他请求响应速度降低或是超时,更有甚者可能导致服务器宕机。限流(Ratelimiting)指对应用服务的请求进行限制,例如某一接口的请求限制为 100 个每秒,对超过限制的请求则进行快速失败或丢弃。 限流可以应对: 热点 ………
阅读全文
2021年10月12日
Golang中GMP的介绍参考:/2020/12/27221039-008-gmp-model.html 操作系统会在物理处理器上调度线程来运行,而Go语言的运行时会在逻辑处理器P上调度goroutine来运行。每个逻辑处理器都分别绑定到单个操作系统线程M。在1.5版本以后,Go语言的运行时默认会为每个可用的物理处理器分配一个逻辑处理器。 ………
阅读全文
2021年9月29日
参考: https://www.cnblogs.com/mjc-blog/p/12037308.html (完)……
阅读全文