摘要: M G P M:machine 系统线程,执行实体,通过系统调用clone来创建 G:groutine 任务和上下文 P: 虚拟处理器,M需要获得P才能执行否则休眠 go的调度本质上是一个生产消费的流程 生产端 M负责调度循环消费task 队列分runnext+本地队列+全局队列来区分优先级,也避免 阅读全文
posted @ 2023-06-01 09:43 rudynan 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 进程是资源管理的最小单位 线程时程序执行的最小单位 java中的线程映射操作系统中的一个线程,如果java程序task执行很小,将面临大量的线程切换 ,这个线程切换是操作系统的行为 比较损耗性能 routine 是程序的多个线程映射一个操作系统线程,routine之间的切换是程序语音自己的行为,操作 阅读全文
posted @ 2022-05-22 22:27 rudynan 阅读(18) 评论(0) 推荐(0) 编辑
摘要: tcp三次握手之后 1. client发送 client hello给服务端 会告诉服务端支持的加密套件和支持的tls版本 生成一个随机数发送给服务端 2. service发送 service hello给客户端 告诉客户端确认支持的tls版本和选择的加密套件 生成一个随机数返回给客户端 3. se 阅读全文
posted @ 2022-05-22 16:04 rudynan 阅读(223) 评论(0) 推荐(0) 编辑
摘要: cpu使用率问题 1. 在服务器上执行top命令确定是否是java进程导致的cpu过高 2. 定位到了进程之后 定位哪个线程导致的cpu过高 执行top -Hp pid 查看进程中线程的cpu占用率 3. 定位代码 jstack 进程id |grep -A 200 线程pid(pid是16进制数) 阅读全文
posted @ 2022-05-22 15:30 rudynan 阅读(1611) 评论(0) 推荐(0) 编辑
摘要: 1. 使用自增id(数值)->url这种映射关系 2. id使用base62编码 浏览器中可以直接使用不用处理,并且1亿的值只用生成5个字符 3. 为了避免用户使用无效的短码请求给数据库造成压力,url最后一位可以设置为校验和 | id base62编码 | 校验和 | a s d x K 9 1 阅读全文
posted @ 2022-05-20 18:04 rudynan 阅读(228) 评论(0) 推荐(0) 编辑
摘要: tcp使用四种算法实现拥塞控制 1. 慢开始 拥塞窗口值 cwnd 控制每次传输报文段数量 在未达到慢开始门限值之前,每次收到确认报文 cwnd*2 慢开始门限值 达到慢开始门限值之后,每次收到确认报文 拥塞窗口值+1 2. 拥塞避免 当传输期间超时未收到确认报文,就会将慢开始门限值设置为当前拥塞窗 阅读全文
posted @ 2022-05-20 16:26 rudynan 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 内存划分 1. 运行时数据区 - 堆 可能划分出多个线程私有的分配缓冲区tlab 在使用完tlab时会分配新的tlab这期间申请内存会同步锁定 - 虚拟机栈 - 本地方法栈 会抛出stackOverFlowError/OutOfMemoryError - 方法区 存储虚拟机加载的类信息/常量/静态常 阅读全文
posted @ 2022-05-06 21:45 rudynan 阅读(24) 评论(0) 推荐(0) 编辑
摘要: cms垃圾收集器的缺点 1. 产生浮动垃圾,在并发清理过程中产生的垃圾只能下次gc进行清理 2. 吞吐量降低 3. 碎片化空间 4. 垃圾清理退化到serial 单线程清理 在并发清理过程中,老年代无法容纳新产生的对象,就会抛这个异常,然后stw进行单线程清理垃圾 可以调整参数修改触发gc的阈值 垃 阅读全文
posted @ 2022-04-07 14:24 rudynan 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么不使用红黑树 1. 红黑树保存在内存中,数据库表太大无法保存 2. 红黑树的查询一个节点最多要logn次io 查询效率过低 2. b树与b+树的区别 1. b树的节点都是数据节点 b+树只有叶子节点是数据节点非叶子节点起引导作用不存储全部数据 2. b+树的数据节点都是叶子节点 并且相邻 阅读全文
posted @ 2022-03-30 15:55 rudynan 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 1. 偏向锁 1.1 偏向锁加锁流程 1. 在线程栈中找到第一个空闲的lock record 指向锁对象 2. 判断对象头的markword锁标识位是否是101 也就是处于匿名偏向状态 3. 如果是 执行cas操作将锁对象的markword 高bit位中存储当前线程的内存地址 4. 如果不是进行轻量 阅读全文
posted @ 2022-03-29 23:26 rudynan 阅读(110) 评论(0) 推荐(0) 编辑