自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (4)
  • 收藏
  • 关注

原创 @Async注解循环依赖的问题

@Async注解spring为什么解决不了循环依赖。@EnableAsync注解会在容器中生成一个AsyncAnnotationBeanPostProcessor后置处理器和AsyncAnnotationAdvisor切点,该处理器会寻找@Async注解。如果匹配到了会生成一个代理对象。if (isEligible(bean, beanName)) { ProxyFactory proxyFactory = prepareProxyFactory(bean, beanName); if (!.

2021-06-21 01:49:55 606

原创 git基础命令

从远程分支拉到本地本分git checkout -b 本地分支名 origin/远程分支名切换本地分支git checkout 本地分支名查看远程分支git branch -r查看本地分支git branch创建本地分支git branch 本地分支名删除本地分支(需要先切换到其他分支)git branch -d 本地分支名删除远程分支(将本地删除的分支推送远程)git push origin --delete 本地分支名.

2021-06-10 20:36:43 137

原创 Bean注解原理分析

前面文章:注解何时解析,提到了Bean注解何时被解析。public void processConfigBeanDefinitions(BeanDefinitionRegistry registry) { List<BeanDefinitionHolder> configCandidates = new ArrayList<BeanDefinitionHolder>(); ConfigurationClassParser parser = new Configuration

2020-12-25 15:04:30 540

原创 注解何时解析

AnnotationConfigApplicationContext为例public AnnotationConfigApplicationContext(Class<?>... annotatedClasses) { //会调用无参构造函数 this(); register(annotatedClasses); refresh(); } public AnnotationConfigApplicationContext() { //此时会往容器中添加处.

2020-12-16 15:04:19 349

原创 Transaction注解原理

开启事务注解EnableTransactionManagement,该注解往容器中导入了导入TransactionManagementConfigurationSelector组件。该组件有个方法,在容器刷新的时候会被调用。(此处不讲解为什么会被调用,重点讲解Transaction注解)protected String[] selectImports(AdviceMode adviceMode) { switch (adviceMode) { case PROXY: return n.

2020-12-08 11:18:50 2194 6

原创 Aop原理分析

EnableAspectJAutoProxy注解开启Aop的时候会往容器中注册一个AnnotationAwareAspectJAutoProxyCreator 后置处理器,生成的代理对象都是由他完成。在实例化bean完成之后会进行初始化(这里的初始化是指给生成的bean进行属性赋值等操作)。(AbstractAutoProxyCreator是AnnotationAwareAspectJAutoProxyCreator的超类)如果有不懂或者错误的地方欢迎各位大佬留言,看看哪里有需要改动或者讲..

2020-12-05 18:00:30 157 2

原创 spring循环依赖

什么是循环依赖?A有B变量,B有A变量在代码看的更直观。@ComponentClass A{ @Autowired private B b;}@ComponentClass B{ @Autowired private A a;}spring如何解决这种循环依赖的?singletonObjects:一级缓存,存放着对象实例化和初始化都完成的对象。earlySingletonObjects:二级缓存,存放着从三级缓存取出的对象。singletonFactories.

2020-12-02 20:48:28 80

原创 @Autowired注解详细分析

@Autowired注解详细分析@Autowired是由AutowiredAnnotationBeanPostProcessor后置处理器处理的。@Autowired依赖注入是从下面开始的。(这里不讲解为啥从这里开始,如果这步有疑问,欢迎大家留言,可以专门出个博客讲解一下)AutowiredAnnotationBeanPostProcessor->postProcessPropertyValues()要想注入值,先要找到值。postProcessPropertyValues()-

2020-12-02 20:05:47 2140

原创 @Resource注解详细分析

@Resource注解详细分析@Resource是由CommonAnnotationBeanPostProcessor后置处理器处理的。(备注:如果这里有问题可以留言,下次再专门讲解)在bean依赖注入的时候,会给我们的变量进行赋值,但是赋值的前提要先找到我们的值。CommonAnnotationBeanPostProcessor的autowireResource()方法就在根据我们配置寻找。从下面代码可以大致分析得出如果@Resource没有指定name,但是我们就根据变量名称判

2020-12-02 11:21:43 4004 1

原创 Linux-cpu100%排查

1.找到最耗CPU的进程:top命令查看进程运行信息列表,键入P (大P),进程按照CPU使用率从高到低排序。2. 找到最耗CPU的线程:top -Hp 进程PID命令查看该进程下所有的线程,键入P (大P),进程按照CPU使用率从高到低排序。3.将线程PID转化为16进制:printf “%X\n” 线程PID。是因为堆栈里,线程id是用16进制表示的(十进制6524转换为十六进制就是1...

2020-02-28 02:36:29 1585 1

原创 spring.handlers加载

init方法被执行的要求:1.被执行的类有实现NamespaceHandler接口。2.META-INF/spring.handlers有配好类的键值对(xml命名=名称类的全名)。init方法被执行的前提是:spring.handlers配置好的类被加载,以下为spring.handlers被加载的过程。...

2019-12-27 15:21:46 433

原创 Linux-extundelete工具安装

安装extundelete下载extundelete工具:https://sourceforge.net/projects/extundelete/上传服务器并解压下载的extundelete工具: tar -xvf extundelete-0.2.4.tar.bz2安装extundelete工具依赖包: yum -y install e2fsprogs e2fsprogs-libs e2...

2019-10-15 16:42:43 3980

原创 leetcode--两两交换链表中的节点

执行用时 : 1 ms, 在所有 Java 提交中击败了81.92%的用户内存消耗 : 34.7 MB, 在所有 Java 提交中击败了81.35%的用户题目: 给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。注意: 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例: 给定 1->2->3->4, 你应该返回 2->1->4-&gt...

2019-08-28 10:36:50 182

原创 window有些桌面图标不显示

由于图标缓存文件是隐藏文件,我们需要在资源管理器中将设置改为“显示所有文件”。1.随便打开一个文件夹,再点击查看,然后勾选“隐藏的项目”。2.按下快捷键Win+R,在打开的运行窗口中输入 %localappdata%,回车;3.在打开的文件夹中,找到Iconcache.db,将其删除;4.找到任务管理器,点击找到“Windows资源管理器”,右键选择“重新启动”即可重建图标缓存。...

2019-07-23 08:45:40 402

原创 常用正则表达式

利率:^([1-9]|[1-9]\d)(\.\d{1,2})?$|(^0\.[1-9])$|(^0\.\d[1-9])$

2019-06-12 16:33:40 121

原创 springboot--修改war名

springboot打成的war如果报404解决办法:将war修改成访问前缀名(server:servlet:context-path:访问前缀名)<build> <finalName>war名称</finalName> <plugins> <plugin> <groupId>org.spri...

2019-06-09 23:25:43 804

原创 linux命令

增加用户添加用户: adduser 用户名修改密码: passwd 用户名 接下来设置密码

2019-06-04 10:19:12 94

原创 File文件找不到

在window下,如果文件路径是正确的,但是提示文件未找到,原因可能如下1.复制了路径,最好自己手敲一下,或许可以解决。

2019-05-29 10:43:43 1135 1

原创 mysql bin-log日志

开始点和结束点恢复语法:mysql目录/bin/mysqlbinlog --no-defaults bin-log日志位置 --start-position=起始点 --stop-position= 结束点 | mysql -u 用户名 -p 数据库名mysqlbinlog --no-defaults binlog.000002 --start-position=5512 --sto...

2019-05-29 10:28:05 143

原创 mysql常用命令

创建用户CREATE USER '用户名'@'localhost' IDENTIFIED BY '密码';给用户赋予权限 所有权限: grant all privileges on databasename.tablename to '用户名'@'localhost';增删查改:grant select,delete,update,create,drop on databas...

2019-05-25 20:03:35 94

原创 window下安装mysql8.0

下载mysql,下载地址https://dev.mysql.com/downloads/mysql/将下载的文件解压到你的路径。(C:\Program Files\mysql-8.0.16-winx64)在你路径(C:\Program Files\mysql-8.0.16-winx64)新建data文件夹和my.ini文件。将下面内容copy你的my.ini文件中,修改你的m...

2019-05-25 16:41:29 256

原创 Springboot项目修改html,js后不需要重启

在pom中引入依赖spring-boot-devtools<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</o...

2019-05-16 20:02:06 3831

原创 leetcode--字符串转换整数 (atoi)

执行用时 : 10 ms, 在String to Integer (atoi)的Java提交中击败了75.27% 的用户内存消耗 : 35 MB, 在String to Integer (atoi)的Java提交中击败了95.23% 的用户**题目:**请你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。...

2019-05-16 14:49:31 132

原创 leetcode--整数反转

执行用时 : 8 ms, 在Reverse Integer的Java提交中击败了78.82% 的用户内存消耗 : 33.1 MB, 在Reverse Integer的Java提交中击败了87.04% 的用户题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]...

2019-05-08 08:58:51 97

原创 leetcode--两数相加

执行用时 : 7 ms, 在Add Two Numbers的Java提交中击败了99.71% 的用户内存消耗 : 43.6 MB, 在Add Two Numbers的Java提交中击败了88.44% 的用户题目:给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表...

2019-04-25 13:59:48 134

原创 leetcode--无重复字符的最长子串

执行用时 : 27 ms, 在Longest Substring Without Repeating Characters的Java提交中击败了89.20% 的用户内存消耗 : 37.5 MB, 在Longest Substring Without Repeating Characters的Java提交中击败了92.25% 的用户题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的...

2019-04-25 11:41:47 117

原创 rabbitmq解决erlang版本问题

安装的时候会提示需要erlang版本&gt;=19.3,然而默认yum仓库中的版本较低。(明明自己erlang版本高于19.3)1.#vi /etc/yum.repos.d/rabbitmq-erlang.repo[rabbitmq-erlang]name=rabbitmq-erlangbaseurl=https://dl.bintray.com/rabbitmq/rpm/erlang/20/el...

2018-07-12 09:16:26 23587 4

原创 将jar打入本地仓库

mvn install:install-file -Dfile=‪‪E:\aliyun\aliyun-java-sdk-dysmsapi-1.0.0.jar -DgroupId=com.aliyun -DartifactId=alicom-dysms-api -Dversion=1.0.0.RELEASE -Dpackaging=jarmvn install:install-file -Dfile=

2017-12-12 09:26:30 317

原创 mybatis表不存在的解决办法

sql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'music.user_Info' doesn't ex原因是因为数据库中表是user_info,而你在映射文件(mapper.xml)写的表为user_Info,导致找不到表解决办法1.改映射文件,将表改成和数据库一样。               2.改数据库的文件

2017-12-09 09:29:28 14669

原创 eclipse安装黑色主题

这里先声明,下面的方式适合最新版本的Eclipse Luna1.配置黑色框架Window—>Preferences—>General—>Apperance选择主题为Dark,确认 2.配置代码编辑区的样式:下载地址http://www.eclipsecolorthemes.org/?list=toppicks&filter=dark&q= 选择一个自己喜欢的主题,然后进入下载,选择EPF文件下载

2017-12-08 09:53:32 1518

原创 四种引用

强引用:创建一个对象并把这个对象赋给一个引用变量。JVM宁愿抛出OutOfMemory错误也不会回收这种对象,要想中断强引用和某个对象之间的关联,可以显示地将引用赋值为null,JVM在合适的时间就会回收该对象。Car car=new Car("红色");软引用(SoftReference):如果一个对象具有软引用,内存空间足够,垃圾回收器就不会回收它。如果内存空间不足了,就会回收这些对象的内存

2017-11-24 10:15:56 2367

原创 ApplicationContext中Bean的生命周期

ApplicationContext在初始化应用上下文时就实例化所有单实例的Bean。(多实例的不会(scope=”prototype”)) 1.容器启动时,如果在配置文件中声明了org.springframework.beans.factory.config.BeanFactoryPostProcessor接口的实现类,则应用上下文装载配置文件之后,初始化Bean实例之前调用postProcess

2017-11-07 16:33:23 994 1

原创 BeanFactory中bean的生命周期

当调用者通过getBean()向容器请求某一个Bean时,如果容器注册了org.springframework.beans.factory.config.InstantiationAwareBeanPostProcessor接口,则在实例化Bean之前调用postProcessBeforeInstantiation()方法。根据配置情况调用Bean构造函数或者工厂方法实例化Bean。如果容器注册

2017-11-07 11:38:37 337

原创 web容器监听器和log4j监听器

web容器监听器 <!-- 指定配置文件 --><context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/applicationContext-*.xml</param-value></context-param><!-- 声明web容器监听器 -->

2017-11-06 10:54:39 1092

原创 jvm内存结构

jvm内存结构–方法区(所有线程共享,持久代)1.方法区用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,运行时常量池:是方法区的一部分。2.方法区默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize (方法区初始内存)和 -XX:MaxPermSize (方法区的最大内存)参数限制方法区的大小。3.方法区所有线程都可以共享,因此它们对方法区数据的访

2017-11-04 19:48:24 194

原创 反射

//得到类加载器ClassLoader loader=Thread.currentThread.getContextClassLoader();//加载类Class clazz=loader.loadClass("类的全名");//构造函数Constructor<?> constructor = clazz.getConstructor(String.class,String.class);

2017-11-04 19:09:03 146

原创 类加载机制

类加载机制类装载器把一个类装入JVM的步骤: 1. ==装载==:查找和导入Class文件。(类装载工作是由ClassLoader及其子类完成的,JVM在运行时会产生3个ClassLoader:==根装载器(C++语言编写,在java中看不到,负责加载JRE下的jar包)==,==ExtClassLoader(装载JRE扩展目录ext中的jar包)==,==AppClassLoader(负责装载C

2017-11-04 19:07:50 154

原创 lambda(替代匿名类)

jdk1.8匿名内部类之前的写法public class Lambda { public static void main(String[] args) { //匿名内部类 School school = new School() { @Override public void run(String jdk) {

2017-11-03 10:14:59 5996 1

原创 测试spring报java.lang.NullPointerException解决方案

测试spring的@autowired注解报java.lang.NullPointerException解决方案测试spring的@autowired获取对象,要使用spring-test的测试,普通的junit无法获取bean,会报空指针,加上如下就可以获取到bean@RunWith(SpringJUnit4ClassRunner.class)@RunWith(SpringJUnit4Clas

2017-11-02 14:41:41 9374 1

原创 接口

jdk1.8之前的接口jdk1.8之前不能存在静态的方法,全是抽象的方法,不能有方法体存在。public interface NewInterface { public void run();}jdk1.8的接口jdk1.8 接口可以有静态的方法,静态方法不能被重写,可以通过 接口.方法名() 进行访问。public interface NewInterface { publi

2017-11-01 16:41:18 286

eclipse的注释模板

这个模板主要用于平时类,方法,属性等一些注释,可以养成更好的代码习惯

2017-12-12

springmvc+spring+hibertnate的pom

springmvc+spring+hibernate三大框架的maven的pom文件

2017-11-01

ssm简单项目

这是个简单的springmvc+spring+mybatis项目,采用了maven的形式。

2017-11-01

mysql的配置文件

这是mysql的配置文件,mysql多少版本之后没有了这个配置文件,需要自己创建

2017-11-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除