《深入理解java虚拟机》第三版笔记

- 第一款商用虚拟机ClassicVM使用的是基于句柄的对象查找方式。这样做的目的是当对象移动时不需要修改对象引用的位置。缺点是需要两次定位对象。 - GraalVM,是一个再HotSpot的基础上增强而来的跨语言全栈虚拟机,可以运行java、Scala、Kotlin等基于jvm的语言,还有C、C++、Rust等基于LLVM的语言,同时还支持 …

《MySQL是怎样运行的》笔记

https://book-how-mysql-runs.netlify.app/#/ 结构 MySQL是 C/S 架构,一个服务端负责真正与储存的数据打交道,多个客户端连接服务端用于发送指令(例如SQL) mysql客户端连接服务端:mysql -h localhost -u root -p12345(注:-p 后面不能有空格) 服务端处理客户端请求的过程: …

Spring笔记

什么是Spring? 应该从容器和生态方面作答 什么是开闭原则: 给系统做功能扩展时,不应该修改已经写好的代码。即对扩展开放,对修改关闭 为什么要使用容器? 容器的核心功能是用于统一规范,只要符合规范的对象都可以放在容器中统一管理 Autowired和Resource的区别? 两者类似于JDBC和JPA的关系,Autowired是spring提供的注解,默 …

Golang GMP模型 笔记

https://www.yuque.com/aceld/golang/srxd6d https://www.bilibili.com/video/BV19r4y1w7Nx/?p=18 本篇文章只是这个视频的一个笔记,但视频其实有非常多让人困惑的地方并没有做解释,本文也没有深究 核心在于协程调度器的优化 什么是GMP模型? G(goroutine):协程 …

JUC笔记

管程:锁对象 守护线程:为其他线程服务的后台线程 JMM 该部分为 《深入理解java虚拟机》第二版 中关于java内存模型的描述 为了屏蔽各个平台的内存差异,jvm创建了java内存模型。其主要目标是定义程序中各个变量(线程共享变量)向内存读写的规则 JMM规定所有的变量都存储在主内存中,每个线程都有自己的工作内存,线程所使用的变量都是主内存到工作内存的拷 …

java中的动态链接

以下为我个人的理解: 在java中,有两个地方会提到动态链接,一不小心弄混了就会非常困惑 一个过程 假设我写了两个方法: method2的字节码指令为: 其中 invokevirtual 表示执行的是一个虚方法,所谓虚方法,就是只有代码在运行期间才知道真正调用的是哪个方法(final 修饰的方法除外),而不是在编译期间就确定的。 后面的 #7 指的是常量池中 …

Kafka笔记

https://www.bilibili.com/video/BV1vr4y1677k?p=79&vd_source=78951f3f7dcd752bebcfd9734a584537 什么是kafka 分布式的基于发布/订阅模式的消息队列 常见的消息队列: KafKa、ActiveMQ、RabbitMQ、RocketMQ 消息队列的应用场景: 缓冲/消峰:使 …

Netty笔记

https://www.bilibili.com/video/BV1py4y1E7oA Java NIO 三大组件 Channel 两个进程共享的部分,是一个双向通道 常见的channel: FileChannel:只能工作在阻塞模式下 DatagramChannel:用于UDP SocketChannel:用于TCP客户端 …

MySQL笔记

01.MySQL课程介绍_哔哩哔哩_bilibili 存储引擎 MySQL的结构:连接层 -> 服务层 -> 引擎层 -> 存储层 各存储引擎的特点: InnoDB 支持 事务、外键、行级锁 MySQL中,数据库对应文件系统中的一个文件夹,每个InnoDB表都对应该文件夹下的一个 .ibd 表空间文件,该文件用于存储表结构、索引、数据 表空间文件存储的逻辑结 …

操作系统笔记

https://www.bilibili.com/video/BV1CP4y1k7i8/?spm_id_from=333.337.search-card.all.click&vd_source=78951f3f7dcd752bebcfd9734a584537 并发:一段时间内可以同时执行多个程序 并行:一个时刻时可以同时执行多个程序 操作系统的虚拟化技术 …