摘要: Java线程创建和销毁的开销 中提到了Java线程创建和销毁的开销,因此我们可以使用“池”化的思想,每一次有新的任务需要处理时,直接从线程池中拿出来一个空闲的线程去执行,这样减少了创建线程的开销,同时在任务处理完成后将线程归还给线程池,给下一个任务使用,也减少了销毁的开销。 池化思想在我们开发中非常 阅读全文
posted @ 2023-08-12 22:57 optimjie 阅读(77) 评论(0) 推荐(0)
摘要: **从整体上看JVM的内存分为两大类:线程私有的和线程共享的。** 线程私有: 1. 程序计数器 2. 虚拟机栈 3. 本地方法栈 线程共享: 1. 堆区 2. 方法区 ## 程序计数器 主要作用就是记住下一条JVM指令的执行地址。因为在多线程的情况下,同一个时间单核CPU只会执行一个线程中的方法, 阅读全文
posted @ 2023-08-12 17:38 optimjie 阅读(63) 评论(0) 推荐(0)
摘要: 这是一道烂大街的面试题,不过通过这个问题我们可以将网络整个通信过程捋清楚,在这个过程中将计算机网络的各个部分串联起来。 ## 概述 1. 对https://www.baidu.com/这个网站进行域名解析,得到对应的IP地址 2. 根据这个IP,找到对应的服务器,发起TCP的三次握手 3. 建立TC 阅读全文
posted @ 2023-08-11 11:19 optimjie 阅读(9255) 评论(0) 推荐(0)
摘要: 虽然标题为synchronized vs CAS,但从大的范围来说其实是:悲观锁 vs 乐观锁,本文使用synchronized和CAS来进行介绍,并对比。 首先锁的出现是为了,保证同一时间内,只有一个线程进入临界区。 ## 什么是悲观锁和乐观锁? 悲观锁:对于同一个数据的并发操作,悲观锁认为自己在 阅读全文
posted @ 2023-08-11 02:17 optimjie 阅读(68) 评论(0) 推荐(0)
摘要: ## 几个JUC里面的类 这里不做详细介绍,只是说明一下类的作用 ### ReentrantLock 是一种锁机制,实现多个线程在临界区中的同步访问。也就是说实现了:同一时间只有一个线程能进入临界区,其他线程需要等待。 **如果自己实现ReentrantLock的话,需要考虑哪些点?** 1. 通过 阅读全文
posted @ 2023-08-11 02:16 optimjie 阅读(42) 评论(0) 推荐(0)
摘要: ## 经典实现方式 ```java // 消息类 @Data @AllArgsConstructor public class Message { Object msg; } // 被观察者接口 public interface Subject { // 添加观察者 void registerObs 阅读全文
posted @ 2023-08-11 00:28 optimjie 阅读(29) 评论(0) 推荐(0)
摘要: ## 语法 1. ... from tb1 join(inner join) tb2 on condition 2. ... from tb1 left join tb2 on condition 3. ... from tb1 right join tb2 on condition 4. ... 阅读全文
posted @ 2023-08-09 20:46 optimjie 阅读(59) 评论(0) 推荐(0)
摘要: 上文:https://www.cnblogs.com/optimjie/p/17615832.html 假设执行`explain select * from a, b, c from tb where a = ? order by b limit 1000;` key:a extra:Using f 阅读全文
posted @ 2023-08-09 17:13 optimjie 阅读(38) 评论(0) 推荐(0)
摘要: 开启慢查询日志 show variables like '%quer%'主要关注: long_query_time slow_query_log slow_query_log_file 找到慢查询通过explain定位问题 我本机装的是MySQL8.0 type:NULL > system > co 阅读全文
posted @ 2023-08-09 03:41 optimjie 阅读(114) 评论(0) 推荐(0)
摘要: server对于每一个新来的请求都创建一个新的线程去处理: ```java public class ThreadPerTaskWebServer { public static void main(String[] args) { ServerSocket socket = new ServerS 阅读全文
posted @ 2023-08-09 02:44 optimjie 阅读(352) 评论(0) 推荐(0)