首页
   VOID
取消

Springboot autoconfiguration最佳实践

简介 在spring初始化阶段,主要是要根据某些Resource资源找到对应的BeanDefinition,然后再初始化,注入依赖。 BeanDefinition生成主要有两种方式: 第一种: 通过Resource读取对应的资源,再配合对应的BeanDefinitionReader将这些资源解析成BeanDefinition注册到BeanDefinitionRegistry中。 第二种: 直...

Threadpoolexecutor

接口/类 说明 Executor 顶级执行器接口 ExecutorService 线程池封装接口,封装了线程池的关闭,提交任务,批量执行的方法 AbstractExecutorService 线程池...

分布式ID

生成方式 UUID 数据库 数据库自增 数据库集群 数据库区段 基于redis

Best Practice of coding

CAS Lock Free 当某一个属性可能会被并发更新的时候,我们可以通过锁的方式进行同步,避免出现多线程问题。但是这个锁的粒度是在应用层的,粒度大。 因此我们可以借助java的cas特性,在应用层无需加锁也能保证属性的多线程并发的安全性。 我们可以使用JUC中的中的Updater类,将某一个类中的某个属性封装成一个Updater对象,多线程更新的这个属性的时候,可以 直接使用这个Upd...

Netty HashWheelTimer

HashWheelTimer功能是添加一个任务,指定在一段时间后执行。只执行一次,不可定时循环执行。 优点: 添加和删除的时间复杂度都是O(1)。添加的时候是直接添加到一个队列中。删除的时候并不是直接移除,而是给这个timeout设置一个cancel的标志位。 缺点: 不能定时重复执行定时任务 单线程执行,如果任务执行时间长会影响后面的任务执行 不适合创建那些时间跨度大的,...

XXL-JOB定时任务生成策略解析

一. 数据模型 XXL-JOB定时任务的生成依靠两个数据实现,一个是保存在数据库中的jobinfo,一个是保存在内存中的时间轮数据。 1.1 jobinfo xxl-job的定时任务信息模型是包含运行时的执行信息的,并不是一个静态的定时任务的信息登记, 而是包括了这个定时任务运行时信息的追踪。 jobinfo包含两部分信息: 定时任务的静态元数据信息,例如任务的名称,ID,触发...

数据库连接池配置

日常开发中,我们时常会用到数据库连接池进行管理数据库连接。 数据库连接池的配置主要有两大块配置构成: 数据库连接池的配置,控制连接池的行为,例如最大最小连接数,获取链接的超时时间等 数据库连接的配置,控制每条数据库连接的行为,例如soTimeout读取数据等待时间 一. 数据库连接池配置 具体配置可以在连接池的官网进行查询: c3p0 连接池配置 hikaricp ...

数据库并发的安全控制

不管是数据库还是别的程序,控制并发的正确执行都是一项最基本的要求的功能。控制并发的本质都是通过加锁的方式进行实现的,各种并发控制的本质 是对锁粒度的控制优化,以及根据应用的具体使用程序进行特定场景的优化,例如数据库,读多写少的MVCC MVCC 主动加锁 行锁 原理 影响范围 验证排查 表锁 原理 影响范围 验证排查 意向锁 详解 MySql InnoDB 中意向...

Linux 中断

专业名词 含义 irq/中断信号 Interrupt Request hwirq hardware irq 硬件中断号 中断向量号 cpu规定的中断标准号 IPI ...

Linux IO栈

一. 简介 什么是io(input/output)? 就是对数据的操作。所有需要操作IO的地方都需要 io相关的知识涉及到哪些方面的? 二. IO指标 【iops】 发生实际io调度的次数,决定一块硬盘的速度的快慢除了看磁盘的速率,iops也是一个很关键的指标, 这个指标影响着你需要打开很多小文件时的速率。 【io速率】 io带宽的速度,就是看每秒钟能读取的数据量。 【io时延】 每...