自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 问答 (1)
  • 收藏
  • 关注

原创 Java EE 计算机是如何工作的?

本篇文章是面向软件工程师的计算机基础科普,梳理了计算机的硬件组成(CPU、主板、内存、硬盘等)及冯诺依曼体系,对比了内存与硬盘、SSD 与 HDD、CPU 与 GPU 的核心差异,还讲解了 CPU 执行指令的过程,以及程序、操作系统、进程的概念:操作系统是资源管理软件,进程是运行中的程序,是资源分配的基本单位,重点解析了多任务操作系统的分时复用调度逻辑(通过时间片实现进程并发),并介绍了进程管理的核心载体 PCB 的关键属性(pid、内存指针、进程状态、上下文等),为后续进程相关学习做了铺垫。

2025-12-13 22:28:30 715

原创 Java SE 学习哈希表后对String的讨论

本文探讨了Java中String对象的创建机制与字符串常量池的原理。String的三种构造方式(直接赋值、new创建、字符数组创建)在内存分配上有本质区别。字符串常量池作为JVM的共享资源,遵循"池化"思想,通过复用字符串对象提升效率。直接赋值会优先使用常量池中的对象,而new创建会在堆中生成新对象。文章详细分析了不同创建方式的内存分配过程,并介绍了intern()方法的手动入池机制。字符串常量池的设计既保证了String的不可变性,又实现了全局资源共享,是Java性能优化的重要机制!

2025-11-02 17:36:51 1009 1

原创 数据结构 Map与Set

本文介绍了Java中的Map和Set两种数据结构。Map存储键值对,Set只存储键,两者都支持高效的动态查找操作。文章对比了TreeMap/HashMap和TreeSet/HashSet的区别,重点分析了它们的底层实现(红黑树/哈希表)、时间复杂度及使用场景。通过代码示例展示了常用方法如put、get、containsKey等的使用,并强调了自定义类作为键时需要重写hashCode和equals方法。最后提到Java8对哈希冲突处理的优化(链表转红黑树),为高效查找提供了保障。

2025-10-18 23:18:55 662 2

原创 数据结构 实现二叉搜索树与哈希表

本文详细介绍了二叉搜索树和哈希表两种高效查询数据结构。首先讲解了二叉搜索树的性质和实现方法,包括查找、插入、删除操作的具体实现步骤和性能分析。随后介绍了哈希表的基本概念,重点阐述了哈希冲突的解决方案(开散列/闭散列)和负载因子的重要性,并给出了哈希表的完整实现代码。文章通过具体示例和代码演示了两种数据结构的操作过程,分析了它们的优缺点和适用场景。二叉搜索树在最优情况下性能良好,但可能退化为单分支树;而哈希表通过合理设计可以保持O(1)的平均时间复杂度,是更稳定的查询结构。

2025-10-12 22:59:16 1184 18

原创 学习Java遇到的一些问题

在学习中遇到的一些问题。

2025-09-22 23:22:48 658

原创 算法 七大基于比较的排序算法

本文系统介绍了七大基于比较的排序算法及其优化实现。主要内容包括:1. 排序算法分类:插入排序(直接插入、希尔)、选择排序(简单选择、堆)、交换排序(冒泡、快速)、归并排序;2. 详细算法实现:对每种排序给出核心思想、代码实现(含优化版本)和示例测试;3. 性能分析:系统比较各算法的时间/空间复杂度、稳定性,指出快速排序和归并排序的高效性;4. 特殊优化:如三数取中法优化快速排序、非递归实现等。文中通过大量代码示例和图示,直观展示了各种排序的工作原理和优化思路,为理解和应用排序算法提供了全面参考。

2025-09-17 16:25:26 1124 16

原创 数据结构 Java对象的比较

本文探讨了Java中引用数据类型的比较方法。基本数据类型可直接用关系运算符比较,但引用类型比较的是引用而非内容。文章提出三种解决方案:1)重写equals方法用于逻辑相等比较;2)实现Comparable接口定义自然排序;3)使用Comparator接口实现灵活比较规则。这三种方式分别适用于不同场景:equals用于基础内容比较,Comparable用于固定排序,Comparator用于多规则排序或无法修改源码的情况。通过代码示例详细说明了每种方法的实现方式和使用场景,帮助开发者根据需求选择合适的比较方案。

2025-09-12 18:33:00 1029 1

原创 数据结构 优先级队列(堆)

本文介绍了堆数据结构及其实现优先级队列的方法。主要内容包括:1. 堆的概念和性质,包括大根堆和小根堆的定义及存储方式;2. 堆的创建、插入和删除操作,重点讲解了向下调整和向上调整算法;3. Java中的PriorityQueue类,包括构造方法、扩容机制和使用比较器创建大根堆;4. 堆的两个重要应用:堆排序和解决Topk问题。文章通过图文并茂的方式详细讲解了堆的相关操作,并提供了完整的代码实现,帮助读者深入理解堆这一数据结构及其在Java中的应用。

2025-09-11 19:04:07 854

原创 数据结构 二叉树

本文介绍了树和二叉树的基本概念与操作。主要内容包括:1. 树的基本概念:定义、特点、专有名词(节点度、叶子节点、父节点等)及表示方法;2. 二叉树的特性:两种特殊二叉树(满二叉树和完全二叉树)、性质、存储结构(顺序存储和链式存储);3. 二叉树的遍历:详细讲解了前序、中序、后序的递归与非递归实现,以及层序遍历;4. 二叉树的基本操作实现:包括获取节点数、叶子节点数、树高度、查找元素等方法。文章通过Java代码示例展示了各种遍历方式和操作的具体实现,并提供了测试验证。

2025-08-31 18:43:21 1090

原创 数据结构 实现循环队列的三种方法

本文介绍了三种基于顺序结构实现循环队列的方法:1)使用size变量记录元素数量,当front==rear且size==数组长度时判定队列满;2)添加标记位mark,当入队操作导致front==rear时修改标记,结合标记状态判断队列满;3)牺牲一个数组空间,当(rear+1)%长度==front时判定队列满。三种方法均通过取模运算实现数组的循环使用,保证入队出队操作时间复杂度为O(1)。文章详细说明了每种方法的实现思路,包括队列空/满的判断条件、指针移动方式以及边界处理,并提供了完整的Java代码实现。

2025-08-16 19:18:46 835

原创 数据结构 栈与队列

本文介绍了栈和队列的基本概念及其实现方法。栈遵循后进先出(LIFO)原则,支持压栈和出栈操作,Java中可通过Stack类或LinkedList实现,也可手动基于数组或链表实现。队列遵循先进先出(FIFO)原则,提供入队和出队操作,Java中Queue接口由LinkedList实现,也可手动基于双链表实现。文章还讨论了循环队列的实现技巧和双端队列(Deque)的应用,最后通过代码示例展示了栈和队列的具体使用方法。

2025-08-16 13:06:50 715

原创 数据结构 双链表与LinkedList

本文介绍了双链表数据结构及其实现方法。双链表是一种线性数据结构,每个节点包含数据域和指向前驱、后继节点的指针。文章详细讲解了不带头不循环双链表的实现过程,包括节点定义、头插尾插、任意位置插入、删除节点、查找判断等核心操作。同时介绍了Java中的LinkedList类,它是基于双向链表实现的List,适合频繁插入删除的场景。文章对比了ArrayList和LinkedList在存储结构、访问效率、插入删除等方面的区别,帮助读者理解不同数据结构的特点和适用场景。通过完整代码示例和测试案例,展示了双链表的具体实现。

2025-08-11 21:52:52 1147

原创 数据结构 实现单链表

本文介绍了单链表的基本概念和实现方法。链表是一种非连续的存储结构,逻辑顺序通过节点间的引用链接实现。重点讲解了不带头单向非循环链表的实现,包括节点定义、链表初始化、基本操作方法(头插、尾插、任意位置插入、查找、删除节点等)的实现逻辑。通过Java代码示例展示了如何实现一个完整的单链表类,包含创建节点、遍历链表、插入删除等核心操作。文章还讨论了链表操作中的边界条件处理,如空链表、非法位置插入等问题,并提供了相应的异常处理方案。

2025-08-05 23:26:01 923

原创 数据结构 ArrayList与顺序表

本文介绍了线性表和顺序表的基本概念,重点讲解了如何实现一个简单的顺序表及其基本操作。文章首先区分了线性表与顺序表的关系,指出顺序表是使用数组实现的连续存储结构。然后详细展示了顺序表类的构建过程,包括构造方法、增删查改等核心功能,并强调数据结构设计需要注意的抽象性和严谨性。接着介绍了Java中的ArrayList类,包括其特性、构造方法、常用操作和遍历方式,并分析了其扩容机制和潜在缺点。全文通过代码示例和逻辑分析,帮助读者理解顺序表的实现原理和ArrayList的使用方法。

2025-07-31 22:36:18 765

原创 数据结构预备知识

本文介绍了学习数据结构前的三个必备知识:集合框架、复杂度和泛型。Java集合框架是存储管理数据的容器,包含重要接口和实现类。数据结构是计算机存储组织数据的方式,与算法相辅相成。复杂度分析包括时间复杂度(衡量运行速度)和空间复杂度(衡量额外空间使用),常用大O表示法计算。泛型实现了类型参数化,通过擦除机制在编译时进行类型检查,包括泛型类、泛型方法和类型边界等概念,提高了代码的复用性和安全性。掌握这些基础知识对后续数据结构学习至关重要。

2025-07-26 23:51:58 1548

原创 Java SE 总结

本文系统总结了JavaSE的核心语法知识,主要内容包括:1. Java概述:介绍Java语言特点、JDK/JRE/JVM关系;2. 基础语法:数据类型、变量、运算符、逻辑控制(分支/循环);3. 面向对象:类与对象、封装继承多态三大特性、抽象类与接口;4. 常用类:String的不可变性及操作方法、异常处理机制;5. 高级特性:代码块执行顺序、内部类、自定义异常等。文章通过代码示例详细讲解了各语法要点的使用方式及注意事项,为Java初学者提供了全面的语法知识框架。

2025-07-23 19:26:08 829

原创 Java SE 认识异常

本文系统介绍了Java异常处理机制,主要包括以下内容:1.异常概念与体系结构,包括Error和Exception的区别;2.异常处理的核心思想EAFP及五种处理方式(throw、try、catch、final、throws);3.异常的捕获方法(throws声明和try-catch捕获)及注意事项;4.自定义异常类的实现方法,通过继承Exception或RuntimeException创建业务相关异常类。文章通过具体代码示例详细讲解了异常处理的流程和应用场景,帮助读者掌握Java异常处理机制。

2025-07-21 14:30:16 1093

原创 Java SE 讨论String类

本文主要介绍了Java中String类的基本用法和常见操作。String类提供多种构造方法,支持字符串比较、查找、转换、替换、拆分和截取等操作,但字符串具有不可变性,任何修改都会创建新对象。为提高效率,可使用StringBuilder和StringBuffer类进行可变字符串操作,其中StringBuilder线程不安全但效率更高,StringBuffer线程安全但效率较低。文章还比较了三者的主要区别,并提供了相关方法的代码示例。

2025-07-19 23:52:03 938

原创 Java SE 实现简单的图书管理系统(完善菜单操作)

摘要:本文详细介绍了图书管理系统的菜单功能实现过程,包括查找、新增、显示、借阅、归还和删除图书等操作。通过数组存储图书数据,采用遍历和下标操作实现各项功能,并优化了图书状态的显示方式。系统采用模块化设计,每个功能独立实现,最终完成了一个结构清晰、功能完整的图书管理系统。重点阐述了删除操作的实现逻辑,通过前移覆盖和图书数减一的方式解决数组删除问题。

2025-07-09 23:47:38 771

原创 Java SE 实现简单的图书管理系统(框架构建)

本文介绍了如何用JavaSE构建一个简单的图书管理系统框架。系统分为四大模块:书架(Book)、用户(User)、主控制台(Main)和菜单操作(Operations)。书架模块包含Book类和BookList类,用户模块通过抽象类User和子类AdminUser/NormalUser实现多态,菜单操作通过接口IOperation和实现类完成功能扩展。系统采用分层设计,通过抽象类和接口实现代码复用与扩展性,最终在主控制台完成用户登录和菜单操作的整体流程。该框架为后续功能完善提供了良好基础。

2025-07-09 16:54:43 807

原创 Java SE 2.数据类型与变量

本文介绍了Java中的数据类型和变量概念。Java是强类型语言,数据类型分基本类型和引用类型。基本类型包括四类八种:整型、浮点型、字符型和布尔型,每种类型都有对应的包装类。文章详细讲解了变量定义、赋值及注意事项,特别强调了各类型取值范围和类型转换规则(自动提升和强制转换)。还介绍了字符串类型String的基本用法和与整型的转换方法。掌握这些基础概念对编写高效可靠的Java程序至关重要。

2025-05-31 03:30:00 694

原创 Java SE Cloneable接口和深/浅拷贝

本文详细介绍了Java中的Cloneable接口和对象克隆机制。首先解析了protected访问修饰符在不同包中子类的访问规则,通过Animal和Dog类的例子进行了说明。然后分步骤讲解了如何实现对象克隆:1)重写clone方法;2)实现Cloneable接口;3)处理异常情况。重点区分了浅拷贝和深拷贝的概念:浅拷贝会导致引用类型字段共享同一对象,而深拷贝则通过递归调用clone方法创建完全独立的对象。文章通过Person和Money类的实例演示了两种拷贝方式的差异,并用图示直观展示了内存分配情况,帮助理解

2025-05-28 23:44:58 530

原创 Java SE 抽象类和接口(下)

本文介绍Java的`Object`类及其核心方法:`equals`默认比较对象地址,需重写以比内容;`hashCode`生成哈希码,重写后相同内容对象哈希值一致。还探讨`Comparable`和`Comparator`接口对对象数组排序:前者通过`compareTo`定义自然排序,后者用`compare`提供灵活规则,避免频繁改类代码,实现灵活排序。

2025-05-21 21:51:37 589

原创 Java SE 抽象类和接口(上)

本文介绍了Java中的抽象类和接口的概念、语法、特性及其使用方法。抽象类是不能直接实例化的类,包含抽象方法,必须通过子类继承并实现抽象方法。接口是公共的行为规范标准,定义了一组方法,类通过实现接口来提供具体的行为。文章详细说明了抽象类和接口的语法规则、使用场景以及它们之间的区别,并通过示例代码展示了如何在实际编程中应用抽象类和接口。此外,文章还提到了接口的多继承特性,以及抽象类和接口在面向对象编程中的重要性。

2025-05-20 20:08:52 606

原创 Java SE 继承和多态(下)

本文承接前两节,把Java SE 当中的“继承与多态”内容总结完毕,本文主要涉及:重写、多态的条件、多态的优缺点和向下转型。

2025-05-14 00:05:09 791

原创 Java SE 继承和多态(中)

本文承接上一节,继续Java SE “继承与多态”内容学习,主要涉及了:代码块、构造方法、访问限定符、继承方式、final关键字、组合、多态的概念和向上转型的内容。

2025-05-12 21:09:31 1088

原创 Java SE 继承和多态(上)

本文章涉及到Java SE当中的继承和多态部分的部分内容,包括继承的概念,如何定义继承、父类成员的访问以及super关键字的介绍。

2025-05-10 23:35:42 705

原创 Java SE 6.类与对象(完结)

本文涉及内容:static成员变量初始化、代码块和对象的打印。本文将把类与对象的剩余内容补完,若对本文的内容衔接不上,还请回到第一部分和第二部分。

2025-05-08 23:29:07 315

原创 Java SE 6.类与对象(二)

承接上一节,继续学习类和对象。

2025-05-08 00:54:06 810

原创 Java SE 6.类与对象(一)

Java是一门纯面向对象的语言(Object Oriented Program,简称OOP),在面向对象的世界里,一切皆为对象。面向对象是解决问题的一种思想,主要依靠对象之间的交互完成一件事情。本文章对类和对象进行初步学习。

2025-05-05 00:36:49 1219

原创 Java SE 5.方法的使用

本文章是一位Java初学者总结所写,同是初学者伙伴可以阅读,或许会有收获,还请多多指教!

2025-04-20 21:11:30 1176

原创 Java SE 4.逻辑控制

Java的逻辑控制指的是根据特定的逻辑条件来控制程序的执行流程。逻辑控制可以根据不同的条件来决定程序的执行流程,使程序能够根据实际情况做出不同的响应,提高程序的灵活性和可扩展性。Java的逻辑控制语句包括。

2025-04-20 18:01:07 1051

原创 Java SE 1.初识Java

好了,代码编写完了,如何让它“运行”起来呢?

2025-04-19 18:24:12 977

原创 关于do…while循环语句的那些事儿

do…while语句的基础知识

2024-01-21 17:31:38 715 1

原创 来瞧瞧for循环语句吧!

每次循环结束时,i都会自增1,当i=4时,i<=3为假,跳出循环,此时a=6。最后输出a的值,即6。是for语句的初始化语句,只会在程序进入for语句时执行一次,能够执行一些变量数据的初始化。要求:只统计100内的“奇数相加”,且统计3个奇数后循环结束。对于这种for语句嵌套结构,我们一般先看里边的循环,在看外边。C语言提供了for循环语句,实现了更加灵活的循环控制操作。看,一样的结果,你应该也看出来了,是for语句的循环判断条件,若。写一个程序,计算1+2+3的值。可以不写,即不进行初始化。

2024-01-14 20:44:08 1347 2

原创 秒懂百科,while语句如此简单!

初识while语句!

2024-01-08 00:15:20 682

原创 暴揍switch语句

一起来看看switch语句吧!

2023-12-07 21:15:03 418 1

原创 关于 if 语句那些事。

else 代表的是if 以外的其他情况,比如当我们输入19时,18

2023-12-04 23:31:27 563

原创 一个非计算机专业的小白接触C语言的心得

因为选专业的时候没有支持自己的内心,老是听家长的话,让我与计算机这个专业失之交臂,但我听说了很多人不是计算机专业却能够从事计算机职业的例子,让我也觉得,既然别人可以办到跨专业求职,那么我也可以!C语言没有别人说的那么无趣,反而我认为它是一个人类的奇迹,实现了人与机器之间的交流,你无法想象,它就如同搭积木一般,根本不需要死的说明书,要的只是你的想象,就能够创造出丰富多彩的代码。(3)当然,课后的习题也是必不可少的,在完成老师布置作业的基础,自己多刷题,另外还要维护好自己的gitee,坚持每天上传代码!

2023-11-18 22:22:54 220 1

空空如也

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

TA关注的人

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