2023年1月26日

Nginx读取后端服务响应数据流程

摘要: gdb attach [worker进程号] 在指定文件的898行打上断点b src/event/modules/ngx_epoll_module.c:898 客户端发送请求 按3次c以后,按n(函数单行执行)和s(函数逐行执行)单步调试 确定函数调用过程 上一步调用函数代码 下一步被调函数位置 r 阅读全文

posted @ 2023-01-26 21:42 王景迁 阅读(266) 评论(0) 推荐(0) 编辑

2023年1月25日

Node异常时Pod状态分析

摘要: 场景一:停止kubelet并恢复 操作和现象 操作 节点上运行Pod后把kubelet进程停掉。 现象 node状态变为NotReady,不同类型的Pod情况不同。 Deployment Pod在5分钟之后开始一直处于Terminating,创建新Pod。 StatefulSet Pod在5分钟之后 阅读全文

posted @ 2023-01-25 11:07 王景迁 阅读(235) 评论(0) 推荐(0) 编辑

2023年1月24日

Nginx同一个worker进程先后处理耗时不同的请求

摘要: epoll监控的事件src/event/modules/ngx_epoll_module.c EPOLLIN: 连接上有数据可读(包括TCP连接的远端主动关闭连接)EPOLLLPRI:连接上要读紧急数据EPOLLOUT: 连接上写入数据并发送(包括向上游服务器发起TCP连接建立成功)EPOLLERR 阅读全文

posted @ 2023-01-24 16:31 王景迁 阅读(49) 评论(0) 推荐(0) 编辑

2023年1月23日

RequestMapping注解

摘要: 用法 把http请求映射到方法上。 @Controller public class UserController { @RequestMapping("/user") public String get(){ return "userId"; } } SpringMVC处理流程 阅读全文

posted @ 2023-01-23 14:27 王景迁 阅读(16) 评论(0) 推荐(0) 编辑

线程池原理

摘要: Java线程一对一映射为内核线程。线程池可以复用线程,限制线程数量。 参数含义 public ThreadPoolExecutor(int corePoolSize,// 线程池核心线程数 int maximumPoolSize,// 线程池最大线程数 long keepAliveTime,// 当 阅读全文

posted @ 2023-01-23 14:19 王景迁 阅读(33) 评论(0) 推荐(0) 编辑

ThreadLocal原理

摘要: ThreadLocal含义 ThreadLocal线程本地变量把变量与线程绑定在一起,为每一个线程维护一个独立的变量副本(因为是对象引用,堆中的对象是线程间共享的,所以ThreadLocal没有解决线程安全问题),在本线程内随时可取。而ThreadLocal实例通常是private static类型 阅读全文

posted @ 2023-01-23 14:04 王景迁 阅读(72) 评论(0) 推荐(0) 编辑

2023年1月22日

synchronized加锁对象和JVM对锁的优化

摘要: synchronized加锁对象 对于普通同步方法,锁是调用该方法的对象。对于静态同步方法,锁是该方法所属类的Class对象。对于同步代码块,锁是synchronized括号里面的对象。 JVM对锁的优化 偏向锁 如果一个线程获得锁,那么锁就进入偏向模式。当这个线程再次请求锁时,不执行同步操作。 轻 阅读全文

posted @ 2023-01-22 16:05 王景迁 阅读(33) 评论(0) 推荐(0) 编辑

Java创建线程的4种方式

摘要: 继承Thread类,重写run方法 Thread类实现了Runnable接口(只有一个没有返回值的run方法)。 public class ThreadDemo extends Thread { public ThreadDemo(String name) { super(name); } @Ove 阅读全文

posted @ 2023-01-22 15:56 王景迁 阅读(64) 评论(0) 推荐(0) 编辑

2023年1月21日

go mod

摘要: 创建go.mod 在当前目录下生成一个go.mod文件 go mod init xxx(目录名称) 使用go mod管理项目,不需要把项目放到GOPATH目录下,可以在任何位置新建一个项目。go.mod所在的目录为一个模块。编译运行项目后,项目目录下多出了一个文件go.sum。go.sum是记录所依 阅读全文

posted @ 2023-01-21 20:51 王景迁 阅读(167) 评论(0) 推荐(0) 编辑

go内存逃逸

摘要: 逃逸分析 go在编译时确定是否逃逸,逃逸分析是编译器决定变量分配到栈上还是堆上的一种行为。 查看逃逸分析日志:go build -gcflags=-m其中,-m打印出逃逸分析的优化策略。 指针逃逸 函数局部变量优先分配到栈上。如果编译器不能确保变量在函数return之后不再被引用,那么编译器就会将变 阅读全文

posted @ 2023-01-21 20:40 王景迁 阅读(46) 评论(0) 推荐(0) 编辑

导航