logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

synchronized 和 ReentrantLock 到底差在哪——从底层扒到应用场景

这篇文章深入探讨了Java中synchronized和ReentrantLock两种锁机制的底层实现原理与区别。主要内容包括: synchronized的实现原理: 字节码层面通过monitorenter/monitorexit指令实现 利用对象头中的Mark Word存储锁状态信息 重量级锁依赖ObjectMonitor和操作系统Mutex 锁升级机制(JDK15后默认禁用偏向锁) Reentr

#java#jvm#开发语言
新手数据库进阶:大白话图解MySQL的“数据页防弹衣”

要理解Doublewrite Buffer,我们首先得搞清楚操作系统和MySQL在“页”大小上的代沟。在常见的Linux操作系统中,文件系统页(OS Page)的默认大小是4KB。而MySQL InnoDB引擎为了减少磁盘I/O次数,将其数据页(Page)的默认大小设置为了16KB。这就带来了一个很尴尬的问题:当MySQL要把内存中一个16KB的脏页刷入磁盘时,操作系统无法一次性写完,必须将其拆分

#数据库#mysql
面试准备(Reids存粹问题版)

简单来说,Redis Cluster 是 Redis 官方提供的分布式数据库解决方案。在 Redis 3.0 之前,想做分布式只能靠客户端分片或者借助 Codis 这类代理中间件。而 Cluster 模式是官方原生支持的,实现了数据的分布式存储,允许我们将数据自动分片存储在多个节点上。

#面试#java
面试准备(Java的面试问题)

选择 8 是基于泊松分布的概率计算。在理想的 hash 分布下,链表长度达到 8 的概率只有千万分之六,属于极端情况。这时候转红黑树能把查询从 O(n) 优化到 O(log n)。退化阈值选 6 而不是 8,是为了避免频繁转换。如果都是 8,那在 8 附近增删元素会导致链表和红黑树反复转换,浪费性能。中间留个缓冲区(7),增加稳定性。补充一点:转红黑树还有个前提是数组长度要大于 64,否则优先扩容

#面试
学习苍穹外卖——寻找git 的本地仓库

这里列出了当前项目中所有被识别为版本控制目录的路径及其对应的版本控制系统(VCS)。你应该能看到你的项目根目录被关联到了 Git。在 IntelliJ IDEA 中,进入 File > Settings(对于 macOS 是 IntelliJ IDEA > Preferences)。在设置窗口中,选择 Version Control > Git。作为一个 Git 仓库,并且你已经在该环境下进行了提

文章图片
#学习#git
到底了