gin源码分析 对比gin新实现的路由基本上采用了httprouter的逻辑,但是和框架结合的更加完整,比如说把httprouter中router的能力提到了engine中。使用sync.pool解决频繁创建的context对象,在百万并发的场景下能大大提供访问性能和减少GC。测试结果: sonic > go_json > json_iterator > encoding。gin提供了四种可选的json序列化方式,默认情况下会使用encoding/json。通过一个简单的基准测试看看哪种json序列化效率更高。
HPA流程 Prometheus一般用于自定义指标的收集(比如说http响应延时,qps),另外针对不同的被监控的中间件,都有开源的Prometheus exporter直接使用获取中间件的指标,比如说mq消息积压指标,数据库连接数等。收集的指标数据不能直接被k8s的组件使用,需要按照k8s提供的metric接口进行一轮转换,将不同采集组件采集的数据转换为k8s可以识别的指标数据结构。副本调整指是 ,k8s工作负载会调整集群中实际运用的pod副本数量,最终实现副本数量的变化。
记录一些不错的博客+不定时跟新 极客兔兔:https://geektutu.com/胤凯 ttps://www.yinkai.cc/goland知识星球:https://golangroadmap.com/
Go基础-defer执行规则及使用中的坑 (3)FILO:先进后出,若多个defer函数在同一函数内,执行顺序遵循先进后出原理。即第一个defer函数最后一个被执行。(1)延迟执行:defer关键字后的函数都是在整个函数执行结束return之后才执行的。(2)参数预计算:defer函数的形参会在定义时就完成了该参数的拷贝。
快速写一个kubernetes webhook+使用cert-manager实现自动更新证书 准入程序可以在部署在集群内部,也可以在多集群环境下使用一个准入程序对多个集群进行回调处理,好处就是只需要部署一次,而不用每个集群都部署,但是需要使用kube-client时,需要接入多个集群的kubeconfig,在集群内部部署则只需要配置rbac了;主要作用就是对操作做修改性质的准入,串行操作,不具备明确的顺序,需要注意操作对象的范围,防止出现预期之外的修改操作。内置准入器,默认开启的noderestriction准入器,主要是限制对节点一些标签的修改操作。动态准入器,HTTP回调机制,类似于拦截器。
cgroup&namespace 是 Linux 内核提供的一种资源隔离机制,它可以将一组进程和资源隔离开来,使它们在不同的命名空间中运行,互相之间不受影响。在 Kubernetes 中,namespace 用于将集群的各种资源(如 Pod、Deployment、Service 等)分组到不同的命名空间中,以便更好地进行管理和隔离。是 Linux 内核提供的一种资源限制机制,它可以对一组进程的资源使用进行限制,如 CPU、内存、磁盘等。修改需要限制的核数,这里限制只能使用1.5核,不做限制则会跑满2核。第二步,找到容器对应的进程id。
Go map底层原理 触发扩容的时机是增加了新元素, 桶搬迁的时机则发生在赋值、删除期间,每次最多搬迁两个桶。扩容过程是渐进性的,主要是防止一次扩容需要搬迁的 key 数量过多,引发性能问题。当溢出桶超过限制后,进行等量扩容,目的是整理溢出桶,提高检索效率。装载因子6.5, 当存储的元素超过后进行。
spring学习记录 1.对AOP的理解AOP面向切面是oop思想的一种延伸,将一些与业务无关却又重复的逻辑和行为抽象为一个统一的模块,提高代码复用性和简化管理,如平时的日志和审计等等。我们平时接触到的有两种,一种是spring aop 和aspectj。spring的过滤器和拦截器是spring aop的一种实现,上一个项目中使用到统计接口调用情况的代码是使用aspectj+注解实现的。相对于spring ao...
mysql执行顺序 最近工作中有业务需要对查询SQL进行解析,分解出查询字段和对应表的关系,以便从数据字典找到对应字段的安全级别进行脱敏,从Durid的一个sql解析插件中找到了解决方案,看到durid中抽象出来的一大堆元素,记不起一条SQL前后的执行顺序了,在这里回顾一下。一条SQL大致内容包括如下:select filed from table1 join table2 where on group ...
转载:TCP的三次握手和四次挥手 https://blog.csdn.net/qq_38950316/article/details/81087809这篇博客写的很详细自己理解:首先要明白几个名词:seq,ack,SYN,ACK,FIN大写的表示标志位,只有0,1两种状态,seq为序列号,ack为确认序列号一、tcp的三次握手过程客户端向服务端发送seq=x,SYN=1,客户端进入sent状态服务端收到数据,将x+...