自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 Spring中bean的作用域

Spring中bean的作用域singleton : 唯⼀ bean 实例,Spring 中的 bean 默认都是单例的。prototype : 每次请求都会创建⼀个新的 bean 实例。request : 每⼀次HTTP请求都会产⽣⼀个新的bean,该bean仅在当前HTTP request内有效。session : 每⼀次HTTP请求都会产⽣⼀个新的 bean,该bean仅在当前 HTTP session 内有效。global-session: 全局session作⽤域,仅仅在基于portl

2021-03-09 22:20:32 119

原创 JVM类加载器与双亲委派模型

JVM类加载器与双亲委派模型1. 类加载器2. 双亲委派模型1. 类加载器启动类加载器(Bootstrap Class Loader):负责加载存放在<JAVA_HOME>\lib目录下,或者被-Xbootclasspath参数指定路径中存放的,且能被jvm识别的类库加载到jvm内存中。扩展类加载器(Extension Class Loader):负责加载<JAVA_HOME>\lib\ext目录中,或者被java.ext.dirs系统变量所指定路径中的使用类库。应用程序加

2021-03-07 16:04:03 90

原创 JVM中类加载的过程

JVM中类加载的过程1. 类的生命周期2. 加载3. 验证4. 准备5. 解析6. 初始化这里描述了JVM中类加载的全过程,即加载、验证、准备、解析和初始化五个阶段所执行的具体动作1. 类的生命周期2. 加载在加载阶段,JVM需要完成一下三件事:a). 通过一个类的完全限定名来获取定义此类的二进制字节流b). 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构c). 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口3. 验证目

2021-03-07 15:40:24 139

原创 JVM中类加载的时机

JVM中类加载的时机1. 类的生命周期2. 类什么时候被加载1. 类的生命周期2. 类什么时候被加载遇到new、getstatic、putstatic或invokestatic这四条字节码指令时,如果类型没有进行过初始化。则需要先触发初始化阶段。能够生成这四条指令的典型java代码场景有:a). 使用new 关键字实例化对象的时候b). 读取或设置一个类型的静态字段(被final修饰、已在编译期把结果放入常量池的静态字段除外)的时候c). 调用一个类型的静态方法的时候使用java.lang

2021-03-07 14:56:16 175 1

原创 源码解析Spring Boot的启动流程

源码解析Spring Boot的启动流程1. 总体流程2. 代码3. new SpringApplication()1.判断当前类型是web2.加载所有的初始化器3. 加载所有的监听器4.设置程序运行主类4. 执行run()方法1.创建计时器对象,设置headless的属性并设置到系统属性中2. 初始化监听器 getRunListeners()3. 启动监听器4. 设置命令行参数1. 总体流程2. 代码代码github地址,有兴趣的老哥star下。spring boot版本:2.1.3.RELEA

2021-03-07 01:19:37 273 2

原创 垃圾回收算法和垃圾回收器

垃圾回收算法和垃圾回收器1.如何判断对象已死?1. 引用计数法2. 可达性分析算法2. 垃圾回收算法1. Mark-Sweep 标记清除2. 复制3. 标记整理3. 垃圾收集器1.Serial2.ParNew3.Parallel Scavenge4.Parallel Old5.CMS6.G1参考Java和C++之间有一堵由内存动态分配,和垃圾收集技术所围成的墙,墙外面的人想进去,墙里面的人却想出来。1.如何判断对象已死?1. 引用计数法在对象中添加一个引用计数器,每当一个地方引用它时,计数器的

2021-03-05 15:37:09 68

原创 源码解析Spring中Bean加载的过程

源码解析Spring中Bean加载的过程1. 总体流程2. 代码3. 进入debug,跟踪流程1.创建上下文,设置配置文件路径2. 进入refresh方法3. 为上下文的刷新做准备工作,进入prepareRefresh()4.创建工厂并通过BeanDefinitionReader读取bean的信息(ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();)5. prepareBeanFactory(beanFactory)

2021-03-04 19:28:14 187 3

原创 RocketMQ集群搭建

RockerMQ集群搭建1. 角色介绍2. 集群搭建方式1. 集群特点2. 集群模式3. 双主双从集群搭建1. 角色介绍Producer:消息的发送者(生产消息)Consumer:消息的接收者(获取消息)Broker:暂存消息和传输消息NameServer:管理BrokerTopic:消息的话题,用于区分消息的种类Message Queue:相当于Topic的分区,用于并行发送和接收消息2. 集群搭建方式1. 集群特点NameServer几乎是一个无状态节点,可以集群部署,节点之间

2021-03-02 18:03:43 316 4

原创 Java内存区域--运行时数据区

Java内存区域--运行时数据区总览1. 程序计数器2. Java虚拟机栈3. 本地方法栈4. 堆5. 方法区6. 运行时常量池7. 直接内存参考总览1. 程序计数器程序计数器是一块较小的内存空间,可以看做是当前线程所执行字节码的行号指示器。工作时就是通过改变这个计数器的值来选取下一条需要执行的指令。此区域是唯一一个没有OOM情况的区域。2. Java虚拟机栈和程序计数器一样也是线程私有的,生命周期与线程相同。每个方法被执行的时候,JVM都会同步创建出一个栈帧用于存储局部变量表、操作数栈、

2021-03-02 01:07:09 370

原创 RocketMQ配置文件详解

RocketMQ配置文件详解直接来borker.conf#所属集群名字brokerClusterName=rocketmq-cluster#broker名字,注意此处不同的配置文件填写的不一样brokerName=broker-a#0 表示 Master,>0 表示 SlavebrokerId=1#nameServer地址,分号分割namesrvAddr=rocketmq-nameserver1:9876;rocketmq-nameserver2:9876#在发送消息时,自动创建服

2021-03-01 14:26:15 1529 3

原创 PowerMockito单元测试总结

1. 什么是单元测试?单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。单元测试都是以自动化的方式执行,所以在大量回归测试的场景下更能带来高收益。单元测试代码里提供函数的使用示例,因为单元测试的具体表现形式就是对函数以各种不同输入参数组合进行调用。2. 为什么要使用MOCK?在做单元测试的时候,我们会发现我们要测试的方法会引用很多外部依赖的对象,比如:(发送邮件,网络通讯,远程服务, 文件系统等等)。 而我们没法

2020-12-24 11:12:44 2699

原创 Oracle全局索引失效,新建分区索引

Oracle全局索引失效总结建表索引失效重建索引最近开发中遇到的一次生产故障,数据库有张表发现update时间特别长,经过排查发现索引失效了。然后自己在本地环境又演示了一遍,以做告诫,不足之处,还请大家指出。建表建表,进行根据时间进行动态分区,建立全局索引create table users_info( user_id number(10), phone_number number(11), create_date DATE, modif

2020-11-11 14:59:46 884

空空如也

空空如也

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

TA关注的人

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