02 2023 档案

实现docker run命令
摘要:基于宿主机来创建容器 执行命令 《自己动手写Docker》code-3.1 ./mydocker run -ti /bin/bash 代码流程 1. 解析参数。2. 通过clone来fork一个Namespace隔离的容器进程。3. 调用自己/proc/self/exe初始化容器(挂载proc文件系 阅读全文

posted @ 2023-02-25 17:08 王景迁 阅读(121) 评论(0) 推荐(0)

volatile
摘要:缓存一致性问题 每个线程都有自己的工作内存。线程在初始化时从主内存读取所需的变量值到工作内存。在线程运行时,如果是读取则从工作内存中读取,如果是写入则先写到工作内存再刷新到主内存。在并发情况下可能出现不同线程持有不同的共享变量值。例如,A线程修改了共享变量值并刷新到主内存,但B、C线程在读取该共享变 阅读全文

posted @ 2023-02-20 07:44 王景迁 阅读(28) 评论(0) 推荐(0)

Java生产者消费者模式
摘要:生产者不断向队列中添加数据,消费者不断从队列中获取数据。如果队列满了,则生产者不能添加数据;如果队列为空,则消费者不能获取数据。通过实现了BlockingQueue接口的LinkedBlockingQueue来模拟同步。 import java.util.concurrent.BlockingQue 阅读全文

posted @ 2023-02-19 21:56 王景迁 阅读(38) 评论(0) 推荐(0)

证书操作
摘要:通过自签名证书的方式生成证书流程 1. 生成自签名根证书 # 创建根证书私钥root.key openssl genrsa -out root.key 1024 # 创建根证书请求文件root.csr openssl req -new -out root.csr -key root.key # 创建 阅读全文

posted @ 2023-02-19 21:00 王景迁 阅读(104) 评论(0) 推荐(0)

基于四叉树的小顶堆(最小优先队列)
摘要:实现来自Go源码 从下往上调整堆 func siftupTimer(t []*timer, i int) bool { if i >= len(t) { return false } when := t[i].when tmp := t[i] for i > 0 { // 除非到达堆顶,否则每次和当 阅读全文

posted @ 2023-02-19 19:50 王景迁 阅读(131) 评论(0) 推荐(0)

flannel提供的3种后端实现
摘要:UDP(flanneld封装和解封装UDP) 实现原理 缺点(性能最差) UDP模式,封装和解封装的对象是三层IP包,提供三层的Overlay网络,是Flannel最早支持的一种方式,也是性能最差的一种方式,已经被弃用。在发出IP包的过程中需要经过3次用户态与内核态之间的数据拷贝。 第1次,用户态的 阅读全文

posted @ 2023-02-19 15:43 王景迁 阅读(146) 评论(0) 推荐(0)

高CPU Java应用分析
摘要:模拟CPU 40%左右 import java.util.concurrent.CountDownLatch; public class Main extends Thread { private CountDownLatch c; public Main(String name, CountDow 阅读全文

posted @ 2023-02-18 15:46 王景迁 阅读(46) 评论(0) 推荐(0)

Maven问题
摘要:运行jar包时报错no main manifest attribute pom.xml中增加内容 <build> <!--修改编译出来的jar包名,仅为{artifactId}.jar--> <finalName>${project.artifactId}</finalName> <plugins> 阅读全文

posted @ 2023-02-18 14:29 王景迁 阅读(26) 评论(0) 推荐(0)

execsnoop
摘要:作用 execsnoop通过ftrace实时监控进程的exec()行为,输出短时进程的信息,包括进程 PID、父进程 PID、命令行参数以及执行的结果。 安装execsnoop git clone --depth 1 https://github.com/brendangregg/perf-tool 阅读全文

posted @ 2023-02-16 07:48 王景迁 阅读(364) 评论(0) 推荐(0)

查询正在执行的SQL的数据库名和表名
摘要:创建限制0.5个CPU和0.5G内存的MySQL容器 docker run -itd --name mysql --cpu-quota=50000 --memory 512M --rm -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7 创建pers 阅读全文

posted @ 2023-02-12 19:33 王景迁 阅读(92) 评论(0) 推荐(0)

fio测试IOPS
摘要:安装fio yum install fio -y 选择磁盘/dev/sda 随机写每个线程写入512M文件,单个块大小为16K,5个线程运行5秒测试完成后不会保留写入的大文件 # 创建空文件 touch /root/test1 # filename指定空文件测试IOPS fio -filename= 阅读全文

posted @ 2023-02-12 15:04 王景迁 阅读(121) 评论(0) 推荐(0)

Linux上下文切换分析工具
摘要:命令介绍 每隔5秒输出系统总体上下文切换情况 vmstat 5 列名 含义 cs 每秒上下文切换的次数 in 每秒中断的次数 r 正在运行和等待CPU的进程数 b 不可中断睡眠状态的进程数 每隔5s输出进程上下文切换情况 pidstat -w 5 列名 含义 cswch 每秒自愿上下文切换(进程无法 阅读全文

posted @ 2023-02-11 16:23 王景迁 阅读(156) 评论(0) 推荐(0)

优雅删除Pod
摘要:k8s release-1.15 1. 客户端请求删除Pod。2. kube-apiserver修改Pod信息,设置DeletionTimestamp和DeletionGracePeriodSeconds(优雅等待退出时间,默认30s)。 staging/src/k8s.io/apiserver/p 阅读全文

posted @ 2023-02-05 15:29 王景迁 阅读(257) 评论(0) 推荐(0)

Deployment滚动更新
摘要:创建Deployment nginx-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: progressDeadlineSeconds: 600 replicas: 阅读全文

posted @ 2023-02-05 15:01 王景迁 阅读(81) 评论(0) 推荐(0)

gomonkey不生效
摘要:gomonkey作用在运行时把原函数地址替换为目标函数地址。Mock接口时使用实现接口的结构体。 go.mod require github.com/agiledragon/gomonkey/v2 v2.3.0 a.go package main type A struct {} func (a A 阅读全文

posted @ 2023-02-04 20:50 王景迁 阅读(1821) 评论(0) 推荐(1)

epoll
摘要:select和poll:进程把所有自己连接的套接字传给内核(用户态到内核态的内存拷贝),内核寻找这些连接上没有处理的事件。select和poll最多只能处理上千个并发连接。 epoll1.调用epoll_create来创建1个epoll对象2.调用epoll_ctl来向epoll对象添加、修改或者删 阅读全文

posted @ 2023-02-04 11:09 王景迁 阅读(86) 评论(0) 推荐(0)

kubelet上报心跳机制
摘要:kubelet启动时会尝试向kube-apiserver注册节点,启动顺序上优先于kube-proxy,所以kubelet访问kube-apiserver时不依赖于kube-proxy,需要通过额外组件来完成转发,例如keepalive浮动vip+haproxy。 在k8s v1.13之前,kube 阅读全文

posted @ 2023-02-03 22:18 王景迁 阅读(1138) 评论(0) 推荐(0)

导航