自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 quartz任务定时器(简介、Spring整合Quartz、CORN)

quartz简介定时任务处理,quartz及Spring整合quartz去快速解决企业开发中的任务调度问题。quartz是开源且具有丰富特性的“任务调度库”,能够集成于任何的Java应用,任务job被定义为标准的Java组件,能够执行任何你想要实现的功能。quartz调度包含许多企业级的特性,如JTA事务、集群的支持。简言之,quartz就是基于Java实现的任务调度框架,用于执行任何你想要执行的任务。quartz应用案例第一步:导入jar包;第二步:获取一个实例;第三步:创建一个任务;第四

2024-01-16 17:56:26 858

原创 MySQL主从复制(概念和作用、实战、常见问题和解决办法、扩展、GTID同步集群、集群扩容、半同步复制)

1.2 主从复制的步骤1.3 搭建主从同步实战1.3.4 主从复制的问题和解决方法1.7 半同步复制(保证不丢失数据)

2023-05-29 18:32:50 1366

原创 ShardingSphere系列四(Sharding-JDBC内核原理及核心源码解析)

使用ShardingSphere提供的SPI扩展点,实现自定义分布式主键生成策略。

2023-05-08 23:50:59 758

原创 ShardingSphere系列一(MySQL主从架构及读写分离实战(搭建主从集群、MySQL高可用方案MHA、分库分表概念))

这个工具专门用于监控主库的状态,当发现master节点故障时,会提升其中拥有新数据的slave节点成为新的master节点,在此期间,MHA会通过其他从节点获取额外的信息来避免数据一致性方面的问题。整个服务的性能是会有所下降的。在基于GTID的复制中,首先从服务器会告诉主服务器已经在从服务器执行完了哪些事务的GTID值,然后主库会有把所有没有在从库上执行的事务,发送到从库上进行执行,并且使用GTID的复制可以保证同一个事务只在指定的从库上执行一次,这样可以避免由于偏移量的问题造成数据不一致。

2023-05-08 23:49:00 1044

原创 MySQL系列三(定位慢SQL、索引优化、SQL优化)Using filesort

1. 慢SQL1.1 定位慢SQL(慢查询日志)1.2 慢SQL优化整体思路2. 索引失效的场景3. 索引优化4. SQL语句优化Using filesort

2023-05-08 23:36:31 1453

原创 MySQL进阶(UNION和UNION ALL的区别、HAVING、CASE WHEN、自定义排序、SQL关键字、SQL语句执行顺序、自增主键不一定连续)

在 SQL 中增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。HAVING 子句可以让我们筛选分组后的各组数据。例如:查找总访问量大于 200 的网站。

2023-04-18 22:27:52 638

原创 Redis底层String的存储结构(动态字符串,simple dynamic string,SDS)、通信协议RESP

Redis由于各种原因,并没有直接使用了C语言的字符串结构,而是对其做了一些封装,    得到了自己的简单动态字符串(simple dynamic string, SDS)的抽象类型。     Redis中,默认以SDS作为自己的字符串表示。    只有在一些字符串不可能出现变化的地方使用C字...

2023-04-18 22:07:33 320

原创 MySQL系列四(Online DDL、Online DDL的Alter、批量删除导致IO出现瓶颈)

线上临时表积压数据过多,虽然有索引和数据归档,但是每日新增数据量>删除&归档数量,导致整体数据操作效率变慢。所以提交数据库删除工单,结果导致线上数据库半个小时内整个数据库集群链接不可用。

2023-04-18 21:38:55 721

原创 Spring系列三(Spring容器的启动流程)

基于 java-config 技术分析源码,所以这里的入口是 AnnotationConfigApplicationContext ,如果是使用 xml 分析,那么入口即为 ClassPathXmlApplicationContext ,它们俩的共同特征便是都继承了 AbstractApplicationContext 类,而大名鼎鼎的 refresh()便是在这个类中定义的。

2022-12-20 21:45:50 74

原创 Spring系列四(Spring Bean的加载流程)

2.4 获取单例:getSingleton(String beanName, ObjectFactory

2022-12-20 21:45:02 788 1

原创 Redis的数据过期清除策略、内存淘汰策略(8种)

1. Redis的数据过期清除策略:定期删除 + 惰性删除2. Redis的缓存淘汰策略3. Redis中的LRU和LFU算法

2022-12-01 00:02:12 1402

原创 Dubbo简单使用

文章目录1. Dubbo简单使用1.1 服务提供者1.2 服务消费者1. Dubbo简单使用1.1 服务提供者第一步:将服务提供者注册到注册中心(暴露服务)(1)导入dubbo依赖(com.alibaba.dubbo)由于注册中心使用的是ZooKeeper,所以得引入操作ZooKeeper的客户端curator;dubbo 2.6 以前的版本引入zkclient操作ZooKeeper...

2022-10-06 22:38:01 127

原创 Redis三种集群模式(主从复制replication、哨兵sentinel、Cluster)

文章目录1. Redis集群1.1 Redis集群容错1.2 Redis集群中的一致性问题1.3 Redis集群架构2. Redis主从复制3. Redis哨兵模式Redis哨兵模式工作原理1. Redis集群Redis集群是可以在多个Redis节点之间进行数据共享的架构。Redis集群通过分区容错(Partiton)来提高可用性(Availability),即使集群中有一部分节点失效或者无法进行通信,集群也可以继续处理请求。Redis集群通过以下手段实现高可用、高性能:数据分片:将数据切分到多个

2022-10-06 22:36:28 904

原创 RocketMQ篇四(保证消息不丢失、保证消息顺序、快速处理消息积压、消息轨迹、消息位点)

1. RocketMQ如何保证消息不丢失1.1 Producer端1.1.1 同步发送、重试3次、集群部署1.1.2 生产者使用事务消息机制保证消息零丢失1.2 Broker同步刷盘+Dledger主从架构保证MQ自身不会丢消息1.3 Consumer消费者端消费确认1.4 RocketMQ特有的问题:NameServer挂了如何保证消息不丢失?1.5 RocketMQ消息零丢失方案总结2. 使用RocketMQ如何保证消息顺序3. RocketMQ如何快速处理积压消息4. Rocket

2022-08-22 22:55:03 2087

原创 RocketMQ篇三(源码解读、NameServer启动、Broker启动、Broker注册、Producer、消息存储、Consumer消费者、延迟消息)

RocketMQ源码

2022-08-21 22:25:06 1953

原创 RocketMQ篇二(消息重试、死信队列、死信消息、消息幂等、延迟消息、顺序消息、消息过滤)

1. 消息重试1.1 如何让消息进行重试1.2 重试消息如何处理2. 死信队列、死信消息3. 消息去重/消息幂等(防止消息重复消费)4. 定时消息(延迟消息)5. 顺序消息6. 消息过滤7. 回溯消费8. 事务消息

2022-07-17 13:09:25 5872

原创 RocketMQ篇一(基本概念、集群组成、部署类型、存储机制(介质、结构、刷盘机制、主从复制)、消息防丢失、负载均衡)

文章目录入门消息重试(重试队列)生产端重试消费端重试延迟消息发送延迟消息顺序消费1、messageDelayLevel 是设置重试时间间隔还是延时队列时间间隔的?messageDelayLevel 是设置延时队列时间间隔的。消息异常重试时也有用到。2、默认重试次数和时间间隔是多少?默认情况下都是重试16次,使用延时等级配置的时间。入门其代码结构清晰优秀,底层采用Netty框架进行NIO通信。内部使用轻量级的NameServer进行服务发现和动态路由,提高了服务性能,并且支持消息失败重试机制。

2022-07-17 13:08:40 1145

原创 Kafka篇二(SpringBoot整合Kafka)

文章目录SpringBoot整合Kafka事务SpringBoot整合Kafkapom.xml:<dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>2.2.6.RELEASE</version></dependency>a

2022-05-16 20:25:43 160

原创 Dubbo高可用(ZooKeeper宕机、Dubbo直连、负载均衡、服务降级、服务容错、整合Hystrix

高可用:通过设计,减少系统不能提供服务的时间。ZooKeeper宕机现象:ZooKeeper注册中心宕机,还可以消费Dubbo暴露的服务。原因:注册中心全部宕机后,服务提供者和服务消费者仍能通过本地缓存通信;监控中心宕机不影响使用,只是丢失部分采样数据;数据库宕机后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务;注册中心对等集群,任意一台宕机后,将自动切换到另一台;服务...

2020-09-11 15:49:31 618 1

原创 Nginx代理(正向代理、反向代理)、负载均衡、动静分离、缓存

文章目录1. 正向代理与反向代理1.1概念2. 负载均衡2.1 负载均衡概念2.2 负载均衡的配置2.2.1 配置一般轮询负载均衡2.2.2 加权负载均衡2.2.3 ip_hash负载均衡2.2.4 利用第三方模块3. 缓存3.1 缓存实现原理对于一个大型网站来说,随着网站访问量的快速增长,单台服务器已经无法承担用户的并发访问,必须采用多台服务器协同工作,以提高计算机系统的处理能力、计算速度,从...

2020-09-01 22:36:26 1315 1

原创 Dubbo原理(RPC&Netty原理)

RPC原理一次完整的RPC调用流程如下(同步调用,异步另说):服务消费方(client)调用以本地调用方式调用服务;client stub(客户端代理)接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;client stub找到服务地址,并将消息发送到服务端;server stub收到消息后进行解码(序列化与反序列化);server stub根据解码结果调用本地的服务;...

2020-07-27 22:26:50 171

原创 JVM系列二(JVM结构深度解析:JVM整体结构及内存模型、内存参数设置、对象创建过程、内存分配流程)

Java内存区域划分程序计数器:存放下一条要执行的程序的指令的地址,每个线程都有一个程序计数器,它们之间互不影响。即程序计数器是线程私有的。Java虚拟机栈:保存了局部变量、部分结果,并参与方法的调用和返回。也是线程私有的。本地方法栈:本地方法栈和Java虚拟机栈的功能相似,Java虚拟机栈用于管理Java函数的调用,而本地方法栈用于管理本地方法(Native方法)的调用。也是线程私有的。..................

2020-07-19 22:07:13 293 1

原创 MySQL系列二(Explain执行计划详解、执行计划的局限性)

文章目录1、 建索引对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引2、select子句中尽量避免使用*,只查询用到的字段。3、 where子句比较符号左侧避免函数尽量避免在比较符号的左侧出现表达式、函数等操作,因为会导致全表扫描,增加运行时间。所以,为了提高效率,可以把where子句中遇到函数或加减乘除的运算移到比较符号的右侧。4...

2020-07-19 19:03:27 211 1

原创 Dubbo入门(特性、核心组件、调用过程)

文章目录1. Dubbo(开源分布式服务框架)1.1 Dubbo的特性1.2 Dubbo分层1.3 Dubbo的核心组件1.4 Dubbo总体调用过程1. Dubbo(开源分布式服务框架)Dubbo(读音[ˈdʌbəʊ])是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 [1] Spring框架无缝集成。Dubbo是一款高性能、...

2020-07-19 18:45:32 982

原创 ShardingSphere系列二(ShardingSphere实现分库分表)

当业务系统逐渐增大时,单库单表不足以支撑起整个业务,性能会急速下降,这是就需要分库分表;垂直拆分垂直分库垂直分库针对的是系统中的不同业务进行拆分。如用户一个库,订单一个库、商品一个库…分库之后减小了单库的压力,但单机压力并不会缓解多少,可以通过把库放到不同的服务器上解决。垂直分表“大表拆小表”,基于列字段进行拆分。一般是对表中的字段较多的表进行拆分,将不常用的、数据较大、长度较长的拆分到...

2020-07-19 18:35:55 1457 1

原创 Spring事务失效的原因

Spring的@Transactional注解控制事务有些情况下会有不生效的情况:数据库引擎不支持事务;Bean没有被Spring管理;方法不是public的;数据源没有配置事务管理器;自身调用问题;异常被吃了;异常类型错误。数据库引擎不支持事务以MySQL为例,其MyISAM引擎是不支持事务操作的,InnoDB才是支持事务的引擎,一般要支持事务都会使用InnoDB。注:从...

2020-02-22 09:56:40 291

原创 分布式锁(Redis分布式锁的问题、锁超时、Redlock、Redission)

由于锁没有同步成功,线程B就可以获取同个key的锁,这就会出现线程A还没执行完,线程B又来执行,导致并发安全问题。如果设置锁的超时时间为10s,程序没执行完但是锁已经被释放了,线程2重新获得锁,但是线程1执行完删除了线程2的锁,导致其他线程重新获得锁,可以使用。分布式锁是指所有服务中的所有线程都去获取同一把锁,但只有一个线程可以成功的获得锁,其他没有获得锁的线程必须全部等待,直到持有锁的线程释放锁。,同一把锁在上锁时设置不同的uuid,删除锁时判断是否是当前线程的锁,如果是,就删除,如果不是,就不删除。

2019-12-31 15:23:54 1688 1

原创 Nginx入门、下载安装启动(Win10)、常用配置

文章目录1. Nginx简介2. 下载安装启动3. Nginx的常用基本配置3.1 Nginx配置文件结构3.2 设置用户和组3.3 自定义错误页1. Nginx简介Nginx是一个轻量级开源Web服务器软件,可以作为反向代理、负载均衡、缓存服务器使用。Nginx是为高并发网站的应用场景而设计的。Nginx具有高性能、稳定性好、结构模块化、配置简单、资源消耗非常低等特点。具体可参见官网:Ngi...

2019-12-26 14:07:23 4044 1

原创 Dubbo注册中心(ZooKeeper)

文章目录1. 注册中心概述2. 注册中心的工作流程3. 注册中心的原理3.1 ZooKeeper做注册中心的原理1. 注册中心概述在Dubbo微服务体系中,注册中心是其核心组件之一。Dubbo通过注册中心实现了分布式环境中各服务之间的注册与发现,是各个分布式节点之间的纽带。其主要作用如下:动态加入(服务注册/暴露):一个服务提供者通过注册中心可以动态地把自己暴露给其他消费者,无须消费者逐个...

2019-12-20 16:55:15 886 1

原创 ZooKeeper的shell操作命令

文章目录ZooKeeper的shell操作命令ZooKeeper的shell操作命令使用help命令可查看ZooKeeper的shell操作可用的命令,如下:[zk: localhost:2181(CONNECTED) 4] helpZooKeeper -server host:port cmd args stat path [watch] set path...

2019-12-18 20:15:49 1120

原创 ZooKeeper配置参数详解

ZooKeeper的配置文件zoo.cfg内容如下:# The number of milliseconds of each ticktickTime=2000# The number of ticks that the initial # synchronization phase can takeinitLimit=10# The number of ticks that can ...

2019-12-18 17:18:50 781

原创 ZooKeeper入门、下载安装配置启动

Apache ZooKeeper是由Apache Hadoop的子项目发展而来,如今已是Apache的顶级项目。ZooKeeper为分布式应用提供了诸多如统一命名服务、配置管理、分布式锁等分布式的基础服务。在解决分布式数据一致性方面,ZooKeeper并没有直接采用Paxos算法,而是采用了一种被称为ZAB(ZooKeeper Atomic Broadcast,ZooKeeper原子广播协议)的一...

2019-12-18 17:00:07 183

原创 Redis单线程执行却快的原因(IO多路复用)、为什么Redis是单线程、Redis6.0 的多线程

文章目录redis单线程执行却快的原因(IO多路复用)

2019-12-06 16:04:35 912

原创 MySQL事务(ACID、隔离级别、不一致性)、锁、行锁、表锁、MVCC

看这篇文章之前先看一下另一篇博客:事务1、数据库怎么保证事务的ACID?原子性和隔离性:由事务管理器和MVCC(多版本管理系统)来控制。一致性:由主键、外键、触发器等保证。持久性:由预写日志(WAL)和数据库管理系统的恢复子系统保证。表锁mysql> flush table with read lock;加锁Query OK, 0 rows affected (0.01 sec...

2019-12-05 11:17:01 472

原创 MySQL系列一(索引、常见索引类型、索引下推、回表、聚簇索引与非聚簇索引、索引的数据结构B+树、索引失效的场景)

索引索引是一种可以加快检索速度的结构,类似于目录运用在表中某些字段上,存储索引需要单独占据一定的空间索引的特点:索引一旦建立,数据库会自动对其进行维护,而且由数据库决定何时使用索引使用时不必指定使用的索引,由数据库决定使用哪个索引索引分类:普通索引:最基本的数据库索引,没有任何限制唯一索引:唯一索引不允许两行具有相同的索引值主键索引:为表建立一个主键就会自动创建主键索引...

2019-12-05 10:29:03 868 1

原创 并发编程八(线程池、ThreadPoolExecutor、参数设置、优雅关闭线程池、使用建议)

1. 线程池2. 创建线程池3. ThreadPoolExecutor的核心参数4. 任务提交给线程池之后的执行流程5. 线程池参数设置6. 线程池的五种状态7. 线程池中可用于执行任务的方法

2019-12-03 18:43:21 1594 1

原创 并发编程三(同步器、synchronized原理、synchronized的优化)

1. 同步器的意义2. 如何解决线程并发安全问题?3. synchronized3.1 synchronized底层原理4. synchronized的优化

2019-12-03 09:03:54 198

原创 并发编程五(AQS应用之BlockingQueue(同步阻塞队列))

文章目录1. Queue、Deque、BlockingQueue2. BlockingQueue3. BlockingQueue的实现类(7种)3.1 ArrayBlockingQueue3.2 LinkedBlockingQueue3.3 PriorityBlockingQueue3.4 DelayQueue3.5 SynchronousQueue3.6 LinkedBlockingDeque3...

2019-12-02 21:43:54 496

原创 CopyOnWriteArraySet(不完整)

文章目录1. CopyOnWriteArraySet2. CopyOnWriteArraySet原理1. CopyOnWriteArraySetCopyOnWriteArraySet是在CopyOnWriteArrayList的基础上使用了Java的装饰器模式,很多方法如底层使用了CopyOnWriteArrayList来存储数据,remove()方法调用CopyOnWriteArrayLis...

2019-12-02 19:31:50 155

原创 并发编程四(AQS、ReentrantLock、ReadWriteLock接口和ReetrantReadWriteLock实现类)

1. AQS1.1 CAS1.2 AQS特性1.3 AQS源码分析1.4 AQS的常用实现类2. ReentrantLock2.1 ReentrantLock特性2.2 ReentrantLock底层原理2.3 ReentrantLock和synchronized的区别3. ReadWriteLock接口和ReetrantReadWriteLock实现类3.1 ReetrantReadWriteLock实现类的特性、方法3.2 ReetrantReadWriteLock原理

2019-12-02 19:10:28 228

空空如也

空空如也

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

TA关注的人

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