5、线程与并发
synchronized基于Monitor实现,通过CAS设置owner实现加锁,支持锁升级(偏向→轻量级→重量级)。Java 6起优化性能,15后废弃偏向锁。相比volatile仅保证可见有序,synchronized还保证原子性;相较Lock,其为关键字,自动释放锁,但功能较简单。
数组(顺序存储)基本原理
本章讲解数组的底层原理,区分静态数组与动态数组。静态数组是连续内存空间,支持O(1)随机访问,但增删效率低;动态数组基于静态数组封装,提供自动扩容和常用API,使用更便捷。我们将从零实现一个动态数组,掌握其增删查改机制,理解常见数据结构的底层逻辑,为后续学习栈、队列、哈希表打下基础。
数组(顺序存储)基本原理
本章讲解数组的底层原理,区分静态与动态数组。通过静态数组实现动态数组的增删查改,揭示随机访问O(1)的成因与连续内存的利弊,助你理解数据结构本质。
04 | 状态检索:如何快速判断一个用户是否存在?
本文探讨了高效判断对象是否存在的技术方案,对比有序数组、二叉搜索树和哈希表后,重点介绍位图与布隆过滤器。位图利用bit节省空间,实现O(1)查询;布隆过滤器通过多哈希函数进一步压缩空间,适用于允许误判的快速存在性检测场景,广泛用于缓存、爬虫等系统中。
实用工具:VS Code 配置 Markdown 编译器全指南
本文介绍如何在VS Code中配置高效Markdown写作环境,通过启用内置预览、安装Markdown All in One与Markdown Preview Enhanced插件,并配置Princexml实现PDF等格式导出,全面提升编辑、预览与输出效率,适合程序员、学生及内容创作者使用。
数组(顺序存储)基本原理
本章讲解数组的底层原理,区分静态数组与动态数组。静态数组是连续内存空间,支持O(1)随机访问,但增删效率低;动态数组基于静态数组封装,自动扩容并提供便捷API,广泛用于实际开发。通过手动实现动态数组,理解其增删查改机制及时间复杂度,为学习更复杂数据结构打下基础。(239字)
12 | 非精准 Top K 检索:如何给检索结果的排序过程装上加速器?
本文介绍了非精准 Top K 检索的优化思路及三种实现方法:基于静态质量得分排序截断、胜者表利用词频打分、分层索引两阶段检索。核心思想是将复杂计算前置到离线阶段,在线时快速截断,降低打分开销。该方法广泛应用于搜索与推荐系统,通过召回+排序两阶段架构,在保证结果质量的前提下显著提升检索效率。