今天是圣诞节圣诞老人给我送了个系统bug,24号加班到晚上12点多在便利店买了杯暖柚发现有便利店真好,我还可以喝到暖暖的饮料,最近加班太多,原本今天请假休息、没想到圣诞老人给我送了礼物O(∩_∩)O哈哈~
昨天系统迁移改造,修改的地方没有测试全面,导致生产功能报错,中午还没缓过来呢,就找vpn连接看问题,发邮件打版本,脑袋很沉、思考缓慢感觉我要挂了O(∩_∩)O哈哈~、最近思考了一下,有些东西记不住了感觉就在嘴边就是说不出来、忘了需要整理一下。给自己立个flag。我知道自己哪里不知道的我都要知道。也就是不明白的要去研究,研究不明白的就去问,所有的欲望和无知都是我前进的动力。 使我痛苦者使我进步。
首先理解和复习一下框架在需要的时候可以进行查阅进行整理1、Spring框架、2、Java中的锁机制 、3、分布式事务框架机制、4、Jvm、5、Collection接口是 (java.util.Collection)、6、redis 底层结构是怎么实现的、7、CurrentHashmap 是怎么扩容的 jdk1.7、1.8区别 (红黑树实现)9、mysql的索引、10、联合索引查询是否有效、数据库事务隔离级别、11、线程的生命周期、线程池的7个参数理解、12、mongdb数据库的重要知识点、13、kafka知识点 14、rocketMq知识点 15、jdk1.8新特性实战 16、SpringBoot、17、SpringCloud。
1、Spring框架知识点:(官网地址:Spring | Home)
1.1、首先介绍:是一个开源框架,是Rod Johnson发起。Spring是为了简化企业开发的框架,使用Spring开发可以将Bean对象交给Spring对象来管理,这样使得很多复杂的代码在Spring中开发会变得非常的优雅和简洁降低代码的耦合度的框架,》是基于pojo的轻量级和最小的侵入式编程;》通过依赖注入和面向接口实现松耦合;》基于切面的编程;基于切面和惯例进行声明式编程;(切面是什么呢?可以理解为一个方面 );》通过切面和模板式编程减少代码的侵入性。
查看官网Spring里有很多项目框架,我这里说的是-spring-framework5.x
Spring框架采用是分层结构:根据不同的功能划分的这些模块可根据作用分为DataAccess/Integration、 web、Aop、aspests、Messageing、instrumentation、core、 Container、test
DataAccess/Integration
WEB
spring-web、spring-webmvc、spring-websocket 和 spring-webflux 组成
*Core Container
Core Containe是Spring 的核心容器是其他模块建立的基础,由 Beans 模块、Core 核心模块、Context 和 Expression Language 表达式语言模块组成的。
1.2、SpringIOC容器介绍
1.2.1、 ioc(inversion of control)思想,是指在程序开发中对象实例的创建不在由调用者管理,而是由Spring容器创建,Spring容器会负责控制程序之间的关系,而不是由程序代码直接进行控制,控制权由之前的代码控制放到了Spring的容器中,控制发生了反转,这个就是Spring的IOC的思想,ioc容器是一个依赖注入容器,ioc容器负责实例化、定位、配置应用程序中的对象及建立这些对象间的依赖,应用程序,无需直接在代码中new相关的对象,应用程序由IOC容器进行组装,就像Spring中的BeanFactory对象。Spring中管理的对象叫做Bean对象,一个Spring的Bean对象可以是任何形式的pojo.
SpringIOC提供了两种容器类型:Beanfactory、 ApplicationContext
BeanFactory:基础的容器类型,它由 org.springframework.beans.facytory.BeanFactory 接口定义,并提供了完整的 IoC 服务支持。BeanFactory 就是一个管理 Bean 的工厂,它主要负责初始化各种 Bean,并调用它们的生命周期方法。
ApplicationContext:是BeanFactory的子接口,叫做应用上下文,该接口的全路径 为 org.springframework.context.ApplicationContext,它不仅提供了BeanFactory的所有功能,还添加了对国际化、资源访问,事件传播、等方面的良好支持。比较常用的有两个实现类1.ClasspathXmlApplicationContext,该类从类路径Classpath 寻找制定的xml文件位置,并装载完成ApplicationContext的实例化工作,ApplicationContext applicationContext = new ClassPathXmlApplicationContext(String configLocationPath);(像springboot集成框架里注解初始化等也是。)configLocationPath为了指定加载配置文件的位置。2.SystemXmlApplicationContext 该类从指定的文件系统路径中寻找指定的xml配置文件,找到并装载完成applicationContext的实例化工作,ApplicationContext applicationContext = new FileSystemXmlAplicationcontext不从类路径中读取配置文件。而是通过参数指定配置文件的位置。他可以获取类路径之外的资源。如d:/webroot/applicationContext.xml ,
ioc容器获取对象的方法,通过构造方法获取,get方法获取,对于 Spring IOC 容器而言我们更多的是使用它的依赖注入。 Spring 创建对象的过程叫 做 IOC,创建对象时给对象属性赋值叫做 DI可以理解为是同一个事情。为了分清这个事情介绍一下
DI(依赖注入):是指在SpringIoc容器的创建对象的过程中,将依赖的对象通过配置进行注入,我们可以通过依赖注入的方式来降低对象的耦合度,在软件过程中对象之间的耦合度就是对象之间的依赖性,耦合越高维护的成本就越高,因此对象的设计应该是耦合度越低越好。依赖关系:是一种使用的关系, 即一个类的实现需要另一个类的协助, 所以要尽量 不使用双向的互相依赖类的关系。聚合关系:是整体与部分的关系.如车和轮胎是整体和部分的关系. 聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。在使用依赖注入时,如果注入的是 Bean 对象,那么要求注入的 Bean 对象与被注入的 Bean 对象都需要 Spring IOC 容器来实例化。使用的方式是,使用构造方法或set方法进行注入
1.3、代理模式和Aop编程:
代理模式就是类似于我们通过中介去买卖房子,客户端不直接调用对象,通过代理类去调用对象。买房子就是客户类,卖房子就是委托类。
代理模式可以分为两种:静态代理、动态代理。
静态代理模式分为三个部分:
1、公共的接口,2、被代理的对象、3、代理对象
动态代理:
1、Jdk的proxy类实现动态代理
2、使用CGLIB实现动态代理
AOP编程:
AOP:Joinpoint、Pointcut、Advice、Target、Weaving、Proxy 、 Aspect
Joinpoint(连接点):指那些被拦截到的点,是指应用在执行过程中能够插入切面的一个点
Pointcut(切入点):指要对哪些Joinpoint进行拦截,即被拦截的连接点。
Advice(通知):指拦截到Joinpoint要做的事情要对其切入点进行增强的内容。
1、 org.springframework.aop.MethodBeforeAdvice(前置通知) 在调用目标方法之前自动执行的通知称为前置通 知,可以应用于权限管理等功能
2、org.springframework.aop.AfterReturningAdvice(后置通知) 在调用目标方法之后自动执行的通知称为后置通 知,可以应用于关闭流、上传文件、删除临时文件等功能。
3、org.aopalliance.intercept.MethodInterceptor (环绕通知) 在调用目标方法前后自动执行的通知称为环绕通知,可以应用于日志、事务管理等功能。
4、org.springframework.aop.ThrowsAdvice (异常通知) 在方法抛出异常时自动执行的通知称为异常通知, 可以应用于处理异常记录日志等功能。
*AspectJ 框架*
2、Java中的锁机制
sy
3、分布式事务框架机制
事务
事务提供一种“要么什么都不做,要么做全套(All or Nothing)”的机制,她有ACID四大特性
原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态是指数据库中的数据应满足完整性约束。除此之外,一致性还有另外一层语义,就是事务的中间状态不能被观察到(这层语义也有说应该属于原子性)。
隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行,如同只有这一个操作在被数据库所执行一样。
持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。在事务结束时,此操作将不可逆转。
4、Jvm、
5、Collection接口是 (java.util.Collection)
6、redis 底层结构是怎么实现的。
7、CurrentHashmap 是怎么扩容的 jdk1.7、1.8区别 (红黑树实现)
9、mysql的索引(mysql的日志类型、mysql的存储引擎)、
10、联合索引查询是否有效、数据库事务隔离级别、
11、线程池的7个参数理解、
12、mongdb数据库的重要知识点、
13、kafka知识点
14、rocketMq知识点
15、jdk1.8新特性实战: