摘要:
IO线程初始化 Redis在6.0版本中引入了多线程,提高IO请求处理效率。 在Redis Server启动函数main(server.c文件)中初始化服务之后,又调用了InitServerLast函数: int main(int argc, char **argv) { // ... // 初始化 阅读全文
摘要:
aeEventLoop初始化 在server.c文件的initServer函数中,对aeEventLoop进行了初始化: 调用aeCreateEventLoop函数创建aeEventLoop结构体,对aeEventLoop结构体中的变量进行了初始化,之后调用了aeApiCreate函数创建epoll 阅读全文
摘要:
AbstractAutoProxyCreator 在AbstractAutoProxyCreator的wrapIfNecessary方法中,调用getAdvicesAndAdvisorsForBean方法获取到所有的Advisor之后,就可以创建代理对象了,创建的具体过程在createProxy方法 阅读全文
摘要:
@EnableAspectJAutoProxy @EnableAspectJAutoProxy注解可以用来开启AOP,那么就从@EnableAspectJAutoProxy入手学习一下Spring AOP的实现原理。 @EnableAspectJAutoProxy导入了AspectJAutoProx 阅读全文
摘要:
AOP相关概念 在学习AOP实现原理之前,先了解下AOP相关基础知识。 AOP面向切面编程,它可以通过预编译方式或者基于动态代理对我们编写的代码进行拦截(也叫增强处理),在方法执行前后可以做一些操作,一般我们会看到以下几个概念: 连接点(JointPoint): AOP进行切入的位置称为连接点,一般 阅读全文
摘要:
事务的回滚 如果获取事务属性不为空,并且抛出的异常是RuntimeException或者Error类型,调用事务管理器中的rollback方法进行回滚 如果事务属性为空或者抛出的异常不是RuntimeException,也不是Error,将继续提交事务 public abstract class T 阅读全文
摘要:
前置知识 事务的执行步骤如下: 获取事务管理器 创建事务 执行目标方法 捕捉异常,如果出现异常进行回滚 提交事务 public abstract class TransactionAspectSupport implements BeanFactoryAware, InitializingBean 阅读全文
摘要:
在使用事务的时候需要添加@EnableTransactionManagement注解来开启事务,那么就从@EnableTransactionManagement入手查看一下事务的执行原理。 @EnableTransactionManagement Spring事务底层是通过AOP来完成的,而Spri 阅读全文
摘要:
问题描述 服务运行一段时间之后,出现页面卡顿加载慢的问题,使用top命令查看了服务器的使用情况,发现CPU飙高,接着查看了该进程中每个线程的占用情况,发现导致CPU高的线程是JVM垃圾回收的线程,然后使用jstat命令打印了GC的情况,基本隔几秒就进行一次FULL GC,每次FULL GC之后有大量 阅读全文