
Java
文艺的码农青年
这个作者很懒,什么都没留下…
展开
-
Spring Bean的生命周期
实例化实例化一个 Bean,也就是我们常说的 new。IOC 依赖注入2. 按照 Spring 上下文对实例化的 Bean 进行配置,也就是 IOC 注入。setBeanName 实现3. 如果这个 Bean 已经实现了 BeanNameAware 接口,会调用它实现的 setBeanName(String)方法,此处传递的就是 Spring 配置文件中 Bean 的 id 值BeanFactoryAware 实现4. 如果这个 Bean 已经实现了 BeanFactoryAware 接口原创 2020-12-09 22:49:10 · 101 阅读 · 0 评论 -
Java中线程池的原理
线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为:线程复用;控制最大并发数;管理线程。线程复用每一个 Thread 的类都有一个 start 方法。 当调用 start 启动线程时 Java 虚拟机会调用该类的 run 方法。 那么该类的 run() 方法中就是调用了 Runnable 对象的 run() 方法。 我们可以继承重写Thread 类原创 2020-12-07 20:12:04 · 131 阅读 · 0 评论 -
Synchorized的实现原理
synchronized 它可以把任意一个非 NULL 的对象当作锁。他属于独占式的悲观锁,同时属于可重入锁。Synchronized 作用范围作用于方法时,锁住的是对象的实例(this);当作用于静态方法时,锁住的是Class实例,又因为Class的相关数据存储在永久带PermGen(jdk1.8 则是 metaspace),永久带是全局共享的,因此静态方法锁相当于类的一个全局锁,会锁所有调用该方法的线程;synchronized 作用于一个对象实例时,锁住的是所有以该对象为锁的代码块。它有多个原创 2020-12-06 22:20:46 · 539 阅读 · 0 评论 -
@Transactional注解的常见失效场景
1、@Transactional 应用在非 public 修饰的方法上如果Transactional注解应用在非public 修饰的方法上,Transactional将会失效。之所以会失效是因为在Spring AOP 代理时,如上图所示 TransactionInterceptor (事务拦截器)在目标方法执行前后进行拦截,DynamicAdvisedInterceptor(CglibAopProxy 的内部类)的 intercept 方法或 JdkDynamicAopProxy 的 invoke 方原创 2020-07-05 10:48:35 · 172 阅读 · 0 评论 -
常见的MySQL的一些优化技巧
一、索引优化索引的数据结构是 B+Tree,而 B+Tree 的查询性能是比较高的,所以建立索引能提升 SQL 的查询性能。1、建立普通索引对经常出现在 where 关键字后面的表字段建立对应的索引。2、建立复合索引 如果 where 关键字后面常出现的有几个字段,可以建立对应的 复合索引。要注意可以优化的一点是:将单独出现最多的字段放在前面。例如现在我们有两个字段 a 和 b 经常会同时出现在 where 关键字后面:select * from t where a = 1 and b =转载 2020-06-28 11:17:20 · 202 阅读 · 0 评论 -
使用poi替换指定word模板中的数据
一、模板文件示例原始的模板示例是这样的二、代码进行替换import java.io.*;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.util.Set;import com.aimsphm.utils.StringUtils;import org.apache...原创 2020-04-27 19:14:19 · 1657 阅读 · 6 评论 -
Java实现单链表的逆序
单链表反转思路1、先定义一个节点reverseHead=new HeroHead();2、从头到尾遍历原来的链表,并将每一个节点取出放在新的链表 的reverseHead的最前端3、让头节点指向 head.next=reversehead.next...原创 2020-03-14 21:07:27 · 574 阅读 · 0 评论 -
SpringBoot集成Quartz,实现定时任务可配置化
一、什么是QuartzQuartz是OpenSymphony开源组织在Jobscheduling领域又一个开源项目,完全由Java开发,可以用来执行定时任务,类似于java.util.Timer。但是相较于Timer,Quartz增加了很多功能:持久性作业 - 就是保持调度定时的状态;作业管理 - 对调度作业进行有效的管理;在我们实际的项目中,当Job过多的时候,肯定不能人工去操作...原创 2020-03-06 09:19:11 · 1196 阅读 · 0 评论 -
List列表转为树形结构
List转树形结构的封装工具类import lombok.extern.slf4j.Slf4j;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;impo...原创 2020-01-21 15:45:38 · 524 阅读 · 0 评论 -
SpringBoot集成mybatis-plus
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2020-01-20 16:27:33 · 259 阅读 · 0 评论 -
8 种方案解决表单重复提交问题
1.什么是幂等幂等:F(F(x))=F(x)多次运算结果一致在我们编程中常见幂等: 1、select查询天然幂等 2、delete删除也是幂等,删除同一个多次效果一样 3、update直接更新某个值的,幂等 4、update更新累加操作的,非幂等 5、insert非幂等操作,每次新增一条2.产生原因由于重复点击或者网络重发 eg:1、点击提交按钮两次;2、点击刷新按钮;3...原创 2020-01-07 19:58:49 · 1187 阅读 · 1 评论 -
SpringBoot整合shiro
shiro原理一、shiro主要有三大功能模块:Subject:主体,一般指用户。SecurityManager:安全管理器,管理所有Subject,可以配合内部安全组件。(类似于SpringMVC中的DispatcherServlet)Realms:用于进行权限信息的验证,一般需要自己实现。二、细分功能Authentication:身份认证/登录(账号密码验证)。Authoriz...原创 2020-01-03 16:48:22 · 1027 阅读 · 10 评论