10 奔跑的~蜗牛~

尚未进行身份认证

我要认证

龙能大能小,能升能隐。大则兴云吐雾,小则隐介藏形;升则飞腾于宇宙之间,隐则潜伏于波涛之内。方今春深,龙乘时变化,犹人得志而纵横四海。龙之为物,可比世之英雄。

等级
TA的排名 1w+

spring boot中mysql驱动加载过程

1、我们一般选择的Datasoure工具类private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] { "org.apache.tomcat.jdbc.pool.DataSource", "com.zaxxer.hikari.HikariDataSource", "org.apache.commons.dbcp.BasicDataSource", // deprecated "org.apache.commons.dbcp2..

2020-07-07 19:17:05

Spring boot启动加载嵌入的tomcat过程

Spring boot启动加载嵌入的tomcat过程:1、执行SpringApplication.run方法。进入这个方法,会有一个refreshContext(context);方法。其中的context是spring boot自定义的一个类EmbeddedWebApplicationContext继承了AbstractApplicationContext(); 重写封装了其中的onRefresh和finishRefresh方法。2、开始执行context覆盖的refresh方法,其实内部就是去执

2020-06-27 20:11:51

深入理解Java虚拟机三 垃圾回收机制

前言文章是看了《深入理解Java虚拟机》书后进行的整理和总结,算是一个读书笔记吧。深入理解Java虚拟机一 虚拟机内存管理机制 深入理解Java虚拟机二 虚拟机类加载机制 深入理解Java虚拟机三 垃圾回收机制一、如何确定对象已死虚拟机的垃圾收集策略自动为我们管理虚拟机的内存空间,当某个对象“已死”,虚拟机就会在适当的时机将该对象占用的内存释放。如果你是一个思维灵活的人,那么你应该看出这句话的几个要点了。如何判断对象是否“已死”,或者说已经不再使用了呢? 如何释放这些对象占用的内存?

2020-06-27 12:48:24

java 类加载器,SPI机制,spring factories的原理

java的SPI机制打破双亲委派进行加载类。约定条件如下:1、当一个服务提供者提供了一个接口的具体实现后,在该服务打的jar包里的META-INFO/services目录下创建一个以接口全限名为命令的文件,文件里的内容为接口的实现类。2、将这个jar包放入到主程序的classPath中。...

2020-05-01 13:38:52

java NIO及IO模型介绍

NIO: 使用的对外内存。三大组件:Channel:通道,通道有点像流,数据可以从Channel读到Buffer中。通过linux底层对网络io或文件io建立通道。 FileChannel,DatagramChannel,SocketChannel,ServerSocketChannel //在和服务端连接成功之后,为了可...

2020-04-25 14:43:08

springboot 用war包部署

由jar变成warpom.xml:<packaging>jar</packaging>如果是上面的打包方式,启动方式则为mvn packagejava -jar target/mymodule-0.0.1-SNAPSHOT.jar改变成warpom.xml:<packaging>war</packaging> <...

2020-04-03 00:33:33

ArrayBlockingQueue数组队列的实现原理及实现一个demo

ArrayBlockingQueue数组队列的实现原理:1、对一个数组进行添加和取出数据操作。2、其中的put和get用同一把lock锁进行互斥操作,控制多线程并发情况。3、当put方法中,数组满时,通过lock下的conditionA 调用await方法阻塞当前线程(LockSupport.park方法)并释放了lock锁,并将阻塞线程存入到队列中。4、由于3步骤已经释放了lock锁,...

2020-03-29 22:49:51

ThreadPoolExecutor线程池实现原理

一、java线程池ThreadPoolExecutor组成结构:1、核心线程数corePoolSize:当每次excute方法时,如果当前使用线程数小于核心线程数,则创建线程。2、最大线程数maxPoolSize: 当核心线程数使用完了,队列装满了,且使用线程数还未超过最大线程数,就可以继续创建线程。3、keepAliveTime: 当使用线程数大于核心线程数,且空闲时间超过keepAli...

2020-03-29 01:10:16

java AQS、CountDownLatch、ReentrantLock锁实现原理

ReentrantLock原理:通过CAS指令 + AQS队列实现对线程加锁。结构:ReentrantLock实现接口Lock的lock()和unLock()方法,内部有两个内部类公平锁FairSync和非公平锁NonfairSync,这两个类均继承了AbstractQueueSynchronizer(里面存有Node双向链表组成一个队列,还有head,tail节点,state状态,waitS...

2020-03-24 00:14:22

java中的AtomicInteger的详细原理

这个原理在网上搜索了很多都没搞清楚真正原因,后来参照了一个帖子彻底解决了我的疑问:https://blog.csdn.net/qq_34115899/article/details/830188701、首先确定实例域在class文件中的偏移量位置。这个偏移量设置在valueOffset中,即如下代码2、当调用当外部调用incrementAndGet或addAndGet等方法时,会调用...

2020-03-22 16:14:00

Spring常用的一些扩展功能

1、实现接口BeanPostProcessor的postProcessAfterInitialization和postProcessBeforeInitialization方法。 监听一个bean在初始化前或初始化后的处理。 如下图应用: 2、实现接口ApplicationListener。spring提供了监听器监听不同的事件,根据不同的事件在spring加载...

2020-03-09 15:50:20

Spring IOC原理解读:

Spring IOC原理解读:BeanFactory(管理bean的源头或入口)BeanDefinition(bean的定义信息,将xml转为java信息,每个对象都包含了bean配置的属性信息)BeanRegistry(创建bean的地方,类:DefaultSingletonBeanRegistry, 方法:beforeSingletonCreation(beanName))一、加载...

2020-03-12 01:02:38

java的动态代理机制详解

java的动态代理机制:jdk的proxy代理:首先实现InvocationHandler接口,在实现类中注入目标对象。在通过Subject proxySubject = (Subject)Proxy.newProxyInstance(subject.getClass().getClassLoader(),subject.getClass().getInterfaces(),ha...

2019-08-29 22:33:54

kafka与rocketmq区别

1、kafka单机tps比rocketmq高一点。2、kafka消息失败不支持重试。3、kafka的topic越多,性能越差,原因是kafka的topic消息存多个partition,topic越多,partition越多,磁盘io效率降低。 rocketmq一个broker机器上所有topic消息都存一个commitlog文件,并且数据对应到commitQueue队列,并且使用了l...

2019-08-29 22:33:38

java内存模型

java内存模型:堆,栈,方法区堆:存储 new的对象,数组引用变量的实体对象。栈:方法内的基本变量,对象的引用。方法区:类的模板,类的变量,类的静态方法。...

2019-08-29 22:33:30

红黑树的理解

一、红黑树要达到自平衡的二叉树,必须满足下面5个性质:1、每个节点要么是黑色,要么是红色。2、根节点是黑色。3、每个红色节点的两个子节点一定是黑色。4、任意一个节点到每个子节点的路径都包含相同梳理的黑节点。(所以一个节点存在一个黑子节点,那肯定两个子节点都是黑色)5、每次添加的新节点,都是红色。二、红黑树需要通过变色,左旋,右旋达到平衡:左旋:旋转点往左边下沉,以某个节...

2019-08-29 22:33:22

mysql的left join ,right join ,inner join详解

mysql中的left join, right join, inner joinA加油卡表:id, userName, cardNo 1 aaa 111 2 bbb 111 3 aaa...

2019-08-15 17:44:38

spring事件监听机制

自定义spring事件:如下,自定义一个event,listener, 通过SimpleApplicationEventMulticaster广播事件。SimpleApplicationEventMulticaster initialMulticaster = new SimpleApplicationEventMulticaster();initialMulticaster.a...

2019-08-15 17:17:17

ucc动态配置项

首先声明一个雷,UccClientBean 实现 InitializingBean(spring的)。在afterPropertiesSet方法中,启动单定时任务线程池 Executors.newSingleThreadScheduledExecutor,再执行 scheduledExecutor.scheduleWithFixedDelay(new BlockingThread(), 3, 5,...

2018-06-12 14:05:17

ElasticSearch-head插件安装

下面说ElasticSearch-head插件在ElasticSearch-5.3.1中的安装使用:1.安装nodejs环境1) wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz2) tar -zxvf node-v4.4.7-linux-x64.tar.gz3) export PAT...

2018-02-27 17:22:02

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。