Java程序员2021年金三银四面试必备:框架+性能优化+微服务+分布式(学习路线+学习笔记+面试真题)

188 篇文章 0 订阅
154 篇文章 0 订阅

导言

今年似乎因为疫情影响,时间过得特别快,对于需要跳槽换工作的人来,更觉得有些突然,似乎金三银四和金九银四还没开始准备好,就匆匆过去。加上今年的大环境不佳,所以大部分的人在今年的招聘旺季都没有收获到好的结果。

今天分享的主题则是由 一位阿里P7的面试心得,通过32天的高效突击训练,成功拿下offer的学习方法。

篇章分为三大章节,可以根据自己所需来阅读内容和下载资料:

  • 起始篇:梳理路线(自制思维脑图)
  • 进阶篇:深度学习(阅读阿里P8大神手写笔记)
  • 突击篇:面试考点(开源框架+性能优化+微服务架构+分布式)

一键三连+评论,然后添加VX(tkzl6666)即可免费领取全部资料

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

起始篇:梳理路线(自制思维脑图)

脑图①:JVM和性能调优

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

脑图②:并发编程(java并发体系)

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

脑图③:Spring全家桶系列(Spring+Spring Boot+Spring Cloud+Spring MVC)

3.1 自制Spring思维脑图

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

3.2 自制Spring Boot思维脑图

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

3.3 自制Spring Cloud思维脑图

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

3.4 自制Spring MVC思维脑图

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

脑图④:分布式架构系列

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

一键三连+评论,然后添加VX(tkzl6666)即可免费领取全部资料

进阶篇:深度学习(P8大神手写笔记)

笔记①:Redis学习笔记

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

笔记②:Spring Boot核心技术笔记

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

笔记③:SpringMVC开发笔记

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

笔记④:Kafka学习笔记

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

笔记⑤:MySQL调优笔记(技巧篇)

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

篇幅有限,更多笔记内容,一键三连+评论,然后添加VX(tkzl6666)即可免费领取全部资料

突击篇:面试考点(开源框架+性能优化+微服务架构+分布式)

面试考点①:开源框架(Spring+SpringMVC+MyBatis)

——Spring基础篇:

  • 问题一:什么是Spring?
  • 问题二:使用Spring框架的好处是什么?
  • 问题三:Spring由哪些模块组成?
  • 问题四:核心容器(应用上下文)模块。
  • 问题五:BeanFactory - BeanFactory 实现举例
  • 问题六:XMLBeanFactory
  • 问题七:解释AOP模块
  • 问题八:解释JDBC抽象和DAO模块。
  • 问题九:解释对象/关系映射集成模块
  • 问题十:解释WEB模块。
  • 问题十一:Spring配置文件
  • 问题十二:什么是Spring IOC容器?
  • 问题十三:IOC的优点是什么?
  • 问题十四:ApplicationContext通常的实现是什么?
  • 问题十五:Bean工厂和Application Context有什么区别?
  • 问题十六:一个Spring的应用看起来像什么?
  • 问题十七:什么是Spring的依赖注入?
  • 问题十八:有哪些不同类型的IOC(依赖注入)方式?
  • 问题十九:哪种依赖注入方式你建议使用,构造器注入,还是Setter方法注入?
  • 问题二十:什么是Spring beans?
  • 问题二十一:一个Spring bean定义包括什么?
  • 问题二十二:如何给Spring容器提供配置元数据?
  • 问题二十三:你怎样定义类的作用域?
  • 问题二十四:解释Spring支持的几种bean的作用域。
  • 问题二十五:Spring框架中的单例bean是线程安全的吗?
  • 问题二十六:解释Spring框架中的bean的生命周期。
  • 问题二十七:哪些是重要的bean生命周期方法?你能重载它们吗?
  • 问题二十八:什么是Spring的内部bean?
  • 问题二十九:在Spring中如何注入一个java集合?
  • 问题三十:什么是bean装置?
  • 问题三十一:什么是bean的自动装配?
  • 问题三十二:解释不同方式的自动装配。
  • 问题三十三:自动装配有哪些局限性?
  • 问题三十四:你可以在spring中注入一个null和一个空字符串吗?
  • 问题三十五:什么是基于Java的Spring注解配置?给一些注解的例子。
  • 问题三十六:什么是基于注解的容器配置?
  • 问题三十七:怎样开启注解装配?
  • 问题三十八:@Required注解;@Autowired注解;@Qualifier注解
  • 问题三十九:在Spring框架中如何更有效地使用JDBC?
    问题四十:Spring对DAO的支持
  • 问题四十一:使用Spring通过什么方式访问Hibernate?
  • 问题四十二:如何通过HibernateDaoSupport将Spring和Hibernate结合起来?
  • 问题四十三:Spring支持的事务管理类型有哪些?Spring框架的事务管理有哪些特点?你更倾向于使用哪种?
  • 问题四十四:解释AOP。
  • 问题四十五:什么是Aspect切面?
  • 问题四十六:在Spring AOP中,关注点和横切关注的区别是什么?
  • 问题四十七:什么是引入?什么是目标对象?什么是代理?有几种不同类型的自动代?
  • 问题四十八:什么是Spring的MVC框架?
  • 问题四十九:什么是Spring MVC框架的控制器?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——Spring高级篇:

  • 问题一:什么是Spring框架?Spring框架有哪些主要模块?
  • 问题二:使用Spring框架能带来哪些好处?
  • 问题三:什么是控制反转(IOC)?什么是依赖注入?
  • 问题四:请解释下Spring框架中的IOC?
  • 问题五:BeanFactory和Application Context有什么区别?
  • 问题六:Spring有几种配置方式?
  • 问题七:如何基于XML配置的方式配置Spring?
  • 问题八:如何用基于Java配置的方式配置Spring?
  • 问题九:怎样用注解的方式配置Spring?
  • 问题十:请解释Spring Bean的生命周期?
  • 问题十一:Spring Bean的作用域之间有什么区别?
  • 问题十二:什么是Spring inner beans?
  • 问题十三:Spring框架中的单例Beans是线程安全的吗?
  • 问题十四:请举例说明如何在Spring中注入一个Java Collection?
  • 问题十五:如何向Spring Bean中注入一个Java.util.Properties?
  • 问题十六:请解释Spring Bean的自动装配?
  • 问题十七:请解释自动装配模式的区别。
  • 问题十八:如何开启基于注解的自动装配?
  • 问题十九:请举例解释Required注解、Autowired注解、Qualifier注解。
  • 问题二十:构造方法注入和设置注入有什么区别?
  • 问题二十一:Spring框架中有哪些不同类型的事件?
  • 问题二十二:FileSystemResource和ClassPathResource有何区别?
  • 问题二十三:Spring框架中都用到了哪些设计模式?
  • 问题二十四:谈谈你对Spring IOC和DI的理解,它们有什么区别?
  • 问题二十五:BeanFactory接口和ApplicationContext接口有什么区别?
  • 问题二十六:Spring配置bean实例化有哪些方式?
  • 问题二十七:简单地说一下spring的生命周期?
  • 问题二十八:请介绍一下Spring框架中的Bean的生命周期和作用域。
  • 问题二十九:Bean注入属性有哪几种方式?
  • 问题三十:什么是AOP?AOP的作用是什么?
  • 问题三十一:Spring的核心类型有哪些?各有什么作用?
  • 问题三十二:Spring里面如何配置数据库驱动?
  • 问题三十三:Spring里面applicationContext.xml文件不能改成其他文件名?
  • 问题三十四:Spring里面如何定义Hibernate mapping?
  • 问题三十五:Spring如何处理线程并发问题?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——Spring MVC高级篇:

  • 问题一:什么是Spring MVC?说说它的优点。
  • 问题二:说说Spring MVC的工作原理及流程。
  • 问题三:SpringMVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
  • 问题四:如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
  • 问题五:SpingMVC 中的控制器的注解一般用哪个,有没有别的注解可以替代?
  • 问题六:@RequestMapping 注解用在类上面有什么作用?
  • 问题七:怎么样把某个请求映射到特定的方法上面?
  • 问题八:如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置?
  • 问题九:怎么样在方法里面得到 Request,或者 Session?
  • 问题十:我想在拦截的方法里面得到从前台传入的参数,怎么得到?
  • 问题十一:如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?
  • 问题十二:Spring MVC 中函数的返回值是什么?
  • 问题十三:Spring MVC怎么样设定重定向和转发的?
  • 问题十四:Spring MVC用什么对象从后台向前台传递数据的?
  • 问题十五:Spring MVC中有个类把视图和数据都合并的一起的叫什么?
  • 问题十六:怎么样把 ModelMap 里面的数据放入 Session 里面?
  • 问题十七:SpringMVC 怎么和 AJAX 相互调用的?
  • 问题十八:当一个方法向 AJAX 返回特殊对象,比如 Object,List 等,需要做什么处理?
  • 问题十九:SpringMVC 里面拦截器是怎么写的?
  • 问题二十:讲下 SpringMVC 的执行流程。

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——MyBatis高级篇:

  • 问题一:什么是MyBatis?
  • 问题二:讲一下MyBatis的缓存
  • 问题三:MyBatis是如何进行分页的?分页插件的原理是什么?
  • 问题四:说说MyBatis的插件运行原理,以及如何编写一个插件?
  • 问题五:Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能说一下动态 sql 的执行原理么?
  • 问题六:为什么说 MyBatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
  • 问题七:MyBatis 是否支持延迟加载?如果支持,它的实现原理是什么?
  • 问题八:MyBatis 与 Hibernate 有哪些不同?
  • 问题九:MyBatis 的好处是什么?
  • 问题十:说一说Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系。
  • 问题十一:什么是 MyBatis 的接口绑定,有什么好处?
  • 问题十二:接口绑定有几种实现方式,分别是怎么实现的?
  • 问题十三:什么情况下用注解绑定,什么情况下用 xml 绑定?
  • 问题十四:MyBatis 实现一对一有几种方式?具体怎么操作的?
  • 问题十五:Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?
  • 问题十六:MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?
  • 问题十七:MyBatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
  • 问题十八:Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
  • 问题十九:当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?
  • 问题二十:模糊查询 like 语句该怎么写?
  • 问题二十一:通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, Dao 的工作原理,是否可以重载?
  • 问题二十二:Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
  • 问题二十三:、Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
  • 问题二十四:MyBatis 中如何执行批处理?
  • 问题二十五:MyBatis 都有哪些 Executor 执行器?它们之间的区别是什么?
  • 问题二十六:MyBatis 如何指定使用哪一种 Executor 执行器?
  • 问题二十七:MyBatis 执行批量插入,能返回数据库主键列表吗?
  • 问题二十八:MyBatis 是否可以映射 Enum 枚举类?
  • 问题二十九:如何获取自动生成的(主)键值?
  • 问题三十:在 mapper 中如何传递多个参数?
  • 问题三十一:resultType resultMap 的区别?
  • 问题三十二:使用 MyBatis 的 mapper 接口调用时有哪些要求?
  • 问题三十三:Mybatis 比 IBatis 比较大的几个改进是什么?
  • 问题三十四:IBatis 和 MyBatis 在核心处理类分别叫什么?
  • 问题三十五:IBatis 和 MyBatis 在细节上的不同有哪些?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

面试考点②:性能优化(MySQL+JVM+Tomcat)

——Mysql优化篇:

  • 问题一:数据三范式是什么?
  • 问题二:说一说,你有哪些数据库优化方面的经验?
  • 问题三:请简述常用的索引有哪些种类?
  • 问题四:在MySQL数据库中索引的工作机制是什么?
  • 问题五:说一说MySQL的基础操作命令。
  • 问题六:讲一下MySQL的复制原理及流程。
  • 问题七:MySQL支持的复制类型。
  • 问题八:谈谈MySQL中myisam与innodb的区别?
  • 问题九:说说Mysql 中varchar 与 char 的区别以及varchar(50)中50 代表的涵义?
  • 问题十:说说MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别。
  • 问题十一:表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为主,将该字段拆成子表的好处是什么?
  • 问题十二:MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?
  • 问题十三:MySQL 中控制内存分配的全局参数,有哪些?
  • 问题十四:若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)
  • 问题十五:[SELECT *] 和[SELECT 全部字段]的 2 种写法有何优缺点?
  • 问题十六:HAVNG 子句 和 WHERE 的异同点?
  • 问题十七:MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
  • 问题十八:MySQL 的 insert 和 update 的 select 语句语法

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——JVM性能优化篇:

  • 问题一:描述一下java类加载过程。
  • 问题二:描述一下 JVM加载Class文件的原理机制?
  • 问题三:Java内存分配。
  • 问题四:GC是什么?为什么要有GC?
  • 问题五:简述Java垃圾回收机制。
  • 问题六:如何判断一个对象是否存活?(或者GC对象的判定方法)
  • 问题七:垃圾回收的优点和原理。并考虑2种回收机制。
  • 问题八:垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
  • 问题九:Java中会存在内存泄漏吗?请简单描述。
  • 问题十:讲讲深拷贝和浅拷贝。
  • 问题十一:System.gc()和Runtime.gc()会做什么事情?
  • 问题十二:finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?
  • 问题十三:如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
  • 问题十四:什么是分布式垃圾回收(DGC)?它是如何工作的?
  • 问题十五:串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
  • 问题十六:在Java中,对象什么时候可以被垃圾回收?
  • 问题十七:简述Java内存分配与回收策略以及Minor GC和Major GC。
  • 问题十八:JVM的永久代会发生垃圾回收吗?
  • 问题十九:Java中垃圾收集的方法有哪些?
  • 问题二十:什么是类加载器,类加载器有哪些?
  • 问题二十一:类加载器双亲委派模型机制?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——Tomcat优化篇:

  • 问题一:你怎样给tomcat去调优?
  • 问题二:如何加大tomcat连接数?
  • 问题三:Tomcat中如何禁止列目录下的文件?
  • 问题四:怎样加大tomcat的内存?
  • 问题五:Tomcat有几种部署方式?
  • 问题六:Tomcat的优化经验。
  • 问题七:tomcat的Valve的作用是什么?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

面试考点③:微服务架构(Dubbo+SpringBoot+SpringCloud)

——Dubbo篇:

  • 问题一:Dubbo 支持哪些协议,说说每种协议的应用场景,优缺点?
  • 问题二:Dubbo 超时时间设置有几种方式?
  • 问题三:Dubbo 有哪些注册中心?
  • 问题四:Dubbo 集群的负载均衡有哪些策略?
  • 问题五:Duubo 是什么?它的主要场景有哪些?其核心功能是?
  • 问题六:Dubbo 服务注册与发现的流程
  • 问题七:了解Dubbo 的架构设计吗?说一下吧
  • 问题八:Dubbo支持哪些协议?讲一讲每种协议的应用场景和优缺点
  • 问题九:为什么需要服务治理?
  • 问题十:Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
  • 问题十一:讲讲Dubbo与Spring的关系。
  • 问题十二:Dubbo使用的是什么通信框架?
  • 问题十三:Dubbo 的集群容错方案有哪些?
  • 问题十四:Dubbo 在安全机制方面是如何解决的?
  • 问题十五:Dubbo 和 Spring Cloud的关系和区别是什么?
  • 问题十六:Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
  • 问题十七:讲一讲Dubbo 连接注册中心和直连的区别。
  • 问题十八:Dubbo 通信协议

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——Spring Boot篇:

  • 问题一:讲讲,什么是Spring Boot?
  • 问题二:SpringBoot的优点有哪些?
  • 问题三:如何重新加载Spring Boot上的更改?而无需重新启动服务器?
  • 问题四:Spring Boot中的监视器是什么?
  • 问题五:如何在 Spring Boot 中禁用 Actuator 端点安全性?
  • 问题六:如何在自定义端口上运行 Spring Boot 应用程序?
  • 问题七:什么是 YAML?
  • 问题八:如何实现 Spring Boot 应用程序的安全性?
  • 问题九:如何集成 Spring Boot 和 ActiveMQ?
  • 问题十:如何使用 Spring Boot 实现分页和排序?
  • 问题十一:什么是 Swagger?你用 Spring Boot 实现了它吗?
  • 问题十二:什么是 Spring Profiles?
  • 问题十三:什么是 Spring Batch?
  • 问题十四:如何使用 Spring Boot 实现异常处理?
  • 问题十五:什么是 AOP?
  • 问题十六:如何监视所有Spring Boot微服务?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

——Spring Cloud篇:

  • 问题一:什么是Spring Cloud?
  • 问题二:使用Spring Cloud有什么优势?
  • 问题三:服务注册和发现是什么意思?Spring Cloud如何实现?
  • 问题四:负载均衡的意义有什么?
  • 问题五:什么是Hystrix?它如何实现容错?
  • 问题六:什么是 Hystrix 断路器?我们需要它吗?
  • 问题七:什么是 Netflix Feign?它的优点是什么?
  • 问题八:什么是 Spring Cloud Bus?我们需要它吗?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

面试考点④:分布式(MQ+Redis+Zk+Kafka+MongDB等)

  • 问题一:什么是RabbitMQ?为什么要使用RabbitMQ?
  • 问题二:如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息?
  • 问题三:如何避免消息重复投递或重复消费?
  • 问题四:消息基于什么传输?消息如何分发?消息怎么路由?如何确保消息不丢失?
  • 问题五:使用RabbitMQ有什么好处?
  • 问题六:RabbitMQ的集群
  • 问题七:讲讲Redis的数据类型?
  • 问题八:使用Redis有哪些好处?
  • 问题九:Redis相比Memcached有哪些优势?
  • 问题十:Memcache与Redis的区别有哪些?
  • 问题十一:Redis是单进程还是单线程的?
  • 问题十二:—个字符串类型的智能存储最大容量是多少?
  • 问题十三:Redis的持久化机制是什么?各自的优缺点?
  • 问题十四:Redis常见的性能问题和解决方案
  • 问题十五:redis过期键的删除策略?
  • 问题十六:Redis的回收策略(淘汰策略)?
  • 问题十七:为什么redis需要把所有数据放到内存中?
  • 问题十八:Redis的同步机制了解么?说一下
  • 问题十九:是否使用过Redis集群,集群的原理是什么?
  • 问题二十:Redis集群方案什么情况下会导致整个集群不可用?
  • 问题二十一:zookeeper是如何保证事务的顺序—致性的?
  • 问题二十二:分布式集群中为什么会有Master?
  • 问题二十三:zk节点宕机如何处理?
  • 问题二十四:zookeeper负载均衡和nginx负载均衡的区别?
  • 问题二十五:Zookeeper有哪几种部署模式?
  • 问题二十六:集群最少要几台机器,集群规则是怎样的?
  • 问题二十七:集群支持动态添加机器吗?
  • 问题二十八:Zookeeper对节点的watch监听通知是永久的吗?为什么不是永久的?
  • 问题二十九:Zookeeper的java客户端都有哪些?
  • 问题三十:生产者和消费者的命令行是什么?consumer是推还是拉?
  • 问题三十一:讲讲kafka维护消费状态跟踪的方法
  • 问题三十二:Zookeeper对于Kafka的作用是什么?
  • 问题三十三:数据传输的事务定义有哪三种?
  • 问题三十四:Kafka判断一个节点是否还活着有那两个条件?
  • 问题三十五:Kafka 与传统MQ消息系统之间有三个关键区别?
  • 问题三十六:讲—讲kafka的ack的三种机制
  • 问题三十七:消费者故障,出现了活锁问题如何解决?
  • 问题三十八:如何控制消费的位置?
  • 问题三十九:kafka分布式(不是单机)的情况下,如何保证消息的顺序消费?
  • 问题四十:kafka的高可用机制是什么?
  • 问题四十一:kafka如何减少数据丢失?
  • 问题四十二:kafka如何不消费重复数据?

32天高效突击:框架+性能优化+微服务+分布式,笔记面试全有

 

总结

错过今年面试机会的你,希望明年的三四月能够取得好成绩。以上这份P7整理的学习宝藏可以分享给你,祝你面试过三关斩六将。这三个篇章已经全部整理成一套完整且体系的pdf文档,无论是思维脑图、学习笔记还是面试考点全整理好了

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值