- 博客(39)
- 收藏
- 关注
原创 java基础-LinkedHashMap
底层构成:HashMap的数组+链表/红黑树 + 额外的双向链表key哈希完全使用HashMap的哈希机制,确保O(1)查找顺序维护:通过双向链表维护插入顺序或访问顺序设计巧妙:结合了HashMap的快速查找和链表的顺序特性LinkedHashMap通过这种"哈希表+双向链表"的复合结构,既保证了HashMap的快速查找特性,又提供了可预测的迭代顺序,是一个非常精妙的设计!进阶问题。
2026-01-09 15:18:27
218
原创 java基础-HashMap
底层结构:数组 + 链表/红黑树(JDK 8+)扩容机制:容量翻倍,负载因子默认0.75哈希计算计算索引线程不安全:多线程环境下需要同步允许null键和null值时间复杂度查找、插入、删除平均 O(1)最坏情况 O(n) 或 O(log n)(树化后)HashMap 是工程中非常高效的数据结构,理解其内部实现有助于编写更优化的代码。数组结构:提供 O(1) 的随机访问能力链表解决冲突:简单高效地处理哈希冲突红黑树优化:防止极端退化,保证最坏情况性能2的幂长度:优化索引计算,位运算代替取模扰动函数。
2025-12-23 16:05:57
779
原创 java基础-Map接口
在Java中,Map是一个非常重要的接口,它表示键值对(Key-Value)的映射集合。Map 不允许重复的键,每个键最多只能映射到一个值。
2025-12-18 16:19:34
240
1
原创 java基础-Deque 接口
Deque(Double Ended Queue,双端队列)是 Java Collections Framework 的一部分,它支持在队列的两端进行插入和删除操作。Deque是一个非常实用的接口,它提供了队列和栈的完整功能。在大多数情况下,推荐使用ArrayDeque作为实现类,因为它比 LinkedList 有更好的性能表现。
2025-12-16 16:24:02
218
原创 java基础-PriorityQueue(优先队列)
(通常是元素的自然顺序或自定义比较器)来管理元素,而不是标准的 FIFO(先进先出)顺序。中解决堆相关问题的常用工具(如 Top K、合并K个有序列表等)PriorityQueue 是 Java 集合框架中的一个。,可通过 Comparator 改为最大堆或其他排序规则。特性,多线程环境下需要使用。:数组实现的完全二叉树。:父节点 ≤ 子节点。
2025-12-15 16:02:31
335
原创 java基础-Java Queue 接口
Queue 是 Java 集合框架中的一个重要接口,位于java.util包中,它表示一个先进先出(FIFO)的队列数据结构。Queue 接口继承了 Collection 接口,并定义了一组专门用于队列操作的方法。
2025-12-12 17:01:49
425
原创 java基础-Stack(堆栈)
Java 中实现栈有多种方式,现代开发中推荐使用Deque接口的实现(如ArrayDeque)作为栈结构进阶问题为什么Stack不推荐使用?
2025-12-05 15:41:36
623
原创 java基础-Vector(向量)
/ 添加元素add(E e) // 添加元素addElement(E obj) // 遗留方法// 获取元素elementAt(int index) // 遗留方法// 删除元素clear()// 容量管理setSize(int newSize) // 可能填充null或截断// 搜索// 枚举器(遗留)elements() // 返回 Enumeration。
2025-12-04 15:07:07
630
原创 java基础-LinkedList(链表)
LinkedList是Java中重要的数据结构,特别适合需要频繁插入删除的场景。它不仅是List,还可以作为Queue、Deque和Stack使用。选择LinkedList还是ArrayList取决于具体的应用场景和操作模式。
2025-12-03 15:45:31
894
原创 java基础-ArrayList
Java是 Java 集合框架(Java Collections Framework)中的一个核心类,属于java.util包。它实现了List接口,是一个,可以根据需要自动调整大小(扩容或缩容),提供了比传统数组更灵活的操作方式。
2025-12-02 16:53:54
203
原创 java基础-集合接口(Collection)
Collection 接口是 Java 集合框架中最基本的接口,它定义了所有集合类都应该具备的基本操作。
2025-11-13 14:33:02
674
原创 java基础-断言、日志
场景推荐方案说明现代新项目追求极致的性能(特别是异步日志)和丰富的功能。Spring Boot 项目使用默认配置 (SLF4J + Logback)开箱即用,简单可靠,能满足绝大多数场景。需要高性能时再切换为 Log4j 2。老旧项目迁移SLF4J + 各种桥接包统一项目的日志输出,逐步替换掉旧的日志库。核心要点写代码用 SLF4J API。根据性能和要求选择 Logback 或 Log4j 2 作为实现。遵循日志级别和格式的最佳实践。异常是运行时的流程控制机制,用于处理可预见的错误情况。日志是。
2025-11-11 11:23:38
1254
原创 java基础-注解
/ 指定注解保留策略// 指定注解使用目标// 标记注解可以被继承@Inherited// 标记注解包含在 Javadoc 中Java 注解是一种强大的元编程工具,广泛应用于:框架开发(Spring、Hibernate等)测试框架(JUnit)代码生成配置管理依赖注入通过合理使用注解,可以使代码更加简洁、可读性更强,并实现很多高级功能。
2025-11-06 17:00:40
150
原创 java基础-异常
异常是指在程序运行过程中发生的、会打断正常指令流的不正常事件。例如:文件找不到、网络连接失败、除零、数组下标越界等。Java 使用“抛出-捕获”的机制来处理异常。当方法执行过程中发生错误,该方法会创建一个异常对象并将其“抛出”(throw运行时系统会在调用栈中寻找处理该异常的代码块(“捕获”catch如果找不到,程序将终止并打印错误信息。有时标准异常类不能满足需求,我们可以创建自己的异常类。自定义异常通常继承自Exception(受检异常) 或(非受检异常)。// 自定义一个受检异常super();
2025-11-03 15:37:42
1485
原创 java基础-包
代码组织单元:是 Java 语言本身的特性,用于组织源代码命名空间:防止类名冲突访问控制:影响类的可见性第三方库:外部 JAR 文件,包含编译好的类项目管理:Maven 用于管理项目依赖的机制二进制分发:通常是 .jar 或 .war 文件Java 包:是代码层面的组织方式,你在 .java 文件中声明的package语句Maven 依赖包:是项目层面的依赖管理,你在 pom.xml 中配置的外部库关系。
2025-10-30 16:33:59
250
原创 java基础-反射
反射 是 Java 提供的一种能够在程序运行时动态地:获取类的任何内部信息(类名、修饰符、父类、接口、字段、方法、构造器等)。操作类的属性和方法(创建对象、调用方法、设置/获取字段值等)。简单来说,反射机制允许程序在运行时“观察”和“操作”它自身,就像一面镜子一样。核心思想:在编译时(Compile Time)无法确定要操作的是哪个类,只有在运行时(Runtime)才能根据条件动态地获取类信息并操作。反射的核心 API 位于 包中,主要涉及以下几个类: 类:这是反射的根源。每一个类被加载后,JVM 都会为
2025-10-29 14:32:43
798
原创 java基础-枚举类
每个枚举实例可以实现不同的行为。PLUS {@Override},MINUS {@Override},TIMES {@Override},DIVIDE {@Override// 抽象方法,每个枚举实例都必须实现// 使用// 输出:8.0// 输出:10.0特性描述类型安全限制了只能使用预定义的常量,避免了无效值。功能强大可以拥有字段、方法、构造器,甚至实现接口和抽象方法。易于遍历使用values()方法可以轻松获取所有常量。单例实现是实现单例模式的最佳实践。
2025-10-28 11:09:44
1080
原创 java基础-单例
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。核心思想:私有化构造方法:防止外部通过new关键字随意创建对象。静态私有实例:在类内部持有这个唯一的实例。静态公有方法:提供一个公共的、静态的方法,让外部能够获取到这个唯一的实例。重量级对象,创建和销毁需要很大开销(如数据库连接池、线程池)。需要全局唯一性的工具类(如配置信息类、日志记录器)。需要频繁访问但又需要控制实例数量的场景。实现方式懒加载线程安全性能防止反射/序列化破坏推荐度饿汉式❌✅高。
2025-10-24 17:01:36
755
原创 java基础-嵌套类
类型访问权限内存关系典型用途内部类可访问外部类所有成员依赖外部类实例紧密相关的辅助类静态嵌套类只能访问外部类静态成员独立于外部类实例工具类、辅助类局部内部类可访问final局部变量方法作用域内方法内部复杂逻辑匿名类根据父类/接口决定一次性使用事件处理、回调这些嵌套类机制让Java能够更好地支持封装和代码组织,特别是在GUI编程、集合操作和回调机制中非常有用。普通类:第一次被主动使用时加载静态嵌套类:第一次被主动使用时加载(独立于外部类实例)内部类。
2025-10-24 16:44:21
600
原创 java基础-super(关键字)
super关键字是Java继承机制中的重要组成部分,它提供了访问父类成员和构造方法的途径。正确使用super确保父类状态被正确初始化在重写方法时保留父类功能解决成员变量隐藏问题实现多级继承中的正确方法调用理解super的工作原理对于编写健壮、可维护的面向对象代码至关重要。在实际开发中,应遵循最佳实践,合理使用super来增强代码的清晰度和可靠性。
2025-10-24 10:36:00
338
原创 Java基础-递归
递归是指在函数的定义中使用函数自身的方法。基线条件(Base Case):递归终止的条件,防止无限递归递归条件(Recursive Case):函数调用自身的部分,将问题分解为更小的子问题递归是Java中强大但需要谨慎使用的特性。它提供了优雅的问题解决方案,特别适合具有自相似结构的问题。然而,开发者需要意识到其潜在的性能和栈溢出风险。通过合理设计基线条件、优化递归结构以及在适当时候转换为迭代,可以充分发挥递归的优势。最佳实践建议从小规模问题开始测试递归实现为递归方法添加详细的文档说明其终止条件。
2025-10-24 10:08:57
1113
原创 java基础-封装、继承、多态
继承是多态的基础。没有继承,就没有这种形式的多态(运行时多态)。多态是继承的延伸和应用。它让继承关系变得更有价值和灵活性。同一操作(方法)作用于不同的对象,可以有不同的解释,产生不同的执行结果。继承、重写、父类引用指向子类对象。特性角色关系封装基石创造了稳定、独立的代码单元,为继承和多态提供了可靠的基础。继承骨架在封装的基础上,构建了类的层次结构,实现了代码复用,并为多态铺平了道路。多态灵魂在继承的骨架之上,赋予了程序动态的行为和极高的灵活性,是面向对象威力的核心体现。
2025-10-23 15:42:10
1043
原创 java基础-继承、抽象、接口
抽象类用于定义不能实例化的类,包含抽象方法(没有方法体)。// 接口定义// 常量(默认 public static final)// 抽象方法(默认 public abstract)// 默认方法(Java 8+)System.out.println("漂浮在水面上");// 静态方法(Java 8+)System.out.println("这是一个游泳接口");void fly();// 类实现接口@Override。
2025-10-23 15:15:16
761
原创 java基础-构造函数
构造函数是用于初始化对象的特殊方法,在创建对象时自动调用。// 构造函数特殊方法:构造函数是用于初始化对象的特殊方法自动调用:在new创建对象时自动调用名称相同:必须与类名完全相同没有返回值:不需要返回类型,甚至不能写void重载支持:可以定义多个不同参数的构造函数默认构造:如果没有定义任何构造函数,编译器会提供默认无参构造继承规则:子类构造函数必须调用父类构造函数(显式或隐式)初始化顺序:父类字段 → 父类构造 → 子类字段 → 子类构造。
2025-10-23 11:20:23
828
原创 java基础-方法
方法定义:包含访问修饰符、返回类型、方法名、参数列表和方法体方法调用:通过对象调用实例方法,通过类名调用静态方法方法重载:同名方法根据参数不同实现不同功能返回值:使用return语句返回结果,void方法不需要返回值参数传递:Java 中是值传递递归:方法调用自身,需要有终止条件方法是 Java 程序的基本构建块,合理使用方法可以提高代码的可读性、可维护性和复用性。位置类型说明类中实例方法需要对象实例调用类中静态方法通过类名调用接口中抽象方法必须被实现接口中默认方法有默认实现。
2025-10-23 10:12:01
622
原创 java基础-类和对象
使用关键字class。// 定义一个名为 Car 的类// 字段(属性)// 方法(行为)// 启动引擎");// 刹车// 显示汽车信息// 构造方法(Constructor)// 这是一个无参构造方法// 可以进行一些默认初始化// 这是一个带参数的构造方法,用于在创建对象时就初始化属性特性类对象本质模板、蓝图实例、实体定义方式使用class关键字使用new关键字内存分配定义时不分配内存创建时分配内存存在形式逻辑存在(一个.java文件)
2025-10-22 16:28:36
619
原创 java基础-数组
数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同。Java 语言中提供的数组是用来存储固定大小的同类型元素。
2025-10-22 15:36:33
153
原创 java基础-运算符
运算符是 Java 语言的基石,它们让你能够对数据进行计算、比较和逻辑判断。熟练掌握各种运算符的用法、特性和优先级,是编写正确、高效 Java 程序的关键一步。
2025-10-22 09:01:36
729
原创 java基础-变量命名规则和关键字
必须遵守:字符限制、不以数字开头、不使用关键字建议遵守:驼峰命名、有意义名称、类型适当的命名风格保持一致性:在整个项目中保持统一的命名风格遵循这些规则和约定可以让代码更易读、易维护,并符合Java社区的通用标准。关键字在Java中,关键字(Keywords)是具有特殊含义的保留字,不能用作标识符(如变量名、类名、方法名等)。Java关键字是语言预定义的保留字不能用作变量名、类名、方法名等标识符了解这些关键字有助于避免命名冲突和编写符合规范的代码随着Java版本更新,关键字列表可能会有细微变化。
2025-10-21 16:04:28
856
原创 java基础-变量类型
变量类型角色关键特点参数变量外部派来的信使1. 由调用者初始化2. 作用域限于方法内3. Java中始终是值传递局部变量内部雇佣的临时工1. 必须在内部显式初始化2. 作用域限于代码块内成员变量正式部门经理1. 有默认值2. 与对象生命周期相同静态变量公司CEO1. 被所有对象共享2. 与程序生命周期相同一句话总结:参数变量就是一种特殊的局部变量,它的值由方法调用者从外部传入,并在方法内部使用。理解参数变量的关键在于掌握Java的值传递机制。
2025-10-21 14:53:32
933
原创 java基础-基本数据类型
Java的8种基本类型是构建所有程序的基石。它们高效、简单,直接存储数值,并且有各自明确的范围和用途。理解它们是学好Java的第一步。
2025-10-21 10:31:22
620
原创 java基础-JDK、JRE、JVM
组件电脑比喻主要功能目标用户JDK电脑制造商 + 软件公司开发Java应用程序,提供编译、调试等工具开发者JRE一台装好系统的品牌电脑运行已开发好的Java程序普通用户JVM电脑的主板/虚拟机监控程序提供跨平台的运行时环境,执行字节码,管理内存(嵌入在JRE中,对用户透明)如果你想开发Java程序,你需要安装JDK。如果你只想运行一个现成的Java程序(比如Minecraft游戏),你只需要安装JRE就可以了。而JVM。
2025-10-21 08:46:35
1021
原创 spring IOC
你定义蓝图:你使用@Component@Service等注解标记哪些类需要被做成“成品”(Bean)放进“仓库”(IOC容器)。你定义装配说明书:你使用@Autowired等注解在类的字段或构造器上写明:“我这个成品,需要另一个成品来组装”。Spring容器启动(工厂开工):容器读取所有蓝图和说明书,开始:a.创建:根据蓝图创建Bean实例。b.组装:根据说明书,将一个Bean注入到另一个需要它的Bean中。c.存放:将所有组装好的、立即可用的单例Bean放入容器中。你使用。
2025-09-19 13:40:01
947
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅