add logseq-java

This commit is contained in:
Lostecho
2024-02-02 00:12:49 +08:00
parent 1cd5bb460f
commit c7947017c3
875 changed files with 57100 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
- ## [[蜗牛java培训笔记]]
- 学习阶段
- 第一阶段
- 重点JavaSE 集合 数据库 Mybatis
- 个人项目
- 第二阶段
- 重点 SSM SpringBoot
- 个人项目
- 第三阶段
- 重点 Linux Redis ES全文检索引擎 前后端分离开发
- 团队项目简历项目
- 第四阶段
- 重点 SpringCloud Alibaba RabbitMQ服务器 分布式事务
- 团队项目简历项目
- 上课模式
- 不用PPT 笔记代码纯手打,画图现画
- 上课时间 45min 休息10min
- 整理笔记
- 一个知识点一个笔记
- 每个笔记包含
- 笔记名称(重要程度:低中高)
- 课程目标
- 课程内容
- 课程小结
- 课程资料
- 视频15min范围内
- 20220328-01-知识点名称(一)
- 20220328-01-知识点名称(二)
- 20220328-01-知识点名称(三)
- [课程视频](https://www.woniuxy.com/book/)
- [预习资料](https://www.woniuxy.com/book/)

View File

@@ -0,0 +1,32 @@
### [[第一天 [[Mar 28th, 2022]]]]
id:: c32dfd00-a428-41f7-b330-7d06e289dc90
- 学习阶段
- 第一阶段
- 重点JavaSE 集合 数据库 Mybatis
- 个人项目
- 第二阶段
- 重点 SSM SpringBoot
- 个人项目
- 第三阶段
- 重点 Linux Redis ES全文检索引擎 前后端分离开发
- 团队项目简历项目
- 第四阶段
- 重点 SpringCloud Alibaba RabbitMQ服务器 分布式事务
- 团队项目简历项目
- 上课模式
- 不用PPT 笔记代码纯手打,画图现画
- 上课时间 45min 休息10min
- 整理笔记
- 一个知识点一个笔记
- 每个笔记包含
- 笔记名称(重要程度:低中高)
- 课程目标
- 课程内容
- 课程小结
- 课程资料
- 视频15min范围内
- 20220328-01-知识点名称(一)
- 20220328-01-知识点名称(二)
- 20220328-01-知识点名称(三)
- [课程视频](https://www.woniuxy.com/book/)
- [预习资料](https://www.woniuxy.com/book/)

View File

@@ -0,0 +1,68 @@
- [[计算机基础理论]]
collapsed:: true
- 课堂总结
- 1. 硬件&软件
2. 软件
3. 编程语言
- [[DOS命令]]
- [[windows快捷键]]
collapsed:: true
- 课堂总结
- 1. 打开DOS
2. DOS命令
3. 快捷键
- [[Java发展历程]]
collapsed:: true
- 课堂总结
- 1. JDK里程版本
2. Java三个开发方向桌面手机企业/互联网
3. Java语言特点
简单...
4. JDK>JRE>JVM
- [[JDK环境搭建]]
collapsed:: true
- 课堂小结
- 变量配置
- JAVA_HOME
- Path
- CLASSPATH
- 编译javac
- 运行java
- [[HelloWorld详解]]
collapsed:: true
- 课堂小结
- Java编写执行:编译-->解释
- 编译:源代码-->Class字节码
- 解释:将Class字节码中信息解释为01二进制信息给JVM执行
- 编译javac.exe执行
解释java.exe执行
- 学习阶段
- 第一阶段
- 重点JavaSE 集合 数据库 Mybatis
- 个人项目
- 第二阶段
- 重点 SSM SpringBoot
- 个人项目
- 第三阶段
- 重点 Linux Redis ES全文检索引擎 前后端分离开发
- 团队项目简历项目
- 第四阶段
- 重点 SpringCloud Alibaba RabbitMQ服务器 分布式事务
- 团队项目简历项目
- 上课模式
- 不用PPT 笔记代码纯手打,画图现画
- 上课时间 45min 休息10min
- 整理笔记
- 一个知识点一个笔记
- 每个笔记包含
- 笔记名称(重要程度:低中高)
- 课程目标
- 课程内容
- 课程小结
- 课程资料
- 视频15min范围内
- 20220328-01-知识点名称(一)
- 20220328-01-知识点名称(二)
- 20220328-01-知识点名称(三)
- [课程视频](https://www.woniuxy.com/book/)
- [预习资料](https://www.woniuxy.com/book/)

View File

@@ -0,0 +1 @@
- ### [[第二天 [[Mar 29th, 2022]]]]

View File

@@ -0,0 +1 @@
- ### [[第三天[[Mar 30th, 2022]]]]

View File

@@ -0,0 +1 @@
- ((62443d8f-0b57-4183-9c26-4d6c709a7e0d))

View File

@@ -0,0 +1,97 @@
- [[位运算符]]
- [[逻辑运算符]]
- [[IF判断]]
- [[嵌套判断]]
- [[switch]]
- [[while循环]]
- [[for循环]]
- [[do while 循环]]
-
- ## 总结
collapsed:: true
- 位运算符
- & | ^的两侧可以放置数值,也可以放布尔表达式
- 按位与 &
- 按照二进制比较,同为1则为1,否则为0
- 按位或 |
- 按照二进制比较,有1就是1,否则为0
- 异或 ^
- 按照二进制比较,01的结果为1,11和00都是0
- 取反 ~
- 将二进制0变成1,1变成0
- 移位运算
- << 表示将数字的二进制整体向左移动
- \>> 表示将数字的二进制整体向右移动,原本符号不变
- \>>> 表示将数字的二进制整体向右移动,不考虑符号
- 逻辑运算符
- 两侧只能放布尔表达式
- 逻辑与 &&
- 两个都为true式整个结果才是true
- 短路与,前面表达式为false时,后面表达式不会执行
- 逻辑或 ||
- 两个只要有true,整个结果就是true
- 短路与,前面表达式为true时,后面表达式不会执行
- 逻辑非 !
- 假变真,真变假
- IF逻辑判断
- Java代码执行顺序
- 从上至下,从左至右
- IF流程控制
- 单分支
- ```java
if(布尔表达式){
//代码
}
```
- 双分支
- ```java
if(布尔表达式){
//代码1
}else{
//代码2
}
```
- 三目运算符
- if双分支的简写
- ```java
数据类型 变量 = (布尔表达式)? 值1 : 值2;
```
- 多分支和嵌套
- 当要判断的条件很多时,嵌套判断阅读维护性差
- 多分支
- ```java
if(布尔表达式1){
//代码1
}else if(布尔表达式2){
//代码2
}else if(布尔表达式3){
//代码3
}……{
}else{
//代码n
}
```
- switch
- switch与if区别在于switch判断的是几个固定的值
- ```java
int num = 值;
switch(num){
case 值1:
//代码1
break;
case 值2:
//代码2
break;
case 值3:
//代码3
break;
……
default:
//默认语句代码
break;
}
```
-
-
-
-

View File

@@ -0,0 +1,2 @@
- day4
- Apr 1st, 2022

View File

@@ -0,0 +1,19 @@
- [[格式化输出]]
- [[数组排序]]
- [[多维数组]]
- [[命令行参数]]
- [[面向对象编程]]
- [[方法]]
- [[构造方法]]
- [[方法重载]]
- [[继承]]
- [[多态]]
- [[抽象类]]
- [[接口]]
- [[静态字段]]
- [[静态方法]]
- [[包]]
- [[作用域]]
- [[classpath]]
- [[jar]]
- [[模块]]

View File

@@ -0,0 +1,17 @@
- [[格式化输出]]
- [[数组排序]]
- [[多维数组]]
-
- [[方法]]
-
- [[继承]]
-
-
-
-
-
-
-
-
-
-

View File

@@ -0,0 +1,16 @@
- [[命令行参数]]
- [[面向对象编程]]
- [[方法]]
- [[构造方法]]
- [[方法重载]]
- [[继承]]
- [[多态]]
- [[抽象类]]
- [[接口]]
- [[静态字段]]
- [[静态方法]]
- [[包]]
- [[作用域]]
- [[classpath]]
- [[jar]]
- [[模块]]

View File

@@ -0,0 +1,12 @@
- [[命令行参数]]
-
- [[方法]]
- [[继承]]
-
-
- [[静态方法]]
-
-
-
- [[jar]]
- [[模块]]

View File

@@ -0,0 +1,25 @@
- [[面向对象编程]]
- [[面向对象的定义]]
id:: 624d850f-e491-432e-9d59-15f986d5ec41
- [[类和对象的创建]]
- [[数组排序]]
- [[数组内存分析]]
- 总结
collapsed:: true
- 数组的排序
- 获取数组的最值
- 定义最值为数组第一个for循环遍历比较使用中间变量交换最值
- 查询数组中的元素
- 数组反转
- 交换元素中从头开始和从尾开始对应的元素
- 冒泡排序
- 两两比较,并交换位置
- 选择排序
- 通过比较确定最值的下标,并在比较结束后交换最值的位置
- 数组内存分析
- 数组内存
- 数组为自定义变量,在栈中存储的是内存中的地址
- 当给一个数组重新定义时,会改变栈中指向堆中的地址,原来的数据失去引用会被回收
- 常见错误
- 下标越界:下标超出程序中数组的下标范围
- 空指针:数组没有具体存储空间

View File

@@ -0,0 +1,30 @@
- [[面向对象]]
- id:: 624d850f-e491-432e-9d59-15f986d5ec41
- [[类和对象的创建]]
- [[数组排序]]
- [[数组内存分析]]
-
-
-
-
-
-
- 总结
collapsed:: true
- 数组的排序
- 获取数组的最值
- 定义最值为数组第一个for循环遍历比较使用中间变量交换最值
- 查询数组中的元素
- 数组反转
- 交换元素中从头开始和从尾开始对应的元素
- 冒泡排序
- 两两比较,并交换位置
- 选择排序
- 通过比较确定最值的下标,并在比较结束后交换最值的位置
- 数组内存分析
- 数组内存
- 数组为自定义变量,在栈中存储的是内存中的地址
- 当给一个数组重新定义时,会改变栈中指向堆中的地址,原来的数据失去引用会被回收
- 常见错误
- 下标越界:下标超出程序中数组的下标范围
- 空指针:数组没有具体存储空间

View File

@@ -0,0 +1,72 @@
- [[属性与方法]]
- [[传参]]
- [[调试]]
- [[方法的重载]]
- [[面向对象的定义]]
- 总结
- 参数的传参
- 方法的定义
- 主函数
```java
public static void main(String[] args){
//主函数的代码
}
```
- 定义方法
```java
访问修饰符 static 返回类型 方法的方法名(参数列表){
//方法的代码块
}
```
- 参数列表:数据类型 参数名, 数据类型 参数名,数据类型 参数名……
- 分类
- 有参有返回
- 有参无返回
- 无参有返回
- 无参无返回
- 如果知道一个方法,需要传递什么参数?
- 方法在完成业务时,需要外部提供什么,就定义什么
- 调试Debug
- F5
- 进入断点方法内部
- F6
- 逐行执行代码,不进入方法内部
- F7
- 推出当前断电方法的内部
- F8
- 到达下一个断点
- 方法的重载
- 在同一个类中,相同的方法,不同的参数列表(参数的类型,参数的个数,参数的顺序)的方法
- 面向对象
- 面向过程
- 强调完成事务的过程,注重的是步骤
- 面向对象
- 在合适的时间找合适的人或物干对应的事情
- 万物皆对象
- 万物皆对象,但对象因我的关注而存在
- 类和对象
- 类是对大量对象的一种抽象,归纳
- 对象是类的一种具体实例
- 需要抽象对象的东西
- 属性
- 一大帮对象拥有的共同值,强调Has,是对对象的一种静态描述
- 行为
- 一大帮对象能干什么事,强调Do,是对对象的一种动态描述
- 创建类
- ```java
访问修饰符 class 类的类名{
//属性
访问修饰符 数据类型 属性的名称;
//行为
访问修饰符 返回类型 方法的方法名称(参数列表){
// 方法中的代码
return 返回值;
}
}
```
- 创建对象
- new
- ```java
类名 对象名 = new 类()
```
-

View File

@@ -0,0 +1,79 @@
-
- [[传参]]
- [[调试]]
- [[方法重载]]
- [[面向对象的定义]]
-
-
-
-
-
-
- 总结
collapsed:: true
- 参数的传参
- 方法的定义
- 主函数
```java
public static void main(String[] args){
//主函数的代码
}
```
- 定义方法
```java
访问修饰符 static 返回类型 方法的方法名(参数列表){
//方法的代码块
}
```
- 参数列表:数据类型 参数名, 数据类型 参数名,数据类型 参数名……
- 分类
- 有参有返回
- 有参无返回
- 无参有返回
- 无参无返回
- 如果知道一个方法,需要传递什么参数?
- 方法在完成业务时,需要外部提供什么,就定义什么
- 调试Debug
- F5
- 进入断点方法内部
- F6
- 逐行执行代码,不进入方法内部
- F7
- 推出当前断电方法的内部
- F8
- 到达下一个断点
- 方法的重载
- 在同一个类中,相同的方法,不同的参数列表(参数的类型,参数的个数,参数的顺序)的方法
- 面向对象
- 面向过程
- 强调完成事务的过程,注重的是步骤
- 面向对象
- 在合适的时间找合适的人或物干对应的事情
- 万物皆对象
- 万物皆对象,但对象因我的关注而存在
- 类和对象
- 类是对大量对象的一种抽象,归纳
- 对象是类的一种具体实例
- 需要抽象对象的东西
- 属性
- 一大帮对象拥有的共同值,强调Has,是对对象的一种静态描述
- 行为
- 一大帮对象能干什么事,强调Do,是对对象的一种动态描述
- 创建类
- ```java
访问修饰符 class 类的类名{
//属性
访问修饰符 数据类型 属性的名称;
//行为
访问修饰符 返回类型 方法的方法名称(参数列表){
// 方法中的代码
return 返回值;
}
}
```
- 创建对象
- new
- ```java
类名 对象名 = new 类()
```
-

View File

@@ -0,0 +1,91 @@
- [[属性和行为]]
- [[对象的内存模型分析]]
- [[static]]
- [[访问修饰符]]
- [[this]]
- [[getter与setter]]
- [打字练习](https://github.com/Kaiyiwing/qwerty-learner)
-
-
-
-
- 总结
id:: 624faffe-39f4-4020-9f12-39a039a8a618
collapsed:: true
- 属性和行为
id:: 624fb005-9338-408d-9042-057369983bc9
- 属性的使用
id:: 624fb021-f3cc-4cc9-b8e9-7041e05ef903
- 对象.属性
id:: 624fb035-d5f0-45db-b52f-bab47d78d7aa
- 行为的使用
id:: 624fb024-208d-48c5-8cfe-3032cee5f1d9
- 对象.行为
id:: 624fb041-6174-4622-9a10-498d2d7fd57d
- 对象的内存模型
id:: 62512765-08f0-4106-a64a-b64e16d1f202
- JVM内存分配
id:: 62512770-0853-4244-ae3d-793aa9f81512
-
id:: 6251277a-226a-44a2-85ee-bf9bb5db25e5
- 用来存储方法的调用关系,以及方法内部的变量
id:: 62512783-8b92-4702-8208-57139384662b
-
id:: 6251279d-e3c1-4454-805d-478eceaeecb7
- 放置使用new关键字创建出来的对象全局动态字符串常量池
id:: 625127a9-c892-492e-afaf-2ca61f481311
- 本地方法栈
id:: 625127d6-fdcb-4f58-8b11-b43a0136d3a3
- 放置跟操作系统进行交互的本地方法
id:: 625127df-acc1-4ab2-a351-d78fe5ae4296
- 程序计数器
id:: 625127f3-4b2d-4351-ae12-9fcf6ae3db04
- 放置代码的执行顺序
id:: 625127fd-6e4c-4c95-bc1d-d009ecc27e2f
- 元空间
id:: 62512807-ee93-4f57-88e6-43b03c7cca0b
- 放置类的类对象
id:: 62512813-5158-4785-ae45-d7ecb4c0b13e
- 对象的内存模型
id:: 62512820-ddbf-427c-bbbb-5df3124a61cc
- static关键字
id:: 62512837-668a-423e-9a0c-5a8844cb1c27
- 如果某个方法有写static表示这个方法是一个静态方法没有则是动态方法
id:: 62512841-f8a7-4dfa-85ed-c314f65c66ba
- 如果一个方法不能和任何一个对象挂靠,那么这个方法就应该是个静态方法
id:: 62512872-e7c9-491f-819e-61352e3ea925
- 静态方法的使用
id:: 6251289b-4037-4a04-b61c-335032ae043c
- 通过类名.静态方法调用,也称类方法
id:: 625128a4-904e-4e79-8be4-6df24b009c7d
- 静态方法和非静态方法的调用
id:: 625128b6-23e5-405c-8f00-8d4630226c2e
- 静态方法不能直接调用非静态方法,可以直接调用静态方法
id:: 625128eb-7774-4247-9d74-3a9f117d2803
- 非静态方法可以直接调用静态方法
id:: 6251291d-2634-4cc7-880e-da2c02576d3f
- 访问修饰符
id:: 6251293b-dde1-4786-9e7d-461977662314
- ((624ff0b4-39b0-4eef-9c71-0990589ca29a))
id:: 6251296b-d185-4cc4-938d-63955c0d0237
- 封装
id:: 62512971-334b-45d7-b0f9-735d5d0d2d6a
- 隐藏 private
id:: 62512993-3596-47c6-b503-b4e17f70d632
- 包装 使用方法针对属性控制
id:: 62512980-86af-43dc-983f-50a9a380b536
- 变量的二义性
id:: 625129b8-349c-4fef-bdfe-14e8a70e488b
- this
id:: 625129d9-78fa-47e5-880d-47eaa0c19b59
- 谁在调用this 所在方法这个this 就是谁
id:: 625129dd-b45d-4a50-9bae-5ef2fb5bbdde
- getter和setter
id:: 625129e5-e317-48d6-b7f3-0acf62c247c1
- Setter方法 专门用来修改对象的私有属性的值
id:: 625129f1-475d-4d1b-b950-1392bd7c988a
- Getter 方法: 专门用来获得对象的私有属性的值
id:: 625129fe-6918-4d7e-9211-d5620c7b7361
-
- id:: 62512953-95f2-44c4-aef3-8feebcb9e676
- id:: 62512943-6cf5-4c98-8c16-702d6edfb023

View File

@@ -0,0 +1,96 @@
- [[final]]
- [[抽象类]]
- [[接口]]
- [[多态]]
-
- 预习
- [[向上转型]]
- [[向下转型]]
- [[字符串]]
- [[String类]]
- [[StringBuilder]]
- [[StringBuffer]]
- [[Object类常用API]]
- [[Arrays]]
- [[System]]
- [[UUID]]
- [[Math]]
- [[random]]
-
-
-
- 总结
- final
- 最终的,最后的
- 修饰类
- 表示该类为最终类,不能被继承
- 修饰方法
- 表示该方法不能被子类重写
- 修饰变量
- 表示该量为一个常量
- 抽象类
- 具有抽象方法的类
- 当某一方法没有具体的实现案例时,此方法为一个抽象方法
- 不能被实例化,因为有方法不确定
- 抽象类中的抽象方法在子类中重写去实现
- 特点
- 具有抽象方法的类,一定是个抽象类
- 抽象类不一定具有抽象方法
- 抽象类通过abstract定义并且抽象方法一定要在子类中实现
- 假如子类也实现不了这个方法,将子类也定义为抽象类
- 抽象类无法实例化
- 可放置的元素
- 抽象方法
- 非抽象方法
- 成员属性
- 构造器
- 面试题
- 抽象方法,可以定义成私有的不?
- 答:私有代表无法被重写,抽象方法是一定要子类重写!
- 抽象方法可以定义为static的么
-static方法的调用方式类名.方法名 意味着:这个方法一定有过实现;但是抽象方法实现了么?
- 抽象方法可以定义为final的么
-final 定义在方法上,表示这个方法不能被重写;但是抽象方法一定需要子类重写!
- 接口
- 也是一种抽象,比抽象类还要抽象
- 作用:帮系统拓展新的功能
- 使用
- ```java
public interface 接口的接口名{
//需要拓展的功能
}
```
- ```java
访问修饰符 class 类的类名 extends 父类 implements 接口{
//原有及接口拓展的功能
}
```
- 特点
- 接口不能被实例化
- 接口中抽象方法默认为publlic abstract
- 接口中抽象方法,必须要通过类给与实现
- 接口中的抽象方法,实现类可以变成抽象类,及可以实现接口中的方法
- 类只能单继承,但是接口可以多实现
- 类只能单继承,但是接口可以多继承
- 多态
- 多种形态
- > 相同的行为,不同的实现
- 静态多态
- 重载
- 动态多态
- 根据传入的对象不一样,调用相同的行为,拥有不同的实现
- 动态多态先决条件
- 必须要继承,必须要有方法的重写
- 父类的引用,可以指向子类的实现
- 父类的引用,看不到子类独有的东西
- 子类的引用,可以看到父类的东西,也可以看到自己独有的
- 动态绑定技术
- 父类的引用,指向不同子类的是实现,会自动调用对应子类的行为
- 用处
- 多态集合
- ```java
Object[] objts = new Object[10];
```
- 多态参数
- 在一个方法中,将父类定为参数,调用的时候,传入对应子类的实现
- 由于多态的特点,做到:传入不同的子类,调用相同的行为,可以做到不同的实现

View File

@@ -0,0 +1,84 @@
- [[向上转型与向下转型]]
- [[面向对象的特征]]
- [[静态代码块]]
- [[实例代码块]]
- [[Object类常用API]]
- [[字符串概述]]
-
-
- 总结
- 向上转型
- 基本数据类型的向上转型
- 隐式转换
- 引用数据类型的向上转型
- 只能发生在父子之间
- 向下转型
- 基本数据类型的向下转型
- 显式转换
- 引用数据类型的向上转型
- instanceof关键字
- 判断某一个对象是否是某一种类型的对象
- 面向对象的特征
- 封装
- 继承
- 抽象
- 多态
- 静态代码块
- 执行在类加载期间,先加载父类,后加载子类
- ```java
static{
//执行的代码
}
```
- 实例代码块
- ```java
{
//执行的代码
}
```
- Object类常用API
- API
- Application Programming Interface 应用编程接口
- 目的:
- 简化程序员的开发
- Object类
- 是所有Java类的超类基类父类。所以所有的类都拥有它的方法
- toString
- 打印对象的内存地址
- toString的重写
- equals
- 比较2个对象是否是同一个对象
- == 在比较基本数据类型时,直接比较变量的值!
- == 在比较引用数据类型时,比较的是 地址值!
- equals的重写
- finalize
- IDEA生成API文档
- 字符串概述
- 字符串
- 将多个字符串到一起
- String
- String类型的字符串长度固定内容固定
- 字面量写法
- 通过new关键创建对象
- String常见方法
- [[indexOf()]]
- [[charAt()]]
- [[concat()]]
- [[contains()]]
- [[equals()]]
- 判断两字符串内容是否相同
- [[equalsIgnoreCase()]]
- [[startWith()]]
- [[endWith()]]
- [[getBytes()]]
- [[toCharArry()]]
- [[isEmpty()]]
- [[trim()]]
- [[split()]]
- [[substring()]]
- [[replace()]]
- [[lastIndexOf()]]
- [[toUpperCase()]]
- [[toLowerCase()]]
- [[valueOf()]]
- [[intern()]]

View File

@@ -0,0 +1,64 @@
- [[TreeSet]]
- [[HashMap]]
- [[TreeMap]]
- [[LinkedHashMap]]
- [[HashTable]]
- [[集合的交并差]]
- [[IO流]]
- [[字节流]]
-
-
-
- 总结
- TreeSet
- 红黑二叉树
- 所有节点要么红,要么黑
- 根节点一定为黑
- 红色节点的子节点,一定要为黑
- 从任何一种末梢子节点开始到根节点的过程中一定要有相同个数的黑色节点树
- {{embed ((625fe239-5548-4c66-ba66-f6fb1629b682))}}
- API方法与HashSet一致
- 排序借助ArrayList实现
- 去重
- 不依靠hashcode 以及equals
- 依靠比较器Comparable
- 元素一定要实现Comparable接口
- HashMap
- Map
- 基于Key-Vaalue的结构
- 特点
- Key不能重复
- Value可以重复
- 底层结构
- JDK1.7之前:数组 + 链表
- JDK1.7之后:数组 + 链表 + 红黑二叉树
- API方法
- put
- get
- replace
- delete
- deleteAll
- keySet
- values
- 去重
- 依靠hashcode和equals
- Key一定要重写 hashcode equals 方法
- 遍历
- forEach
- 获得Key的集合
- 通过Set集合获得每个元素
- TreeMap
- 特点
- Key去重,Value不去重
- LinkedHashMap
-
- HashTable
-
- 集合的交并差
- 交集
- 并集
- 差集
- IO流
- Input
- Out
- 字节流

View File

@@ -0,0 +1,2 @@
- [[汽车租车系统]]
-

View File

@@ -0,0 +1,4 @@
- [[反射]]
- [[Class]]
- [[泛型]]的上下限
- List<? super>

View File

@@ -0,0 +1,3 @@
- [[Spring]]
- [[Feishu+Logseq]]
-

View File

@@ -0,0 +1,20 @@
- 索引的概念
- 用于提高查找速度的一种数据结构
-
- 为什么要用B+树B-树和B+树区别,为什么不用红黑树
- Hash表结构存储数据
- 通过key的hash计算得到存储下表
- Hash只能进行等值查询切换速度非常快但是无法用于范围查询
- 二叉查找树
- 左边小,右边大,自身带排序
- 二分查找
- 极端情况
- 根节点的选取,如果选取不好就会不平衡
- 出现某一个方向子树过长
- 平衡二叉树
- 改善二叉树极端情况
- 降低IO次数每走一个节点进行一次IO
- 数的高度过高IO性能下降
- B树
- 存放指针及数据,保存了排序功能
- 指定阶数M一个节点包含的子节点最大数量M越大高度越低

View File

@@ -0,0 +1,43 @@
- 索引的概念
- 用于提高查找速度的一种数据结构
-
- 为什么要用B+树B-树和B+树区别,为什么不用红黑树
- Hash表结构存储数据
- 通过key的hash计算得到存储下表
- Hash只能进行等值查询切换速度非常快但是无法用于范围查询
- 二叉查找树
- 左边小,右边大,自身带排序
- 二分查找
- 极端情况
- 根节点的选取,如果选取不好就会不平衡
- 出现某一个方向子树过长
- 平衡二叉树
- 改善二叉树极端情况
- 降低IO次数每走一个节点进行一次IO
- 数的高度过高IO性能下降
- B树
- 存放指针及数据,保存了排序功能
- 指定阶数M一个节点包含的子节点最大数量M越大高度越低
- 范围查询大的时候需要返回根节点再次便利
- 存储了data信息记录增多的时候树的高度会变高
- B+树
- 数据全部存在子节点中,非子节点只存储键值和指针
- 子节点之间添加链表结构,解决范围查询时需要返回根节点
- 范围查询效率提高很多单个查询比B+树提高不大
- 那些情况适合建立索引,那些不适合建立索引
- 频繁使用where
- 分组字段,分组的前提为排序
- 统计字段
- 加了索引不需要产生中间表去重
- 频繁更新字段
- 数据单一固定
- 数据量大(数据类型text)
- where条件不怎么用的
- 索引分类,最左前缀,聚簇索引
- 主键索引
- 唯一
- 唯一索引
- 普通索引
- 联合索引
- 最左前缀
- 第一个值为从小到大

View File

@@ -0,0 +1,60 @@
- 索引的概念
- 用于提高查找速度的一种数据结构
-
- 为什么要用B+树B-树和B+树区别,为什么不用红黑树
- Hash表结构存储数据
- 通过key的hash计算得到存储下表
- Hash只能进行等值查询切换速度非常快但是无法用于范围查询
- 二叉查找树
- 左边小,右边大,自身带排序
- 二分查找
- 极端情况
- 根节点的选取,如果选取不好就会不平衡
- 出现某一个方向子树过长
- 平衡二叉树
- 改善二叉树极端情况
- 降低IO次数每走一个节点进行一次IO
- 数的高度过高IO性能下降
- B树
- 存放指针及数据,保存了排序功能
- 指定阶数M一个节点包含的子节点最大数量M越大高度越低
- 范围查询大的时候需要返回根节点再次便利
- 存储了data信息记录增多的时候树的高度会变高
- B+树
- 数据全部存在子节点中,非子节点只存储键值和指针
- 子节点之间添加链表结构,解决范围查询时需要返回根节点
- 范围查询效率提高很多单个查询比B+树提高不大
- 那些情况适合建立索引,那些不适合建立索引
- 频繁使用where
- 分组字段,分组的前提为排序
- 统计字段
- 加了索引不需要产生中间表去重
- 频繁更新字段
- 数据单一固定
- 数据量大(数据类型text)
- where条件不怎么用的
- 索引分类,最左前缀,聚簇索引
- 主键索引
- 唯一索引(一级索引)
- 普通索引(二级索引)
- 联合索引(需要符合最左前缀原则)
- 最左前缀
- 第一个值为从小到大排序,第二个不是
- 第一个值确定的情况下,第二个值是有序的
- 从最左边开始连续的索引都可以匹配上,直到遇到范围查询,> < between
- 已经排序好的字段是会生效的,
- a=1 and b>1 ab都会生效
- a>1 and b=1 b索引会失效a>1 时b为无序的
- MyISAM和InnoDB数据结构
- MYD数据 MYI索引
- ibd数据和索引读一个文件速度更快
- 聚簇索引
- 根据主键索引可以直接拿到数据,索引和数据放在一起
- InnoDB
- 定义主键为聚簇索引
- 未定义索引选择第一个部位null唯一索引
- 以上都没用使用一个6字节长整型的隐式字段ROWID字段构建聚簇索引该RPWID字段会在插入新行时自动递增
- 非聚簇索引(辅助索引)
- 除聚簇索引外
- 只存储主键ID
- 查询可能需要回表通过辅助索引查询得到ID去

View File

@@ -0,0 +1,73 @@
- 索引的概念
- 用于提高查找速度的一种数据结构
-
- 为什么要用B+树B-树和B+树区别,为什么不用红黑树
- Hash表结构存储数据
- 通过key的hash计算得到存储下表
- Hash只能进行等值查询切换速度非常快但是无法用于范围查询
- 二叉查找树
- 左边小,右边大,自身带排序
- 二分查找
- 极端情况
- 根节点的选取,如果选取不好就会不平衡
- 出现某一个方向子树过长
- 平衡二叉树
- 改善二叉树极端情况
- 降低IO次数每走一个节点进行一次IO
- 数的高度过高IO性能下降
- B树
- 存放指针及数据,保存了排序功能
- 指定阶数M一个节点包含的子节点最大数量M越大高度越低
- 范围查询大的时候需要返回根节点再次便利
- 存储了data信息记录增多的时候树的高度会变高
- B+树
- 数据全部存在子节点中,非子节点只存储键值和指针
- 子节点之间添加链表结构,解决范围查询时需要返回根节点
- 范围查询效率提高很多单个查询比B+树提高不大
- 那些情况适合建立索引,那些不适合建立索引
- 频繁使用where
- 分组字段,分组的前提为排序
- 统计字段
- 加了索引不需要产生中间表去重
- 频繁更新字段
- 数据单一固定
- 数据量大(数据类型text)
- where条件不怎么用的
- 索引分类,最左前缀,聚簇索引
- 主键索引
- 唯一索引(一级索引)
- 普通索引(二级索引)
- 联合索引(需要符合最左前缀原则)
- 最左前缀
- 第一个值为从小到大排序,第二个不是
- 第一个值确定的情况下,第二个值是有序的
- 从最左边开始连续的索引都可以匹配上,直到遇到范围查询,> < between
- 已经排序好的字段是会生效的,
- a=1 and b>1 ab都会生效
- a>1 and b=1 b索引会失效a>1 时b为无序的
- MyISAM和InnoDB数据结构
- MYD数据 MYI索引
- ibd数据和索引读一个文件速度更快
- 聚簇索引
- 根据主键索引可以直接拿到数据,索引和数据放在一起
- InnoDB
- 定义主键为聚簇索引
- 未定义索引选择第一个部位null唯一索引
- 以上都没用使用一个6字节长整型的隐式字段ROWID字段构建聚簇索引该RPWID字段会在插入新行时自动递增
- 非聚簇索引(辅助索引)
- 除聚簇索引外
- 只存储主键ID
- 查询可能需要回表通过辅助索引查询得到ID去主键索引中查找
- MyISAM中通过主键查询得到数据在硬盘中的地址再根据该地址去磁盘中寻找
- 主键索引唯一,辅助索引可能等值也会查询出多个数据
- 索引覆盖
- 通过辅助索引可以获得全部数据,不需要回表
- 索引失效
- select *
- %左边
- 未最左匹配
- 数据库认为不要
- 计算
- or
- = > <
-

View File

@@ -0,0 +1,132 @@
- 索引的概念
- 用于提高查找速度的一种数据结构
-
- 为什么要用B+树B-树和B+树区别,为什么不用红黑树
- Hash表结构存储数据
- 通过key的hash计算得到存储下表
- Hash只能进行等值查询切换速度非常快但是无法用于范围查询
- 二叉查找树
- 左边小,右边大,自身带排序
- 二分查找
- 极端情况
- 根节点的选取,如果选取不好就会不平衡
- 出现某一个方向子树过长
- 平衡二叉树
- 改善二叉树极端情况
- 降低IO次数每走一个节点进行一次IO
- 数的高度过高IO性能下降
- B树
- 存放指针及数据,保存了排序功能
- 指定阶数M一个节点包含的子节点最大数量M越大高度越低
- 范围查询大的时候需要返回根节点再次便利
- 存储了data信息记录增多的时候树的高度会变高
- B+树
- 数据全部存在子节点中,非子节点只存储键值和指针
- 子节点之间添加链表结构,解决范围查询时需要返回根节点
- 范围查询效率提高很多单个查询比B+树提高不大
- 那些情况适合建立索引,那些不适合建立索引
- 频繁使用where
- 分组字段,分组的前提为排序
- 统计字段
- 加了索引不需要产生中间表去重
- 频繁更新字段
- 数据单一固定
- 数据量大(数据类型text)
- where条件不怎么用的
- 索引分类,最左前缀,聚簇索引
- 主键索引
- 唯一索引(一级索引)
- 普通索引(二级索引)
- 联合索引(需要符合最左前缀原则)
- 最左前缀
- 第一个值为从小到大排序,第二个不是
- 第一个值确定的情况下,第二个值是有序的
- 从最左边开始连续的索引都可以匹配上,直到遇到范围查询,> < between
- 已经排序好的字段是会生效的,
- a=1 and b>1 ab都会生效
- a>1 and b=1 b索引会失效a>1 时b为无序的
- MyISAM和InnoDB数据结构
- MYD数据 MYI索引
- ibd数据和索引读一个文件速度更快
- 聚簇索引
- 根据主键索引可以直接拿到数据,索引和数据放在一起
- InnoDB
- 定义主键为聚簇索引
- 未定义索引选择第一个部位null唯一索引
- 以上都没用使用一个6字节长整型的隐式字段ROWID字段构建聚簇索引该RPWID字段会在插入新行时自动递增
- 非聚簇索引(辅助索引)
- 除聚簇索引外
- 只存储主键ID
- 查询可能需要回表通过辅助索引查询得到ID去主键索引中查找
- MyISAM中通过主键查询得到数据在硬盘中的地址再根据该地址去磁盘中寻找
- 主键索引唯一,辅助索引可能等值也会查询出多个数据
- 索引覆盖
- 通过辅助索引可以获得全部数据,不需要回表
- 索引失效
- select *
- %左边
- 未最左匹配
- 数据库认为不要
- 计算
- or
- = > <
- 优化
- 辅助索引覆盖
- 自增主键ID
- 避免select *
- 少用子查询,能使用外连接就外连接,避免笛卡尔积
- 使用短索引,非叶子节点存储更多索引降低树的高度
- 为什么推荐使用自增主键作为索引
- 页分裂
- 降低复杂度
- List集合
- 结合源码,回答核心流程,夹带关键字
- ArrayList
- 如何扩容,大小如何自动增加
- 1. 初始化,未给定长度,默认调用午餐构造器
- elementdata 常量数组为空
- new之后数组长度为0
- 2. 添加第一个元素
- 计算容量比较长度后返回初始化长度为10
- 3. 数组扩容
- grow方法增加长度
- 新容量为老容量加上老容量右移以为即1.5倍
- 掉用复制数组的方法
- 复制某个ArrayList到另一个里面去
- clongaddAllcopystream流
- 重写Clone方法
- 浅复制
- 返回一个一样的ArrayList其中一个改变了元素另一个也会改变
- 两个集合中存储同一份元素引用
- 深复制
- 重写clone方法使用迭代器便利重新创建引用对象逐个添加
- 索引中ArrayList增加或删除某个元素的运行过程效率很低吗
- 效率很低添加或删除某个元素都需要对数组中的元素进行移位需要不断进行ArrayCopy很浪费时间
- 添加,后面元素都后移一位,再添加
- 删除,后面元素都前移一位覆盖
- 很大的数组需要拷贝,如何快速拷贝
- 创建时就指定数组的大小
- 获得线程安全的ArrayList
- synchorizoned关键字
- LinkedList和ArrayList如何选择
- ArrayList底层为数组查询效率高增删效率低
- LinkedList底层为链表查询效率低增删效率高
- Vector
- 扩容为2倍线程安全
- Set
- HashSet
- 无序,去重,非线程安全
- new新建HashMap
- 底层通过HashMap的key值实现的值为常量PRESENT(一个空的Object对象)
- put调用setValue方法
- 添加时为什么要给个value为PRESENT常量
- PRESENT决定返回oldValue还是null判断是否已经存在
- HashSet remove方法比较PRESENT
- HashMap的删除方法成功会返回value失败返回null通过返回判断是否删除
- 去重原理
- hashcode和equals方法
- 先判断hash值再通过==和wquals判断返回true则为重复元素
- HashSet和TreeSet
- 无序HashSet有序TreeSet
- 如何得到一个线程安全的Set集合
- Collections.synchorizeonedSet()~

View File

@@ -0,0 +1,143 @@
- 索引的概念
- 用于提高查找速度的一种数据结构
-
- 为什么要用B+树B-树和B+树区别,为什么不用红黑树
- Hash表结构存储数据
- 通过key的hash计算得到存储下表
- Hash只能进行等值查询切换速度非常快但是无法用于范围查询
- 二叉查找树
- 左边小,右边大,自身带排序
- 二分查找
- 极端情况
- 根节点的选取,如果选取不好就会不平衡
- 出现某一个方向子树过长
- 平衡二叉树
- 改善二叉树极端情况
- 降低IO次数每走一个节点进行一次IO
- 数的高度过高IO性能下降
- B树
- 存放指针及数据,保存了排序功能
- 指定阶数M一个节点包含的子节点最大数量M越大高度越低
- 范围查询大的时候需要返回根节点再次便利
- 存储了data信息记录增多的时候树的高度会变高
- B+树
- 数据全部存在子节点中,非子节点只存储键值和指针
- 子节点之间添加链表结构,解决范围查询时需要返回根节点
- 范围查询效率提高很多单个查询比B+树提高不大
- 那些情况适合建立索引,那些不适合建立索引
- 频繁使用where
- 分组字段,分组的前提为排序
- 统计字段
- 加了索引不需要产生中间表去重
- 频繁更新字段
- 数据单一固定
- 数据量大(数据类型text)
- where条件不怎么用的
- 索引分类,最左前缀,聚簇索引
- 主键索引
- 唯一索引(一级索引)
- 普通索引(二级索引)
- 联合索引(需要符合最左前缀原则)
- 最左前缀
- 第一个值为从小到大排序,第二个不是
- 第一个值确定的情况下,第二个值是有序的
- 从最左边开始连续的索引都可以匹配上,直到遇到范围查询,> < between
- 已经排序好的字段是会生效的,
- a=1 and b>1 ab都会生效
- a>1 and b=1 b索引会失效a>1 时b为无序的
- MyISAM和InnoDB数据结构
- MYD数据 MYI索引
- ibd数据和索引读一个文件速度更快
- 聚簇索引
- 根据主键索引可以直接拿到数据,索引和数据放在一起
- InnoDB
- 定义主键为聚簇索引
- 未定义索引选择第一个部位null唯一索引
- 以上都没用使用一个6字节长整型的隐式字段ROWID字段构建聚簇索引该RPWID字段会在插入新行时自动递增
- 非聚簇索引(辅助索引)
- 除聚簇索引外
- 只存储主键ID
- 查询可能需要回表通过辅助索引查询得到ID去主键索引中查找
- MyISAM中通过主键查询得到数据在硬盘中的地址再根据该地址去磁盘中寻找
- 主键索引唯一,辅助索引可能等值也会查询出多个数据
- 索引覆盖
- 通过辅助索引可以获得全部数据,不需要回表
- 索引失效
- select *
- %左边
- 未最左匹配
- 数据库认为不要
- 计算
- or
- = > <
- 优化
- 辅助索引覆盖
- 自增主键ID
- 避免select *
- 少用子查询,能使用外连接就外连接,避免笛卡尔积
- 使用短索引,非叶子节点存储更多索引降低树的高度
- 为什么推荐使用自增主键作为索引
- 页分裂
- 降低复杂度
- List集合
- 结合源码,回答核心流程,夹带关键字
- ArrayList
- 如何扩容,大小如何自动增加
- 1. 初始化,未给定长度,默认调用午餐构造器
- elementdata 常量数组为空
- new之后数组长度为0
- 2. 添加第一个元素
- 计算容量比较长度后返回初始化长度为10
- 3. 数组扩容
- grow方法增加长度
- 新容量为老容量加上老容量右移以为即1.5倍
- 掉用复制数组的方法
- 复制某个ArrayList到另一个里面去
- clongaddAllcopystream流
- 重写Clone方法
- 浅复制
- 返回一个一样的ArrayList其中一个改变了元素另一个也会改变
- 两个集合中存储同一份元素引用
- 深复制
- 重写clone方法使用迭代器便利重新创建引用对象逐个添加
- 索引中ArrayList增加或删除某个元素的运行过程效率很低吗
- 效率很低添加或删除某个元素都需要对数组中的元素进行移位需要不断进行ArrayCopy很浪费时间
- 添加,后面元素都后移一位,再添加
- 删除,后面元素都前移一位覆盖
- 很大的数组需要拷贝,如何快速拷贝
- 创建时就指定数组的大小
- 获得线程安全的ArrayList
- synchorizoned关键字
- LinkedList和ArrayList如何选择
- ArrayList底层为数组查询效率高增删效率低
- LinkedList底层为链表查询效率低增删效率高
- Vector
- 扩容为2倍线程安全
- Set
- HashSet
- 无序,去重,非线程安全
- new新建HashMap
- 底层通过HashMap的key值实现的值为常量PRESENT(一个空的Object对象)
- put调用setValue方法
- 添加时为什么要给个value为PRESENT常量
- PRESENT决定返回oldValue还是null判断是否已经存在
- HashSet remove方法比较PRESENT
- HashMap的删除方法成功会返回value失败返回null通过返回判断是否删除
- 去重原理
- hashcode和equals方法
- 先判断hash值再通过==和wquals判断返回true则为重复元素
- HashSet和TreeSet
- 无序HashSet有序TreeSet
- 如何得到一个线程安全的Set集合
- Collections.synchorizeonedSet()
- HashMap的底层结构
- jdk1.7 数组+单向链表
- jdk1.8 数组+链表(单向/双向)+红黑树
- 内部定义静态Node类
- Node<K, V>
- TreeNode有TreeNode leftTreeNode right继承LinkedHashMap.Entry继承HashMap.Node
- 如何解决Hash碰撞何时从单链表转化为红黑树
- 存放元素需要通过Hash计算来得到Hash值Hash值为元素要存放的位置当两个不同元素经过Hash计算得到的Hash值相同两个元素要存放在同一个位置产生冲突
- HashMap的put方法
- 初始化table数组长度为16第一次添加table为null通过resize()方法,给新容量16阈值16*0.75
- threadhold扩容因子0.75

View File

@@ -0,0 +1,345 @@
- Java并发编程基础
- 1谈谈你对AQS的理解
- 2lock和synchronized区别
- 3线程池如何知道一个线程的任务已经执行完成
- 4什么叫做阻塞队列的有界和无界
- 5ConcurrentHashMap 底层具体实现知道吗?实现原理是什么?
- 6能谈一下CAS机制吗
- 7死锁的发生原因和怎么避免
- 8lock和Synchronized 区别
- 9讲一下wait和notify这个为什么要在synchronized代码块中
- 10你是怎么理解线程安全问题的
- 11什么是守护线程它有什么特点
- 12谈谈你对AQS的理解
- 13AbstractQueuedSynchronized 为什么采用双向链表
- 14lock和synchronized 区别
- 15线程池如何知道一个线程的任务已经执行完成
- 16什么叫做阻塞队列的有界和无界
- 17ConcurrentHashMap 底层具体实现知道吗?实现原理是什么?
- 18能谈一下CAS机制吗
- 19死锁的发生原因和怎么避免
- 20volatile 关键字有什么用?它的实现原理是什么?
- 21讲一下wait和notify这个为什么要在synchronized代码块中
- 22ThreadLocal是什么它的实现原理呢
- 23基于数组的阻塞队列 ArrayBlockingQueue 原理
- 24怎么理解线程安全
- 25请简述一下伪共享的概念以及如何避免
- 26什么是可重入什么是可重入锁它用来解决什么问题
- 27请说一下ReentrantLock的实现原理
- 28简述一下你对线程池的理解
- 29如何中断一个正在运行的线程
- 30为什么引入偏向锁、轻量级锁介绍下升级流程
- 31什么是守护线程它有什么特点
- 32请谈谈AQS是怎么回事儿
- 33ReentrantLock 是如何实现锁公平和非公平性的?
- 34说一下你对 CompletableFuture的理解
- 35线程状态BLOCKED和WAITING有什么区别
- 36Thread和Runnable的区别
- 37Thread和Runnable的区别
- 38AQS为什么要使用双向链表
- 39ConcurrentHashMap的size方法是线程安全的吗为什么
- 40wait和sleep是否会触发锁的释放以及CPU资源的释放
- 41DCL单例模式设计为什么需要 volatile 修饰实例对象
- 42讲下线程池的线程回收
- 43如果一个线程两次调用start会出现什么问题
- 44Java 官方提供了哪几种线程池,分别有什么特点?
- 45请你说一下你对Happens-Before的理解。
- 46线程池是如何实现线程复用的
- 47可以说下阻塞队列被异步消费怎么保持顺序吗
- 48当任务数超过线程池的核心线程数时如何让它不进入队列而是直接启用最大线程数
- 49SimpleDateFormat 是线程安全的吗?为什么?
- 50并行和并发有什么区别
- 51如何解决死锁问题
- 52为什么 ConcurrentHashMap中key不允许为null
- 53ThreadLocal会出现内存泄漏吗
- 54什么是CompletableFuture
- 55什么条件下会产出死锁如何避免死锁
- 56ConcurrentHashMap是如何保证线程安全的
- 57ThreadLocal真的会造成内存泄漏吗
- 58为什么 ConcurrentHashMap 不允许插入null值
- 59synchronized和Lock的区别
- 60如何安全地中断一个正在运行的线程
- JVM面试题合集
- 1CPU飙高系统反应慢怎么排查
- 2关于什么是JVM看看普通人和高手的回答。
- 3有没有排查过线上oom的问题如何排查的
- 4说一下你对双亲委派的理解
- 5CPU飙高系统反应慢怎么排查
- 6什么是双亲委派
- 7JVM 如何判断一个对象可以被回收
- 8G1 垃圾收集的特点,为什么低延迟
- 9JVM分代年龄为什么是15次可以25次吗
- 10一个空Object对象的占多大空间
- 11什么是Java虚拟机为什么要使用
- 12JVM 为什么使用元空间替换了永久代?
- 13Java 常见的垃圾收集器有哪些?
- 14如何破坏双亲委派模型
- 15JVM 中一次完整的GC流程是怎样的对象如何晋升到老年代
- 16如果发生内存泄漏怎么排查
- 17JVM中的三色标记法是什么
- 18说一些CMS垃圾回器的工作原理
- 19什么是内存溢出什么是内存泄漏
- 20什么是双亲委派机制
- Java 基础面试题
- 1fail-safe 机制与fail-fast 机制分别有什么作用
- 2HashMap 是怎么解决哈希冲突的?
- 3面试官你能说一下什么是受检异常和非受检异常吗
- 4为什么阿里巴巴的Java开发手册不建议使用Java自带的线程池
- 5fail-safe 机制与fail-fast机制分别有什么作用
- 6HashMap是怎么解决哈希冲突的
- 7JDK动态代理为什么只能代理有接口的类
- 8请说一下对象的创建过程阿里
- 9new Stringabc到底创建了几个对象
- 10请简单说一下你对受检异常和非受检异常的理解
- 11HashMap 是如何解决 hash 冲突的?
- 12String、StringBuffer、StringBuilder 区别
- 13Integer使用不当导致生产的事故
- 14可以讲一下ArrayList的自动扩容机制吗
- 15什么是深拷贝和浅拷贝
- 16HashMap中的hash方法为什么要右移16位异或
- 17HashMap 啥时候扩容,为什么扩容?
- 18强引用、软引用、弱引用、虚引用有什么区别
- 19Java有几种文件拷贝方式哪一种效率最高
- 20聊聊你知道的设计模式
- 21finally块一定会执行吗
- 22在Java 中实现单例模式有哪些方法
- 23Java SPI是什么有什么用
- 24Integer和int的区别Java为什么要设计封装类
- 25Integer a1100 Integer a2100 a1a2的运行结果
- 26HashMap 与HashTable 区别
- 27Java反射的优缺点
- 28为什么重写 equals就一定要重写 hashCode方法
- 29介绍下策略模式和观察者模式
- 30谈谈什么是零拷贝
- 31SortedSet和List异同点
- 32为什么阿里Java手册禁止使用存储过程
- 33为什么阿里巴巴强制要求使用包装类型定义属性
- 34刚折腾完Log4J又爆Spring RCE核弹级漏洞
- 35.3分钟轻松理解单线程下的HashMap工作原理
- 36两个Integer对象比较大小为什么100等于1001000不等于1000
- 37为什么 HashMap会产生死循环
- 38哪些情况下的单例对象可能会破坏
- 39责任链模式的实现原理
- 40new Stringhello之后到底创建了几个对象
- 41什么是Java SPI它有什么作用
- Mysql数据库面试题
- 1innoDB 如何解决幻读
- 2b树和b树的理解
- 3你是否在面试中也被过MySQL优化相关的问题呢
- 4关于“你对MVCC的理解看看普通人和高手是如何回答这个问题的
- 5关于索引的底层实现为什么选择BTree而不是红黑树
- 6请你说一下Mysql中的性能调优方法
- 7为什么一线互联网公司严禁使用存储过程
- 8Mysql 中的RR隔离级别到底有没有解决幻读问题
- 9为什么索引要用B树来实现呢而不是B树
- 10Mysql是如何解决幻读问题的
- 11什么是聚集索引和非聚集索引
- 12请你简单说一下Mysql的事务隔离级别
- 13binlog 和 redolog有什么区别
- 14说一下你日常工作中是怎么优化SQL的
- 15Mysql 主从集群同步延迟问题怎么解决
- 16MySQL 数据库 cpu 飙升的话,要怎么处理呢?
- 17innoDB 如何解决幻读
- 18Mysql的binlog 有几种格式?分别有什么区别
- 19索引有哪些缺点以及具体有哪些索引类型
- 20b树和b树的理解
- 21什么是聚集索引和非聚集索引
- 22请你简单说一下Mysql的事务隔离级别
- 23Mysql为什么使用BTree作为索引结构
- 24数据库连接池有什么用它有哪些关键参数
- 25请说一下Mysql索引的优点和缺点
- 26Mysql事务的实现原理
- 27请你说一下数据库优化
- 28说一下你对行锁、临键锁、间隙锁的理解
- 29索引什么时候失效
- 30Mysql 如何解决幻读问题
- 31请简要说明Mysql中MyISAM和InnoDB引擎的区别
- 32存储MD5的值应该用VARCHAR还是CHAR
- 33Mysql 索引在什么情况下会失效
- 34MySql 存储引擎 InnoDB 与MyISAM 有什么区别
- 35MVCC过程中会加锁吗
- 36MySQL update 是锁行还是锁表?
- 37为什么 SQL 语句不要过多的join
- 38什么情况下不建索引
- 39为什么MySQL索引结构采用B
- 40谈谈你对MySQL事务隔离级别的理解
- 41为什么SQL语句命中索引比不命中索引要快
- 42B 树和B树的区别什么
- 43执行SQL响应比较慢你有哪些排查思路
- Spring Cloud生态必问面试题
- 1谈谈你对Seata的理解
- 2Dubbo的服务请求失败怎么处理
- 3Redis和Mysql 如何保证数据一致性能
- 4什么是Dubbo它有哪些核心功能
- 5既然说到Dubbo的功能请详细说说Dubbo负载均衡的几种策略
- 6最后在说说 Dubbo与Spring Cloud的区别吧
- 7Dubbo的工作原理是什么样的
- 8.5分钟带你快速弄懂RPC
- 9分布式事务的原理
- 10关于“你对Spring Cloud的理解”
- 11关于“谈谈你对ES的理解看看普通人和高手是如何回答这个问题的
- 12.5分钟带你快速了解什么是Kubernetes
- 13还原面试现场带大家理解何为Docker
- 14什么是负载均衡
- 15RPC 和HTTP 协议有什么区别?
- 16Dubbo的服务请求失败怎么处理
- 17说一下你对SPI机制的理解以及Dubbo中有哪些SPI机制的实现
- 18谈谈你对Seata的理解
- 19Dubbo的服务请求失败怎么处理
- 20什么是服务网格
- 21Dubbo 是如何动态感知服务下线的?
- 22简单说一下你对序列化和反序列化的理解
- 23说一说你对Spring Cloud的理解
- 24什么是SPI它有什么用
- 25Eureka server 数据同步原理能说下吗
- 26说说你对一致性Hash算法的理解
- 27请说一下你对分布式和微服务的理解
- 28Nacos配置更新的工作流程
- 29谈谈常用的分布式ID设计方案
- 30Http 协议和RPC协议有什么区别
- 31如何解决TCC中的悬挂问题
- 32请你说一下你对服务降级的理解
- 33服务注册中心应该是AP还是CP
- 34说说你对CAP的理解
- 35请说一下分布式事务的理解和解决方案
- 36什么是微服务说一下你对微服务的理解
- 37Dubbo和SpringCloud的优缺点对比
- 38谈谈分布式事务的3种解决方案
- 39谈谈你对NoSQL的理解
- 40谈谈你对 Spring Cloud的理解
- 41放弃FastDFS拥抱MinlO的7大理由
- Spring Boot面试题
- 1Spring Boot的约定优于配置你的理解是什么
- 2Spring Boot中自动装配机制的原理
- 3Spring Boot的约定优于配置你的理解是什么
- 4Spring Boot中自动装配机制的原理
- 5如何理解 Spring Boot中的Starter
- 6SpringBoot如何解决跨域问题
- 7Spring Boot自动装配原理
- Spring 面试题
- 1能回答一下Spring Bean生命周期的执行流程吗
- 2请简述你对Spring MVC的理解看看普通人和高手是如何回答的
- 3Spring 是如何解决循环依赖问题的?
- 4Spring中事务的传播行为有哪些
- 5说说Spring MVC的执行流程
- 6为什么要使用Spring 框架?
- 7Spring 中事务的传播行为有哪些?
- 8Spring 中Bean的作用域有哪些
- 9Spring中有哪些方式可以把Bean注入到IOC容器
- 10Spring 中 BeanFactory和FactoryBean的区别
- 11说说你对Spring MVC的理解
- 12介绍下Spring loC的工作流程
- 13Resource 和Autowired 的区别
- 14Spring 中有两个id 相同的bean会报错吗如果会报错在哪个阶段报错
- 15Spring 里面的事务和分布式事务的使用如何区分,以及这两个事务之间有什么关联?
- 16谈谈你对Spring IOC和DI的理解
- 17Spring 如何解决循依赖问题
- 18Conditional 注解有什么用?
- 19为什么有些公司禁止使用Transactional 声明式事务?
- Mybatis 面试题
- 1说一说Mybatis里面的缓存机制
- 2说一说Mybatis里面的缓存机制
- 3Mybatis中0的区别是什么
- 4Mybatis是如何进行分页的
- 5MyBatis 配置中的0和0有什么区别
- 6MyBatis 何时使用一级缓存,何时使用二级缓存?
- 网络10相关面试题
- 1请说一下网络四元组
- 2连环问介绍一下自己对Netty的认识吧
- 3什么是服务网格
- 4请说一下网络四元组
- 5.10和NIO有什么区别
- 6TCP协议为什么要设计三次握手
- 7Cookie和Session的区别
- 8请说一下Netty中Reactor模式的理解
- 9什么是I0的多路复用机制
- 10select 和 epoll 的区别
- 11什么是拆包和粘包怎么解决
- 12为什么Netty线程池默认大小为CPU核数的2倍
- Redis面试题
- 1说一下你对Redis的理解
- 2字节一面Redis为什么这么快
- 3Redis和Mysql 如何保证数据一致性
- 4Redis 存在线程安全问题吗?为什么?
- 5RDB 和AOF的实现原理以及优缺点
- 6Redis和Mysql 如何保证数据一致性
- 7Redis的内存淘汰算法和原理是什么
- 8请说一下你对分布式锁的理解以及分布式锁的实现
- 9说说缓存雪崩和缓存穿透的理解以及如何避免
- 10说说缓存雪崩和缓存穿透的理解以及如何避免
- 11Redis存在线程安全问题吗为什么
- 12请说一下你对分布式锁的理解以及分布式锁的实现
- 13RDB和AOF的实现原理、优缺点
- 14请描述一下Redis中AOF 重写的过程
- 15Redis有哪些持久化策略说一下他们的工作原理
- 16Redis多线程模型怎么理解那它会有线程安全问题吗
- 17怎么防止缓存击穿的问题
- 18请描述Redis 的缓存淘汰策略
- 19Redis 哨兵机制和集群有什么区别?
- 20Redis 主从复制的原理
- 21Redis 有哪些过期策略
- 22Redis 遇到Hash冲突怎么办
- 23什么是热 Key 问题,如何解决热 key 问题
- 24Redis中的哨兵选举算法是如何实现的
- 25为什么 Redis 集群的最大槽数是16384个
- 26谈谈你对Redis的理解
- Zookeeper面试题
- 1实现分布式锁的解决方案中你认为Zookeeper和Redis 哪种更好?
- 2Zookeeper和Redis 哪种更好?
- 3关于“你对Zookeeper的理解看看普通人和高手是如何回答这个问题的
- 4Zookeeper中的Watch机制的原理
- 5Zookeeper 如何实现 Leader选举
- 6Zookeeper 如何实现分布式锁
- 7谈谈你对Zookeeper的理解
- 分布式消息队列面试题
- 1什么是消息队列
- 2滴滴二面kafka的零拷贝原理
- 3滴滴二面kafka的零拷贝原理
- 4Kafka 如何保证消息不丢失?
- 5Kafka 怎么避免重复消费
- 6什么是ISR为什么需要引入ISR
- 7Kafka 如何保证消息消费的顺序性?
- 8RabbitMQ的消息如何实现路由
- 9如何保证 RabbitMQ的消息可靠传输
- 10RabbitMQ如何实现高可用
- 11如何处理消息队列的消息积压问题
- 12Kafka 消息队列怎么保证 exactlyOnce怎么实现顺序消费
- 13说一下Kafka中Parttion 分区副本的Leader选举算法
- 14Kafka中一个Topic有三个Partition同一个消费组中两个消费者如何消费的
- 15多线程异步和MQ有什么区别
- 16谈谈你对MQ消息中间件的理解
- 一线大厂场景问题详解
- 1扫码登录到底是怎么实现的
- 2订单超时自动取消功能如何设计
- 3怎么理解接口幂等项目中如何保证的接口幂等
- 4消息推送中的已读消息和未读消息设计难题
- 5布隆过滤器到底是什么东西它有什么用
- 6从B站崩溃的故障排查和恢复过程中学到什么
- 7limit 100000010 加载很慢该怎么优化
- 8会员批量过期的方案怎么实现
- 9什么是幂等如何解决幂等性问题
- 10常见的限流算法有哪些
- 11说说你对一致性Hash算法的理解
- 12如果让你设计一个秒杀系统怎么设计
- 13如果问你项目的重点和难点该如何回答呢
- 14如果让你设计一个秒杀系统怎么设计
- 15来一个亿级数据存储问题讲解每天新增6000万数据
- 16什么情况下会出现Full GC怎么解决
- 17如果问你项目的重点和难点该如何回答呢
- 18生产环境服务器变慢如何诊断处理
- 19将user表进行了分库分表那么手机号的唯一索引是不是就失效了
- 20在2G大小的文件中找出高频top100的单词
- 21数据量达到多少的时候要开始分库分表
- 22表数据量大的时候影响查询效率的主要原因有哪些
- 23应用程序中存在包冲突的情况下怎么发现和解决
- 24Java之父直播面试被吊打
- 25字节跳动一面真题如何提升接口的性能
- 26对接第三方接口要考虑什么
- 常见算法面试题
- 1什么是时间轮请你说一下你对时间轮的理解
- 2什么是令牌桶限流算法
- 3请你说一下你对滑动窗口算法的理解
- 4简述雪花算法的实现原理
- 5SkipList的索引过程能否越两级搜索
- 6对称加密与非对称加密有什么区别
- 7敏感数据怎么加解密和传输

View File

@@ -0,0 +1,64 @@
- DOING Spring
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:14]
:END:
- https://www.bilibili.com/video/BV1rb4y147F2
- [[Spring是如何创建一个bean对象的]]
- [[Spring源码]]
- 微服务SpringCloud
- 什么是单例池,作用是什么
- Bean和普通对象之间的区别是什么
- @PostConstruct注解是如何工作的
- Bean的初始化是如何工作的
- Bean的初始化和实例化的区别是什么
- 什么是初始化后
- 推断构造方法是什么意思
- 什么是先bytype再byname
- Spring Aop底层是怎么工作的
- Spring事务底层是怎么工作的
- @Configuration注解的作用是什么
- Spring为什么要用三级缓存来解决循环依赖
- @Async为什么回导致循环依赖解决不了
- 构造方法和多例导致的循环依赖
- SpringMVC处理请求底层原理流程
- SpringMVC容器创建源码分析
- SpringMVC父子容器原理分析
- SpringMVC父子容器源码分析
- SpringMVC的零配置
- 手写代码模拟SpringBoot
- Springboot如何选择TomCAT还是Jett底层
- @ConditionOnClass注解底层原理
- SpringBoot零配置底层原理实现
- Spring是什么
- Spring的事务传播机制
- Spring框架中Bean的创建过程
- Spring中的Bean是线程安全的吗
- Spring中的单例Bean是线程安全的吗
- Spring框架中使用了哪些设计模式及应用场景
- Spring容器启动流程是怎样的
- Spring如何处理事务
- Spring如何处理循环依赖问题
- Spring事务的实现原理及隔离级别
- Spring事务什么时候会失效
- Spring用到了哪些设计模式
- Spring支持的Bane的作用域
- Spring中Bean是线程安全的吗
- Spring中的Bean创建的声明周期有哪些步骤
- Spring中的事务时如何实现的
- Spring中说明时候@Transactional会失效
- Spring中后置处理器的作用
- 如何实现AOP项目哪些地方用到了AOP
- 说说常用的SpringBoot注解及其实现
- 还读过哪些框架源码,介绍一下你还熟悉的
- 介绍一下Spring读过源码介绍一下大致流程
- 什么时候@Transactional失效
- 说一下Spring的事务机制
- 对AOP的理解
- 对IOC的理解
- 简述Spring bean的生命周期
- Spring用到了哪些设计模式
- Spring中Bean是线程安全的吗
- 如何理解SpringBoot的starter
- 如何实现一个IOC容器
- 什么是bean的自动装配有哪些方式
- 如何实现一个自定义的starter

View File

@@ -0,0 +1,171 @@
- MySQL
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:28]
:END:
- DONE 看面试题
:LOGBOOK:
CLOCK: [2023-10-10 Tue 11:46:55]
CLOCK: [2023-10-10 Tue 11:46:59]--[2023-10-10 Tue 21:24:01] => 09:37:02
:END:
- https://www.bilibili.com/video/BV1N24y1y7a1
- [[如何实现的索引机制]]
- [[表中没有索引会创建B+树吗]]
- [[B+树]]
- [[为什么官方推荐自增主键]]
- [[使用int作为自增主键最大id为10删除10和9添加一条记录不重启和重启后添加记录id为多少]]
- [[索引优缺点]]
- [[回表操作]]
- [[索引类型]]
- [[创建索引的情况]]
- [[索引下推]]
- [[索引失效]]
- [[多个索引是否可以指定]]
- [[Order By是否走索引]]
- [[MySQL查询缓存]]
- [[MySQL组成]]
- [[MySQL执行SQL步骤]]
- [[存储引擎]]
- [[MySQL事务]]
- [[MySQL锁]]
- [[XA协议]]
- [[select for update会产生哪些操作]]
- [[死锁的产生原因和处理方法]]
- [[MySQL日志]]
- MySQL开发
- [[可以用MySQL存储文件吗]]
- [[存储的时候有遇到过什么问题吗]]
- [[财务计算有没有出现过错乱]]
- [[预编译SQL]]
- [[子查询和join哪个效率高]]
- [[SQL调优]]
- [[MySQL数据库cpu飙升]]
- [[分库分表]]
- [[视图]]
- [[存储过程]]
- [[外键]]
- [[processlist]]
- [[千万数据查询优化]]
- [[count(列名)和count(*)区别]]
- [[如果有超大分页怎么处理]]
- [[mysql服务器毫无规律异常重启]]
- [[mysql线上修改表结构有哪些风险]]
- [[什么是mysql多实例部署]]
- DONE 多线程
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:17]--[2023-10-19 Thu 17:21:38] => 292:10:21
:END:
- [[Java创建线程的方式有哪些]]
- [[线程生命周期状态]]
- [[什么是线程安全,线程安全的本质]]
- [[ThreadLocal使用场景]]
- [[ThreadLocal内存泄漏]]
- [[Java中21种锁]]
- [[为什么阿里禁用Executors创建线程]]
- [[如何根据实际需要,定制自己的线程池]]
- [[CAS缺点]]
- [[线程池线程复用原理]]
- [[阻塞和非阻塞队列的并发安全原理]]
- [[公平锁和非公平锁]]
- [[自旋锁优缺点]]
- [[合适的线程数量CPU核心数和线程树的关系]]
- [[CAS是一种什么样的同步机制]]
- [[线程加锁有哪些方式Synchronized和lock的区别]]
- [[进程和线程的区别,使用线程真的能节省时间]]
- [[线程有几种状态]]
- [[ThreadLocal是什么工作中有用到过吗]]
- [[ThreadLocal父子线程怎么共享数据]]
- [[ThreadLocalMap的结构及扩容机制]]
- [[解决hash冲突发方法]]
- [[你知道哪几种锁,分别有什么特点]]
- [[什么是阻塞队列Java中有哪些阻塞队列]]
- [[ConcurrentHashMap为什么放弃了分段锁]]
- [[HashMap内部如何工作]]
- [[什么是指令重排序,为什么要重排序]]
- [[什么是内存可见性]]
- [[什么是happen-before原则]]
- [[为什么需要AQSAQS的作用和重要性]]
- [[一个线程调用两次start()方法会出现什么情况]]
- [[为什么多线程会带来性能问题]]
- [[线程池有几种拒绝策略]]
- [[哪些解决死锁的策略]]
- [[你知道哪些线程安全问题]]
- [[线程池中提交一个任务是怎么样的]]
- DONE JVM
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:28]--[2023-10-17 Tue 20:44:40] => 247:33:12
:END:
- https://www.bilibili.com/video/BV1dA411U7or
- [[JVM主要组成部分]]
- [[JVM内存结构]]
- [[垃圾回收算法]]
- [[垃圾回收器]]
- [[JVM调优]]
- [[JDK自带调优工具]]
- [[生产环境OOM问题]]
- [[生产环境CPU飙高问题]]
- [[类加载机制]]
- [[对象完整创建流程]]
- [[对象分配内存时的指针碰撞和空闲列表机制]]
- [[对象头]]
- [[对象分配内存时的并发问题解决CAS与TLAB机制]]
- [[如何计算对象占用内存大小]]
- [[对象指针压缩]]
- [[栈上分配,逃逸分析,标量替换]]
- [[引用计数法有什么问题]]
- [[GC Root可达性分析法]]
- [[什么样的类能被回收]]
- [[JVM内部各种垃圾收集算法]]
- [[CMS垃圾回收过程]]
- [[CMS比较严重的问题并发收集阶段再次触发Full GC]]
- [[垃圾收集底层三色标记算法]]
- [[G1垃圾收集过程]]
- [[G1收集器最大停顿时间时如何实现的]]
- [[内存泄漏如何排查和解决]]
- [[GC什么时候都能做吗GC安全点和安全区域]]
- [[字符串常量池]]
- [[基本类型包装类常量池如何实现的]]
- 堆的分代
- 年轻代minor gc
- Eden
- S0
- S1
- 老年代full gc
- 可达性分析法
- GCRoots以root为节点分析引用的对象
- jvisualvm
- 双击进去查看内部的运行情况
- arthas
- java -jar运行jar包
- dashboard
- thread 线程号
- 定位代码运行位置
- thread -b
- 查看死锁
- jad
- 反编译代码
- ognl
- 修改线上系统变量的值
- STW机制
- 用户线程会被暂停
- 电商网站
- 有压力频繁full gc
- 亿级流量电商
- 每个用户平均点击2030次
- 日活用户500万
- 付费转换率10%
- 日均50万单
- 大促在抢购前几分钟产生
- 每秒1000多单
- 4核8G部署 300单/秒
- 一个订单对象1KB
- 每秒300KB订单
- 其他对象放大20倍
- eden800Ms0s1100Mold2G
- 一秒产生60M对象运行14秒占满eden
- 因为动态对象年龄每秒60M对象直接移动到老年代
- 能够对JVM调优让其不发生Full GC
- 可以,调大新生代的区域大小,让清理的时间延长
- 长期存活对象移动到老年代
- 动态对象年龄
- 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代
-

View File

@@ -0,0 +1,173 @@
- MySQL
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:28]
:END:
- DONE 看面试题
:LOGBOOK:
CLOCK: [2023-10-10 Tue 11:46:55]
CLOCK: [2023-10-10 Tue 11:46:59]--[2023-10-10 Tue 21:24:01] => 09:37:02
:END:
- https://www.bilibili.com/video/BV1N24y1y7a1
- [[如何实现的索引机制]]
- [[表中没有索引会创建B+树吗]]
- [[B+树]]
- [[为什么官方推荐自增主键]]
- [[使用int作为自增主键最大id为10删除10和9添加一条记录不重启和重启后添加记录id为多少]]
- [[索引优缺点]]
- [[回表操作]]
- [[索引类型]]
- [[创建索引的情况]]
- [[索引下推]]
- [[索引失效]]
- [[多个索引是否可以指定]]
- [[Order By是否走索引]]
- [[MySQL查询缓存]]
- [[MySQL组成]]
- [[MySQL执行SQL步骤]]
- [[存储引擎]]
- [[MySQL事务]]
- [[MySQL锁]]
- [[XA协议]]
- [[select for update会产生哪些操作]]
- [[死锁的产生原因和处理方法]]
- [[MySQL日志]]
- MySQL开发
- [[可以用MySQL存储文件吗]]
- [[存储的时候有遇到过什么问题吗]]
- [[财务计算有没有出现过错乱]]
- [[预编译SQL]]
- [[子查询和join哪个效率高]]
- [[SQL调优]]
- [[MySQL数据库cpu飙升]]
- [[分库分表]]
- [[视图]]
- [[存储过程]]
- [[外键]]
- [[processlist]]
- [[千万数据查询优化]]
- [[count(列名)和count(*)区别]]
- [[如果有超大分页怎么处理]]
- [[mysql服务器毫无规律异常重启]]
- [[mysql线上修改表结构有哪些风险]]
- [[什么是mysql多实例部署]]
- DOING 多线程
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:17]
:END:
- [[Java创建线程的方式有哪些]]
- [[线程生命周期状态]]
- [[什么是线程安全,线程安全的本质]]
- [[ThreadLocal使用场景]]
- [[ThreadLocal内存泄漏]]
- [[Java中21种锁]]
- [[为什么阿里禁用Executors创建线程]]
- [[如何根据实际需要,定制自己的线程池]]
- [[CAS缺点]]
- [[线程池线程复用原理]]
- [[阻塞和非阻塞队列的并发安全原理]]
- [[公平锁和非公平锁]]
- [[自旋锁优缺点]]
- [[合适的线程数量CPU核心数和线程数的关系]]
- [[CAS是一种什么样的同步机制]]
- [[线程加锁有哪些方式Synchronized和lock的区别]]
- [[进程和线程的区别,使用线程真的能节省时间]]
- [[线程有几种状态]]
- [[ThreadLocal是什么工作中有用到过吗]]
- [[ThreadLocal如何实现]]
- [[ThreadLocal父子线程怎么共享数据]]
- [[ThreadLocalMap的结构及扩容机制]]
- [[解决hash冲突方法]]
- [[你知道哪几种锁,分别有什么特点]]
- [[什么是阻塞队列Java中有哪些阻塞队列]]
- [[ConcurrentHashMap为什么放弃了分段锁]]
- [[HashMap内部如何工作]]
- [[什么是指令重排序,为什么要重排序]]
- [[什么是内存可见性]]
- [[主内存和工作内存的关系]]
- [[什么是happen-before原则]]
- [[为什么需要AQSAQS的作用和重要性]]
- [[一个线程调用两次start()方法会出现什么情况]]
- [[为什么多线程会带来性能问题]]
- [[线程池有几种拒绝策略]]
- [[哪些解决死锁的策略]]
- [[你知道哪些线程安全问题]]
- [[线程池中提交一个任务是怎么样的]]
- DONE JVM
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:28]--[2023-10-17 Tue 20:44:40] => 247:33:12
:END:
- https://www.bilibili.com/video/BV1dA411U7or
- [[JVM主要组成部分]]
- [[JVM内存结构]]
- [[垃圾回收算法]]
- [[垃圾回收器]]
- [[JVM调优]]
- [[JDK自带调优工具]]
- [[生产环境OOM问题]]
- [[生产环境CPU飙高问题]]
- [[类加载机制]]
- [[对象完整创建流程]]
- [[对象分配内存时的指针碰撞和空闲列表机制]]
- [[对象头]]
- [[对象分配内存时的并发问题解决CAS与TLAB机制]]
- [[如何计算对象占用内存大小]]
- [[对象指针压缩]]
- [[栈上分配,逃逸分析,标量替换]]
- [[引用计数法有什么问题]]
- [[GC Root可达性分析法]]
- [[什么样的类能被回收]]
- [[JVM内部各种垃圾收集算法]]
- [[CMS垃圾回收过程]]
- [[CMS比较严重的问题并发收集阶段再次触发Full GC]]
- [[垃圾收集底层三色标记算法]]
- [[G1垃圾收集过程]]
- [[G1收集器最大停顿时间时如何实现的]]
- [[内存泄漏如何排查和解决]]
- [[GC什么时候都能做吗GC安全点和安全区域]]
- [[字符串常量池]]
- [[基本类型包装类常量池如何实现的]]
- 堆的分代
- 年轻代minor gc
- Eden
- S0
- S1
- 老年代full gc
- 可达性分析法
- GCRoots以root为节点分析引用的对象
- jvisualvm
- 双击进去查看内部的运行情况
- arthas
- java -jar运行jar包
- dashboard
- thread 线程号
- 定位代码运行位置
- thread -b
- 查看死锁
- jad
- 反编译代码
- ognl
- 修改线上系统变量的值
- STW机制
- 用户线程会被暂停
- 电商网站
- 有压力频繁full gc
- 亿级流量电商
- 每个用户平均点击2030次
- 日活用户500万
- 付费转换率10%
- 日均50万单
- 大促在抢购前几分钟产生
- 每秒1000多单
- 4核8G部署 300单/秒
- 一个订单对象1KB
- 每秒300KB订单
- 其他对象放大20倍
- eden800Ms0s1100Mold2G
- 一秒产生60M对象运行14秒占满eden
- 因为动态对象年龄每秒60M对象直接移动到老年代
- 能够对JVM调优让其不发生Full GC
- 可以,调大新生代的区域大小,让清理的时间延长
- 长期存活对象移动到老年代
- 动态对象年龄
- 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代
-

View File

@@ -0,0 +1,173 @@
- MySQL
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:28]
:END:
- DONE 看面试题
:LOGBOOK:
CLOCK: [2023-10-10 Tue 11:46:55]
CLOCK: [2023-10-10 Tue 11:46:59]--[2023-10-10 Tue 21:24:01] => 09:37:02
:END:
- https://www.bilibili.com/video/BV1N24y1y7a1
- [[如何实现的索引机制]]
- [[表中没有索引会创建B+树吗]]
- [[B+树]]
- [[为什么官方推荐自增主键]]
- [[使用int作为自增主键最大id为10删除10和9添加一条记录不重启和重启后添加记录id为多少]]
- [[索引优缺点]]
- [[回表操作]]
- [[索引类型]]
- [[创建索引的情况]]
- [[索引下推]]
- [[索引失效]]
- [[多个索引是否可以指定]]
- [[Order By是否走索引]]
- [[MySQL查询缓存]]
- [[MySQL组成]]
- [[MySQL执行SQL步骤]]
- [[存储引擎]]
- [[MySQL事务]]
- [[MySQL锁]]
- [[XA协议]]
- [[select for update会产生哪些操作]]
- [[死锁的产生原因和处理方法]]
- [[MySQL日志]]
- MySQL开发
- [[可以用MySQL存储文件吗]]
- [[存储的时候有遇到过什么问题吗]]
- [[财务计算有没有出现过错乱]]
- [[预编译SQL]]
- [[子查询和join哪个效率高]]
- [[SQL调优]]
- [[MySQL数据库cpu飙升]]
- [[分库分表]]
- [[视图]]
- [[存储过程]]
- [[外键]]
- [[processlist]]
- [[千万数据查询优化]]
- [[count(列名)和count(*)区别]]
- [[如果有超大分页怎么处理]]
- [[mysql服务器毫无规律异常重启]]
- [[mysql线上修改表结构有哪些风险]]
- [[什么是mysql多实例部署]]
- DONE 多线程
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:17]--[2023-10-19 Thu 17:21:38] => 292:10:21
:END:
- [[Java创建线程的方式有哪些]]
- [[线程生命周期状态]]
- [[什么是线程安全,线程安全的本质]]
- [[ThreadLocal使用场景]]
- [[ThreadLocal内存泄漏]]
- [[Java中21种锁]]
- [[为什么阿里禁用Executors创建线程]]
- [[如何根据实际需要,定制自己的线程池]]
- [[CAS缺点]]
- [[线程池线程复用原理]]
- [[阻塞和非阻塞队列的并发安全原理]]
- [[公平锁和非公平锁]]
- [[自旋锁优缺点]]
- [[合适的线程数量CPU核心数和线程数的关系]]
- [[CAS是一种什么样的同步机制]]
- [[线程加锁有哪些方式Synchronized和lock的区别]]
- [[进程和线程的区别,使用线程真的能节省时间]]
- [[线程有几种状态]]
- [[ThreadLocal是什么工作中有用到过吗]]
- [[ThreadLocal如何实现]]
- [[ThreadLocal父子线程怎么共享数据]]
- [[ThreadLocalMap的结构及扩容机制]]
- [[解决hash冲突方法]]
- [[你知道哪几种锁,分别有什么特点]]
- [[什么是阻塞队列Java中有哪些阻塞队列]]
- [[ConcurrentHashMap为什么放弃了分段锁]]
- [[HashMap内部如何工作]]
- [[什么是指令重排序,为什么要重排序]]
- [[什么是内存可见性]]
- [[主内存和工作内存的关系]]
- [[什么是happen-before原则]]
- [[为什么需要AQSAQS的作用和重要性]]
- [[一个线程调用两次start()方法会出现什么情况]]
- [[为什么多线程会带来性能问题]]
- [[线程池有几种拒绝策略]]
- [[哪些解决死锁的策略]]
- [[你知道哪些线程安全问题]]
- [[线程池中提交一个任务是怎么样的]]
- DONE JVM
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:28]--[2023-10-17 Tue 20:44:40] => 247:33:12
:END:
- https://www.bilibili.com/video/BV1dA411U7or
- [[JVM主要组成部分]]
- [[JVM内存结构]]
- [[垃圾回收算法]]
- [[垃圾回收器]]
- [[JVM调优]]
- [[JDK自带调优工具]]
- [[生产环境OOM问题]]
- [[生产环境CPU飙高问题]]
- [[类加载机制]]
- [[对象完整创建流程]]
- [[对象分配内存时的指针碰撞和空闲列表机制]]
- [[对象头]]
- [[对象分配内存时的并发问题解决CAS与TLAB机制]]
- [[如何计算对象占用内存大小]]
- [[对象指针压缩]]
- [[栈上分配,逃逸分析,标量替换]]
- [[引用计数法有什么问题]]
- [[GC Root可达性分析法]]
- [[什么样的类能被回收]]
- [[JVM内部各种垃圾收集算法]]
- [[CMS垃圾回收过程]]
- [[CMS比较严重的问题并发收集阶段再次触发Full GC]]
- [[垃圾收集底层三色标记算法]]
- [[G1垃圾收集过程]]
- [[G1收集器最大停顿时间时如何实现的]]
- [[内存泄漏如何排查和解决]]
- [[GC什么时候都能做吗GC安全点和安全区域]]
- [[字符串常量池]]
- [[基本类型包装类常量池如何实现的]]
- 堆的分代
- 年轻代minor gc
- Eden
- S0
- S1
- 老年代full gc
- 可达性分析法
- GCRoots以root为节点分析引用的对象
- jvisualvm
- 双击进去查看内部的运行情况
- arthas
- java -jar运行jar包
- dashboard
- thread 线程号
- 定位代码运行位置
- thread -b
- 查看死锁
- jad
- 反编译代码
- ognl
- 修改线上系统变量的值
- STW机制
- 用户线程会被暂停
- 电商网站
- 有压力频繁full gc
- 亿级流量电商
- 每个用户平均点击2030次
- 日活用户500万
- 付费转换率10%
- 日均50万单
- 大促在抢购前几分钟产生
- 每秒1000多单
- 4核8G部署 300单/秒
- 一个订单对象1KB
- 每秒300KB订单
- 其他对象放大20倍
- eden800Ms0s1100Mold2G
- 一秒产生60M对象运行14秒占满eden
- 因为动态对象年龄每秒60M对象直接移动到老年代
- 能够对JVM调优让其不发生Full GC
- 可以,调大新生代的区域大小,让清理的时间延长
- 长期存活对象移动到老年代
- 动态对象年龄
- 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代
-

View File

@@ -0,0 +1,123 @@
- MySQL
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:28]
:END:
- DONE 看面试题
:LOGBOOK:
CLOCK: [2023-10-10 Tue 11:46:55]
CLOCK: [2023-10-10 Tue 11:46:59]--[2023-10-10 Tue 21:24:01] => 09:37:02
:END:
- https://www.bilibili.com/video/BV1N24y1y7a1
- [[如何实现的索引机制]]
- [[表中没有索引会创建B+树吗]]
- [[B+树]]
- [[为什么官方推荐自增主键]]
- [[使用int作为自增主键最大id为10删除10和9添加一条记录不重启和重启后添加记录id为多少]]
- [[索引优缺点]]
- [[回表操作]]
- [[索引类型]]
- [[创建索引的情况]]
- [[索引下推]]
- [[索引失效]]
- [[多个索引是否可以指定]]
- [[Order By是否走索引]]
- [[MySQL查询缓存]]
- [[MySQL组成]]
- [[MySQL执行SQL步骤]]
- [[存储引擎]]
- [[MySQL事务]]
- [[MySQL锁]]
- [[XA协议]]
- [[select for update会产生哪些操作]]
- [[死锁的产生原因和处理方法]]
- [[MySQL日志]]
- MySQL开发
- [[可以用MySQL存储文件吗]]
- [[存储的时候有遇到过什么问题吗]]
- [[财务计算有没有出现过错乱]]
- [[预编译SQL]]
- [[子查询和join哪个效率高]]
- [[SQL调优]]
- [[MySQL数据库cpu飙升]]
- [[分库分表]]
- [[视图]]
- [[存储过程]]
- [[外键]]
- [[processlist]]
- [[千万数据查询优化]]
- [[count(列名)和count(*)区别]]
- [[如果有超大分页怎么处理]]
- [[mysql服务器毫无规律异常重启]]
- [[mysql线上修改表结构有哪些风险]]
- [[什么是mysql多实例部署]]
- DOING 多线程
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:17]
:END:
- [[线程池中提交一个任务是怎么样的]]
- DOING JVM
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:28]
:END:
- [[JVM主要组成部分]]
- [[JVM内存结构]]
- [[垃圾回收算法]]
- [[垃圾回收器]]
- [[JVM调优]]
- [[JDK自带调优工具]]
- [[生产环境OOM问题]]
- [[生产环境CPU飙高问题]]
- [[类加载机制]]
- [[对象完整创建流程]]
- [[对象分配内存时的指针碰撞和空闲列表机制]]
- [[对象头]]
- [[对象分配内存时的并发问题解决CAS与TLAB机制]]
- [[如何计算对象占用内存大小]]
- [[对象指针压缩]]
- [[栈上分配,逃逸分析,标量替换]]
-
- 堆的分代
- 年轻代minor gc
- Eden
- S0
- S1
- 老年代full gc
- 可达性分析法
- GCRoots以root为节点分析引用的对象
- jvisualvm
- 双击进去查看内部的运行情况
- arthas
- java -jar运行jar包
- dashboard
- thread 线程号
- 定位代码运行位置
- thread -b
- 查看死锁
- jad
- 反编译代码
- ognl
- 修改线上系统变量的值
- STW机制
- 用户线程会被暂停
- 电商网站
- 有压力频繁full gc
- 亿级流量电商
- 每个用户平均点击2030次
- 日活用户500万
- 付费转换率10%
- 日均50万单
- 大促在抢购前几分钟产生
- 每秒1000多单
- 4核8G部署 300单/秒
- 一个订单对象1KB
- 每秒300KB订单
- 其他对象放大20倍
- eden800Ms0s1100Mold2G
- 一秒产生60M对象运行14秒占满eden
- 因为动态对象年龄每秒60M对象直接移动到老年代
- 能够对JVM调优让其不发生Full GC
- 可以,调大新生代的区域大小,让清理的时间延长
- 长期存活对象移动到老年代
- 动态对象年龄
- 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代
-

View File

@@ -0,0 +1,123 @@
- MySQL
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:28]
:END:
- DONE 看面试题
:LOGBOOK:
CLOCK: [2023-10-10 Tue 11:46:55]
CLOCK: [2023-10-10 Tue 11:46:59]--[2023-10-10 Tue 21:24:01] => 09:37:02
:END:
- https://www.bilibili.com/video/BV1N24y1y7a1
- [[如何实现的索引机制]]
- [[表中没有索引会创建B+树吗]]
- [[B+树]]
- [[为什么官方推荐自增主键]]
- [[使用int作为自增主键最大id为10删除10和9添加一条记录不重启和重启后添加记录id为多少]]
- [[索引优缺点]]
- [[回表操作]]
- [[索引类型]]
- [[创建索引的情况]]
- [[索引下推]]
- [[索引失效]]
- [[多个索引是否可以指定]]
- [[Order By是否走索引]]
- [[MySQL查询缓存]]
- [[MySQL组成]]
- [[MySQL执行SQL步骤]]
- [[存储引擎]]
- [[MySQL事务]]
- [[MySQL锁]]
- [[XA协议]]
- [[select for update会产生哪些操作]]
- [[死锁的产生原因和处理方法]]
- [[MySQL日志]]
- MySQL开发
- [[可以用MySQL存储文件吗]]
- [[存储的时候有遇到过什么问题吗]]
- [[财务计算有没有出现过错乱]]
- [[预编译SQL]]
- [[子查询和join哪个效率高]]
- [[SQL调优]]
- [[MySQL数据库cpu飙升]]
- [[分库分表]]
- [[视图]]
- [[存储过程]]
- [[外键]]
- [[processlist]]
- [[千万数据查询优化]]
- [[count(列名)和count(*)区别]]
- [[如果有超大分页怎么处理]]
- [[mysql服务器毫无规律异常重启]]
- [[mysql线上修改表结构有哪些风险]]
- [[什么是mysql多实例部署]]
- DOING 多线程
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:17]
:END:
- [[线程池中提交一个任务是怎么样的]]
- DOING JVM
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:28]
:END:
- [[JVM主要组成部分]]
- [[JVM内存结构]]
- [[垃圾回收算法]]
- [[垃圾回收器]]
- [[JVM调优]]
- [[JDK自带调优工具]]
- [[生产环境OOM问题]]
- [[生产环境CPU飙高问题]]
- [[类加载机制]]
- [[对象完整创建流程]]
- [[对象分配内存时的指针碰撞和空闲列表机制]]
- [[对象头]]
- [[对象分配内存时的并发问题解决CAS与TLAB机制]]
- [[如何计算对象占用内存大小]]
- [[对象指针压缩]]
- [[栈上分配,逃逸分析,标量替换]]
-
- 堆的分代
- 年轻代minor gc
- Eden
- S0
- S1
- 老年代full gc
- 可达性分析法
- GCRoots以root为节点分析引用的对象
- jvisualvm
- 双击进去查看内部的运行情况
- arthas
- java -jar运行jar包
- dashboard
- thread 线程号
- 定位代码运行位置
- thread -b
- 查看死锁
- jad
- 反编译代码
- ognl
- 修改线上系统变量的值
- STW机制
- 用户线程会被暂停
- 电商网站
- 有压力频繁full gc
- 亿级流量电商
- 每个用户平均点击2030次
- 日活用户500万
- 付费转换率10%
- 日均50万单
- 大促在抢购前几分钟产生
- 每秒1000多单
- 4核8G部署 300单/秒
- 一个订单对象1KB
- 每秒300KB订单
- 其他对象放大20倍
- eden800Ms0s1100Mold2G
- 一秒产生60M对象运行14秒占满eden
- 因为动态对象年龄每秒60M对象直接移动到老年代
- 能够对JVM调优让其不发生Full GC
- 可以,调大新生代的区域大小,让清理的时间延长
- 长期存活对象移动到老年代
- 动态对象年龄
- 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代
-

View File

@@ -0,0 +1,173 @@
- MySQL
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:05:28]
:END:
- DONE 看面试题
:LOGBOOK:
CLOCK: [2023-10-10 Tue 11:46:55]
CLOCK: [2023-10-10 Tue 11:46:59]--[2023-10-10 Tue 21:24:01] => 09:37:02
:END:
- https://www.bilibili.com/video/BV1N24y1y7a1
- [[如何实现的索引机制]]
- [[表中没有索引会创建B+树吗]]
- [[B+树]]
- [[为什么官方推荐自增主键]]
- [[使用int作为自增主键最大id为10删除10和9添加一条记录不重启和重启后添加记录id为多少]]
- [[索引优缺点]]
- [[回表操作]]
- [[索引类型]]
- [[创建索引的情况]]
- [[索引下推]]
- [[索引失效]]
- [[多个索引是否可以指定]]
- [[Order By是否走索引]]
- [[MySQL查询缓存]]
- [[MySQL组成]]
- [[MySQL执行SQL步骤]]
- [[存储引擎]]
- [[MySQL事务]]
- [[MySQL锁]]
- [[XA协议]]
- [[select for update会产生哪些操作]]
- [[死锁的产生原因和处理方法]]
- [[MySQL日志]]
- MySQL开发
- [[可以用MySQL存储文件吗]]
- [[存储的时候有遇到过什么问题吗]]
- [[财务计算有没有出现过错乱]]
- [[预编译SQL]]
- [[子查询和join哪个效率高]]
- [[SQL调优]]
- [[MySQL数据库cpu飙升]]
- [[分库分表]]
- [[视图]]
- [[存储过程]]
- [[外键]]
- [[processlist]]
- [[千万数据查询优化]]
- [[count(列名)和count(*)区别]]
- [[如果有超大分页怎么处理]]
- [[mysql服务器毫无规律异常重启]]
- [[mysql线上修改表结构有哪些风险]]
- [[什么是mysql多实例部署]]
- DONE 多线程
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:17]--[2023-10-19 Thu 17:21:38] => 292:10:21
:END:
- [[Java创建线程的方式有哪些]]
- [[线程生命周期状态]]
- [[什么是线程安全,线程安全的本质]]
- [[ThreadLocal使用场景]]
- [[ThreadLocal内存泄漏]]
- [[Java中21种锁]]
- [[为什么阿里禁用Executors创建线程]]
- [[如何根据实际需要,定制自己的线程池]]
- [[CAS缺点]]
- [[线程池线程复用原理]]
- [[阻塞和非阻塞队列的并发安全原理]]
- [[公平锁和非公平锁]]
- [[自旋锁优缺点]]
- [[合适的线程数量CPU核心数和线程数的关系]]
- [[CAS是一种什么样的同步机制]]
- [[线程加锁有哪些方式Synchronized和lock的区别]]
- [[进程和线程的区别,使用线程真的能节省时间]]
- [[线程有几种状态]]
- [[ThreadLocal是什么工作中有用到过吗]]
- [[ThreadLocal如何实现]]
- [[ThreadLocal父子线程怎么共享数据]]
- [[ThreadLocalMap的结构及扩容机制]]
- [[解决hash冲突方法]]
- [[你知道哪几种锁,分别有什么特点]]
- [[什么是阻塞队列Java中有哪些阻塞队列]]
- [[ConcurrentHashMap为什么放弃了分段锁]]
- [[HashMap内部如何工作]]
- [[什么是指令重排序,为什么要重排序]]
- [[什么是内存可见性]]
- [[主内存和工作内存的关系]]
- [[什么是happen-before原则]]
- [[为什么需要AQSAQS的作用和重要性]]
- [[一个线程调用两次start()方法会出现什么情况]]
- [[为什么多线程会带来性能问题]]
- [[线程池有几种拒绝策略]]
- [[哪些解决死锁的策略]]
- [[你知道哪些线程安全问题]]
- [[线程池中提交一个任务是怎么样的]]
- DONE JVM
:LOGBOOK:
CLOCK: [2023-10-07 Sat 13:11:28]--[2023-10-17 Tue 20:44:40] => 247:33:12
:END:
- https://www.bilibili.com/video/BV1dA411U7or
- [[JVM主要组成部分]]
- [[JVM内存结构]]
- [[垃圾回收算法]]
- [[垃圾回收器]]
- [[JVM调优]]
- [[JDK自带调优工具]]
- [[生产环境OOM问题]]
- [[生产环境CPU飙高问题]]
- [[类加载机制]]
- [[对象完整创建流程]]
- [[对象分配内存时的指针碰撞和空闲列表机制]]
- [[对象头]]
- [[对象分配内存时的并发问题解决CAS与TLAB机制]]
- [[如何计算对象占用内存大小]]
- [[对象指针压缩]]
- [[栈上分配,逃逸分析,标量替换]]
- [[引用计数法有什么问题]]
- [[GC Root可达性分析法]]
- [[什么样的类能被回收]]
- [[JVM内部各种垃圾收集算法]]
- [[CMS垃圾回收过程]]
- [[CMS比较严重的问题并发收集阶段再次触发Full GC]]
- [[垃圾收集底层三色标记算法]]
- [[G1垃圾收集过程]]
- [[G1收集器最大停顿时间时如何实现的]]
- [[内存泄漏如何排查和解决]]
- [[GC什么时候都能做吗GC安全点和安全区域]]
- [[字符串常量池]]
- [[基本类型包装类常量池如何实现的]]
- 堆的分代
- 年轻代minor gc
- Eden
- S0
- S1
- 老年代full gc
- 可达性分析法
- GCRoots以root为节点分析引用的对象
- jvisualvm
- 双击进去查看内部的运行情况
- arthas
- java -jar运行jar包
- dashboard
- thread 线程号
- 定位代码运行位置
- thread -b
- 查看死锁
- jad
- 反编译代码
- ognl
- 修改线上系统变量的值
- STW机制
- 用户线程会被暂停
- 电商网站
- 有压力频繁full gc
- 亿级流量电商
- 每个用户平均点击2030次
- 日活用户500万
- 付费转换率10%
- 日均50万单
- 大促在抢购前几分钟产生
- 每秒1000多单
- 4核8G部署 300单/秒
- 一个订单对象1KB
- 每秒300KB订单
- 其他对象放大20倍
- eden800Ms0s1100Mold2G
- 一秒产生60M对象运行14秒占满eden
- 因为动态对象年龄每秒60M对象直接移动到老年代
- 能够对JVM调优让其不发生Full GC
- 可以,调大新生代的区域大小,让清理的时间延长
- 长期存活对象移动到老年代
- 动态对象年龄
- 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代
-

View File

@@ -0,0 +1,26 @@
- DOING SSM框架
:LOGBOOK:
CLOCK: [2023-10-22 Sun 19:56:32]
:END:
- [【冒死上传】比啃书强十倍23年最牛SSM框架面试教程SpringBoot+SpringMvc+Mybatis高质量夺命连环47问|完整版-允许白嫖_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1hh4y1q7je/)
- Spring中定义Bean的方式 #card
- 使用@Bean
- 使用@Component
- 使用@Controller@Service@Repository
- 使用@Configuration
- 使用@Import(.class)导入
- 使用@ControllerAdevice@RestControllerAdvice
- 底层不是用的Spring AOP那套Spring MVC自己实现了
- 使用BeanDefination
- xml配置\<bean/>标签
- @ImportResource(classpath:spring.xml)
- Spring的自动配置 #card
- 使用SpringBoot时会引入一个starter包间接引用spring-boot-autoconfigure的包里面有各种各样的配置类里面配置了各种Bean
- @SpringBootApplication注解,内部有三个注解
- @SpringBootConfiguration
- @EnableAutoConfiguration自动配置的开关正常情况下我们的应用程序不会扫描SpringBootConfigure这个包的路径文件开启了这个注解才会
- @ComponentScan
- {{embed [[#{} 与 ${} 的区别]]}}
- ApplicationContext和BeanFactory有什么区别
- 都是接口分别代表应用容器和Bean工厂
- Application继承了BeanFactory有BeanFactory的全部功能也是一个Bean工厂还继承了其它接口并增加了国际化事件发布加载资源文件获取系统环境变量等功能