08 2023 档案

摘要:首先明确的一点是,主键是为了区分不同的行记录,所以先抛开其他的因素,主键必须要保证:**唯一性**(单表或者分库分表的场景下) ## 单表 可选的方案有: 1. 自增id 2. UUID 3. 业务字段,如:手机号、身份证号等等 **自增id** 自增主键是单表中很常用的使用方式。阿里Java开发中 阅读全文
posted @ 2023-08-27 15:07 optimjie 阅读(141) 评论(0) 推荐(0) 编辑
摘要:1. 饿汉式 ```java /** * 饿汉式,类加载的时候就会初始化 * * 问题: * 1. 通过反射可以破坏单例 * 2. 通过反序列化破坏单例 * 3. 通过Unsafe破坏单例,无法解决 * * @author: optimjie * @date: 2023-08-19 21:37 */ 阅读全文
posted @ 2023-08-19 22:20 optimjie 阅读(9) 评论(0) 推荐(0) 编辑
摘要:**数据做的两件事:** 1. 存数据 2. 检索数据 ## 散列索引 写 vs 读 ## 说明 ** ** **仅作为校招时的《个人笔记》,详细内容请看【参考】部分** ** ** ## 参考 1. DDIA 第三章 阅读全文
posted @ 2023-08-17 19:06 optimjie 阅读(20) 评论(0) 推荐(0) 编辑
摘要:## 从单例模式引出 [单例模式](https://www.cnblogs.com/optimjie/p/17643187.html)一文中,DCL实现单例使用了关键了volatile: ```java class Singleton5 { private Singleton5() { System 阅读全文
posted @ 2023-08-17 02:05 optimjie 阅读(13) 评论(0) 推荐(0) 编辑
摘要:占位 阅读全文
posted @ 2023-08-17 02:04 optimjie 阅读(5) 评论(0) 推荐(0) 编辑
摘要:C/C++:代码 --编译--> 机器码,而不同平台(操作系统和指令集)的机器码是不一样的,所以就不能跨平台 Java:代码 --javac 编译--> 字节码(*.class) --> Java虚拟机 占用空间 描述 实际存储 4byte 魔数 0xCAFEBABE 4byte 版本号 次版本号/ 阅读全文
posted @ 2023-08-17 02:04 optimjie 阅读(13) 评论(0) 推荐(0) 编辑
摘要:## 哪些内存需要回收?即如何判定哪些对象是垃圾 1. 引用计数法 - 做法:为每个对象维护一个引用它的数量cnt,比如放到对象头中,如果新增对他的引用cnt就+1,如果当某个引用失效时cnt就-1 - 缺点:当两个对象互相引用时,无法回收 2. 可达性分析法 - 做法:一系列称为“GC Roots 阅读全文
posted @ 2023-08-17 02:03 optimjie 阅读(6) 评论(0) 推荐(0) 编辑
摘要:## 市面上MQ的简单对比 | 指标 | RabbitMQ | RocketMQ | Kafka | | | | | | | 单机吞吐量 | 1w量级 | 10w量级 | 10w量级 | | 开发语言 | Erlang | Java | Java和Scala | | 消息延迟 | 微秒 | 毫秒 | 阅读全文
posted @ 2023-08-16 04:09 optimjie 阅读(35) 评论(0) 推荐(0) 编辑
摘要:Java线程创建和销毁的开销 中提到了Java线程创建和销毁的开销,因此我们可以使用“池”化的思想,每一次有新的任务需要处理时,直接从线程池中拿出来一个空闲的线程去执行,这样减少了创建线程的开销,同时在任务处理完成后将线程归还给线程池,给下一个任务使用,也减少了销毁的开销。 池化思想在我们开发中非常 阅读全文
posted @ 2023-08-12 22:57 optimjie 阅读(54) 评论(0) 推荐(0) 编辑
摘要:**从整体上看JVM的内存分为两大类:线程私有的和线程共享的。** 线程私有: 1. 程序计数器 2. 虚拟机栈 3. 本地方法栈 线程共享: 1. 堆区 2. 方法区 ## 程序计数器 主要作用就是记住下一条JVM指令的执行地址。因为在多线程的情况下,同一个时间单核CPU只会执行一个线程中的方法, 阅读全文
posted @ 2023-08-12 17:38 optimjie 阅读(25) 评论(0) 推荐(0) 编辑
摘要:这是一道烂大街的面试题,不过通过这个问题我们可以将网络整个通信过程捋清楚,在这个过程中将计算机网络的各个部分串联起来。 ## 概述 1. 对https://www.baidu.com/这个网站进行域名解析,得到对应的IP地址 2. 根据这个IP,找到对应的服务器,发起TCP的三次握手 3. 建立TC 阅读全文
posted @ 2023-08-11 11:19 optimjie 阅读(3480) 评论(0) 推荐(0) 编辑
摘要:虽然标题为synchronized vs CAS,但从大的范围来说其实是:悲观锁 vs 乐观锁,本文使用synchronized和CAS来进行介绍,并对比。 首先锁的出现是为了,保证同一时间内,只有一个线程进入临界区。 ## 什么是悲观锁和乐观锁? 悲观锁:对于同一个数据的并发操作,悲观锁认为自己在 阅读全文
posted @ 2023-08-11 02:17 optimjie 阅读(40) 评论(0) 推荐(0) 编辑
摘要:## 几个JUC里面的类 这里不做详细介绍,只是说明一下类的作用 ### ReentrantLock 是一种锁机制,实现多个线程在临界区中的同步访问。也就是说实现了:同一时间只有一个线程能进入临界区,其他线程需要等待。 **如果自己实现ReentrantLock的话,需要考虑哪些点?** 1. 通过 阅读全文
posted @ 2023-08-11 02:16 optimjie 阅读(22) 评论(0) 推荐(0) 编辑
摘要:## 经典实现方式 ```java // 消息类 @Data @AllArgsConstructor public class Message { Object msg; } // 被观察者接口 public interface Subject { // 添加观察者 void registerObs 阅读全文
posted @ 2023-08-11 00:28 optimjie 阅读(8) 评论(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 阅读(45) 评论(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 阅读(17) 评论(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 阅读(84) 评论(0) 推荐(0) 编辑
摘要:server对于每一个新来的请求都创建一个新的线程去处理: ```java public class ThreadPerTaskWebServer { public static void main(String[] args) { ServerSocket socket = new ServerS 阅读全文
posted @ 2023-08-09 02:44 optimjie 阅读(281) 评论(0) 推荐(0) 编辑
摘要:## 为什么要有事务? 对于一个数据库系统来说可能会面临各种各样的问题,比如:数据库挂了、客户端挂了、网不通了,多个client同时访问……而出现这些情况都有可能会影响整个系统。为了保证数据库的可靠性,所以就出现了“事务”这种机制。从概念上讲,事务就是将多个操作视为一个操作,而整个事务要么执行成功c 阅读全文
posted @ 2023-08-08 22:52 optimjie 阅读(29) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示