- 博客(15)
- 收藏
- 关注
原创 浅谈下对volatile的理解
1. 缓存一致性问题大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。因此在CPU里面就有了高速缓存。 也就是,当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存
2022-05-10 23:49:52 528 3
原创 操作系统概述
操作系统的作用: 计算机资源的管理者,实现对计算机资源的抽象.提供统一接口供上层调用操作系统的发展:1. 人工操作: 程序员将卡带装入纸带输入机,用户独占电脑所有资源,cpu等待io操作.2. 脱机输入: 提高了io速度,减少了cpu等待时间,提高cpu利用率3: 单道批处理: 在监督程序的控制下,让作业一个接一个的连续处理.4. 多道批处理: 进一步提高cpu的利用率5. 分时操作系统: 分时调度操作系统的主要功能: 处理机管理 , 存储器管理,...
2021-08-10 13:23:46 269
原创 单例模式详解
单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这个最简单的设计模式,确是很容易让人忽略的一个点。其实其中很多种实现方式涉及到的原理还是比较深的。这次就来看看各种单例模式的实现之间的区别。1. 懒汉式public class Singleton { private static Singleton instance; public static Singleton ge.
2020-07-26 17:53:06 188
原创 spring源码学习_AOP原理
在Spring中,我们通过 @EnableAspectJAutoProxy 开启AspectJ自动代理,即可通过注解对指定的目标进行增强。我们来看看@EnableAspectJAutoProxy注解是如何发挥作用的@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Documented//关键在这里,这里向容器中注入了一个组件@Import(AspectJAutoProxyRegistrar.class)public @i
2020-07-05 18:27:12 415 1
原创 spring源码学习_bean的循环依赖
当两个bean互相依赖,或者多个bean相互依赖并形成一个环状结构的时候,就形成了循环依赖的问题。例如下图:关于bean的实例化过程,我在spring源码学习_bean的实例化过程中有详细讲解,这里直接说结论。① bean在实例化时,spring首先会找到其指定的构造方法,生成这个bean的java对象。此时bean只是单纯的java对象,其中的依赖并没有被注入。这个阶段的bean我们可以理解为是半成品的bena或是早产的bean。② 对象生成后,spring就会在spring容器中获取其依
2020-06-01 23:24:35 645 2
原创 spring源码学习_bean的初始化
这是上一篇说到的bean的实例化过程,我们就着这个图继续说。 在bean的实例已创建且属性的注入完成后,就会调用 initializeBean方法进行bena的初始化。先看一下整体流程。protected Object initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinition mbd) { //第一步 调用invokeAwareMethods方法 if (System...
2020-05-24 19:13:43 964 3
原创 mybatis学习_SqlSession的四大对象(3)
SqlSession 的四大对象是指:Executor, StatementHandler,ParameterHandler,ResultHandler对象。Mybatis通过四大对象的相互协作,完成对数据库的操作。这篇我们讲解最后的两个对象 ParameterHandler 和 ResultHandler。1.ParameterHandler上篇mybatis学习_SqlSession的四大对象(2)说到,在StatmentHandler中,使用了ParameterHandler帮助其完成对.
2020-05-17 19:45:47 329
原创 mybatis学习_SqlSession的四大对象(2)
SqlSession 的四大对象是指:Executor, StatementHandler,ParameterHandler,ResultHandler对象。Mybatis通过四大对象的相互协作,完成对数据库的操作。这篇我们主要讲解 StatementHandler 对象。首先我们回顾一下,mybatis学习_SqlSession的四大对象(1)在Executor中使用到Statement...
2020-05-03 16:10:56 576
原创 mybatis学习_SqlSession的四大对象(1)
SqlSession 的四大对象是指:executor, statementHandler,parameterHandler,resultHandler对象。
2020-05-02 16:50:11 881
原创 mybatis学习_映射器的动态代理
mybatis的神奇之处在于,你只用提供一个mapper接口以及一个对应的xml文件。mybatis就能自动的完成映射,并根据xml文件的描述,生成接口的实现类(代理)。本文就来看看mytatis怎么替我们完成这项工作。1. Configuration相关属性读过我这篇文章SqlSessionFactory构建过程的人应该知道,在SqlSessionFactory的构建过程中,完...
2020-04-15 17:03:07 309
原创 mybatis学习_SqlSessionFactory构建过程
使用mybatis功能前,我们先得创建一个 SqlSessionFactory 对象,创建过程如下。我们实例化了一个 SqlSessionFactoryBuilder对象,然后让其加载mybatis的配置文件,构建出一个SqlSessionFactory 对象。String resource = "mybatis-config.xml";InputStream inputStream = ...
2020-04-08 17:36:13 989
原创 spring源码学习_bean的实例化过程
上篇(spring源码学习_bean工厂的初始化)有说到,bean工厂初始化的最后一步就是将所有剩下的,在beanDefinitionMap中注册的,需要被实例化的bean全部实例化。其实例化过程最终是又 getBean 方法完成的,这里我们就重点看看getBean方法。bean的实例化过程这里先通过一个图展现一下bean初始化的大概流程1)getBean方法首先会调用...
2020-03-31 22:56:27 435
原创 spring源码学习_bean工厂的初始化
spring framework的ioc容器可以让我们轻松的用各种注解申明bean,并可以使用@Autowired进行依赖注入。本文我们就深入了解一下spring bean工厂的初始化过程,以及依赖注入的原理。1.bean工厂的初始化使用spring时,我们通常这样初始化bean工厂ApplicationContext context = new AnnotationConfigAp...
2020-03-22 15:35:55 394
原创 spring源码学习_dispatchServlet路由原理
在传统的javaee项目中,我们需要在web.xml配置文件中配置若干个servlet去拦截前端请求,并将这些请求分发到对应的servlet去处理。在springmvc中我们只需要在web.xml中配置一个 dispatchServlet<servlet> <servlet-name>dispatcherServlet</servlet-name> &...
2020-03-10 19:47:48 506
原创 详解JVM类加载的三个阶段
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这一过程就是虚拟机类加载机制。java需要使用一个类时,并不是一蹴而就的,需要在后台进行一些必须的步骤。如下图所示,类在我们使用前,共经历了“加载”、“链接”和“初始化”三个阶段,而第二个阶段“链接”又被分为三个小阶段,分别是 “验证”、“准备”和“解析”。下文中我...
2019-12-02 22:51:23 1110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人