javaEE
spring:方便解耦,简化开发
1. spring 对象关系映射ORM
ORM:对象关系映射 它通过现实ORM规范,完成面向对象的编程语言到关系数据库的映射。它可以把关系型数据库封装成对象,解决面向对象编程语言与底层关系数据库不协调的问题。它是面向对象编程言语与关系数据库之间的桥梁。
ORM映射基本规则
1 | 1. 类与表相对应 |
2.Spring Bean 实例化方式
- 调用构造器创建Bean
1 | 第一种方式:使用默认无参构造函数 |
- 调用静态工厂方法创建Bean
1 | /** |
- 调用实例工厂方法创建Bean
1 | /** |
Bean对象的作用范围
1 | * singleton :默认值,单例的. |
Bean生命周期
1 | 单例对象:scope="singleton" |
控制反转(IOC)与依赖注入(DI)
控制反转(Inversion of Control),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入,还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体,将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
IOC和DI的区别
1 | (1) IOC:控制反转,把对象创建交给spring来管理 |
IOC的作用:削减程序之间的耦合(解除代码中的依赖关系)
构造器注入
1 | <!--使用构造函数的方式,给 service 中的属性传值 |
set方法注入
1 | <!-- 通过配置文件给 bean 中的属性传值:使用 set 方法的方式 |
Spring 中的 AOP
1 | **Joinpoint**( 连接点):(业务接口中,所有的方法都叫做连接点) |
AOP的作用
1 | 作用:在程序运行期间,不修改源码的情况下对已有的方法进行增强。 |
动态代理
1 | * 动态代理: |
1 | <!-- spring中基于XML的声明式事务控制配置步骤 |
1 | <!--注解式事务控制--> |
spring中常用的注解
1 | @Component 把资源让spring来管理。相当于xml中的bean |
3.solr创建索引库的方式
4.异常处理
参考全局异常
5.Dubbox
dobbox消息传递使用的是zookeeper
dubbox优点:降低耦合度,可以搭集群,增加访问数量
dubbox缺点:传递存在风险
6.MyBatis的延迟加载与缓存
开启 Mybatis 的延迟加载策略
在 Mybatis 的配置文件 SqlMapConfig.xml 文件中添加延迟加载的配置。
1 | <!-- 开启延迟加载的支持 --> |
mybatis开启懒加载,只要设置 lazyLoadingEnable属性为true来开启全局延迟加载,fetchType属性可以控制某个指定的方法实现立即加载或延迟加载。
mybatis的一级缓存
mybatis默认是存在一级缓存的,一级缓存是 SqlSession 范围的缓存,当调用 SqlSession 的修改,添加,删除,commit(),close()等方法时,就会清空一级缓存。
清空缓存的方式
1 | 1. SqlSession 的修改,添加,删除,commit(),close()等方法时 |
Mybatis的二级缓存
二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。
当我们在使用二级缓存时,所缓存的类一定要实现 java.io.Serializable 接口,这种就可以使用序列化方式来保存对象。
二级缓存的开启与关闭
第一步:在 SqlMapConfig.xml 文件开启二级缓存
1 | <settings> |
第二步:配置相关的 Mapper 映射文件
1 | <mapper namespace="com.han.dao.user"> |
第三步:配置 statement 上面的 useCache 属性
1 | <!-- 根据 id 查询 --> |
7.springMVC执行流程
客户端发送request请求,请求被发送到前端控制器DispatcherServlet,前端控制器请求查找Handler,找到处理器映射器HandlerMapping,handlerMapping根据请求的url找到对应的controller和方法方法,并返回给前端控制器,前端控制器会请求处理器适配器执行controller中的方法,返回modelAndView给前端控制器,前端控制器请求视图解析器解析,跳转到视图,对视图进行渲染并将处理的结果返回给用户。
springMVC的设计模式:适配器模式(处理器适配器)
8.HashMap
1 | hashMap的默认长度为2^4 = 16 |
hashMap的put方法
hash算法是根据大量的数据演练得出的,利用了泊松分布,使得key均匀的分布在每个链表上,这样查询速度快
h & (length-1)是保证了数组下标永远小于16,避免了数组越界问题
添加entry
扩容
添加数据
HashMap的get方法
线程
1 | 如何判断线程是否安全 |