09 2022 档案
摘要:一、线程 1.1、redis是单线程还是多线程 无论什么版本,工作线程就是一个 6.0之后的版本出现了IO多线程 Redis 6.0版本以前的单线程是指其网络I/O和键值对读写是由一个线程完成的Redis 6.0引入的多线程指的是网络请求过程采用了多线程,而键值对读写命令仍然是单线程处理的,命令到服
阅读全文
摘要:一、五大数据类型 1、Redis键(key) ①、首先创建一些 key,并赋上对应值: redis 127.0.0.1:6379> SET w3c1 redis OK redis 127.0.0.1:6379> SET w3c2 mysql OK redis 127.0.0.1:6379> SET
阅读全文
摘要:1、gin绑定前端提交的数据到结构体 json,shouldbindjson,postform,query拿到get方法或者路由拼接这些 2、gin框架中间件多个执行顺序 3、中间件实现原理 4、设计一个中间件,实现类似于gin框架可以建立多个中间件还可以一次性返回 5、gin路由管理,和原生相比有
阅读全文
摘要:一、informer介绍 Kubernetes基于声明式API的设计理念,所谓声明式API,即告诉Kubernetes Controller资源对象的期望状态,这样为Kubernetes在事件通知后,动作执行前这段过程里提供了更多的容错空间与扩展空间。这就需要Kubernetes Controlle
阅读全文
摘要:一、append是深拷贝, func main() { a := []int{7, 8, 9} fmt.Printf("%+v\n", a) ap(a) fmt.Println("==", a) app(a) fmt.Println("-a-a", a) } func ap(a []int) { a
阅读全文
摘要:前言: servicemonitor监控存在两种情况: 1、有metrics ,创建service+servicemonitor配置 2、无metrics 配置exporter,exporter进行采集 一、监控自带metrics接口 ①、部署ServiceMonitor $ vi promethe
阅读全文
摘要:一、jwt原理 服务器认证以后,签名生成一个 JSON 对象,发回给用户;之后,用户与服务端通信的时候,都要发回这个 JSON 对象。服务器就不保存任何 session 数据了,也就是说,服务器变成无状态了,从而比较容易实现扩展。这个对象,可以携带在访问的header中,或者body中、也可以是ur
阅读全文
摘要:1、案例 服务端代码如下: func process(conn net.Conn) { defer conn.Close() reader := bufio.NewReader(conn) var buf [1024]byte for { n, err := reader.Read(buf[:])
阅读全文
摘要:1、Cookie介绍 1.1 cookie是什么 1、HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由用一个客户端发出 2、服务端可以设置Cookie数据。 3、Cookie实际上就是服务器保存在浏览器上的一段信息。浏览器有了cookie之后,每次向服务器发
阅读全文
摘要:前言:默认的K8S的证书年限为1年,如果按照时间迭代更新K8S版本则不用考虑证书年限的问题 修改可用年限 cd /etc/kubernetes cp -r pki/ pki.old 生成新证书 kubeadm alpha certs renew all --config=/usr/local/ins
阅读全文
摘要:一、bufio.NewScanner(os.Stdin) 接收用户发送的账户密码 func Login() (map[string]string, map[string]string) { user := map[string]string{} pass := map[string]string{}
阅读全文
摘要:一 哈希表的基本介绍 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表 二 使用 hashtable 来实现一个雇员的
阅读全文
摘要:栈的介绍 有些程序员也把栈称为堆栈,即栈和堆栈是同一个概念栈的英文为(stack)栈是一个先入后出(FILO-First In Last Out)的有序列表。栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,为变化的一端,称为栈顶(Top)
阅读全文
摘要:1)、冒泡排序 package main import ( "fmt" "log" ) func main() { sli := []int{2, 4, 9, 23, 90, -20, 3, 5, 21, -7, 32, 9, 14, 6} if len(sli) == 0 || len(sli)
阅读全文
摘要:单向环形链表 单向环形链表是一种特殊的单向链表。 单向链表最后一个节点的 Next 指针指向空。 而单向环形链表最后一个节点的 Next 指针指向头节点。 如图所示: package main import "fmt" type CatNode struct { No int Name string
阅读全文
摘要:1. 双向链表的应用实例 使用带head头的双向链表实现——王者容易英雄排行榜 单向链表的缺点分析: 1)单向链表,查找的方向只能是一个方向,而双向链表可以向前或者向后查找 2)单向链表不能自我删除,需要靠辅助结点,而双向链表,则可以自我删除,所以前面我们单链表删除时结点,总是找到temp的下一个结
阅读全文
摘要:插入节点 1)、头插法 package main import "fmt" type Node struct { data int next *Node } func Shownode(p *Node){ //遍历 for p != nil{ fmt.Println(*p) p=p.next //移
阅读全文
摘要:1. 队列的应用场景 2. 队列的介绍 1)队列是一个有序列表,可以用数组或是链表来实现。 2)遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出。 示意图:(使用数组模拟队列示意图) 3.数组模拟队列 1)队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组声明如下,
阅读全文
摘要:最简单案例 package main import "fmt" type NodeList struct { data int next *NodeList } func ShowNode(node *NodeList) { for node != nil { //fmt.Printf("type
阅读全文
摘要:一、Goweb通过https提供服务 func main() { ListenAndServerTLS() } func ListenAndServerTLS() { server := http.Server{ Addr: "127.0.0.1:8080", Handler: nil, } ser
阅读全文
摘要:一、工作目录结构说明 1、bin:用于放置发布的二进制程序 2、pkg:用于放置发布的库文件 3、src:用于放置源代码 二、go install命令介绍 1、使用共go install编译并发布二进制文件 命令:go install gpkgmain 说明:编译并发布路径gpkgmain下的包,m
阅读全文
摘要:一、前言:如何操作自定义资源 client-go为每种K8S内置资源提供对应的clientset和informer。那么如果我们要监听和操作自定义资源对象,应该如何做呢?这里我们有两种方式: 方式一:使用client-go提供的dynamicClient来操作自定义资源对象,当然也可以使用RESTC
阅读全文
摘要:dockerfile entrypoint和cmd区别 CMD: 1、在docker run时候运行,dockerfile中如果存在多个CMD指令,仅最后一个生效。 2、docker run时CMD会被新参数覆盖原因命令 案例: 1、创建dockerfile1文件 cat Dockerfile1 F
阅读全文
摘要:StatefulSet是为了解决有状态服务的容器问题而设计的,对应的Deployment和ReplicaSet是为了无状态服务而设计的。 StatefulSet应用场景包括: 稳定的持久化存储,即Pod重新调度后还是能访问到相同的持久化数据,基于PVC来实现 有序部署,有序扩展,(即从0到N-1),
阅读全文
摘要:1、http请求包,报文格式 请求行:请求方法,,请求文件URL,协议版本 请求头:语法格式:key:value 空行:\r\n 请求包体:请求方法对应的数据内容。GET方法没有内容!! 2、http响应包,报文格式 3、设置http头和状态码 golang中设置http头用 w.Header().
阅读全文
摘要:一、配置文件 1、查看修改字符集 1)、查看:show variables like 'character%' show variables like '%char%'2)、编辑:vi /etc/my.cnf 2、mysql配置文件 1)、二进制日志log-bin 主从复制2)、错误日志log-er
阅读全文
摘要:1、kafka 的工作原理,如何保证顺序 2、kafka 丢失说一下,怎么解决 3、kafka 调优你知道哪些 4、kafka中消费失败了怎么办?重新消费,一直失败呢?wtf? 5、kafka消息丢失有哪几种方式处理?说了3种,有个至少一次,ack,其他没答上来 6、kafka集群,分区之间如何re
阅读全文
摘要:1、聚簇索引与非聚簇索引 非聚簇索引怎么查的(回表) lnnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,聚簇索引就是按照每张表的主键构造一颗B+树,同时叶子节点中存放的就是整张表的行记录数据,也将聚集索引的叶子节点称为数据页。这个特性决定了索引组织表中数据也是索引的一部分; 一般建
阅读全文
摘要:1、三次握手,四次挥手?为什么要四次挥手? 1.1、三次握手 三次握手流程: 1、初始状态,双方都处于Closed状态。 2、服务器开启监听功能,处于Listen状态 3、第一次握手:客户端向服务端发送请求,发送一个SYN的标志位,带一个数据包包号1000,并处于SYN-SENT状态 4、第二次握手
阅读全文
摘要:一、http get和post区别 二、goroutine的自旋锁作用 三、rsa算法 四、golang内存管理 五、http和https区别 六、gmp有哪些状态 七、golang 的竞态竞争 八、gmp有哪些状态 九、slice如何比较 十、grpc 十一、tcp头格式 十二、三次握手四次挥手
阅读全文
摘要:1、实现map的方法除了哈希还有哪些? 2、分布式缓存常见的技术选型方案有哪些?缓存过期的机制 3、redis 集群是怎么实现的,说一下一致性 hash 4、缓存数据的处理流程是怎样的? 5、为什么要用 Redis/为什么要用缓存? 6、Redis 常见数据结构以及使用场景分析 7、Redis 没有
阅读全文
摘要:1、获取key的方法 cache.MetaNamespaceKeyFunc(obj) func MetaNamespaceKeyFunc(obj interface{}) (string, error) { if key, ok := obj.(ExplicitKey); ok { return s
阅读全文