领域模型图(数据架构/ER图)
本文介绍如何通过四色原型法进行领域建模,构建数据架构中的ER图。以风控系统为例,依次解析关键流程、识别时标性原型(MI)与参与方-地点-物品原型(PPT),补充角色(Role)和描述(DESC),最终提炼出实体关系图(ER图),实现从业务到数据模型的转化。
IO/线程 Thread.sleep(0) 到底有什么用(读完就懂)
本文深入解析Thread.Sleep的原理与应用,结合操作系统调度机制,揭示Sleep(1000)未必准时唤醒、Sleep(0)主动让出CPU等行为的本质,帮助开发者正确理解线程休眠与CPU竞争的关系。
MyBatis 常见配置
本文介绍了MyBatis的核心配置机制,包括属性加载优先级(方法参数 > resource/url > properties元素)、常用配置项如缓存、延迟加载、执行器类型等,并详解了多环境配置方式及事务管理(JDBC与MANAGED)。适用于需掌握MyBatis配置原理的开发者。
5-MongoDB实战演练
本文介绍某头条文章评论系统的设计与实现,基于SpringDataMongoDB构建微服务,完成评论的增删改查、按文章ID查询、分页查询及点赞功能。采用MongoDB存储数据,通过索引优化查询性能,使用MongoTemplate实现高效字段更新,提升系统响应速度。
Thread.sleep(0) 到底有什么用(读完就懂)
本文深入解析了Thread.Sleep函数的工作原理,通过生动的“分蛋糕”比喻,对比Unix时间片与Windows抢占式调度机制,阐明Sleep(1000)不保证精确唤醒、Sleep(0)实为触发CPU重新竞争等核心概念,揭示多线程下CPU调度的真实行为。
1-MongoDB相关概念
MongoDB是一款高性能、无模式的文档型NoSQL数据库,适用于高并发读写、海量数据存储及高扩展性需求场景。其灵活的BSON文档模型、丰富的查询功能和分布式架构,使其广泛应用于社交、游戏、物联网等领域。
ArrayList扩容机制
本文深入解析Java中ArrayList的add及扩容机制。通过源码分析,详解add方法如何调用ensureCapacityInternal、ensureExplicitCapacity及grow方法实现动态扩容,揭示其容量每次增长1.5倍的核心逻辑,并区分length、length()与size()的使用场景。
One Trick Per Day
初始化Map应避免直接指定容量,建议使用Guava的newHashMapWithExpectedSize或手动计算扩容阈值。严禁使用Executors创建线程池,易导致OOM,推荐通过ThreadPoolExecutor或Guava方式自定义线程池。Arrays.asList返回不可变集合,禁止修改操作。遍历Map时优先使用entrySet提升性能。SimpleDateFormat非线程安全,禁用static修饰,推荐ThreadLocal或Java 8新时间API。并发修改记录需加锁,低冲突场景可选乐观锁配合version字段。