- 博客(23)
- 收藏
- 关注
原创 java类(class)加载全部细节都在这
如果有下面的情况,类就会被卸载:1. 该类所有的实例都已经被回收,也就是java堆中不存在该类的任何实例。3. 类对应的java.lang.Class对象没有任何地方被引用,无法在任何地方通过反射访问该类的方法。在内存中生成一个代表该类的java.lang.Class对象,作为这个类的各种数据的访问入口。其他类型常量(static final int存储在方法区。字符串常量池仍位于堆中,且元空间与字符串常量池完全分离。常量值)存于字符串常量池。只有字符串字面量(字符串、
2025-05-16 13:45:14
515
原创 MYSAL深分页
深分页优化的核心在于减少数据库扫描的数据量:基于有序的唯一值(如自增ID、时间戳)记录上一页末尾的位置,直接定位下一页起点。:移动端瀑布流、实时数据流等连续分页场景。:通过索引直接返回查询列,避免回表查询。:先通过子查询快速获取目标主键,再关联原表获取完整数据。:禁止过深分页(如仅允许查看前 1000 条),引导用户细化搜索条件。:对静态数据预先计算页码与ID的映射关系,直接定位目标区间。:先获取目标范围的大致ID,再精准查询。
2025-04-06 18:54:23
675
原创 分库分表代码实操
在分库分表架构中,Java代码的查询逻辑会因是否使用中间件(如ShardingSphere)而有所不同。实际开发中,推荐优先使用成熟中间件(如ShardingSphere),仅在特殊场景下手动实现路由逻辑。中间件自动处理分片路由,代码与普通查询几乎无差异,只需配置分片规则即可。若未使用中间件,需在代码中自行计算分片位置并指定表名。
2025-04-01 13:04:31
585
原创 数据库要用间隙锁(Gap Lock)?
有个业务主要逻辑就是新增订单、修改订单、查询订单等操作。然后因为订单是不能重复的,所以当时在新增订单的时候做了幂等性校验,做法就是在新增订单记录之前,先通过 select …for update 语句查询订单是否存在,如果不存在才插入订单记录。:在可重复读(Repeatable Read)隔离级别下,事务A两次读取同一范围的数据,第二次读取时发现其他事务插入的新记录(“幻影行”)。而正是因为这样的操作,当业务量很大的时候,就可能会出现死锁。事务A再次执行相同查询,发现多了一条记录(幻读)。
2025-03-28 13:03:15
978
原创 class跟对象关系?
用于描述类的结构(如字段、方法、构造函数等)。(即对象),分配内存空间并调用构造函数。对象动态创建实例(类似于。同一类加载器下,一个类的。
2025-03-26 18:28:32
541
原创 Spring循环依赖三级缓存如此easy!!
/ 一级缓存:完全初始化的 Bean// 二级缓存:未完全初始化的早期 Bean// 三级缓存:生成早期 Bean 的工厂空间换时间通过三级缓存暂存中间状态,避免重复创建对象。提前暴露引用允许未完全初始化的对象被其他 Bean 引用,打破循环依赖的死锁。分离实例化与初始化将 Bean 的创建过程分解为多个阶段,确保依赖链的逐步构建。
2025-03-25 09:46:06
997
原创 完全理解红黑树和二叉树
完全理解和,需要从基础概念、特性、操作到应用场景逐步深入。:如果插入的数据是有序的(如),BST 会退化为链表,时间复杂度从O(log n)退化为O(n)。:使用(如红黑树、AVL 树)。O(log n)
2025-03-24 09:57:31
559
原创 理解1对1,1对多,多对多?轻松看懂90+%的数据库设计!!!
中间表(关联表)通常用于实现,而。user_id:学生选课(一个学生可选多门课,一门课可被多个学生选)。
2025-03-22 08:15:00
702
原创 你真的知道80端口和8080端口?
通过理解这些设计逻辑,80与8080的“既相似又不同”的关系就清晰了 —— 本质服务于同一协议,但通过端口号区分场景权限,成为Web开发中默契的“黄金组合”80端口和8080端口的“联系”主要源于它们在Web服务中的特殊定位,但二者又因使用场景、权限、惯例产生微妙的差异。
2025-03-21 14:24:12
1456
原创 Java的参数传递机制是**值传递**,无论是基本数据类型还是对象类型
无论是基本数据类型还是对象类型。Java的参数传递机制是。(即内存地址的拷贝)。:传递的是对象引用的。
2025-03-20 18:03:38
763
原创 小白也可以对线面试官,完全理解 Redis 的数据结构
设计的一种紧凑的线性数据结构。它将多个数据项连续存储在一块内存中,适合存储小数据或少量数据。当数据量超过阈值时,Redis会自动将压缩列表转换为更高效的结构(如双向链表或哈希表)。Redis的**有序集合(ZSET)**使用跳表实现(当元素较多或成员较大时)。小白,完全理解 Redis 的数据结构需要一步步来。我会用简单易懂的比喻和例子,帮你彻底搞懂它们的设计和用途。跳表是一种多层有序链表,可以快速查找、插入和删除数据。(空字符)结尾的字符数组,比如字符串。,通过“跳跃”的方式减少比较次数。
2025-03-16 21:34:36
746
原创 Spring Boot中配置WebJars静态资源的作用
Spring Boot中配置WebJars静态资源你晓得有什么用吗?的主要作用是启用对WebJars静态资源的支持。
2025-03-14 21:37:54
487
原创 Redis AOF vs RDB 持久化!!
特性AOFRDB数据安全性高(可配置为秒级/实时持久化)低(依赖快照间隔,可能丢失几分钟数据)性能开销高(频繁 I/O 操作,尤其always模式)低(批量写入,异步生成快照)文件体积大(记录所有写操作)小(二进制压缩)恢复速度慢(逐条回放命令)快(直接加载快照)适用场景对数据安全性要求高,允许一定性能损失对性能敏感,允许少量数据丢失。
2025-03-13 20:01:46
411
原创 什么是序列化(Serialization)?——从通用定义到具体场景的完整解析
序列化(Serialization)是计算机科学中的一个核心概念,它的本质是将数据结构或对象状态转换为一种可存储或可传输的格式,以便后续能够完整恢复原始数据。通用序列化:将数据转换为可存储/传输的格式(如 JSON、二进制)。Java 序列化:通过接口将对象转为字节流。Redis 序列化:将对象转为字符串或二进制存入数据库。核心价值:解决数据在存储、传输、跨系统中的一致性问题。最终目标:让数据在时间和空间中自由流动,同时保持其完整性和可用性。
2025-03-13 12:33:27
1541
原创 分类整理的 Redis 常用操作命令,按数据结构和使用场景分类,方便记忆!!!
核心命令,比如有序集合的ZRANGE、ZADD,集合的SADD、SINTER,事务的 MULTI/EXEC,持久化的SAVE/BGSAVE等。每个类别覆盖了基本操作,没有重复或过于冷门的命令!!还摘录了一些高级功能,比如HyperLogLog、地理空间、流,但这些可能不属于“常用”操作,根据用户的需求,可能实际需要,下面也简要提到!!!
2025-03-12 13:29:54
322
原创 小白吃透synchronized!!
是 Java 中实现线程同步的核心机制,其底层原理涉及。为了减少锁的性能开销,JVM 实现了。的锁信息存储在对象头的。
2025-03-11 18:46:32
985
原创 深入理解ThreadLocal工作原理
大家看了我上一个文章面试常问ThreadLocal!!的从0到1!!小白吃透ThreadLocal-CSDN博客应该懂ThreadLocal的使用场景,了解了ThreadLocal的本质具体流程场景1:首次调用set() 那么,ThreadLocalMap里的Entry是什么时候创建的呢?我记得当调用ThreadLocal的set方法时,可能会触发Entry的创建。比如说,当我们有一个ThreadLocal变量,然后调用它的set方法设置值的时候,线程会检查自己的ThreadLocalMa
2025-03-11 11:13:01
265
原创 面试常问ThreadLocal!!的从0到1!!小白吃透ThreadLocal
Thread、ThreadLocalMap、ThreadLocal 关系与核心机制
2025-03-11 10:48:09
412
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人