上一页 1 2 3 4 5 6 7 8 9 10 ··· 23 下一页
摘要: 再Synchronized和ReetrantLock的区别: 1.Synchronized可以对静态方法,普通方法,代码块加锁。自动加锁释放锁。ReetrantLock需要手动的加锁释放锁,加锁前需要创建一个ReetrantLock对象2.Synchronized是非公平锁,竞争获取。Reetran 阅读全文
posted @ 2023-03-15 09:04 NobodyHero 阅读(22) 评论(0) 推荐(0)
摘要: copyOnWrite容器用途 写时复制机制,在修改操作时,复制一个副本,修改副本,再修改完后再替换回去。避免了高并发期间的竞争。 使用场景: 对于一些读多写少的数据,写时复制的做法就很不错,例如配置、黑名单、物流地址等变化非常少的数据,这是一种无锁的实现,可以帮我们实现程序更高的并发 CopyOn 阅读全文
posted @ 2023-03-14 01:07 NobodyHero 阅读(38) 评论(0) 推荐(0)
摘要: 读写锁有哪些? juc的locks包的readwriteLock接口和ReentrantReadWriteLock类来实现。 ReentrantReadWriteLock: 最常见的读写锁,读共享,写互斥。可重入。 锁降级:获取写锁,获取读锁,释放写锁。 需要严格按照这三步来做,获取读锁是为了让其他 阅读全文
posted @ 2023-03-12 22:12 NobodyHero 阅读(24) 评论(0) 推荐(0)
摘要: 1.CLH队列的实现 SMP(对称多处理器结构),保证CPU的内存一致性,但是可能内存访问冲突和资源浪费。 NUMA(非一致存储访问),将CPU分模块,每个模块多CPU组成,具有独立本地内存和插槽进行互联互通。本地内存的速度远高于系统其他节点的内存速度。 普通的自旋锁: 对某一原子变量,例如当前线程 阅读全文
posted @ 2023-03-11 22:28 NobodyHero 阅读(66) 评论(0) 推荐(0)
摘要: 今日目标(AQS): AQS(抽象队列同步器): 相当于实现锁的一系列模板方法。 如果要实现锁,需要: 1.锁是否被占用的状态值。 2.阻塞/唤醒 3.竞争失败的队列 AQS中: state:状态信息,不同的锁的用途不同 Node:阻塞队列等的节点信息(pre,next,thread)都是用vola 阅读全文
posted @ 2023-03-09 23:29 NobodyHero 阅读(15) 评论(0) 推荐(0)
摘要: Mysql持久性是如何实现的? redolog: CRUD操作后更新整个页到buffer pool中,然后在内存修改数据,但是不会马上刷新到磁盘,如果一条操作去刷新一个页会有性能浪费。 redolog说白了就是一个记录数据修改记录的日志,而且它是循环写入固定文件(会用完空间,binlog追加写不会用 阅读全文
posted @ 2023-03-09 00:14 NobodyHero 阅读(30) 评论(0) 推荐(0)
摘要: 磁盘预读机制: mysql有时会有这样的操作场景,就是对某个大数据量的表进行全表扫描。那么此时会将buffer pool中的缓存页全部淘汰掉,存进这些全表扫描的数据。那么当下一波热点数据的请求进来的时候,就又需要从磁盘去读取数据到缓存页中,会导致IO开销增加。 所以MYSQL对LRU进行了改造,分为 阅读全文
posted @ 2023-03-08 01:41 NobodyHero 阅读(19) 评论(0) 推荐(0)
摘要: 写入慢: 1.合并sql来降低日志量,降低日志刷盘的数据量和频率,从而提高效率。 例如: insert into 表 (对应字段) values (插入的行数据); insert into 表 (对应字段) values (插入的行数据) -->合并成一个sql: insert into 表 (对应 阅读全文
posted @ 2023-03-07 00:35 NobodyHero 阅读(20) 评论(0) 推荐(0)
摘要: 建索引的几大原则 1.最左前缀匹配原则,非常重要的原则,mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c 阅读全文
posted @ 2023-03-03 18:40 NobodyHero 阅读(31) 评论(0) 推荐(0)
摘要: 高性能Mysql第四版P190~204 学习记录: 联接查询: 对于Union查询,mysql先把一系列单个查询放在临时表,然后再重新读出临时表中的数据完成Union查询。 在Mysql的概念中,联接作用于每个查询,所以对临时表的读取也是一次联接。 Mysql执行联接的策略是:先在一个表取出单条数据 阅读全文
posted @ 2023-03-02 23:43 NobodyHero 阅读(22) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 8 9 10 ··· 23 下一页