
JAVA
文章平均质量分 64
笑亦我醉
这个作者很懒,什么都没留下…
展开
-
Spring IOC和DI以及AOP理解
概述这三个概念可能大家都不陌生,在面试中经常会出现关于此类的问题,关于对他们的个人理解如下。IOCIOC其实就是控制反转,控制指的是对象的创建、管理、实例化权利,反转指的是控制权交给了外部容器Spring框架,打个比喻,我在项目中创造了一个对象类,在业务层需要用到他了,一般的办法是什么?是不是new对象啊,毕竟程序猿最擅长new对象了,而new对象就意味着依赖性增强,那么我不new行不行呢,这个时候IOC就出场了,IOC容器能帮助我们实例化对象并且管理它,当我们需要使⽤哪个对象,直接去问IOC容器要即原创 2021-02-09 16:35:07 · 354 阅读 · 0 评论 -
Mybatis延迟加载
概述就是在需要⽤到数据时才进⾏加载,不需要⽤到数据时就不加载数据。延迟加载也称懒加载。优缺点优点:延迟加载可以实现先从单表查询,需要时再关联其他表获取数据,提高查询效率,优化数据库性能。缺点:因为只有当需要⽤到数据时,才会进⾏数据库查询,这样在⼤批量数据查询时,因为查询⼯作也要消耗时间,所以可能造成⽤户等待时间变⻓,造成⽤户体验下降。应用场景一对多,多对多可以考虑采用延迟加载,什么时候用什么时候加载。一对一,多对一采用立即加载,这是默认采用策略。局部延迟加载配置:在association和原创 2021-02-05 14:46:16 · 437 阅读 · 0 评论 -
Mybatis-plus基础总结
特点⽆侵⼊:只做增强不做改变,引⼊它不会对现有⼯程产⽣影响,如丝般顺滑损耗⼩:启动即会⾃动注⼊基本 CURD,性能基本⽆损耗,直接⾯向对象操作强⼤的 CRUD 操作:内置通⽤ Mapper、通⽤ Service,仅仅通过少量配置即可实现单表⼤部分CRUD 操作,更有强⼤的条件构造器,满⾜各类使⽤需求⽀持 Lambda 形式调⽤:通过 Lambda 表达式,⽅便的编写各类查询条件,⽆需再担⼼字段写错⽀持主键⾃动⽣成:⽀持多达 4 种主键策略(内含分布式唯⼀ ID ⽣成器 - Sequence),可⾃原创 2021-02-03 17:46:58 · 254 阅读 · 0 评论 -
Spring lazy-Init 延迟加载原理和循环依赖问题处理
延迟加载Spring在启动时,默认是将所有的singleton bean提前实例化,如果设置了lazy-init=”ture”的话,就可以设置这个bean在ApplicationContext启动服务器时不被实例化,在调用他的getBean索取bean时进行实例化,实现延迟加载。这么设置的目的是对不常用的bean设置延迟加载,避免一开始启动服务器占用资源。延迟加载原理通过源码分析,在bean创建过程中中间环节有一个非抽象,非单例,非延迟加载的判断。如果是延迟加载就直接不处理,就不会完成该bean的创原创 2021-02-01 15:53:39 · 870 阅读 · 0 评论 -
Mybatis一级缓存及二级缓存理解
概念缓存存储在内存中,读取速度快Mybatis一级缓存存储在sqlsession中,默认开启,底层是一个hashmap(cachekey键(statsmentid+params+boundsql+rowbounds),值(具体对象))。第一次查询先去缓存中查找,找到直接返回,没找到去数据库获取,返回查询结果并缓存。事务提交操作会清空缓存。一级缓存源码理解:根据父子关系翻阅源码,比如sqlsession(clearCache)->defaultSqlsession(clearCache)-&原创 2021-01-26 12:40:17 · 508 阅读 · 0 评论 -
实现一个自定义持久层框架
实现一个自定义持久层框架传统JDBC操作如下:public static void main(String[] args) {Connection connection = null;PreparedStatement preparedStatement = null;ResultSet resultSet = null;try {// 加载数据库驱动Class.forName(“com.mysql.jdbc.Driver”);// 通过驱动管理类获取数据库链接connection =原创 2021-01-22 15:33:39 · 179 阅读 · 0 评论 -
JAVA日常代码编写中如何写出优质的代码总结
概述代码,只要是一个程序员,都会写,一年经验,三年经验有时候都是在干同样的事,但是为什么三年经验薪资就会比一年经验高很多呢,这就关系到随着经验的增长,对代码编写理解不断上升,他能够创造更有价值的代码,提高程序性能,自然价值就更高了。编写代码提高运行效率的几个方面根据情况使用静态变量static关键字修饰变量和方法,都可以直接引用,不需要再new一个出来。这样一看,感觉不用new对象,那不是减少了内存的开销嘛,程序运行效率反而更高了啊,使用static的确能提高程序运行性能,但是当某个对象被stati原创 2020-08-21 11:48:47 · 339 阅读 · 0 评论 -
HTTP协议中,GET请求和POST请求的区别
前言Get请求和Post请求,作为一个程序员,可能是再熟悉不过的东西了,每当有人问起你他们的区别的时候,你可能都会会心一笑,然后巴拉巴拉说出下列这些区别:Get请求的数据会附在url之后,以?分割url传输数,参数以&连接,Post则把提交的数据放置在http包的包体中。Get一般用于查询/获取资源信息,Post一般用于更新资源信息。Get请求在回退是时是无害的,Post会再次提交...原创 2020-04-16 10:13:38 · 561 阅读 · 0 评论 -
Idea初次导入Springboot项目搭配Maven无法从阿里云中央仓库下载依赖包解决办法
概述Eclipse用习惯了,因为公司任务分配,需要开发两个接口,项目采用的是SpringBoot,工具用的是Idea,就想换换口味,花了几分钟下载了最新的idea 2019.3版本,在导入项目之后就发现竟然无法从阿里云远程仓库下载依赖包,因此我尝试了各种办法。解决办法第一个解法:maven版本过低,因为我的maven是3.2.5,为此我就去下了一个3.6.3的maven,,并重新配置环境,没...原创 2020-02-25 17:21:03 · 5432 阅读 · 4 评论 -
JAVA IO和NIO的区别以及应用场景
概述JAVA在JDK1.4之后引入了一个新的库NIO,其实他的作用跟IO是相同,只是他们的实现方式不同,NIO的效率要高于IO。面向流和面向缓冲IO:面向流,阻塞IONIO:面向缓存,非阻塞IO,包含类:Channel(通道),Buffer(缓冲区), Selector(选择区)IO面向流,每次从流中读取一个或者多个字节,直到读取完所有字节,在此过程中不能执行其他操作,也不能移动流中的数...原创 2019-09-24 17:06:48 · 631 阅读 · 0 评论