自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 数据结构==B-树==

(每次 IO 仅能读取一个节点),二叉树的高树高会导致大量 IO 次数,性能急剧下降。子节点数与关键字数的关系:子节点数 = 关键字数 + 1(B 树的核心关联规则)。趋势(如 100 万条数据,树高约 20),而外存操作的核心成本是。各节点的关键字 / 子节点数范围(需熟记,为插入分裂打基础)。关键字的有序性和叶子节点的同层性(B 树平衡的两大保证)。以 **m=3 阶 B 树(2-3 树)二叉树的树高随数据量增长呈。

2025-12-14 20:00:52 291

原创 数据结构==LRU Cache ==

LRU Cache 是算法与开发中的高频考点,核心在于哈希表 + 双向链表的组合使用,重点掌握数据结构的协同逻辑、getput方法的业务逻辑,难点在于哑节点的设计和双向链表的指针操作。在实战中,需注意线程安全和边界条件处理,也可利用 Java 自带的 LinkedHashMap 快速实现 LRU,或使用 Redis 等中间件实现分布式缓存。

2025-12-12 17:02:30 732

原创 并查集(Union-Find)数据结构

定义:并查集是一种抽象数据类型(ADT),专门用于处理n 个不同元素的不相交集合的合并(Union)与查询(Find)问题,能高效管理元素的所属集合关系。应用场景:适用于需要动态维护集合归属、判断元素是否同属一个集合的场景。例如:公司校招学生组队(从互不相识的小分队合并为朋友圈)、城市连通性(省份划分)、变量等式 / 不等式关系校验等。

2025-12-11 20:33:31 1007

原创 哈希切割、位图、布隆过滤器 (针对超大数据量处理场景)

会议围绕「超大数据量(100亿/100G级)无法直接加载内存」的共性问题,展开三大算法思想的应用讲解,每个思想对应具体每个思想对应具体题目、解法细节及拓展延伸,同时明确各环节重难点。关键逻辑通过图片注释直观呈现,辅助理解核心流程。

2025-12-10 19:53:06 849

原创 数据结构==布隆过滤

布隆过滤器是由 Burton Howard Bloom 在 1970 年提出的紧凑型概率型数据结构,核心目标是解决 “海量数据的存在性快速判断” 问题,本质是哈希函数 + 位图(BitSet)的组合设计,弥补了传统哈希表空间利用率低、纯位图仅支持整数存储的缺陷。核心价值:以极小的空间开销和 O (1) 的时间复杂度,实现海量元素的存在性判断(无漏判,有可控误判);适用场景边界:仅关注 “存在性”,不关注元素的具体内容获取(无法从过滤器中提取元素本身)。

2025-12-09 20:02:21 710

原创 位图(BitSet)核心知识与自定义实现

以下为基于byte数组实现的自定义位图类,已修正变量名拼写错误,并补充逻辑注意点注释:java运行/*** 自定义位集(BitSet)实现类* 基于byte数组存储位信息,每个byte占8位,可高效存储和操作大量布尔状态(位标记)* 核心逻辑:通过数组索引定位byte元素,通过位索引定位byte内的具体位,利用位运算完成置1/置0/查询操作*//*** 存储位数据的byte数组:每个byte元素可表示8个位的状态(0/1)

2025-12-09 16:29:32 360

原创 数据结构===红黑树===

代码展示int val;1.4红黑树的插入红黑树是在二叉搜索树的基础上加以平衡限制条件,因此红黑树的插入可以分为两部:1,按照二叉搜索的树规则插入新节点2,检测新节点插入后,红黑树的性质是否造到破坏因为新节点的默认颜色是红色,因此:如果其双亲节点的颜色是黑色,没有违反红黑树任何性质,则不需要 调整;但当新插入节点的双亲节点颜色为红色时,就违反了性质三不能有连在一起的红色节点,此时需要对 红黑树分情况来讨论:1,插入的节点是根节点➡️直接变黑。

2025-12-07 16:23:47 450

原创 数据结构==二叉平衡树,AVL树 ===

/ 当前节点的平衡因子=右子树高度-左子树的高度。

2025-12-04 19:39:40 833

原创 字符串常量池与String.intern() &&HashMap 底层实现 &&反射机制

本文摘要: 本文详细解析了Java三大核心模块:1.String的intern()方法,重点分析JDK不同版本下字符串常量池的存储差异和内存优化;2.HashMap源码,深入讲解JDK1.7和1.8的底层结构差异、扩容机制和哈希冲突解决方案;3.反射机制,全面介绍Class对象获取、成员访问和动态调用方法等核心功能。每个模块都包含底层原理、代码演示、重点难点、易错点和面试常见问题,并配有版本差异说明和性能优化建议。文章既涵盖必须掌握的基础知识,也提供了扩展延伸内容,适合不同层次的Java开发者学习参考。

2025-12-02 20:32:34 994

原创 哈希桶,元素插入逻辑实现

4,核心知识:通过哈希运算实现O(1)级别的查找/插入效率,用链表地址解决哈希冲突。1,哈希桶的核心结构:数组加链表(数组负责快速定位,链表负责解决哈希冲突);3,插入流程:(put方法)计算下标➡️检查重复key➡️插入/更新节点。2,节点设计:封装key,value,和next指针,支持链表式存储。

2025-12-02 20:18:48 898

原创 数据结构===Map/Set (2)===

哈希表是一种通过哈希函数将键映射到存储位置的高效数据结构,实现O(1)时间复杂度访问。其核心包括:1)哈希函数设计需满足定义域全覆盖、值域合法和均匀分布;2)冲突处理分为开放地址法(线性/二次探测)和链地址法(哈希桶);3)负载因子控制(Java默认0.75)通过扩容降低冲突率。实际应用包括统计词频、查找唯一数字等,Java中的HashMap采用数组+链表/红黑树结构,通过扰动函数优化哈希分布。哈希表以空间换时间,是处理快速查找问题的首选数据结构。

2025-11-22 19:38:34 638

原创 数据结构===Map/Set + 搜索树===

【代码】数据结构===Map/Set + 搜索树===

2025-11-18 12:13:35 675

原创 排序算法的相关讨论

核心作用:解决自定义对象(如 Student、Card)无法直接比较的问题,让 PriorityQueue 支持复杂对象的有序管理。实现逻辑:要么让自定义类实现 Comparable 接口(内部定义排序规则),要么传入 Comparator(外部定义排序规则),本质是为对象提供 “可比较性”。典型用途按对象属性排序(如 Student 类按年龄升序、Card 类按花色 + 点数排序)。灵活切换排序规则(如同一批商品,可通过不同 Comparator 实现按价格升序 / 销量降序排序)。

2025-11-10 20:21:21 915

原创 数据结构==排序==

本文介绍了常见的排序算法实现,主要包括插入排序(直接插入排序、希尔排序)、选择排序(简单选择排序、双向选择排序)、交换排序(冒泡排序、快速排序)以及堆排序。详细阐述了每种算法的核心思想、实现步骤和代码示例,包括时间复杂度分析(如O(N²)、O(NlogN))和空间复杂度(O(1))。特别对快速排序进行了优化,提出三数取中法、小范围插入排序和非递归实现。最后通过测试类验证了各排序算法的正确性。文章采用Java语言实现,代码规范清晰,是学习经典排序算法的实用参考资料。

2025-11-06 19:28:51 358

原创 数据结构==优先级队列与堆==

1,堆的核心概念 2,节点下标关系公式(父子节点互推) 3,堆的创建逻辑(向下调整 实现) 4,堆的插入操作(向上调整 实现) 5,时间复杂度推导(向下调整建堆 O (n)、向上调整 O (nlogn)) 堆(Heap)是一种基于完全二叉树的数据结构,它通过“父节点值始终大于等于子节点(大顶堆)或始终小于等于子节点(小顶堆)”的规则维护元素优先级,便于快速获取并删除优先级最高(或最低)的元素。重点解释 交换操作是核心:通过与最后一个元素交换,避免数

2025-11-01 13:10:28 965

原创 二叉树问题讨论(部分内容待补充)

本文总结了二叉树相关算法实现,包括: 树结构判断:相同树、子树、对称树、平衡树的递归解法 树操作:反转二叉树、创建二叉树(递归和栈实现)、分层遍历(队列实现) 遍历算法:前序/中序/后序的非递归实现(栈实现) 高级应用:最近公共祖先(递归和哈希表实现)、根据遍历序列重建树、二叉树字符串表示 核心要点: 递归是解决树问题的主要方法 栈和队列是实现非递归遍历的关键数据结构 平衡判断需结合高度计算 前序+中序可唯一确定二叉树结构 非递归遍历需要注意节点访问顺序和状态保存

2025-10-25 18:57:37 758

原创 树与二叉树研讨

/ 二叉树节点类,用于存储单个节点的信息// 节点存储的值(字符类型)// 左孩子引用(指向当前节点的左子节点,默认为null)// 右孩子引用(指向当前节点的右子节点,默认为null)// 构造方法:创建节点时初始化value,left和right默认null// 无需手动给left/right赋值,默认值为null。

2025-10-21 09:32:09 920

原创 数据结构===栈===

栈是一种特殊的线性表,其特殊性体现在对数据操作的 “限制性”—— 仅允许在表的一端(称为 “栈顶”)进行插入和删除操作,而表的另一端(称为 “栈底”)则固定不动。(跟手枪弹夹一样只能从一头操作)

2025-10-17 19:12:17 268

原创 数据结构==最小栈和队列实现讨论==

能够在O(1)时间复杂度内获取栈 的最小值的特殊栈结构先进先出(FIFO)的数据结构,元素从队尾入队,从队头出队。

2025-10-12 18:30:41 346

原创 数据结构==栈的理解和代码案例===

【代码】数据结构==栈的理解和代码案例===

2025-10-10 13:44:21 571

原创 数据结构==链表的代码案例==

指向节点 2,形成环),要求高效判断(时间复杂度 O (n),空间复杂度 O (1))。),新链表由原链表所有节点拼接而成,不创建新节点(仅调整指针)。公共节点定义为 “地址相同”(非值相同),且链表相交后呈。),找出它们的第一个公共节点(示例中为。若单链表有环,返回入环的第一个节点(如。)合并为一个新的升序单链表(如。(禁止用数组存储节点值)。判断单链表是否为回文(如。判断单链表是否存在环(如。型,因每个节点只有一个。,x=36,分割后为。

2025-10-08 13:48:56 587

原创 数据结构==顺序表==

【代码】数据结构==顺序表==

2025-10-07 19:49:32 365

原创 数据结构==ArrayList及链表==

执行prev.next=prev.next.next。特殊处理头节点直接删除head=head.next。先绑定后面然后再和前面进行绑定。找到删除的节点的前一个节点。特殊位置采用头插尾/插法。检查判断所应是否合法。

2025-10-07 19:25:50 424

原创 数据结构与 Java

Java 有 8 种基本数据类型(int、char、double 等),但它们不是类,无法调用方法(如将 int 转成字符串),也不能作为泛型的类型参数(如 ArrayList<int>报错)。定义:8 种基本类型各对应一个包装类,仅 2 个特殊,其余均为 “基本类型首字母大写”:特殊:int→Integer、char→Character;普通:byte→Byte、short→Short、long→Long、float→Float、double→Double、boolean→Boolean;

2025-09-25 11:00:50 912

原创 数据结构===包装

简单说就是:把intdouble这些基础类型,变成它们对应的包装类(IntegerDouble)的过程。就像把散装的糖果(基础类型)放进漂亮的礼盒(包装类)里。和装箱相反:把IntegerDouble这些包装类,变回intdouble这些基础类型的过程。就像把礼盒里的糖果拿出来,变回散装的。包装类:基础类型对应的 "对象版",有很多实用方法;装箱:基础类型→包装类(自动装箱靠valueOf()拆箱:包装类→基础类型(自动拆箱靠xxxValue()面试题要注意Integer。

2025-07-10 22:49:12 385

原创 数据结构基础准备

1,数据结构是计算机中,它关注数据元素之间的关系以及对数据的操作(如插入、删除、查找等)。简单来说,数据结构 = 数据 + 结构。2,主要用于。

2025-07-10 21:53:47 199

原创 异常(啊啊啊啊)

在Java中,将程序执行过程中发生的不正常行为称为异常 1,算数异常2. 数组越界异常3. 空指针异常1. Throwable:是异常体系的顶层类,其派生出两个重要的子类, Error 和 Exception2. Error:指的是Java虚拟机无法解决的严重问题,比如:JVM的内部错误、资源耗尽等,典型代表: StackOverflowError和OutOfMemoryError,一旦发生回力乏术。3. Exception:异常产生后程序员可以通过代码进行处理,使程序继续执行。比如

2025-05-30 12:23:59 826

原创 String

(4)compareTolgnoreCase() 与compareTo()的方法类似但是可以忽略大小写的比较。甲:先按字典次序大小比较,如果出现不等的字符, 直接返回这两个字符的差值(ASCII码值)2xxx.toUpperCase()和xxxx.toLowerCse()方法的使用。(2)“A.equals(B)”比较的是内容(返回值是boolean类型)。(3)“compareTo()” 比较的是(看代码)(返回值类型是int)。注意:1,字符“|”,“*”,“+”都得加上转义字符,前面加上“\\”;

2025-05-28 16:20:13 606

原创 抽象类 接口 Object类

如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 注意:抽象类也是类,内部可以包含普通方法和属性,甚至构造方法(1)抽象类不能实例化对象(抽象类的实例化限制是针对父类本身的,而不是子类。)(2)抽象类的方法不能用是private的(3)抽象方法不能被final和static修饰,因为抽象方法要被子类重写(4)抽象类必须被继承(必需在子类中重写一遍父类的方法),并且继承后子类要重写父类中的抽象方法,否则子类也是抽象类,必须要使用 abstract 修 饰 抽象类本身不

2025-05-13 11:42:04 728

原创 修饰词的介绍(父子类之间的传递)

(1)用private修饰以后的name(子类的name ) 直接爆红(1)用 其他修饰以后的name(子类的name ) 一切正常(1)用 protected修饰以后的name(子类的name )在同一包内

2025-05-10 21:45:03 686

原创 向上转型和向下转型

子类给父类引用无需强制转换。

2025-05-10 21:11:14 262

原创 Java 继承中 super 和 this 关键字用法、代码块执行顺序及访问权限等知识

在开发中,如果一些类和成员主要是为了供同一个包内的其他类协作使用,而不希望被其他包的代码访问,使用`default`权限可以实现一定程度的封装和访问控制。在同一个包内,`protected`成员的访问权限和`default`类似,即可以被同一个包中的其他类访问。而在不同包的情况下,只有子类才能访问`protected`成员,非子类无法访问。访问权限最为宽松,被`public`修饰的成员可以在任何地方被访问,无论在同一个包还是不同包的类中,只要能获取到相应的对象或类,就可以访问其`public`成员。

2025-05-06 16:45:01 814

原创 有关于idea的技巧

按Insert键即可。

2025-05-05 18:19:13 179

原创 对象和类的代码案例

System.out.println("名字"+this.name+"年龄"+this.age+"学号"+"llllllll"+this.studentnumber+classname);System.out.println(this.year+"年"+this.month+"月"+this.day+"日");boxt.setText2("大型","小米",1.0,0.8,1.0,1.2,"weight");System.out.println(this.name+"正在上音乐课");

2025-05-05 18:10:16 855

原创 Java 小白日记

i < 999999;i++) {//全体放在for循环中是应为我们的I每次走一遍流程后tep count 都需要重新定义。此方法表示的是X的Y次方;}//计算数字i是几位数;Java中的特殊地点和杂乱之处。按Ctrl+d 结束输入;应用案列X型图案的表达。

2025-04-20 21:58:55 320

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除