- 博客(15)
- 资源 (1)
- 收藏
- 关注
原创 如何设计一个排行榜?
使用 Redis 的 Sorted Set(有序集合)是实现排行榜的高效方案。Sorted Set 通过。如需按分数和时间排序,可将时间戳作为二级分数存入另一个 Sorted Set,查询时用。Redis 默认按分数排序,相同分数按字典序排。命令添加成员和分数,自动按分数排序。分数可以是整数或浮点数,排序默认从高到低(直接覆盖旧分数或通过。若需获取用户排名,使用。更新用户分数时,使用。
2026-05-30 17:56:22
193
原创 如何设计一个动态线程池?
动态调整核心在于运行时修改线程池参数,需通过暴露接口或配置文件实现。核心参数包括核心线程数(corePoolSize)、最大线程数(maximumPoolSize)和工作队列容量(queueCapacity)。默认拒绝策略(如AbortPolicy)可能不满足生产需求,需根据场景选择或自定义策略。通过定时采集线程池状态指标实现监控,关键指标包括活跃线程数、队列大小、任务完成数、拒绝任务数等。动态调整需设置合理边界,例如核心线程数不低于最小值、队列容量不超过内存限制。
2026-05-30 17:41:25
236
原创 JVM&框架
扫描类路径,解析Bean定义并注册到容器中。依赖注入通过构造器注入、Setter注入或字段注入完成,容器在初始化时通过反射实例化Bean并解决依赖关系。JDK代理要求目标类实现接口,CGLIB则直接继承目标类生成子类代理。容器关闭时,单例Bean会被销毁,原型Bean需手动管理。Spring IOC通过反射机制和工厂模式实现。基于动态代理(JDK动态代理或CGLIB)实现。定义切面,代理对象在方法调用前后插入增强逻辑(如。,通过读取XML配置或注解(如。
2026-02-07 18:29:02
644
原创 并发编程常见问题和原理
核心思想通过CLH队列管理线程排队,以state变量表示锁状态。子类实现定义获取/释放锁的逻辑。关键机制同步队列:双向链表结构,线程获取锁失败时加入队列并自旋或阻塞。条件队列实现条件等待,唤醒后移入同步队列。独占/共享模式:支持独占锁(如ReentrantLock)和共享锁(如Semaphore)。流程示例获取锁:调用,失败则入队并阻塞(通过释放锁:调用,唤醒后继节点。
2026-02-06 00:15:36
864
原创 常见集合问题
两者都不是线程安全的。负载因子默认为0.75,当元素数量超过数组长度乘以负载因子时,会触发扩容操作,扩容后的数组大小为原数组的两倍。JDK1.8优化了这一过程,通过高位运算确定元素在新数组中的位置,减少了重新计算哈希值的开销。扩容机制与JDK1.7类似,但引入了树化(链表转红黑树)和反树化(红黑树转链表)的过程。在JDK 8及之后的HashMap实现中,当链表长度超过阈值(默认为8)且桶数组长度≥64时,链表会转换为红黑树。JDK1.8的迭代器实现更加高效,尤其是在处理红黑树时,提供了更好的遍历性能。
2026-02-05 23:51:15
596
原创 类加载机制和双亲委派模型,如何打破双亲委派
loadClass默认双亲委派逻辑在中实现。直接重写该方法可绕过委派:java复制插入@Override// 自定义逻辑直接加载类Class<?return c;复制插入。
2026-02-04 21:27:40
244
原创 Spring事务的传播机制和隔离级别,@Transactional失效的场景
若抛出受检异常需通过。Spring基于代理实现事务,非public方法无法被代理拦截。事务信息通过ThreadLocal存储,跨线程时事务上下文丢失。如MySQL的MyISAM引擎不支持事务,需使用InnoDB。代理无法覆盖final/static方法,导致事务失效。类内部方法调用(如A方法调用B方法),即使B方法有。需通过注入自身代理或拆分Bean解决。捕获异常后未重新抛出,事务无法感知异常。Spring定义了七种事务传播行为,通过。或XML未配置事务管理器。
2026-02-01 14:01:17
328
转载 MySQL 高性能优化规范tips
数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符 临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 bak_为前缀并以日期 (时间戳) 为后缀 所有存储相同数据的列名和列类型必须一致(一般作为关联列,如果查询时关联列类型不一致会自动进行数据类型隐式转换,会造成列上的索引失效,导致查询效率降低)数据库基
2022-02-01 22:00:17
231
转载 MySQL 基础
关系型数据库介绍顾名思义,关系型数据库就是一种建立在关系模型的基础上的数据库。关系模型表明了数据库中所存储的数据之间的联系(一对一、一对多、多对多)。关系型数据库中,我们的数据都被存放在了各种表中(比如用户表),表中的每一行就存放着一条数据(比如一个用户的信息)。有哪些常见的关系型数据库呢?MySQL、PostgreSQL、Oracle、SQL Server、SQLite等(微信本地的聊天记录的存储就是用的 SQLite) 。MySQL 介绍MySQL 是一种关系型数据库,主要用于持
2022-02-01 20:45:37
930
转载 数据库基础知识
什么是数据库, 数据库管理系统, 数据库系统, 数据库管理员?数据库 : 数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。 数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。 数据库系统 : 数据库系统(Data Base System,简称 DBS)通常由软件、数据库和数据管理员(DBA)组成。 数据库管理员 : 数据库管理
2022-01-31 16:07:54
1754
翻译 MySQL数据库字符集
MySQL 字符编码集中有两套 UTF-8 编码实现:utf8和utf8mb4。如果使用utf8的话,存储emoji 符号和一些比较复杂的汉字、繁体字就会出错。何为字符集?字符是各种文字和符号的统称,包括各个国家文字、标点符号、表情、数字等等。 字符集就是一系列字符的集合。字符集的种类较多,每个字符集可以表示的字符范围通常不同,就比如说有些字符集是无法表示汉字的。计算机只能存储二进制的数据,那英文、汉字、表情等字符应该如何存储呢?我们要将这些字符和二级制的数据一一对应起来,比如说...
2022-01-31 15:54:37
692
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅