January 13, 2022
JVM
1. 从JDK源码剖析类加载机制1.1 为什么需要类加载?我们编写的程序代码都是存放在磁盘上面的,在程序运行时,需要把我们的class文件加载到内存,这就是为什么需要类加载。
1.2 java代码到底是怎么运行的呢下面是一个普通的类,我们平时都会定义的,那么他们是怎么加载的呢?
123456 ...
Read more
January 4, 2022
多线程
2. volatile关键字2.1 volatile的作用Volatile 只能修饰成员变量,不能修饰局部变量。
1、及时可见性
2、指令重排序
12345678910111213141516171819202122public class Jmm04_CodeAtomic ...
Read more
December 7, 2021
MySQL
MySQL为什么有时会选错索引前面我们介绍过索引,你已经知道了在MySQL中一张表其实是可以支持多个索引的。但是,你 写SQL语句的时候,并没有主动指定使用哪个索引。也就是说,使用哪个索引是由MySQL来确 定的。
不知道你有没有碰到过这种情况,一条本来可以执行得很快的语句,却由于MySQL ...
Read more
December 7, 2021
怎么给字符串字段添加索引现在,几乎所有的系统都支持邮箱登录,如何在邮箱这样的字段上建立合理的索引,是我们今天 要讨论的问题。
假设,你现在维护一个支持邮箱登录的系统,用户表是这么定义的:
12345mysql> create table SUser(ID bigint unsigned ...
Read more
December 7, 2021
MySQL
我的mysql为什么会抖一下
innodb引擎是如何处理 脏页 的
平时的工作中,不知道你有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但 是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。
你的SQL语句为什么变“慢”了在前 ...
Read more
December 6, 2021
MySQL
一条更新语句是如何执行的前面我们系统了解了一个查询语句的执行流程,并介绍了执行过程中涉及的处理模块。相信你还 记得,一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后 到达存储引擎。
那么,一条更新语句的执行流程又是怎样的呢?
之前你可能经常听DBA同事说,MyS ...
Read more
December 6, 2021
MySQL
事务隔离:为什么你改了我还看不见提到事务,你肯定不陌生,和数据库打交道的时候,我们总是会用到事务。最经典的例子就是转 账,你要给朋友小王转100块钱,而此时你的银行卡只有100块钱。
转账过程具体到程序里会有一系列的操作,比如查询余额、做加减法、更新余额等,这些操作必 须保证是一体的,不然等 ...
Read more
December 6, 2021
MySQL
全局锁和表锁:给表加个字段怎么这么多阻碍今天我要跟你聊聊MySQL的锁。数据库锁设计的初衷是处理并发问题。作为多用户共享的资 源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。
根据加锁的范围,MySQL里面的锁大致可以分成全局锁、表级 ...
Read more
December 6, 2021
MySQL
一条sql到底是怎么执行的?这个问题等同于: 请将一下mysql的基础架构
MySQL的逻辑架构我们经常说,看一个事儿千万不 要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,对于 MySQL的学习也是这样。平时我们使用数据库,看到的通常都是一个整体。比如,你有个最 ...
Read more
November 1, 2021
Elasticsearch
Elasticsearch使用规范查询规范建议
定义好mappings和settings,不同的数据类型查询效率不一样,建议只需做精确查询以及范围查询的字段设置为keyword类型。对于要进行全文检索的字段设置合理的分词器。
对于只需要查询数据结果而不需要结果的相关度计算的情况,使用fil ...
Read more