Spring源码之FactoryBean的实现

在前面的文章Spring源码之IoC容器的Bean创建和依赖注入,DefaultListableBeanFactory容器为例中提到获取Bean的过程。通过getBean方法调用doGetBean方法,如果从缓存中获得Bean,通过getObjectForBeanInstance方法完成FactoryBean的相关处理,取得FactoryBean的处理结果,也就是最终的Bean。那么getObjectForBeanInstance方法做了哪些操作,一起看看1、如果不是FactoryBean的调用(Be
分类: 其他 发布时间: 11-23 09:50 阅读次数: 0

Spring源码之BeanPostProcessor的方法何时调用

通过前面的章节我们知道Bean的创建在doCreateBean中是怎么完成的。首先,通过createBeanInstance对Bean进行实例化然后,通过populateBean方法完成依赖注入而BeanPostProcessor也就是Bean的后置处理,是在完成依赖注入后,通过initializeBean方法调用进行的。后置:指的是在Bean实例化后,BeanPostProcessor都是在createBeanInstance对Bean进行实例化后执行的 try {
分类: 其他 发布时间: 11-23 09:49 阅读次数: 0

Spring源码之autowiring的实现

PropertyValues pvs = mbd.hasPropertyValues() ? mbd.getPropertyValues() : null; int resolvedAutowireMode = mbd.getResolvedAutowireMode(); if (resolvedAutowireMode == 1 || resolvedAutowireMode == 2) { MutablePropertyV.
分类: 其他 发布时间: 11-23 09:49 阅读次数: 0

Spring循环依赖问题,循环依赖的情况,能解决的情况,怎么解决的

目录Spring中依赖注入的方式循环依赖的种类Spring能解决哪些循环依赖单例模式下的构造器注入循环依赖问题Spring无法解决单例模式下的接口注入循环依赖问题Spring能解决单例模式下的setter注入循环依赖问题Spring能解决多例模式下的循环依赖Spring无法解决Spring怎么解决的单例模式下的setter方法依赖注入引起的循环依赖问题首先看下Spring三级缓存介绍getBean方法从缓存中获取实例的源码Spring中依赖注入的方式1、构造器注入2、setter方法注入3、接口注入
分类: 其他 发布时间: 11-23 09:49 阅读次数: 0

Spring源码之IoC,单例Bean添加到一、二、三级缓存的时机,源码解读

目录添加到一级缓存的时机doGetBean方法中创建单例Bean的代码getSingleton(String beanName, ObjectFactory<?> singletonFactory)方法源码addSingleton方法源码添加到二级缓存的时机doGetBean中首次调用getSingleton添加到三级缓存的时机doGetBean方法调用addSingletonFactory方法的源码addSingletonFactory方法源码总结三个缓存都存在于DefaultSinglet
分类: 其他 发布时间: 11-23 09:49 阅读次数: 0

MySQL的where子句中or导致索引失效,以及包含or时能使索引生效的情况

结论:包含or时,需要有一个索引包含了所有where用到的字段,这个索引才会生效。否则索引不生效。建表语句CREATE TABLE `course` ( `cno` varchar(20) NOT NULL, `cname` varchar(10) NOT NULL, `tno` varchar(20) NOT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`cno`), KEY `cname` (`cname`) USING BT
分类: 其他 发布时间: 11-23 09:48 阅读次数: 0

AQS的acquire方法流程

ADS同步队列CLH中5种节点状态1、CANCELLED(1):表示当前结点已取消调度。当timeout或被中断(响应中断的情况下),会触发变更为此状态,进入该状态后的结点将不会再变化。2、SIGNAL(-1):表示后继结点在等待当前结点唤醒。后继结点入队时,会将前继结点的状态更新为SIGNAL。3、CONDITION(-2):表示结点等待在Condition上,当其他线程调用了Condition的signal()方法后,CONDITION状态的结点将从等待队列转移到同步队列中,等待获取同步锁。4、
分类: 其他 发布时间: 11-23 09:48 阅读次数: 0

面试一家公司,确认offer前,我们需要关注并确认哪些事项

入职前确认的点:1.薪资具体构成,有没有绩效考核部分2.一年多少薪3.试用期几个月,薪酬怎么算 是否打折,是否可以提前转正4.是否是入职就购买五险一金,是否是全额基数,购买比例是多少6.一年之中有几次调薪的机会,有多少比例的人能调7.希望多久可以到岗,什么时候发offer,是否要背调8.如果项目需要 周末加班怎么算 工资双倍还是只能选择调休,平时加班有没有工资和补助9.合同是直接跟公司签吗10.是否需要出差,有出差的话有多少补助,哪些费用可以报销11.正常上班时间是几点到几点12.
分类: 其他 发布时间: 11-23 09:48 阅读次数: 0

拦截器和过滤器的执行时序

Filter前处理 --> Interceptor前处理 --> action --> Interceptor后处理 --> Filter后处理
分类: 其他 发布时间: 11-23 09:48 阅读次数: 0

SpringBoot整合webservice接口

springboot+mybatis调用webService接口项目实战
分类: 其他 发布时间: 11-23 09:47 阅读次数: 0

mysql查询时给数据结果加一列自增值

select @rownum:=@rownum+1 AS rownum,name from student,(SELECT @rownum:=0) r;
分类: 其他 发布时间: 11-23 09:47 阅读次数: 0

MySQL查看单个表,所有表数据大小

查询表所属schemaSELECT * FROM information_schema.COLUMNS WHERE table_name = 'student';查询表大小select concat(round(sum(DATA_LENGTH/1024/1024),2),'M') as table_size from information_schema.tables where table_schema='study' AND table_name='student';...
分类: 其他 发布时间: 11-23 09:47 阅读次数: 0

MySQL的GROUP BY怎么优化,GROUP BY进行了隐式排序,怎么禁止隐式排序

EXPLAIN证明GROUP BY进行了隐式排序EXPLAIN SELECT NAME FROM student GROUP BY NAME可以看到Extra一列有Using temporary; Using filesort说明用到了临时表和排序接下来我们通过添加ORDER BY NULL禁止排序EXPLAIN SELECT NAME FROM student GROUP BY NAME ORDER BY NULL可以看到现在只用到了临时表,没有进行排序了所以在需要分组并不需要对结果进
分类: 其他 发布时间: 11-23 09:47 阅读次数: 0

《高性能MySQL》中提到的数据库设计原则

分类: 其他 发布时间: 11-23 09:46 阅读次数: 0

MySQL的ORDER BY排序优化

索引设计时,尽量满足既能满足排序,又能查找行。ORDER BY优化时尽量使用索引排序。只有当索引列的顺序和ORDER BY的字段顺序一致,排序方向也一致,并且索引包含要查找的行,满足最左前缀原则,才能使用索引来对结果排序。例如给student表建立联合索引NAME, AGE, CLASSCREATE TABLE `student` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(30) NOT NULL, `SEX` char
分类: 其他 发布时间: 11-23 09:46 阅读次数: 0

MySQL通过存储过程循环插入数据

创建一个student表CREATE TABLE `student` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(30) NOT NULL, `SEX` char(2) NOT NULL, `AGE` int(11) NOT NULL, `CLASS` varchar(10) NOT NULL, `GRADE` varchar(20) NOT NULL, `HOBBY` varchar(100) DEFAULT
分类: 其他 发布时间: 11-23 09:46 阅读次数: 0

MySQL中使用延迟关联优化order by加limit超大分页

创建一个student表插入200万条数据CREATE TABLE `student` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `NAME` varchar(30) NOT NULL, `SEX` char(2) NOT NULL, `AGE` int(11) NOT NULL, `CLASS` varchar(10) NOT NULL, `GRADE` varchar(20) NOT NULL, `HOBBY` varchar(100)
分类: 其他 发布时间: 11-23 09:46 阅读次数: 0

MySQL最小值函数MIN()优化

基于MySQL中使用延迟关联优化order by加limit超大分页这篇的student来练习如下SQL,grade上面没有建立索引,查询最小值需要0.965sselect min(id) from student where grade='10年级'通过如下方式优化后执行只需0.549s,这种方式可以让mysql扫描尽可能少的记录数select id from student use index(PRIMARY) where grade='10年级' limit 1...
分类: 其他 发布时间: 11-23 09:45 阅读次数: 0

一文读懂MySQL的JOIN连接查询原理

假设我们有两张表A和表B,表A有100条数据,表B有10000条数据,现在进行两表的内连接关联查询,MySQL优化器会默认选择数据量小的表A作为驱动表。简单嵌套循环连接 Nested Loop Join 算法(BLJ)如下图所示,该算法下,以A表作为驱动表,每扫描一条A表的记录,需要全量扫描B表进行匹配,扫描行数为100(表A)+ 100 * 10000(100次表B)= 1000100 条基于索引的嵌套循环链接Index Nested-Loop Join(INLJ)如下图所示,该算法下,以A表
分类: 其他 发布时间: 11-23 09:45 阅读次数: 0

MySQL的MVCC原理,可见性算法流程图

以下针对InnoDB 存储引擎文章目录几个重要组件和属性行隐藏列Read View读视图undo log可见性算法可见性算法流程图几个重要组件和属性行隐藏列DB_TRX_ID:mysql会为每个事务分配一个事务id,该字段记录最后一次插入或更新该行的事务 id。DB_ROLL_PTR:回滚指针,指向该行的 undo log。DB_ROW_ID:当表没有主键且没有唯一非空索引时生成的隐藏主键。Read View读视图三个主要属性为1.m_up_limit_id 最小活跃事务id2.m_l
分类: 其他 发布时间: 11-23 09:45 阅读次数: 0