05 2022 档案
摘要:BIO 同步阻塞IO 服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销。 适用于连接数目小,并发小。 NIO同步非阻塞IO 服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用
阅读全文
摘要:一、引⾔ 提起Redis,我们经常会说其底层是⼀个单线程模型,但这是不严谨的。Redis 单线程指的是⽹络请求模块使⽤了⼀个线程,即⼀个线程处理所有⽹络请求,其他模块该使⽤多线程, 仍会使⽤了多个线程。既然是单线程模型,那么CPU不是Redis的瓶颈。Redis的瓶颈最有可能是机器内存或者⽹络带宽。
阅读全文
摘要:threadlocal里面使用了一个存在弱引用的map,当释放掉threadlocal的强引用以后,map里面的value却没有被回收.而这块value永远不会被访问到了. 所以存在着内存泄露. 最好的做法是将调用threadlocal的remove方法. 在threadlocal的生命周期中,都存
阅读全文
摘要:经过我之前的实践,可以看出 NESTED事务申明在调用者上会新建一个独立事务。申明在被调用者上,若调用者存在事务则加入调用者事务。调用者不存在事务则新建一个独立事务。 这个功能好像和spring默认的事务传播行为REQUIRED一样的? 不,它的功能可是比REQUIRED要强大! 我来通过实验证明N
阅读全文
摘要:explain执行计划包含的信息 其中最重要的字段为:id、type、key、rows、Extra 各字段详解 id select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序 三种情况: 1、id相同:执行顺序由上至下 2、id不同:如果是子查询,id的序号会递增,id值
阅读全文
摘要:一、简介 MySQL 慢查询日志是排查问题 SQL 语句,以及检查当前 MySQL 性能的一个重要功能。 查看是否开启慢查询功能: mysql> show variables like 'slow_query%'; + + + | Variable_name | Value | + + + | sl
阅读全文
摘要:首先说明一下,锁升级和锁降级说的根本不是一个事情,锁升级是synchronized关键字在jdk1.6之后做的优化,锁降级是为了保证数据的可见性在添加了写锁后再添加一道读锁,锁降级请参考链接1。本文主要针对锁升级介绍。 一、锁升级 之前介绍过synchronized关键字,synchronized关
阅读全文
摘要:一、如何保障mysql和redis之间的数据一致性? 在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问Mysql等数据库。这样可以大大缓解数据库的压力。Redis缓存数据的加载可以分为懒加载和主动加
阅读全文
摘要:一、Redis内存淘汰的必要性 我们都知道redis的性能很高,最主要的原因之一就是redis的数据都在内存中放着,我们在从redis中获取数据或者更新redis中的数据时,都是操作的内存中的数据。而当内存被占满了之后怎么办呢?这时就有必要将一些数据清理掉,以便新的数据能够放到redis中。而清理掉
阅读全文
摘要:一、ThreadPoolExecutor的重要参数 1、corePoolSize:核心线程数 * 核心线程会一直存活,及时没有任务需要执行 * 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 * 设置allowCoreThreadTimeout=true(默认false)时,
阅读全文
摘要:1、为什么要有内存屏障 为了解决cpu,高速缓存,主内存带来的的指令之间的可见性和重序性问题。 我们都知道计算机运算任务需要CPU和内存相互配合共同完成,其中CPU负责逻辑计算,内存负责数据存储。CPU要与内存进行交互,如读取运算数据、存储运算结果等。由于内存和CPU的计算速度有几个数量级的差距,为
阅读全文
摘要:一、常用引擎间的区别 MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高。当然同时它也不会存在死锁问题。 而 InnoDB 与 MyISAM 的最大不同有两点:一是 InnoDB 支持事务;二是 InnoDB 采用了行级锁。 在 Mysql 中,行级锁并不是直接
阅读全文
摘要:一、代码优化 发现接⼝实现类中有个地⽅做了代码同步控制synchorized,分析后感觉没必要就去掉了,性能提⾼到7秒左右,虽然提⾼了,⼤还是不⾏,进⼀步优化。 二、数据库配置修改01 数据库安装时,没有修改任何配置,全部为默认配置,⽹上查询解决⽅案: (一)解决方案 set global sync
阅读全文