Skip to content

Commit 8dc393b

Browse files
committed
Update Java Notes
1 parent aee7bd9 commit 8dc393b

File tree

4 files changed

+60
-35
lines changed

4 files changed

+60
-35
lines changed

DB.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@
3636

3737
参考文章:https://time.geekbang.org/column/intro/139
3838

39+
参考书籍:https://book.douban.com/subject/35231266/
40+
3941

4042

4143
***
@@ -2416,8 +2418,19 @@ CREATE TABLE us_pro(
24162418
SET @@AUTOCOMMIT=数字; -- 系统
24172419
SET AUTOCOMMIT=数字; -- 会话
24182420
```
2421+
2422+
- 系统变量的操作:
24192423

2420-
2424+
```sql
2425+
SET [GLOBAL|SESSION] 变量名 = 值; -- 默认是会话
2426+
SET @@[(GLOBAL|SESSION).]变量名 = 值; -- 默认是系统
2427+
```
2428+
2429+
```sql
2430+
SHOW [GLOBAL|SESSION] VARIABLES [LIKE '变量%']; -- 默认查看会话内系统变量值
2431+
```
2432+
2433+
24212434

24222435
* 管理实务演示
24232436

@@ -2588,7 +2601,7 @@ InnoDB 引擎会在适当的时候,把内存中 redo log buffer 持久化到
25882601
刷脏策略:
25892602

25902603
* redo log 文件是固定大小的,如果写满了就要擦除以前的记录,在擦除之前需要把旧记录更新到磁盘中的数据文件中
2591-
* 系统内存不足,需要淘汰部分数据页,如果淘汰的是脏页,就要先将脏页写到磁盘(大事务)
2604+
* Buffer Pool 内存不足,需要淘汰部分数据页,如果淘汰的是脏页,就要先将脏页写到磁盘(大事务)
25922605
* 系统空闲时,后台线程会自动进行刷脏
25932606
* MySQL 正常关闭时,会把内存的脏页都 flush 到磁盘上
25942607

@@ -4210,7 +4223,7 @@ InnoDB 中,聚簇索引是按照每张表的主键构造一颗 B+ 树,叶子
42104223

42114224
辅助索引叶子节点存储的是主键值,而不是数据的物理地址,所以访问数据需要二次查找,推荐使用覆盖索引,可以减少回表查询
42124225

4213-
检索过程:辅助索引找到主键值,再通过聚簇索引找到数据页,最后通过数据页中的 Page Directory 找到数据行
4226+
**检索过程**:辅助索引找到主键值,再通过聚簇索引(二分)找到数据页,最后通过数据页中的 Page Directory(二分)找到对应的数据分组,遍历组内所所有的数据找到数据行
42144227

42154228

42164229

@@ -4391,7 +4404,7 @@ B+ 树的叶子节点是数据页(page),一个页里面可以存多个数
43914404
- 有范围:对于主键的范围查找和分页查找
43924405
- 有顺序:从根节点开始,进行随机查找,顺序查找
43934406

4394-
InnoDB 中每个数据页的大小默认是 16KB,一般表的主键类型为 INT4字节)或 BIGINT8字节),指针类型也一般为 48 个字节,也就是说一个页(B+Tree 中的**一个节点**)中大概存储 16KB/(8B+8B)=1K 个键值(估值)。则一个深度为 3 的 B+Tree 索引可以维护 `10^3 * 10^3 * 10^3 = 10亿` 条记录
4407+
InnoDB 中每个数据页的大小默认是 16KB,一般表的主键类型为 INT4 字节)或 BIGINT8 字节),指针类型也一般为 48 个字节,也就是说一个页(B+Tree 中的**一个节点**)中大概存储 16KB/(8B+8B)=1K 个键值(估值)。则一个深度为 3 的 B+Tree 索引可以维护 `10^3 * 10^3 * 10^3 = 10亿` 条记录
43954408

43964409
实际情况中每个节点可能不能填充满,因此在数据库中,B+Tree 的高度一般都在 2-4 层。MySQL 的 InnoDB 存储引擎在设计时是**将根节点常驻内存的**,也就是说查找某一键值的行记录时最多只需要 1~3 次磁盘 I/O 操作
43974410

Java.md

Lines changed: 39 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,6 @@
1919

2020

2121

22-
参考视频:https://www.bilibili.com/video/BV1TE41177mP
23-
24-
25-
2622
***
2723

2824

@@ -6403,7 +6399,7 @@ public class AgeIllegalRuntimeException extends RuntimeException{
64036399

64046400

64056401

6406-
### 异常规范
6402+
### 处理规范
64076403

64086404
异常的语法注意:
64096405

@@ -7180,10 +7176,10 @@ B 66
71807176

71817177
中国人:中国人有 9 万左右字符,2 个字节编码一个中文字符,1 个字节编码一个英文字符,这套编码叫:GBK 编码,兼容 ASCII 编码表
71827178

7183-
美国人:收集全球所有的字符,统一编号,这套编码叫 Unicode编码(万国码),一个英文等于两个字节,一个中文(含繁体)等于两个字节,中文标点占两个字节,英文标点占两个字节
7179+
美国人:收集全球所有的字符,统一编号,这套编码叫 Unicode 编码(万国码),一个英文等于两个字节,一个中文(含繁体)等于两个字节,中文标点占两个字节,英文标点占两个字节
71847180

71857181
* UTF-8 是变种形式,也必须兼容ASCII编码表
7186-
* UTF-8一个中文一般占 3 个字节,中文标点占 3 个,英文字母和数字 1 个字节
7182+
* UTF-8 一个中文一般占 3 个字节,中文标点占 3 个,英文字母和数字 1 个字节
71877183

71887184
编码前与编码后的编码集必须一致才不会乱码
71897185

@@ -7513,7 +7509,11 @@ fw.close;
75137509

75147510

75157511

7516-
##### 字节缓冲输入流
7512+
***
7513+
7514+
7515+
7516+
##### 字节缓冲输入
75177517

75187518
字节缓冲输入流:BufferedInputStream
75197519

@@ -7543,7 +7543,11 @@ public class BufferedInputStreamDemo01 {
75437543

75447544

75457545

7546-
##### 字节缓冲输出流
7546+
***
7547+
7548+
7549+
7550+
##### 字节缓冲输出
75477551

75487552
字节缓冲输出流:BufferedOutputStream
75497553

@@ -7572,7 +7576,7 @@ public class BufferedOutputStreamDemo02 {
75727576

75737577

75747578

7575-
##### 字节流的性能分析
7579+
##### 字节流性能
75767580

75777581
利用字节流的复制统计各种写法形式下缓冲流的性能执行情况。
75787582

@@ -7591,7 +7595,7 @@ public class BufferedOutputStreamDemo02 {
75917595

75927596

75937597

7594-
##### 字符缓冲输入流
7598+
##### 字符缓冲输入
75957599

75967600
字符缓冲输入流:BufferedReader
75977601

@@ -7625,7 +7629,11 @@ public static void main(String[] args) throws Exception {
76257629

76267630

76277631

7628-
##### 字符缓冲输出流
7632+
***
7633+
7634+
7635+
7636+
##### 字符缓冲输出
76297637

76307638
符缓冲输出流:BufferedWriter
76317639

@@ -7656,19 +7664,19 @@ public static void main(String[] args) throws Exception {
76567664

76577665
##### 高效原因
76587666

7659-
字符型缓冲流高效的原因:
7667+
字符型缓冲流高效的原因:(空间换时间)
76607668

7661-
* BufferedReader:每次调用read方法,只有第一次从磁盘中读取了8192(**8k**)个字符,存储到该类型对象的缓冲区数组中,将其中一个返回给调用者,再次调用read方法时,就不需要访问磁盘,直接从缓冲区中拿出一个数据即可,提升了效率
7662-
* BufferedWriter:每次调用write方法,不会直接将字符刷新到文件中,而是存储到字符数组中,等字符数组写满了,才一次性刷新到文件中,减少了和磁盘交互的次数,提升了效率
7669+
* BufferedReader:每次调用 read 方法,只有第一次从磁盘中读取了 8192(**8k**)个字符,存储到该类型对象的缓冲区数组中,将其中一个返回给调用者,再次调用 read 方法时,就不需要访问磁盘,直接从缓冲区中拿出一个数据即可,提升了效率
7670+
* BufferedWriter:每次调用 write 方法,不会直接将字符刷新到文件中,而是存储到字符数组中,等字符数组写满了,才一次性刷新到文件中,减少了和磁盘交互的次数,提升了效率
76637671

76647672
字节型缓冲流高效的原因:
76657673

7666-
* BufferedInputStream:在该类型中准备了一个数组,存储字节信息,当外界调用read()方法想获取一个字节的时候,该对象从文件中一次性读取了8192个字节到数组中,只返回了第一个字节给调用者。将来调用者再次调用read方法时,当前对象就不需要再次访问磁盘,只需要从数组中取出一个字节返回给调用者即可,由于读取的是数组,所以速度非常快。当8192个字节全都读取完成之后,再需要读取一个字节,就得让该对象到文件中读取下一个8192个字节
7667-
* BufferedOutputStream:在该类型中准备了一个数组,存储字节信息,当外界调用write方法想写出一个字节的时候,该对象直接将这个字节存储到了自己的数组中,而不刷新到文件中。一直到该数组所有8192个位置全都占满,该对象才把这个数组中的所有数据一次性写出到目标文件中。如果最后一次循环过程中,没有将数组写满,最终在关闭流对象的时候,也会将该数组中的数据刷新到文件中。
7674+
* BufferedInputStream:在该类型中准备了一个数组,存储字节信息,当外界调用 read() 方法想获取一个字节的时候,该对象从文件中一次性读取了 8192 个字节到数组中,只返回了第一个字节给调用者。将来调用者再次调用 read 方法时,当前对象就不需要再次访问磁盘,只需要从数组中取出一个字节返回给调用者即可,由于读取的是数组,所以速度非常快。当 8192 个字节全都读取完成之后,再需要读取一个字节,就得让该对象到文件中读取下一个 8192 个字节
7675+
* BufferedOutputStream:在该类型中准备了一个数组,存储字节信息,当外界调用 write 方法想写出一个字节的时候,该对象直接将这个字节存储到了自己的数组中,而不刷新到文件中。一直到该数组所有 8192 个位置全都占满,该对象才把这个数组中的所有数据一次性写出到目标文件中。如果最后一次循环没有将数组写满,最终在关闭流对象的时候,也会将该数组中的数据刷新到文件中。
76687676

76697677

76707678

7671-
注意:**字节流和字符流,都是装满时自动写出,或者没满时手动flush写出,或close时刷新写出**
7679+
注意:**字节流和字符流,都是装满时自动写出,或者没满时手动 flush 写出,或 close 时刷新写出**
76727680

76737681

76747682

@@ -7689,16 +7697,16 @@ GBK GBK 不乱码!
76897697
UTF-8 GBK 乱码!
76907698
```
76917699

7692-
如果代码编码和读取的文件编码一致字符流读取的时候不会乱码。
7693-
如果代码编码和读取的文件编码不一致字符流读取的时候会乱码。
7700+
如果代码编码和读取的文件编码一致字符流读取的时候不会乱码。
7701+
如果代码编码和读取的文件编码不一致字符流读取的时候会乱码。
76947702

76957703

76967704

76977705
***
76987706

76997707

77007708

7701-
##### 字符输入转换流
7709+
##### 字符输入
77027710

77037711
字符输入转换流:InputStreamReader
77047712

@@ -7707,7 +7715,7 @@ UTF-8 GBK 乱码!
77077715
构造器:
77087716

77097717
* `public InputStreamReader(InputStream is)` : 使用当前代码默认编码 UTF-8 转换成字符流
7710-
* `public InputStreamReader(InputStream is,String charset)` : 指定编码把字节流转换成字符流
7718+
* `public InputStreamReader(InputStream is, String charset)` : 指定编码把字节流转换成字符流
77117719

77127720
```java
77137721
public class InputStreamReaderDemo{
@@ -7729,7 +7737,11 @@ public class InputStreamReaderDemo{
77297737

77307738

77317739

7732-
##### 字符输出转换流
7740+
***
7741+
7742+
7743+
7744+
##### 字符输出
77337745

77347746
字符输出转换流:OutputStreamWriter
77357747

@@ -7738,7 +7750,7 @@ public class InputStreamReaderDemo{
77387750
构造器:
77397751

77407752
* `public OutputStreamWriter(OutputStream os)` : 用默认编码 UTF-8 把字节输出流转换成字符输出流
7741-
* `public OutputStreamWriter(OutputStream os ,String charset)` : 指定编码把字节输出流转换成
7753+
* `public OutputStreamWriter(OutputStream os, String charset)` : 指定编码把字节输出流转换成
77427754

77437755
```Java
77447756
OutputStream os = new FileOutputStream("Day10Demo/src/dlei07.txt");
@@ -9670,6 +9682,8 @@ JVM、JRE、JDK对比:
96709682

96719683

96729684

9685+
参考书籍:https://book.douban.com/subject/34907497/
9686+
96739687
参考视频:https://www.bilibili.com/video/BV1PJ411n7xZ
96749688

96759689
参考视频:https://www.bilibili.com/video/BV1yE411Z7AP
@@ -15370,7 +15384,7 @@ GCViewer 是一款离线的 GC 日志分析器,用于可视化 Java VM 选项
1537015384

1537115385

1537215386

15373-
参考书籍:《数据结构高分笔记》
15387+
参考书籍:https://book.douban.com/subject/35263893/
1537415388

1537515389

1537615390

Prog.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626

2727

2828

29-
参考视频:https://www.bilibili.com/video/BV16J411h7Rd(推荐观看)
29+
参考视频:https://www.bilibili.com/video/BV16J411h7Rd
3030

3131
笔记的整体结构依据视频编写,并随着学习的深入补充了很多知识
3232

@@ -12958,8 +12958,8 @@ final void updateHead(Node<E> h, Node<E> p) {
1295812958
* Pv6:可以实现为所有设备分配 IP 128 位
1295912959

1296012960
* ipconfig:查看本机的 IP
12961-
ping 检查本机与某个 IP 指定的机器是否联通,或者说是检测对方是否在线。
12962-
ping 空格 IP地址 :ping 220.181.57.216,ping www.baidu.com
12961+
* ping 检查本机与某个 IP 指定的机器是否联通,或者说是检测对方是否在线。
12962+
* ping 空格 IP地址 :ping 220.181.57.216,ping www.baidu.com
1296312963

1296412964
特殊的IP地址: 本机IP地址,**127.0.0.1 == localhost**,回环测试
1296512965

SSM.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2893,7 +2893,7 @@ PageInfo相关API:
28932893

28942894

28952895

2896-
笔记的总体架构基于黑马程序员的视频进行制作
2896+
参考视频:https://space.bilibili.com/37974444
28972897

28982898

28992899

@@ -2942,8 +2942,6 @@ Spring 优点:
29422942
- 内聚(Cohesion):代码编写过程中单个模块内部各组成部分间的联系,用于衡量软件中各个功能模块内部的功能联系
29432943
- 代码编写的目标:高内聚,低耦合。同一个模块内的各个元素之间要高度紧密,各个模块之间的相互依存度不紧密
29442944

2945-
![](https://gitee.com/seazean/images/raw/master/Frame/Spring发展历程.png)
2946-
29472945

29482946

29492947

0 commit comments

Comments
 (0)