一·java核心语法——注意And疑惑

注意

java基础核心语法

ps:
加粗和【】表示重点
删除表示已解决



1.跳转语句:

  • continue:跳出当前循环,继续下一次循环
  • break:结束循环
  • return:结束方法
  • System.exit(0):结束虚拟机

2.switch后的表达式的类型:

  • jdk1.0-jdk1.4:byte、short、char、int
  • jdk1.5-jdk1.6:+枚举(enum)
  • jdk1.7_:+String

【 如果case语句后没跟break,会被穿透(一次条件判断后,就不再判断而直接执行,直到遇见break)】

switch(1) {
				case 1:
					System.out.println(1);
				case 2:
					System.out.println(2);
				case 3:
					System.out.println(3);
					break;
				default:
					System.out.println(0);
					break;
			}
			//1、2、3

3.int[] arr = new int[3];
  System.out.println(arr);//[I@15db9742
  结果分析:

  • [:表示一维数组
  • I:int类型
  • @:没有实际意义,分隔符
  • 15db9742:地址数据转为16进制

4.数组定义及赋值
  数组:引用数据类型。栈 存地址,通过地址找到 堆 里面存储的数据(new一次就在堆中创建一块存储区域)

  • 1.动态初始化int[] arr1 = new int[3]; arr1[0]=1; arr1[1]=2; arr1[2]=3;
  • 2.静态初始化int[] arr2 = new int[]{1,2,3};
  • 3.简写静态初始化int arr3[] = {1,2,3};//默认加了new关键字
  • 4.int[] arr4;arr4 = new int[]{1,2,3}
  • 5.错误:int[] arr5;arr5={1,2,3}//整型数组的引用类型arr5没有值。NullPointerExcption:空指针异常,表达的就是引用类型arr5中存储的地址为空。

5.jvm内存分块

  •     常用
  • 栈内存:用于执行方法,每个方法在栈中都有独立的存储和执行空间
  • 堆内存:用于存储数组、对象等数据量比较大的数据。(垃圾回收站)
  • 方法区:用于存储字节码对象、常量、静态变量、方法
  •     不常用
  • 本地方法区:用于执行本地方法
  • 程序计数器:用于控制程序的执行、控制程序执行到了哪个操作

在这里插入图片描述

6.方法重载
在同一个类中,方法名相同,参数列表不同,【与返回值类型无关】
Eclipse可以自动解析,不需要区分方法名,实参个数或者类型不一样可被区分

	//返回值类型不一样,不是重载reload,方法重名了,报错
	public void test() {}
	public int test() {}

7.两个引用指向一个数组(引用:arr1、arr2)

int[] arr1 = {111,222,333};
int[] arr2 = arr1;	
arr2[0] = 444;
arr2[1] = 555;
//打印结果都一样:444 555 333
System.out.println(arr1[0]+"\t"+arr1[1]+"\t"+arr1[2]);
System.out.println(arr2[0]+"\t"+arr2[1]+"\t"+arr2[2]);

解释:在栈中申明arr1、arr2,其中存储的都是堆内存地址。arr2=arr1:那么两个数组存放数据的地址相同。即指向同一存储区域,故,打印结果一样。

8.面向过程——>面向对象(执行者变成指挥者)

面向过程是编年体;面向对象是纪传体——引用网友的话

  • 面向过程:比如,如何洗衣服。设计方式:自顶向下,不断分解
  • 面向对象(OOP):比如,谁洗衣服;张三做什么事。设计方式:自底向上,不断组装
  • 特点:1、封装 2、继承 3、多态

面向过程: 将衣服丢进盆里→放洗衣液→放水→洗衣服→倒掉脏水→再放水→再清洗→拧干衣服→晾晒。现在你将洗衣服的一部分过程(放水,洗衣服,倒掉脏水,再放水,再清洗,拧干衣服)都交给了洗衣机,这时,洗衣机这个对象就出现了!
面向对象: 把衣服放进洗衣机→放洗衣液→(洗衣机.放水()→洗衣机.洗衣服()→洗衣机.倒掉脏水()→洗衣机.再放水()→洗衣机.再清洗()→洗衣机.拧干衣服())→晒衣服创建了洗衣机这个对象以后,你要做的就是括号以外的事情,而具体怎么洗,就是洗衣机的事情了

大神的理解,👉点击👈

9.类和对象

①类:类型,是对具体事物的一个抽象认识,抽象的描述(人类)
    一组相关属性和行为定义的集合

	属性:
 	1)、用于描述事物的特征,一般都是一些可以量化的数据,一般是一个名词
 	2)、java中,使用成员变量来描述事物的属性,和以前定义的方式一样
 	 	只不过位置发生了改变:定义在类中,方法外
		eg:String name;
	行为:
 	1)、用于描述事物可以做的事情,可以完成的功能,一般都是一些动词或者动宾结构
 	2)、java中,使用成员方法来描述事物的功能,和以往定义方法的方式一样
		eg:Sleep()、eat()

Ps:同一个包下面不可有相同名字的类(好比,对植物的分类,不可能有两个相同的分类一样)
②对象:一切客观存在的事物
事物的具体体现(张三、李四)

	1)、对象:
 		具体数据和功能的一个集合
	2)、创建的格式:
 		类名 对象名 = new 类名();
	3)、属性访问:
 		获取属性:对象名.属性名
 		修改属性:对象名.属性名 = 属性值;
	4)、功能访问:
 		对象名.方法名();

Ps:【第一次使用某个类型时,需要将该类型的字节码加载到方法区,之后使用某个类型时,不需要重新加载这个类】

10.匿名对象

    格式:new 类名();
使用场景:
1)、如果需要在对象创建之后,只调用一次方法,就不再使用该对象,就可以使用匿名对象。
2)、可以作为某个方法的实际参数进行传递
3)、可以作为某个方法的返回值进行返回(返回的是某个类,或类中对象\方法,那么定义此方法时类型也要是这个类)

11.封装、this
在这里插入图片描述
   封装:安全、私有、提高复用性,只提供供外部访问的接口(比如,访问当前类的共有方法,从而访问该类的私有成员变量)
   this:表示本类的,当前的

12.构造方法

(和set方法都是给成员变量赋值,但是set更偏向于修改;构造方法指对象初始化,更死板一些)

  • Constructor:构造器、构造方法
  • 作用:给成员变量赋值,故不能有返回类型和返回值
  • 格式:权限修饰符 类名(参数列表){……}
  • 不需要手动调用,创建类时,jvm自动调用

在这里插入图片描述
Ps:没有手动创建构造方法时,系统自动构造了一个空参构造方法(同一个类中,最好同时创建有参、无参构造方法)

默认初始化(空参构造、有参时有默认值)——>显示初始化(创建成员变量时赋值)——>构造方法初始化

注意:
①构造方法用于子类访问
②构造方法用于父类私有成员变量赋值
③有无有参构造方法,在于,是否有需要初始化的成员变量

13.静态变量
   随着类加载而加载至方法区的静态区,加载时,直接分配空间
   方式:直接使用类名点变量名(不建议使用:对象名)
   优先对象而存在
eg:Persion.name
【注意】:当前类不变时,该静态变量不变
静态变量:不会随着对象的改变而改变。换言之,不管创建了多少个对象,它始终只在此类加载时创建一次(方法区)

14.静态方法
   ①静态方法不能访问非静态的变量或方法(即,静态不能访问非静态
(可以直接用 类名.方法名 直接调用静态方法。静态方法可在没有创建对象的情况下直接调用,所以静态方法不能访问非静态的变量,也不能访问非静态方法,否则这样会间接访问非静态变量)
在这里插入图片描述
   ②不能再静态方法中,访问this、super关键字
(这两个关键字都是表示对象的引用,需要对象创建之后,才有地址)
【注意】:顶层父类不变时,该静态方法不变

15.工具类(方法都是static)

简言之,实现某些功能,比如遍历数组、求最大值

  • 调用:直接使用类名点方法名。最好不要创建对象(ArryTool at = new ArryTool())来调用,会浪费内存空间。
  • 阻止创建对象:将空参构造方法私有化private ArryTool(){……}

在这里插入图片描述
16.文档注释
  帮助生成帮助文档
  符号:/**……/
  @version 版本号
  @author 作者名称
  @param 参数名称 参数解释——》描述方法中的参数含义
  @return 返回值类型

生成帮助文档:
  1)dos命令(需要单独设为java文件,必须加public,不然  权限不够)
  javadoc -d 帮助文档生成目录 -version -author 工具类名称

例如:javadoc -d ./doc -author -version ArryTool1.java

  2)eclipse
  选择文件——》export——》java——》javadoc……

17.一个java文件中,只能有一个public类,并且和文件名相同

18.继承extends

  1)词语解释:
  ①ex:前妻
  ②extend:扩展
  2)关系解释:
  父类:被继承的类,超类,基类(基础类)
  子类:继承的类,派生类
  3)含义:子类继承父类(父类中的所有属性,行为都可以调用)
  4)好处:

  • 减少赘余
  • 提高可维护性
  • 类与类建立联系
  • 多态的前提

  5)缺点:

  • 耦合性高(依赖性高)

  6)出现同名成员变量时,仍然需要访问父类成员变量,使用super.成员变量名

注意:
  ①私有成员不能被继承,父类成员变量最好设置为私有,子类没必要直接使用父类的成员变量(private成员不能直接使用,可以通过父类的共有成员方法访问)
  ②父类的构造方法不能被子类继承(构造方法名需与类名相同)
  ③不要因为一部分功能而随意建立继承关系(不是所属关系不要建立)
  ④Java中的继承:单继承,不能多继承(一个子类只有一个父类)
  ⑤Java中,可以多层继承(子类有一个父类,父类还有父类……)
  ⑥final类(最终类)不可被继承

  ⑥子父类的成员变量都要参与构造方法时:

//name,age是父类的;subject是子类的
public Teacher(String name,int age,String subject) {
		super(name,age);
		//可用set方法,但是这样使用,还是会自动访问父类的空参构造。故不如直接使用父类的构造方法
//		this.setName(name);
//		this.setAge(age);
		this.subject = subject;
	}

19.开发原则:
  1)高内聚(自立自强),低耦合(少依赖)
  2)高复用性(能用别人的就用)

20.this、super
ps:父类先加载,之后再加载子类(所以:父类构造方法实现之后,再实现子类的默认构造初始化)
  1)

  • this.对象名
  • super.对象名

  2)【必须放在第一句】

  • this(参数):访问子类构造方法(不加参数就访问无参构造,反之,有参构造)
  • super(参数):访问父类构造方法(……)

21.方法重写(覆盖、修改——和变量重新赋值同理)、(继承才能重写)
  只是对父类某个方法的实现进行重新编写
  可在子类中的重写方法之上加:@override
  与重载的区别:

  • 重载:方法名同、参数列表不同、返回值类型无关。同一个类中
  • 重写(覆写、override):方法名同、参数列表同、返回值类型同。子父类中

  重写原则:
1)父类私有方法不能被重写(无法访问)
2)权限不能越来越小,类不能越来越弱(重写是一个加强的过程)
3)重写不能涉及静态(静态代表不变,所以不可重写)(静态不能被重写+前面静态时说明了:静态不能访问非静态)
4)final修饰的方法不可被重写

22.代码块
  1)局部代码块

	含义:
		定义在局部位置(方法)的代码块
	格式:
		{……}
	好处:
		限定变量的生命周期(在局部代码块中声明的变量,代码块结束时,立刻收回)

  2)构造代码块(提取共有部分)

	含义:
		定义在类中方法外,用于成员变量赋值
	格式:
		{……}
	机制:
		jvm自动执行
		【构造方法前执行】
		创建一次对象,就执行一次构造代码块
	其实:
		【就是把空参和有参共有的代码提取出来,减少赘余】

在这里插入图片描述

  3)静态代码块(只执行一次,类加载就执行)

	含义:
		用于定义【只执行一次的内容的代码块】
	位置:
		类中方法外
	格式:
		static{……}
	作用:
		用于给静态成员变量赋值
		用于执行只需执行一次的代码,例如驱动加载
	特点:
		随着类加载而执行(优先于同类其他方法)

  4)同步代码块

	synchronized (arrstr) {
			
		}

24.final关键字

final修饰的对象地址不可变,但是里面的内容可以被修改(比如,今天限号ox1000,其他车牌的不能上路,但是可以套牌,让其他车上路)
含义:修饰(类、方法、变量【或者引用数据类型】)的关键字——》最终的:不可被继承;不可被重写;不可再赋值

符号:final
    例如:final class Person{……}、final void test(){……}、final int a = 10【final Person p = new Person(),即地址不可变】

注意:当final修饰成员对象时,成员对象只有显示初始化和构造方法初始化,且二者之一必须为其赋值。
显示初始化后,则不可在有参构造该变量;有参构造后,不可空参

static final 命名:这类变量。只能在显示初始化或者静态代码块赋值(因为它随着类加载就分配了空间)

定义常量:
    格式:public static final 类型 命名= 常量值;
    解释:

  • public:因为是共有的,所以加public关键字
  • static:不需要是常量,没必要多次加载,所以直接放在静态池即可
    -final: 常量不可更改,所以加final关键字
  • 命名:全大写,两个单词之间用下划线隔开

25.常用快捷键总结

Ctrl

  • Ctrl + n :快速创建工程
  • Ctrl + d :快速删除
  • Ctrl + / :快速注释
  • Ctrl + 1 :报错提醒(F2)
  • Ctrl + O :在当前类中,搜索类的大纲(方法之类)

Alt

  • Alt + /:自动补全代码
  • Alt + ↑(↓):向上(下)移动

Alt + Ctrl

  • Alt + Ctrl + ↑(↓):向上(下)复制

Ctrl + Shift

  • Ctrl+ Shift + F:自动调整代码(不好使:右键-source-Format)
  • Ctrl + Shift + O :导包,并把不需要的包替换
  • Ctrl + Shift + T :搜索某个类型

Alt + Shift

  • Alt + Shift + R :重命名
  • Alt + Shift + S :源代码相关的操作
  • Alt + Shift + Z :创建代码块

F

  • F2:修改类名、文件名
  • F3:查看指定类型(Ctrl + 鼠标左键)

26.内部类

27.包

	含义:用来分类存放类文件的一个文件夹
	作用:
	 	1、可以将不同类型不同作用的类,存放到不同的文件夹,便于搜索
	 	2、不同的文件夹中,可以定义相同的类名
	包的声明: 
	 	1、表示该类属于哪个包;表示将该类打包
	 	2、效果:编译完成之后,直接就在指定的文件夹中生成字节码文件
	 	3、格式:package 包名称
	 	 	package 语句必须写在当前文件的第一行
	 	 	一个文件中,只能有一个package语句
	 	4、包名称:全部小写,域名倒着写,可以做到全球唯一
	 	 	com.hbw.demos
	 	5、带包声明的类的编译
	 	 	javac -d 文件夹生成的位置 源码路径
	
	跨包访问:
		1) 使用全类名:包名 + 类名
		eg:com.day08.demo.Person p = new com.day08.demo.Person()
		2)导包
		      注意:【在一个类中,使用不同包下相同类名的类时,不可再导包来写,此、时使用全类名】(分不清楚是哪个包下的类)
		eg:
			①先导包:import com.day08.demos.Person;
			②直接使用:Person p = new Person();
			

28.权限修饰符
friendly(默认)
在这里插入图片描述
29.多态

30.抽象

抽象方法:
    含义:只有方法申明,没有方法体
    关键字:abstract
    格式:权限 abstract 类型 方法名();
抽象类:
    格式:abstract class 类名{……}
【注意】:
抽象方法只能存在于 抽象类和接口 中
抽象类中,可能存在抽象方法(也可不存在)
抽象类不可实例化(因为抽象类中可能存在抽象方法,而抽象方法没有方法体,那么没有意义)
④可以通过定义子类来重写抽象方法——》即,实现
⑤子类必须重写父类的所以抽象方法,不然子类也是抽象类(此时可在子类前加abstract),且不能实例化了
⑥抽象类中可以定义静态方法

【作用】:用于强制子类重写抽象方法;比如手机不知道具体要运行什么功能,但是要先把父类App申明出来

特点

1)成员变量:可以定义成员变量和常量
2)构造方法:
①构造方法用于子类访问
②构造方法用于父类私有成员变量赋值
③有无构造方法,在于,是否需要初始化的成员变量
3)成员方法:
①抽象类中可有抽象方法,也可有非抽象方法
②非抽象方法可以继承到子类中,提高代码复用性
③抽象方法用于强制子类重写

31.接口

32.API应用程序编程接口

33.集合

34.异常

35.File类

36.IO流

37.多线程

38.java8特性







疑惑

ps:删除线 表示已经解决

java

1.为何静态不能被重写
  静态表示,不变的。
  静态变量:当前类不变时,静态变量不改变
  静态方法:顶层父类不变时,那么该方法不可变
2.已解决

public static void main(String[] args) {
		SUV[] s = new SUV[2];
		Scanner sc = new Scanner(System.in);
		for(int i = 0;i<s.length;i++) {
			//错误 ????
			//解答:定义了一个SUV数组,但SUV每一个对象并没有实例化(new),所以a[0].setBrand为null,因此就报错了。
			//添加:s[i] = new SUV();
			s[i].setBrand(sc.next());
			s[i].setLength(sc.nextDouble());
			s[i].setPrice(sc.nextDouble());
		}
		for(int i=0;i<s.length;i++) {
			if(s[i].judge(s[i].getLength())==0) {
				System.out.println(s[i].getBrand() + "\t" + s[i].getLength() + "\t" + s[i].getPrice());
			}
		}
		
	}

}

3.System.out.println(name+ "\t" + age + "\t" + code); ??????

4.内部类待完善

5.包待补全

6.Body.Gan bg = new Body.Gan();创建的是Gan对象,还是Body对象

静态成员内部类:静态不可实例化,那么创建的应当是Body对象

7.重载是什么

8.找不到app.txt

放到java文件的根目录下面

9.接口待补充

10.如何理解接口

接口:规则
比如:usbc一说起usbc都知道长什么样子,但不关心具体的实现过程(芯片什么样子、接线怎么接)
再比如:定义“会响的就是闹钟”,不关心到底是什么东西会响(它可能是手机、可能是汽车等)

11.如何理解多态

多种状态,多种指向
App a =new Music()
a = new Game()
a = new Novel()
将Music、Game、Novel实际地址放到App a 引用中,调用时通过引用 a 找到实际类对象中的成员

11.day09笔记没整理

12.API待补充

13.day10笔记待整理
14.day11笔记待整理

15.day12笔记待整理

16.day13笔记待整理~

17.集合——List待补充

18.Entry是Map的内部接口,如何存储键值对、
内部接口如何调用

Entry是Map接口中的一个内部接口,它是实现键值对存储关键。在HashMap中,有Entry的实现类,叫做Entry。Entry类很简 单,里面包含key,value,由外部引入的hash,还有指向下一个Entry对象的引用,和数据结构中学的链表中的note节点很类似。

19.day14笔记待整理

20.day15笔记待整理

21.IO流练习待补充 ;IO流中的疑惑待解决

22.多线程练习待补充; 多线程(下)待补充

23.java8特性中的:函数式编程思想?几种接口?streamming?

24.数组与集合的区别。为何需要集合
区别:
1)数组:可以存储基本数据类型、引用类型
2)集合:只能存储引用类型,因为底层使用的Object数组来装数据,而基本数据类型不包含在Object中,但是基本数据类型对应的包装类对象可以存储在Object中,所以,也根据自动装箱、拆箱可以直接存储基本数据类型。
对象类型的数组每次声明时,都要固定对象个数,不便于扩容。并且要实现的每一个功能都需要手动编写创建。集合就应运而生。

25.stream是一个流???什么是流?
当作对流对象。像管道传输一样

26.同步代码块
synchronized (arrstr) {

	}

27.folat与long表达范围

28.jav8特性待补充

29.API中的StringBuilder待补充

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ...................................................................面试.................................................................................... 19 2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 ..................................................................................................................................... 21 2.2.1. 程序计数器(线程私有) ................................................................................................................ 22 2.2.2. 虚拟机栈(线程私有) .................................................................................................................... 22 2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 ...................................................................................... 23 2.2.5. 方法区/永久代(线程共享) ..................................................................................................... 23 2.3. JVM 运行时内存 ................................................................................................................................. 24 2.3.1. 新生代 .......................................................................................................................................... 24 2.3.1.1. 2.3.1.2. 2.3.1.3. 2.3.1.4. Eden 区 .................................................................................................................................................... 24 ServivorFrom........................................................................................................................................... 24 ServivorTo ...........................................
1. 目录 1. 2. 目录 .........................................................................................................................................................1 JVM ....................................................................................................................................................... 19 2.1. 线程 ...................................................................................................................................................... 20 2.2. JVM 内存区域 ..................................................................................................................................... 21 2.2.1. 程序计数器(线程私有) ................................................................................................................ 22 2.2.2. 虚拟机栈(线程私有) .................................................................................................................... 22 2.2.3. 本地方法区(线程私有) ................................................................................................................ 23 2.2.4. 堆(Heap-线程共享)-运行时数据区 ...................................................................................... 23 2.2.5. 方法区/永久代(线程共享) ..................................................................................................... 23 2.3. JVM 运行时内存 ................................................................................................................................. 24 2.3.1. 新生代 .......................................................................................................................................... 24 2.3.1.1. 2.3.1.2. 2.3.1.3. 2.3.1.4. Eden 区 .................................................................................................................................................... 24 ServivorFrom........................................................................................................................................... 24 ServivorTo .............................................................................................................................................. 24 MinorGC 的过程(复制->清空->互换) ....................................................................................... 24 1:eden、servicorFrom 复制到 ServicorTo,年龄+1................................................................................... 25 2:清空 eden、servicorFrom............................................................................................................................. 25 3:ServicorTo 和 ServicorFrom 互换................................................................................................................25 2.3.3.1. 2.4.1. 如何确定垃圾 .............................................................................................................................. 26 2.4.1.1. 引用计数法............................................................................................................................................... 26 2.4.1.2. 可达性分析............................................................................................................................................... 26 2.3.2. 2.3.3. 老年代 .......................................................................................................................................... 25 永久代 .......................................................................................................................................... 25 JAVA8 与元数据.................................................................................................................................25 2.4. 垃圾回收与算法 .................................................................................................................................. 26 2.4.2. 2.4.3. 2.4.4. 2.4.5. 2.4.5.1. 2.4.5.2. 2.6.1. 2.6.1.1. 2.6.1.2. 2.7.1. 2.7.2. 2.7.3. 2.7.4. 2.7.5. 2.7.6. 2.7.6.1. 标记清除算法(Mark-Sweep) .............................................................................................. 27 复制算法(copying)................................................................................................................. 27 标记整理算法(Mark-Compact).................................................................................................. 28 分代收集算法 .............................................................................................................................. 29 新生代与复制算法 .............................................................................................................................. 29 老年代与标记复制算法 ......................................................................................................................29 2.5. JAVA引用类型 ........................................................................................................................... 30 2.5.1. 强引用 .......................................................................................................................................... 30 2.5.2. 软引用 .......................................................................................................................................... 30 2.5.3. 弱引用 .......................................................................................................................................... 30 2.5.4. 虚引用 .......................................................................................................................................... 30 2.6. GC 分代收集算法 VS 分区收集算法................................................................................................ 30 分代收集算法 .............................................................................................................................. 30 在新生代-复制算法............................................................................................................................. 30 在老年代-标记整理算法.....................................................................................................................30 分区收集算法 .............................................................................................................................. 31 2.7. GC 垃圾收集器 ................................................................................................................................... 31 2.6.2. Serial 垃圾收集器(单线程、复制算法)................................................................................ 31 ParNew 垃圾收集器(Serial+多线程) ................................................................................... 31 .......................................................... 32 ........................................................................... 32 ......................................................................... 33 ..................................................................................... 33 初始标记 .............................................................................................................................................. 33 Parallel Scavenge 收集器(多线程复制算法、高效) Serial Old 收集器(单线程标记整理算法 ) Parallel Old 收集器(多线程标记整理算法) CMS 收集器(多线程标记清除算法) 2.7.6.2. 2.7.6.3. 2.7.6.4. 2.8.1. 2.8.2. 2.8.3. 2.8.4. 2.8.5. 2.8.1. 2.8.2. 2.8.2.1. 2.8.2.2. 2.8.3. 2.8.4. 2.8.5. 并发标记 .............................................................................................................................................. 34 重新标记 .............................................................................................................................................. 34 并发清除 .............................................................................................................................................. 34 G1 收集器 .................................................................................................................................... 34 2.8. JAVA IO/NIO ....................................................................................................................................... 34 2.7.7. 2.9. 2.9.2. 2.9.2.1. 2.9.2.2. 2.9.2.3. 2.9.3. 2.9.4. 2.9.4.1. 2.9.4.2. 阻塞IO模型 ................................................................................................................................ 34 ............................................................................................................................ 35 ........................................................................................................................ 35 ........................................................................................................................ 36 ................................................................................................................................ 36 .................................................................................................................................. 36 .................................................................................................................................... 37 NIO 的缓冲区 .....................................................................................................................................38 NIO 的非阻塞 .....................................................................................................................................38 ....................................................................................................................................... 40 非阻塞 IO 模型 多路复用 IO 模型 信号驱动 IO 模型 ............................................................................................................................................ 40 ........................................................................................................................................ 40 JVM 类加载机制 ................................................................................................................................. 41 2.9.1.1. 2.9.1.2. 2.9.1.3. 2.9.1.4. 2.9.1.5. 2.9.1.6. 2.9.1.7. 2.9.1.8. 加载 .......................................................................................................................................................... 41 验证 .......................................................................................................................................................... 41 准备 .......................................................................................................................................................... 41 解析 .......................................................................................................................................................... 41 符号引用 .............................................................................................................................................. 42 直接引用 .............................................................................................................................................. 42 初始化 ...................................................................................................................................................... 42 类构造器 .............................................................................................................................. 42 类加载器 ...................................................................................................................................... 42 启动类加载器(Bootstrap ClassLoader) ......................................................................................... 43 扩展类加载器(Extension ClassLoader)..........................................................................................43 应用程序类加载器(Application ClassLoader): ..........................................................................43 双亲委派 ...................................................................................................................................... 43 OSGI(动态模型系统) ............................................................................................................ 44 动态改变构造 ...................................................................................................................................... 44 模块化编程与热插拔 .......................................................................................................................... 44 3. JAVA集合............................................................................................................................................45 3.1. 接口继承关系和实现 .......................................................................................................................... 45 3.2. LIST ....................................................................................................................................................... 47 3.2.1. ArrayList(数组)....................................................................................................................... 47 3.2.2. Vector(数组实现、线程同步) ............................................................................................... 47 3.2.3. LinkList(链表) ......................................................................................................................... 47 3.3. SET ....................................................................................................................................................... 48 3.3.1.1. 3.3.1.2. HashSet(Hash 表) ............................................................................................................................. 48 TreeSet(二叉树) ................................................................................................................................ 49 LinkHashSet(HashSet+LinkedHashMap) ................................................................................... 49 3.3.1.3. 3.4. MAP....................................................................................................................................................... 50 3.4.1. HashMap(数组+链表+红黑树)............................................................................................. 50 3.4.1.1. JAVA7 实现 ............................................................................................................................................. 50 3.4.1.2. JAVA8 实现 ............................................................................................................................................. 51 3.4.2. ConcurrentHashMap.................................................................................................................. 51 3.4.2.1. 3.4.2.2. 3.4.2.3. 3.4.2.4. Segment 段.............................................................................................................................................. 51 线程安全(Segment 继承 ReentrantLock 加锁) .............................................................................. 51 并行度(默认 16) ................................................................................................................................. 52 Java8 实现 (引入了红黑树) .............................................................................................................. 52 13/04/2018 Page 2 of 283 异步IO模型 JAVA IO 包 JAVA NIO Channel Buffer Selector 3.4.3. HashTable(线程安全) ........................................................................................................... 53 3.4.4. TreeMap(可排序) .................................................................................................................. 53 3.4.5. LinkHashMap(记录插入顺序) .............................................................................................. 53 4. JAVA 多线程并发.................................................................................................................................54 4.1.1. JAVA 并发知识库 ....................................................................................................................... 54 4.1.2. JAVA 线程实现/创建方式 .......................................................................................................... 54 4.1.2.1. 4.1.2.2. 4.1.2.3. 4.1.2.4. 继承 Thread 类 ........................................................................................................................................ 54 实现 Runnable 接口。............................................................................................................................ 54 ExecutorService、Callable、Future 有返回值线程.............................................................55 基于线程池的方式................................................................................................................................... 56 4.1.3. 4 种线程池 ................................................................................................................................... 56 4.1.3.1. 4.1.3.2. 4.1.3.3. newSingleThreadExecutor ................................................................................................................. 58 4.1.4. 线程生命周期(状态) .................................................................................................................... 58 4.1.3.4. 4.1.4.1. 4.1.4.2. 4.1.4.3. 4.1.4.4. 新建状态(NEW) ................................................................................................................................. 58 就绪状态(RUNNABLE): ................................................................................................................. 59 运行状态(RUNNING): .................................................................................................................... 59 阻塞状态(BLOCKED):....................................................................................................................59 4.1.9.5. 4.1.9.6. 4.1.9.7. 13/04/2018 Semaphore 信号量 ................................................................................................................................. 68 ................................................................................................................................. 68 ................................................................................................................................................................ 68 ........................................................................................................................... 69 AtomicInteger .......................................................................................................................................... 69 Page 3 of 283 newCachedThreadPool ......................................................................................................................... 57 ............................................................................................................................. 57 newScheduledThreadPool .................................................................................................................... 58 newFixedThreadPool 等待阻塞(o.wait->等待对列): ...................................................................................................................... 59 .......................................................................................................................................... 59 ............................................................................................................................................ 59 线程死亡(DEAD)................................................................................................................................ 59 ............................................................................................................................................................... 59 ............................................................................................................................................................... 59 ............................................................................................................................................................... 59 4.1.5. 终止线程 4 种方式 ...................................................................................................................... 60 同步阻塞(lock->锁池) 其他阻塞(sleep/join) 4.1.4.5. 4.1.5.1. 4.1.5.2. 4.1.5.3. 4.1.5.4. 正常运行结束........................................................................................................................................... 60 使用退出标志退出线程...........................................................................................................................60 Interrupt 方法结束线程 ........................................................................................................................... 60 stop 方法终止线程(线程不安全)....................................................................................................... 61 正常结束. 异常结束. 调用 stop 4.1.6. sleep 与 wait 区别....................................................................................................................... 61 4.1.7. start 与 run 区别 .......................................................................................................................... 62 4.1.8. JAVA 后台线程 ........................................................................................................................... 62 4.1.9. JAVA 锁 ....................................................................................................................................... 63 4.1.9.1. 4.1.9.2. 4.1.9.3. 乐观锁 ...................................................................................................................................................... 63 悲观锁 ...................................................................................................................................................... 63 自旋锁 ...................................................................................................................................................... 63 自旋锁的优缺点....................................................................................................................................................63 自旋锁时间阈值(1.6 引入了适应性自旋锁) .................................................................................................. 63 自旋锁的开启........................................................................................................................................................ 64 4.1.9.4. Synchronized 同步锁.............................................................................................................................. 64 ....................................................................................................................................... 64 ....................................................................................................................................... 64 Synchronized 作用范围 Synchronized 核心组件 Synchronized 实现 ............................................................................................................................................... 64 ReentrantLock......................................................................................................................................... 66 ........................................................................................................................................... 66 ................................................................................................................................................................ 66 .................................................................................................................................................................... 67 ........................................................................................................................ 67 ............................................................................................................................................. 67 ......................................................................................................... 68 tryLock 和 lock 和 lockInterruptibly 的区别........................................................................................................ 68 Lock 接口的主要方法 非公平锁 公平锁 ReentrantLock 与 synchronized ReentrantLock 实现 Condition 类和 Object 类锁方法区别区别 实现互斥锁(计数器为 1) 代码实现 Semaphore 与 ReentrantLock 4.1.9.8. 4.1.9.9. 4.1.9.10. 4.1.9.11. 4.1.9.12. 4.1.9.14. 4.1.9.15. 4.1.9.16. 可重入锁(递归锁)............................................................................................................................... 69 公平锁与非公平锁................................................................................................................................... 70 ..................................................................................................................................................... 70 ........................................................................................................................................... 70 ReadWriteLock 读写锁......................................................................................................................70 ........................................................................................................................................................................ 70 ........................................................................................................................................................................ 70 公平锁(Fair) 非公平锁(Nonfair) 读锁 写锁 共享锁和独占锁 .................................................................................................................................. 70 .................................................................................................................................................................... 70 .................................................................................................................................................................... 70 重量级锁(Mutex Lock)................................................................................................................71 轻量级锁 .............................................................................................................................................. 71 锁升级.................................................................................................................................................................... 71 独占锁 共享锁 4.1.9.13. 偏向锁 .................................................................................................................................................. 71 分段锁 .................................................................................................................................................. 71 锁优化 .................................................................................................................................................. 71 减少锁持有时间 .................................................................................................................................................... 72 ............................................................................................................................................................ 72 .................................................................................................................................................................... 72 .................................................................................................................................................................... 72 .................................................................................................................................................................... 72 4.1.10. 线程基本方法..............................................................................................................................72 减小锁粒度 锁分离 锁粗化 锁消除 4.1.10.1. 4.1.10.2. 4.1.10.3. 4.1.10.4. 4.1.10.5. 4.1.10.6. 4.1.10.7. 4.1.10.8. 线程等待(wait) ............................................................................................................................... 73 线程睡眠(sleep)............................................................................................................................. 73 线程让步(yield) .............................................................................................................................. 73 线程断(interrupt)........................................................................................................................ 73 Join 等待其他线程终止 ...................................................................................................................... 74 为什么要用 join()方法? .................................................................................................................... 74 线程唤醒(notify)............................................................................................................................. 74 其他方法: .......................................................................................................................................... 74 4.1.11. 线程上下文切换..........................................................................................................................75 4.1.11.1. 4.1.11.2. 4.1.11.3. 4.1.11.4. 4.1.11.5. 4.1.11.6. 4.1.11.7. 进程......................................................................................................................................................75 上下文..................................................................................................................................................75 寄存器..................................................................................................................................................75 程序计数器 .......................................................................................................................................... 75 PCB-“切换桢”................................................................................................................................. 75 上下文切换的活动: .......................................................................................................................... 76 引起线程上下文切换的原因 .............................................................................................................. 76 4.1.12. 同步锁与死锁..............................................................................................................................76 4.1.12.1. 同步锁 .................................................................................................................................................. 76 4.1.12.2. 死锁 ...................................................................................................................................................... 76 4.1.13. 线程池原理..................................................................................................................................76 4.1.14.1. 4.1.14.2. 4.1.14.3. 4.1.14.4. 4.1.14.5. 4.1.14.6. 4.1.14.7. 4.1.14.8. 4.1.13.1. 4.1.13.2. 4.1.13.3. 4.1.13.4. 线程复用 .............................................................................................................................................. 76 ...................................................................................................................................... 76 .............................................................................................................................................. 78 ......................................................................................................................... 78 4.1.14. JAVA 阻塞队列原理.................................................................................................................... 79 线程池的组成 拒绝策略 Java 线程池工作过程 阻塞队列的主要方法 .......................................................................................................................... 80 ............................................................................................................................................................ 80 .................................................................................................................................................... 81 ............................................................................................................................. 81 ....................................................................................... 82 ......................................................................... 82 .............................................................. 82 .......................................................................................... 82 .............................................................. 83 ...................................................................................................................... 83 插入操作: 获取数据操作: Java 的阻塞队列 ArrayBlockingQueue(公平、非公平) LinkedBlockingQueue(两个独立锁提高并发) PriorityBlockingQueue(compareTo 排序实现优先) DelayQueue(缓存失效、定时任务 ) SynchronousQueue(不存储数据、可用于传递数据) LinkedTransferQueue 13/04/2018 Page 4 of 283 4.1.14.9. LinkedBlockingDeque ..................................................................................................................... 83 4.1.15. CyclicBarrier、CountDownLatch、Semaphore 的用法 ........................................................ 84 4.1.15.1. 4.1.15.2. 4.1.15.3. ................................................................................................ 84 ............................................... 84 ....................................................................... 85 CountDownLatch(线程计数器 ) CyclicBarrier(回环栅栏-等待至 barrier 状态再全部同时执行) Semaphore(信号量-控制同时访问的线程个数) 4.1.16. volatile 关键字的作用(变量可见性、禁止重排序) ............................................................. 87 变量可见性............................................................................................................................................................ 87 禁止重排序............................................................................................................................................................ 87 ..................................................................................................................... 87 ................................................................................................................................................................ 87 4.1.17. 如何在两个线程之间共享数据...................................................................................................88 将数据抽象成一个类,并将数据的操作作为这个类的方法.............................................................................88 .................................................................................................................. 89 4.1.18. ThreadLocal 作用( )........................................................................................ 90 .............................................................................................................. 90 ................................................................................................................................................................ 91 4.1.19. synchronized 和 ReentrantLock 的区别 .................................................................................. 91 4.1.19.1. .................................................................................................................................. 91 4.1.19.2. .................................................................................................................................. 92 4.1.20. ConcurrentHashMap 并发......................................................................................................... 92 4.1.20.1. .......................................................................................................................................... 92 4.1.20.2. .......................................................................................................... 92 ................................................. 93 4.1.21. Java 用到的线程调度 ............................................................................................................. 93 比 sychronized 更轻量级的同步锁 适用场景 Runnable 对象作为一个类的内部类 ThreadLocalMap(线程的一个属性) 线程本地存储 使用场景 两者的共同点: 两者的不同点: 4.1.21.1. 4.1.21.2. 4.1.21.3. 4.1.21.4. 减小锁粒度 ...................................................................................................................................... 93 ...................................................................................................................................... 93 ............................................................................................. 94 ..................................................................................................................... 94 4.1.22. 进程调度算法..............................................................................................................................94 4.1.22.1. 4.1.22.2. 4.1.22.3. ...................................................................................................................................... 94 ...................................................................................................................... 95 .............................................................................................................. 96 )..................................................................96 .......................................................................................................................................... 96 ........................................................................... 97 ............................................................................................................................................. 98 4.1.24. 什么是AQS(抽象的队列同步器).........................................................................................98 Exclusive 独占资源-ReentrantLock ................................................................................................................... 99 Share 共享资源-Semaphore/CountDownLatch ............................................................................................... 99 同步器的实现是 ABS 核心(state 资源状态计数) ....................................................................................... 100 ReentrantReadWriteLock 实现独占和共享两种方式.....................................................................................100 5. JAVA基础..........................................................................................................................................101 4.1.23. 什么是CAS( 4.1.23.1. 4.1.23.2. 4.1.23.3. 5.1.1. 5.1.1.1. 5.1.1.2. 5.1.1.3. 5.1.1.4. JAVA 异常分类及处理.............................................................................................................. 101 .................................................................................................................................................... 101 ............................................................................................................................................ 101 ..................................................................................................................................................................... 101 ........................................................................... 101 ................................................................................................................................ 102 ......................................................... 102 .................................................................................................................. 102 ............................................................................................................ 102 13/04/2018 Page 5 of 283 ConcurrentHashMap 分段锁 ConcurrentHashMap 是由 Segment 数组结构和 HashEntry 数组结构组成 抢占式调度: 协同式调度: JVM 的线程调度实现(抢占式调度) 线程让出 cpu 的情况: 优先调度算法 高优先权优先调度算法 基于时间片的轮转调度算法 比较并交换-乐观锁机制-锁自旋 概念及特性 原子包 java.util.concurrent.atomic(锁自旋) ABA 问题 概念 异常分类 Error Exception(RuntimeException、CheckedException) 异常的处理方式 遇到问题不进行具体处理,而是继续抛给调用者 (throw,throws) try catch 捕获异常针对性处理方式 Throw 和 throws 的区别: 位置不同 功能不同: 5.1.2. 5.1.2.1. 5.1.2.2. 5.1.2.3. 5.1.2.4. 5.1.2.5. 5.1.2.6. 5.1.2.7. 5.1.3. 5.1.4.1. 5.1.4.2. 5.1.4.3. 5.1.4.4. @Documented 描述-javadoc @Inherited 阐述了某个被标注的类型是被继承的 5.1.5.1. 5.1.5.2. 5.1.5.3. 5.1.5.4. 泛型方法() ............................................................................................................................. 112 泛型类 ............................................................................................................................................. 112 类型通配符? .......................................................................................................................................... 113 类型擦除 ................................................................................................................................................ 113 .............................................................................................................................................................. 102 .......................................................................................................................................................... 102 JAVA 反射 ................................................................................................................................. 103 ............................................................................................................................................ 103 ............................................................ 103 ................................................................................................................................ 103 .................................................................................................................................. 103 ...................................................................................................................... 104 .................................................................................................................................... 104 ............................................................................ 104 ..................................................................... 104 ............................................................................................................ 104 ....................................................................................................................... 104 ................................................................................ 104 ............................................................................ 104 动态语言 反射机制概念 (运行状态知道类所有的属性和方法) 反射的应用场合 编译时类型和运行时类型 的编译时类型无法获取具体方法 Java 反射 API 反射 API 用来生成 JVM 的类、接口或则对象的信息。 反射使用步骤(获取 Class 对象、调用对象方法) 获取 Class 对象的 3 种方法 调用某个对象的 getClass()方法 调用某个类的 class 属性来获取该类对应的 Class 对象 使用 Class 类的 forName()静态方法(最安全/性能最好) 创建对象的两种方法 Class 对象的 newInstance() 调用 Constructor 对象的 newInstance() ........................................................................................................................ 105 ............................................................................................................................. 105 .......................................................................................................... 105 JAVA 注解 ................................................................................................................................. 106 5.1.3.1. 概念 ........................................................................................................................................................ 106 5.1.3.2. 4 种标准元注解...................................................................................................................................... 106 @Target 修饰的对象范围 ................................................................................................................................. 106 @Retention 定义 被保留的时间长短 ............................................................................................................... 106 ................................................................................................................................ 106 .............................................................................................. 106 5.1.3.3. 注解处理器............................................................................................................................................. 107 5.1.4. JAVA 内部类 ............................................................................................................................. 109 静态内部类............................................................................................................................................. 109 成员内部类............................................................................................................................................. 110 局部内部类(定义在方法的类) ..................................................................................................... 110 匿名内部类(要继承一个父类或者实现一个接口、直接使用 new 来生成一个对象的引用) ..... 111 5.1.5. JAVA 泛型 ................................................................................................................................. 112 5.1.6. JAVA 序列化(创建可复用的 Java 对象) ................................................................................. 113 .................................................................................................... 113 ................................................................................................. 113 .................................................................................................................................. 113 Serializable 实现序列化 .................................................................................................................................... 113 ............................................... 113 ................................................................................................ 113 ............................................................................................................................................................. 113 .................................................................................................................................. 114 .............................................................................................................................................. 114 ............................................................................................ 114 5.1.7. JAVA 复制 ................................................................................................................................. 114 5.1.7.1. ......................................................................................................................................... 114 5.1.7.2. ..................................................................................... 114 5.1.7.3. ................................................................................................. 115 5.1.7.4. ........................................................................................................ 115 6. SPRING 原理 ..................................................................................................................................... 116 6.1.1. Spring 特点................................................................................................................................ 116 6.1.1.1. 轻量级 ................................................................................................................................................ 116 13/04/2018 Page 6 of 283 保存(持久化)对象及其状态到内存或者磁盘 序列化对象以字节数组保持-静态成员不保存 序列化用户远程对象传输 ObjectOutputStream 和 ObjectInputStream 对对象进行序列化及反序列化 writeObject 和 readObject 自定义序列化策略 序列化 ID 序列化并不保存静态变量 序列化子父类说明 Transient 关键字阻止该变量被序列化到文件 直接赋值复制 浅复制(复制引用但不复制引用的对象) 深复制(复制对象和其应用对象) 序列化(深 clone 一实现) 6.1.1.2. 6.1.1.3. 6.1.1.4. 6.1.1.5. 6.1.2. 6.1.3. 6.1.4. 6.1.5. 6.1.6. 6.1.7. ............................................................................................................................................ 116 ............................................................................................................................................ 116 .................................................................................................................................................... 116 ............................................................................................................................................ 116 Spring 核心组件........................................................................................................................ 117 Spring 常用模块........................................................................................................................ 117 Spring 主要包............................................................................................................................ 118 Spring 常用注解........................................................................................................................ 118 Spring 第三方结合.................................................................................................................... 119 Spring IOC 原理........................................................................................................................ 120 6.1.7.1. 6.1.7.2. 6.1.7.3. 概念 ........................................................................................................................................................ 120 Spring 容器高层视图 ............................................................................................................................ 120 IOC 容器实现......................................................................................................................................... 120 控制反转 面向切面 容器 框架集合 BeanFactory-框架基础设施 .............................................................................................................................. 120 1.1..1.1.1 1.1..1.1.2 1.1..1.1.3 1.1..1.1.4 1.1..1.1.5 1.1..1.1.6 1.1..1.1.7 1.1..1.1.8 BeanDefinitionRegistry 注册表................................................................................................. 121 BeanFactory 顶层接口 .............................................................................................................. 121 ListableBeanFactory ................................................................................................................. 121 HierarchicalBeanFactory 父子级联.......................................................................................... 121 ConfigurableBeanFactory......................................................................................................... 121 AutowireCapableBeanFactory 自动装配 ................................................................................ 122 SingletonBeanRegistry 运行期间注册单例 Bean................................................................... 122 依赖日志框框.............................................................................................................................122 ApplicationContext 面向开发应用 .................................................................................................................... 122 WebApplication 体系架构 ................................................................................................................................. 123 6.1.7.4. Spring Bean 作用域.............................................................................................................................. 123 singleton:单例模式(多线程下不安全) ...................................................................................................... 123 prototype:原型模式每次使用时创建 ................................................................................................................ 124 Request:一次 request 一个实例 .................................................................................................................... 124 session ................................................................................................................................................................ 124 global Session....................................................................................................................................................124 6.1.7.5. Spring Bean 生命周期.......................................................................................................................... 124 实例化.................................................................................................................................................................. 124 IOC依赖注入......................................................................................................................................................124 setBeanName 实现............................................................................................................................................ 124 BeanFactoryAware 实现 ................................................................................................................................... 124 ApplicationContextAware 实现......................................................................................................................... 125 postProcessBeforeInitialization 接口实现-初始化预处理.......................................................................... 125 init-method .......................................................................................................................................................... 125 postProcessAfterInitialization ........................................................................................................................... 125 Destroy 过期自动清理阶段 ............................................................................................................................... 125 destroy-method 自配置清理 ............................................................................................................................. 125 6.1.7.6. Spring 依赖注入四种方式 .................................................................................................................... 126 构造器注入.......................................................................................................................................................... 126 setter方法注入...................................................................................................................................................127 静态工厂注入...................................................................................................................................................... 127 实例工厂.............................................................................................................................................................. 127 6.1.7.7. 5 种不同方式的自动装配...................................................................................................................... 128 6.1.8. Spring APO 原理 ...................................................................................................................... 129 6.1.8.1. 6.1.8.2. 6.1.8.1. 概念 ........................................................................................................................................................ 129 AOP 核心概念 ....................................................................................................................................... 129 AOP 两种代理方式 ............................................................................................................................... 130 JDK 动态接口代理 ............................................................................................................................................. 130 CGLib 动态代理.................................................................................................................................................. 131 6.1.8.2. 实现原理 ................................................................................................................................................ 131 6.1.9. Spring MVC原理......................................................................................................................132 6.1.9.1. MVC 流程............................................................................................................................................... 132 Http 请求到 DispatcherServlet ....................................................................................................................... 133 HandlerMapping 寻找处理器............................................................................................................................133 调用处理器 Controller........................................................................................................................................ 133 13/04/2018 Page 7 of 283 Controller 调用业务逻辑处理后,返回 ModelAndView.................................................................................133 DispatcherServlet 查询 ModelAndView .......................................................................................................... 133 ModelAndView 反馈浏览器 HTTP ................................................................................................................... 133 6.1.9.1. MVC 常用注解 ....................................................................................................................................... 133 6.1.10. Spring Boot 原理....................................................................................................................... 134 1. 创建独立的 Spring 应用程序............................................................................................................................. 134 2.嵌入的Tomcat,无需部署WAR文件.............................................................................................................134 3. 简化 Maven 配置 ................................................................................................................................................ 134 4. 自动配置 Spring ................................................................................................................................................. 134 5. 提供生产就绪型功能,如指标,健康检查和外部配置................................................................................... 134 6. 绝对没有代码生成和对 XML 没有要求配置 [1] ............................................................................................... 134 6.1.11. JPA 原理 .................................................................................................................................... 134 6.1.11.1. 事务....................................................................................................................................................134 6.1.11.2. 6.1.11.1. 6.1.11.1. 本地事务 ............................................................................................................................................ 134 分布式事务 ........................................................................................................................................ 135 两阶段提交 ........................................................................................................................................ 136 1 准备阶段........................................................................................................................................................... 136 2 提交阶段:....................................................................................................................................................... 136 6.1.12. Mybatis 缓存.............................................................................................................................. 137 6.1.12.1. Mybatis 的一级缓存原理(sqlsession 级别)..............................................................................138 6.1.12.2. 二级缓存原理(mapper 基本).....................................................................................................138 具体使用需要配置: .......................................................................................................................................... 139 6.1.13. Tomcat 架构 .............................................................................................................................. 139 7. 微服务 ................................................................................................................................................. 140 7.1.1. 服务注册发现 ............................................................................................................................ 140
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈年_H

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值