5、线程与并发
synchronized基于Monitor实现,通过CAS设置owner实现加锁,支持锁升级(偏向→轻量级→重量级)。Java 6起优化性能,15后废弃偏向锁。相比volatile仅保证可见有序,synchronized还保证原子性;相较Lock,其为关键字,自动释放锁,但功能较简单。
数组(顺序存储)基本原理
本章讲解数组的底层原理,区分静态数组与动态数组。静态数组是连续内存空间,支持O(1)随机访问,但增删效率低;动态数组基于静态数组封装,提供自动扩容和常用API,使用更便捷。我们将从零实现一个动态数组,掌握其增删查改机制,理解常见数据结构的底层逻辑,为后续学习栈、队列、哈希表打下基础。
数组(顺序存储)基本原理
本章讲解数组的底层原理,区分静态与动态数组。通过静态数组实现动态数组的增删查改,揭示随机访问O(1)的成因与连续内存的利弊,助你理解数据结构本质。
04 | 状态检索:如何快速判断一个用户是否存在?
本文探讨高效判断对象是否存在的技术方案,对比有序数组、二叉树、哈希表的查询性能,引出位图与布隆过滤器。位图利用bit级存储,节省空间;布隆过滤器通过多哈希函数压缩数组长度,实现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字)