如何实现定时任务以及延迟任务 定时任务多种实现单点系统 ScheduledExecutorService类: ScheduledExecutorService是Java SE5中新增的一个定时任务执行器,它可以比Timer更精准地执行任务,并支持多个任务并发执行。通过调用ScheduledExecutorService.schedule()或ScheduledExecutorService.scheduleAtFixedRa 2023-07-10
谈谈InnoDB四大特性 Change Buffer 旧版Insert Buffer,只对insert生效,而Change Buffer对CUD都生效 只对非唯一索引生效,在写过程中,先判断数据索引页是否在缓冲池中,如果不在则加入Change Buffer,按一定的频率进行合理地合并,再写回disk中,减少IO带来的性能损耗 Double Write(页副本) Doublewrite缓存是位于系统表空间的存储区域,用来缓 2023-07-03
基于本地消息表实现最终一致性 实现 这个方案的主要思想是将分布式事务拆分为本地事务和消息事务两个部分,本地事务在本地数据库中进行提交或回滚,而消息事务则将消息写入消息中间件中,以实现消息的可靠投递和顺序性。 一般来说的做法是,在发送消息之前,先创建一条本地消息,并且保证写本地业务数据的操作和写本地消息记录的操作在同一个事务中。这样就能确保只要业务操作成功,本地消息一定可以写成功。 然后再基于本地消息,调用MQ发送远程消息。 2023-07-02
关于MESI的一些事 MESI:最终一致性 M(Modified):代表该缓存行中的内容被修改了,并且该缓存行只被缓存在该CPU中。这个状态的缓存行中的数据和内存中的不一样,在未来的某个时刻它会被写入到内存中(当其他CPU要读取该缓存行的内容时。或者其他CPU要修改该缓存对应的内存中的内容时 当我们要修改变量时,需要等待B-CPU将变量S变为I,也就是等待ACK响应,当A-CPU收到B响应时才能将变量进行修改 以此引入 2023-06-28
记SQL优化 起因线上查询接口响应迟缓,达到2s延迟以上,通过生产接口测试,接口响应延时达到5s以上。通过简单接口测试排查得出单表(任务执行表,包含任务执行状态,参数,关联字段)sql查询时间较长。 原因 接口sql涉及表数据量过大(1000W-60多字段,包含temple等大字段) 打印sql,sql分析explain 联合索引字段覆盖较少,导致扫描索引全表后仍进行大量回表查询操作 表数据量过多 order 2023-06-28
分布式锁常见实现 实现方式数据库第一种 当我们要锁住某个方法或资源时,我们就在该表中增加一条记录,想要释放锁的时候就删除这条记录。 CREATE TABLE `methodLock` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键', `method_name` varchar(64) NOT NULL DEFAULT ' 2023-06-15
关于索引覆盖与索引下推 索引覆盖 覆盖索引(covering index)指一个查询语句的执行只用从索引中就能够取得,不必从数据表中读取。也可以称之为实现了索引覆盖。 当一条查询语句符合覆盖索引条件时,MySQL只需要通过索引就可以返回查询所需要的数据,这样避免了查到索引后再返回表操作,减少I/O提高效率。 如,表covering_index_sample中有一个普通索引 idx_key1_key2(key 2023-06-14
Async注解有什么缺点 缺点 @Async中关于线程池的使用部分在AsyncExecutionInterceptor中,在这个类中有一个getDefaultExecutor方法, 当我们没有做过自定义线程池的时候,就会用SimpleAsyncTaskExecutor这个线程池。 @Override protected Executor getDefaultExecutor(BeanFactory beanFactory 2023-06-12
浅谈接口幂等问题 解决 解决接口幂等问题,只需要记住一句口令”一锁、二判、三更新”,只要严格遵守这个过程,那么就可以解决并发问题。 一锁:第一步,先加锁。可以加分布式锁、或者悲观锁都可以。但是一定要是一个互斥锁! 二判:第二步,进行幂等性判断。可以基于状态机、流水表、唯一性索引等等进行重复操作的判断。 三更新:第三步,进行数据的更新,将数据进行持久化。 三步需要严格控制顺序,确保加锁成功后进行数据查询和判断,幂等性 2023-05-30
HTTP版本发展 发展历程HTTP是什么 HTTP 是超文本传输协议,HTTP 不是互联网,也不是编程语言,是一种协议。HTTP 通常跑在 TCP/IP 协议栈之上,依靠 IP 协议实现寻址和路由、TCP 协议实现可靠数据传输、DNS 协议实现域名查找、SSL/TLS 协议实现安全通信。 HTTP 是一个用在计算机世界里的协议。它使用计算机能够理解的语言确立了一种计算机之间交流通信的规范,以及 2023-05-26