存储

首页 标签 存储
# 存储 #
关注
192956内容
序列化:对象怎么在网络中传输?
本课讲解RPC框架中的序列化机制,介绍JDK原生、JSON、Hessian、Protobuf等常用序列化方式,分析其性能、体积、兼容性与安全性。重点强调在选型时应优先考虑通用性、兼容性与安全性,其次才是性能与空间开销。同时指出使用中常见问题:对象过繁、过大、继承复杂等,建议入参返回值尽量简洁、扁平、使用原生类型,以提升RPC调用的稳定性与效率。
01 | 线性结构检索:从数组和链表的原理初窥检索本质
本文探讨数组与链表的检索原理及效率。数组支持随机访问,适合二分查找,检索效率为O(log n);链表需顺序遍历,效率为O(n),但插入删除更高效。通过合理组织数据结构,如结合数组与链表优点,可优化检索性能,核心在于快速缩小查询范围。
动态数组代码实现
本文详解动态数组的底层实现,涵盖自动扩缩容、索引越界检查与内存泄漏防范三大关键点,结合Java代码演示增删查改操作及扩容机制,帮助理解数据结构设计原理。
Map
本文介绍Java开发中的6个实用技巧:避免HashMap初始化容量误区,推荐Guava工具;禁用Executors创建线程池以防OOM,建议手动定义参数;Arrays.asList返回不可变列表,禁止修改操作;遍历Map优先使用entrySet提升性能;SimpleDateFormat非线程安全,应避免static使用;并发更新记录时合理选用乐观锁或悲观锁机制。
Java基础
初始化Map宜用Guava指定预期大小,避免扩容;禁用Executors创建线程池,防止OOM,推荐手动定义或使用Guava;Arrays.asList返回不可变列表,禁止修改操作;遍历Map优先使用entrySet或forEach;SimpleDateFormat非线程安全,建议用Java 8时间类替代;并发修改记录需加锁,推荐乐观锁配合version机制。
索引构建
搜索引擎如何为万亿网页构建索引?通过分治与多路归并,将文档拆分为小集合,在内存中生成倒排索引后写入磁盘,再合并多个有序临时文件,最终生成全局倒排文件。词典可加载至内存或用B+树管理,实现高效检索。该过程类似MapReduce,支持分布式扩展。
Docker安装Redis
本文介绍Docker安装Redis 6.0.8的单机版与实际应用版配置,涵盖容器卷映射、配置文件设置及集群存储算法。重点解析哈希取余、一致性哈希与哈希槽分区算法,说明Redis集群为何采用16384个槽,及其在数据分布、节点扩容与网络开销间的权衡设计。
树结构
树结构通过二叉搜索树(BST)实现二分查找:每个节点左子树值小于根,右子树值大于等于根。查找时从根节点出发,比较目标值与当前节点值,决定向左或右子树递归,每次排除一半数据,时间复杂度为O(log n),实现高效检索。
6、JVM 虚拟机
JVM堆内存布局因垃圾回收器而异:传统GC将堆分为老年代和年轻代(Eden、S0、S1),G1则划分为多个Region,可动态充当Eden、Survivor、老年代或巨型对象区。常用垃圾回收算法有标记-清除(快但碎片化)、标记-整理(无碎片,较慢)和标记-复制(无碎片,适合存活对象少的场景)。
数据库检索
本文探讨如何用B+树为海量磁盘数据建立高效索引。由于磁盘访问远慢于内存,关键在于减少磁盘I/O次数。B+树通过多路平衡查找、节点大小匹配磁盘块、顺序访问优化等方式,显著提升磁盘数据检索效率,广泛应用于MySQL等数据库系统。
免费试用