自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap 与 HashSet

Java集合框架中的HashMap和HashSet基于哈希表实现,提供高效的动态查找能力。HashMap存储键值对,通过哈希函数映射键到数组索引,采用链表/红黑树解决哈希冲突,默认负载因子0.75触发扩容。HashSet基于HashMap实现,仅存储键实现去重功能。两者都需自定义类覆写hashCode()和equals()方法。相比TreeMap/TreeSet,HashMap/HashSet无序但性能更高(O(1)),适用于无需排序的场景。

2025-10-27 19:52:41 761

原创 TreeMap 与 TreeSet

本文介绍了Java中TreeMap和TreeSet的核心特性与应用场景。它们基于红黑树实现,具有有序、高效的特点,适用于需要动态查找且保持键有序的场景。TreeMap存储键值对,Key有序且唯一;TreeSet仅存储Key,实现去重和排序。二者操作时间复杂度均为O(logN)。与HashMap/HashSet相比,Tree系列适合需要有序性的场景,而Hash系列更注重性能。使用时需注意自定义Key需实现比较逻辑、Key不可修改等要点。掌握它们的特性和适用场景,能更好地处理有序数据的存储和查询需求。

2025-10-27 19:22:30 818

原创 排序算法解析

这篇文章系统介绍了常见排序算法及其应用场景,主要分为基于比较的排序和非基于比较的排序两大类。基于比较的排序包括插入排序(直接插入和希尔)、选择排序(直接选择和堆)、交换排序(冒泡和快速)以及归并排序;非基于比较的排序重点介绍了计数排序。文章详细分析了每种算法的原理、实现代码、时间复杂度、空间复杂度和稳定性,并提供了选择算法的指导原则:小规模数据适合插入/冒泡,大规模无序数据适合快排/堆排,需要稳定性时选择归并或计数排序,数据范围小时计数排序效率最高。最后强调没有绝对最优的算法,需要根据数据规模、有序性和稳定

2025-10-27 19:10:35 1018

原创 优先级队列 与 堆

本文介绍了优先级队列及其底层实现——堆结构。优先级队列打破了普通队列的FIFO规则,按照元素优先级处理数据,适用于任务调度、外卖配送等场景。堆作为一种完全二叉树,通过数组存储,分为大根堆和小根堆两种形式。文章详细讲解了堆的核心操作:向下调整(用于删除和建堆)和向上调整(用于插入),并提供了Java代码实现。此外,还介绍了Java标准库中的PriorityQueue类及其使用方法,包括如何通过比较器实现大堆。最后,文章列举了堆的两个经典应用场景:高效的堆排序算法和解决Top-K问题的优化方案。这些数据结构知识

2025-10-27 18:49:07 725

原创 树 与 二叉树

摘要:本文系统讲解了树形结构与二叉树的重点知识。首先介绍了树的核心特点(唯一根节点、子树不相交、递归定义)和关键术语(度、层次、高度等)。重点解析了二叉树的定义、特性(满二叉树、完全二叉树)及5个重要性质(如n0=n2+1)。详细讲解了二叉树的存储方式(顺序存储、链式存储)和基本操作(递归遍历、节点计数、查找等),并用Java代码实现了前中后序遍历及层序遍历。最后通过LeetCode经典题目(判断相同树、翻转二叉树、最近公共祖先)展示了二叉树的应用技巧。掌握这些知识是学习更高级树结构(如AVL、红黑树)的重

2025-10-27 17:31:00 961

原创 栈 与 队列

栈是一种仅允许在固定一端进行插入和删除操作的线性表,该操作端被称为栈顶,另一端则为栈底。其最核心的特性是后进先出(LIFO,Last In First Out)—— 最后进入栈的元素,会成为第一个被弹出的元素。压栈(入栈):栈的插入操作,始终在栈顶执行,新元素入栈后会成为新的栈顶,栈内元素个数随之增加。出栈:栈的删除操作,同样在栈顶执行,栈顶元素弹出后,其下方的元素会成为新的栈顶,栈内元素个数减少。举个直观例子:若依次将 1、2、3、4 压栈,栈内元素从栈底到栈顶的顺序为 [1,2,3,4];

2025-10-27 17:04:02 881

原创 Java SE 总结

本文介绍了JavaSE的核心内容,包括:1. Java语言基础:基本语法、数据类型(基本类型和引用类型);2.面向对象编程:类与对象、封继承多态三大特性、接口与抽象类;3.异常处理机制;4.集合框架(List/Set/Map)。JavaSE作为Java技术的核心平台,提供了稳定强大的开发基础,支持从基础编程到高级特性的开发需求。掌握JavaSE不仅学习编程语言,更是理解面向对象思想和软件工程方法的过程。随着云原生等技术的发展,JavaSE仍是构建可靠应用的重要技术,持续学习其核心概念对开发者至关重要。

2025-09-03 00:24:13 289

原创 Java 异常

Java异常处理机制是程序健壮性的重要保障。文章系统介绍了异常的概念、体系结构(Throwable分为Error和Exception)、分类(编译时异常和运行时异常)以及处理方式(抛出throw、声明throws、捕获try-catch)。重点阐述了Java采用EAFP风格,通过五个关键字实现异常处理,并详细说明了异常处理流程和自定义异常的实现方法。最后强调异常处理要适度,应提供有意义的错误信息并做好日志记录,使程序能够优雅地处理错误情况。

2025-09-03 00:02:54 361

原创 Java图书管理系统

本文介绍了一个基于Java的简单图书管理系统,采用面向对象设计,实现了图书的增删改查、借阅归还等功能。系统包含Book和BookList类管理图书数据,通过IOperation接口统一操作规范,并区分AdminUser和NormalUser两种角色权限。设计特点包括良好的封装性、接口隔离和权限控制,具有较好的可扩展性。该系统展示了面向对象编程的基本技巧,为进一步扩展功能(如持久化存储、图形界面等)奠定了基础。

2025-09-02 23:48:56 358

原创 Java String类

Java中的String类是使用频率最高的类之一,它将数据与方法封装在一起,完美契合面向对象思想。与C语言不同,Java的String类使字符串操作更安全便捷。其重要性体现在开发高频性、笔试常客和面试热点三个方面。String类提供丰富的方法,包括构造、比较、查找、转化、替换、拆分和截取等操作。String的核心特性是不可变性,其设计为final类,value数组为final,且无修改方法,带来线程安全等优势。字符串常量池优化内存,通过intern()方法可手动入池。此外,StringBuffer和Stri

2025-08-27 23:08:14 592

原创 Java 继承与多态

通俗来说,多态就是 “同一行为,不同对象有不同表现”。狗吃饭是 “啃骨头”;猫吃饭是 “舔猫粮”;人吃饭是 “用筷子夹菜”。父类引用指向子类对象,调用方法时会执行子类的实现。继承:核心是 “代码复用”,通过抽取共性减少重复逻辑,但要注意耦合度(尽量用组合替代继承);多态:核心是 “灵活扩展”,通过父类引用指向子类对象,让代码适应变化(新增子类无需修改原有逻辑);底层逻辑:多态依赖 “动态绑定”(运行时确定调用的方法),而继承是多态的基础。

2025-08-27 22:39:37 1798

原创 Java 类和对象

本文系统讲解了Java面向对象编程中类与对象的核心概念。内容包括:1)面向对象思想及其与面向过程的对比;2)类的定义与对象实例化过程;3)this引用、构造方法的使用;4)封装特性与访问控制;5)static成员与代码块;6)内部类与对象打印。通过电饭煲、图书等实例,详细阐述了从抽象类定义到具体对象创建的全过程,强调封装对数据安全的重要性,并介绍静态成员、初始化代码块等补充机制。这些知识是掌握Java面向对象编程的基础,为后续学习继承、多态等高级特性奠定基础。

2025-08-22 00:06:27 570

原创 C语言实现贪吃蛇游戏

/方向枚举UP = 1,DOWN,LEFT,RIGHT//游戏状态枚举OK, //正常运行KILL_BY_WALL, //撞墙KILL_BY_SELF, //撞到自己END_NORMAL //正常退出//食物类型枚举NORMAL, //普通食物:+10分BONUS, //奖励食物:+20分SLOW, //减速食物:+5分,增加延迟FAST //加速食物:+15分,减少延迟。

2025-08-07 16:09:38 1792

原创 C语言结构体详解

本文系统介绍了C语言中结构体的使用要点。首先讲解了结构体的声明方式,包括基本声明、匿名结构体和自引用结构体。其次详细说明了结构体变量的创建和初始化方法。重点剖析了结构体内存对齐机制,通过实例分析对齐规则及其对内存布局的影响,并给出优化建议。最后比较了结构体传参的两种方式,推荐使用指针传参以提高效率。全文通过代码示例和内存布局图,帮助读者深入理解结构体这一C语言核心特性的实现原理和使用技巧。

2025-07-23 23:30:35 699

原创 数据在内存中的存储

本文系统介绍了数据在内存中的三种存储机制:1)整数的补码存储方式及其原码、反码、补码转换规则,解释了计算机采用补码的原因;2)大端和小端字节序的差异及其判断方法;3)浮点数的IEEE754标准存储格式,包括符号位、指数位和尾数位的特殊处理方式。文章通过具体示例展示了不同类型数据在内存中的存储差异,并强调了理解这些底层存储机制对编程和调试的重要性。这些知识是理解计算机系统底层运行原理的基础,能帮助开发者避免类型转换和字节序相关的常见错误。

2025-07-23 23:05:36 752

原创 C语言核心库函数详解:字符、字符串与内存操作

本文梳理了 C 语言中字符、字符串和内存操作的核心库函数,包括功能、使用细节、注意事项及部分函数的模拟实现。这些函数是 C 语言开发的基础工具,掌握它们能大幅提高处理字符、字符串和内存的效率。实际编程中,需注意函数的参数要求(如字符串需以\0结尾)、返回值特性(如size_t的无符号性)及内存重叠等特殊情况,避免常见错误。

2025-07-22 17:17:45 1812

原创 C 语言文件操作入门:从基础到实战

本文全面介绍了C语言文件操作的核心知识。主要内容包括:文件分类(程序文件和数据文件)、文件名组成、文本与二进制文件区别;文件指针和流的概念;文件的打开(fopen)和关闭(fclose)方法;顺序读写函数(fgetc/fputc、fgets/fputs等)和二进制读写(fread/fwrite);随机读写(fseek/ftell/rewind);文件结束判定方法;以及文件缓冲区的原理。文章强调实际操作的重要性,建议初学者通过编写代码来掌握这些文件操作函数的使用,实现数据的持久化存储。

2025-07-18 11:52:34 752

原创 深入理解 C 语言程序的编译与链接过程

C语言程序从源代码到可执行文件经历了翻译环境和执行环境两个阶段。翻译环境包括预处理(处理宏和头文件)、编译(生成汇编代码)和汇编(转换为机器指令),最终通过链接器将多个目标文件合并为可执行程序。执行环境则负责程序的加载和运行,包括内存分配、函数调用栈管理等。整个过程涉及词法分析、语法分析、语义分析等关键技术,理解这些步骤有助于程序调试和优化。

2025-07-18 11:51:58 890

原创 深入理解 C 语言指针:从基础到高级应用

本文系统介绍了C语言指针的核心概念与应用。首先阐述了指针的本质是内存地址,以及指针变量定义、大小与平台的关系。重点讲解了指针类型的意义,包括解引用权限和步长,以及void*指针的特殊性。随后分析了const修饰指针的三种场景,并详细说明了指针运算的三种基本操作。文章还探讨了野指针的危害及防范方法,指针与数组的密切关系,以及高级指针如二级指针、指针数组和函数指针的应用。最后通过qsort示例展示了回调函数的实际应用,并对比了sizeof与strlen的区别。全文强调指针作为C语言灵魂的重要性,指出深入理解指针

2025-07-18 11:17:53 864

原创 从零开始实现扫雷游戏:C语言代码详解

性能优化:递归展开可能引发栈溢出,可改用队列实现迭代展开。界面增强:引入颜色库(如ncurses)提升视觉效果。功能扩展:支持保存/加载游戏、自定义难度等。本扫雷游戏通过模块化设计实现核心功能,重点解决了递归展开、时间管理和输入处理等难点。代码结构清晰,适合初学者学习二维数组操作、递归逻辑及时间处理技巧。通过进一步优化,可扩展为功能更丰富的经典游戏复刻。

2025-05-21 15:10:23 931

原创 C 语言的分支与循环

分支循环语句是 C 语言编程的核心基础,它们为程序提供了决策和重复执行的能力。通过合理使用 if、switch 等分支语句和 while、do-while、for 等循环语句,结合 break、continue 等控制语句,你可以构建出结构清晰、逻辑复杂的程序。在实际编程中,要根据具体需求选择合适的语句结构,并注意避免死循环和逻辑错误。通过不断练习和实践,你将逐渐掌握这些语句的精髓,成为一名优秀的 C 语言程序员。

2025-05-20 10:39:29 556

空空如也

空空如也

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

TA关注的人

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