存储

首页 标签 存储
# 存储 #
关注
192973内容
倒排索引:如何从海量数据中查询同时带有「极」和「客」的唐诗?
本文介绍倒排索引技术,通过将内容作为关键词建立索引,实现高效检索。对比正排索引的O(n)遍历查询,倒排索引可在O(1)时间内定位含指定字的唐诗,并通过归并有序链表快速求交集,解决“同时含‘极’和‘客’”等多条件查询问题,广泛应用于搜索引擎、数据库全文检索等场景。
特别加餐 | 倒排检索加速(一):工业界如何利用跳表、哈希表、位图进行加速?
本文深入解析工业界如何利用跳表、哈希表和位图加速倒排索引的交集运算。通过跳表实现快速跳跃查找,哈希表提升小集合匹配效率,位图及Roaring Bitmap优化存储与计算,结合实际场景分析各类技术的适用条件与性能权衡,揭示搜索引擎背后的高效检索原理。(238字)
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,替换为原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List,导致反射可绕过泛型限制。类型检查发生在编译期,针对引用而非对象本身。擦除后通过桥方法解决多态冲突,自动插入类型转换,但不支持基本类型、静态成员不能使用类级泛型参数,且instanceof无法用于泛型类型判断。
One Trick Per Day
初始化Map建议用Guava指定预期大小,避免扩容;禁用Executors创建线程池,防止OOM,应手动通过ThreadPoolExecutor或Guava方式创建;Arrays.asList返回不可变集合,禁止修改操作;遍历Map优先使用entrySet或forEach提升性能;SimpleDateFormat非线程安全,建议用ThreadLocal或JDK8新时间API;并发修改记录需加锁,推荐乐观锁配合version机制。
特别加餐丨倒排检索加速(二):如何对联合查询进行加速?
本文深入探讨联合查询的加速方法,针对倒排索引中复杂查询场景,系统介绍四种工业级优化技术:调整次序法通过优化求交/并集顺序降低计算代价;快速多路归并法利用跳表提升多列表合并效率;预先组合法提前计算高频查询结果;缓存法则借助LRU机制动态存储热点组合,显著提升检索性能。
整合Logback
整合Logback实现滚动记录与多文件输出,按日志类型分类存储(如INFO、ERROR、SQL等),通过logback-spring.xml配置多appender,结合Logger命名空间精确控制输出。Java示例展示如何使用LogProxy获取指定日志文件的Logger实例,实现精细化日志管理,提升系统可维护性与排查效率。(238字)
学习数据结构和算法的框架思维
本文系统梳理数据结构与算法核心思想:所有数据结构本质为数组或链表的变形,基本操作均为遍历与访问;算法本质是穷举,关键在于“无遗漏”和“无冗余”。掌握框架思维,方能以不变应万变,高效刷题。
二叉树基础及常见类型
二叉树是最核心的数据结构之一,不仅是红黑树、堆、字典树等复杂结构的基础,更体现了递归思维的本质。掌握二叉树,等于掌握算法解题的钥匙。从满二叉树到完全二叉树,再到二叉搜索树,各类变体应用广泛。其链式存储与哈希表表示法在算法题中灵活实用,是刷题进阶的必经之路。
状态检索:如何快速判断一个用户是否存在?
本文探讨如何高效判断用户是否存在,对比有序数组、二分查找树和哈希表后,引出更优方案:位图与布隆过滤器。位图以bit为单位存储,大幅节省空间;布隆过滤器通过多哈希函数降低冲突概率,虽有一定误判率,但查询效率达O(1),适用于注册去重、爬虫去重等场景,是提升系统性能的关键技术。
1-MongoDB相关概念
MongoDB适用于高并发、海量数据、高扩展性场景,如社交、游戏、物流、物联网等。适合数据量大、读写频繁、事务要求低的应用,支持快速迭代与水平扩展,满足TB至PB级存储及高可用需求。
免费试用