自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QiuMing

仰望星空,脚踏实地

  • 博客(25)
  • 收藏
  • 关注

原创 二叉树的广度优先遍历(层序遍历)

这种遍历不再按照父子节点的关系进行遍历,而是按照二叉树的节点层级,一层一层横向遍历各个节点,因此这种遍历也被称为。当我们遍历完当前层的所有节点后,我们将当前层的列表添加到结果列表中,并继续处理下一层的节点,直到队列为空。对于每个节点,我们将其值添加到当前层的列表中,并将其子节点(如果存在)添加到队列中。在while循环中,我们获取当前队列的大小(即当前层的节点数),然后遍历这些节点。在Java中,树的层序遍历通常使用队列(Queue)来实现。然后,我们创建一个队列并将根节点添加到队列中。

2024-03-31 17:16:31 518

原创 二叉树的深度优先遍历(前中后)

在上面的代码中,我们定义了preorderTraversalRecursive、inorderTraversalRecursive和postorderTraversalRecursive三个方法,分别用于前序、中序和后序遍历。对于前序遍历,我们先访问根节点,然后递归遍历左子树,最后递归遍历右子树。对于中序遍历,我们先递归遍历左子树,然后访问根节点,最后递归遍历右子树。对于后序遍历,我们先递归遍历左子树,然后递归遍历右子树,最后访问根节点。前序遍历是先输出根节点,再输出左子树,最后输出右子树。

2024-03-31 17:15:48 294

原创 树和二叉树

二叉树(Binary Tree)是树形结构的一个重要类型,它的特点是每个节点最多有两个子节点,通常被称为左子节点和右子节点。2.当n>1时,其余节点可分为m个互不相交的有限集,每一个集合本身又是一棵树,并称为根的子树。1.有且仅有一个特定的称为根的节点。树的最大层级数,被称为树的。树是n个节点的有限集。

2024-03-29 19:52:57 292

原创 哈希表:以Java中的HashMap为例

在Java中,HashMap类是实现哈希表的一个非常流行的工具。

2024-03-29 19:36:22 394

原创 队列的定义和基本操作

在Java中,我们可以使用数组或链表来实现队列。

2024-03-24 23:20:50 135

原创 栈的定义和基本操作

栈(Stack)是一种特殊的线性数据结构,它遵循后进先出(LIFO,Last In First Out)的原则。栈中的数据元素被称为栈元素,栈的顶部元素是最后入栈的元素,也是最先出栈的元素;而栈的底部元素是最先入栈的元素,但是只有在栈中其他元素都出栈后才能出栈。栈的基本操作主要包括入栈(Push)和出栈(Pop)。入栈操作是将一个新元素添加到栈的顶部;而出栈操作则是移除栈顶部的元素,并返回该元素的值。除了这两个基本操作外,栈还支持查看栈顶元素(Peek)以及判断栈是否为空(IsEmpty)等操作。

2024-03-21 21:15:07 407

原创 Java数组与链表的深度对比

数组和链表各有其优缺点,适用于不同的场景。在选择使用哪种数据结构时,需要根据具体需求进行权衡。如果数据量固定且需要频繁访问元素,数组可能是一个更好的选择;如果需要动态地添加或删除元素,或者在链表中间位置进行插入或删除操作,链表则更为合适。

2024-03-21 21:09:27 480

原创 链表的定义和基本操作

链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。它由一系列节点组成,每个节点包含两部分:数据域,用于存储数据元素;指针域,用于存储指向下一个节点的地址。链表在插入操作时可以达到O(1)的复杂度,但在查找或访问特定节点时则需要O(n)的时间。链表的主要特点是允许在任意位置插入和删除节点,从而实现了灵活的内存动态管理,克服了数组需要预先知道数据大小的缺点。链表有多种类型,包括单向链表、双向链表、循环链表等,每种类型都有其特定的应用场景和优势。

2024-03-21 21:04:34 152

原创 数组的定义和基本操作

数组(Array)是程序设计中一种非常重要的数据结构,它用于存储多个相同类型的数据元素,并且这些数据元素按照一定的顺序排列。通过为有限个类型相同的变量赋予一个统一的名称(即数组名),并使用编号(即下标)来区分这些变量,数组提供了一种方便的方式来管理和操作这些元素。数组中的每个元素都可以通过其下标进行访问,这使得我们可以快速地读取、修改或执行其他操作。数组的长度一旦确定,就不能再修改。在内存中,数组会占据一整块连续的空间,而数组名则引用这块连续空间的首地址。

2024-03-21 21:03:35 337

原创 时间复杂度和空间复杂度

时间复杂度和空间复杂度的问题

2024-03-16 15:41:39 391

原创 什么是数据结构

数据结构,对应英文单词data structure,是数据的组织、管理和存储格式。

2024-03-16 15:40:01 182

原创 什么是算法?

算法的本质是一系列程序指令,用于解决特定的运算和逻辑问题。

2024-03-16 15:37:48 110

原创 建造者模式:构建复杂对象的艺术

建造者模式是一种非常实用的设计模式,它允许我们以一种灵活且易于管理的方式构建复杂对象。通过将构建过程封装在单独的构建类中,我们可以确保构建过程的清晰性和正确性,同时还可以避免客户端代码与复杂对象构建逻辑的紧密耦合。在软件开发中,当需要处理具有多个属性和复杂构建顺序的对象时,建造者模式通常是一个很好的选择。

2024-02-19 14:45:14 297

原创 快速掌握工厂模式

在软件工程中,工厂模式是一种创建型设计模式,用于处理对象的创建过程。它提供了一种将对象创建与其实现分离的方法,使得客户端代码不需要知道具体的类,只需要与工厂接口交互即可。这种模式在复杂的对象创建过程中尤其有用,例如在需要根据不同条件创建不同类型的对象时。

2024-02-18 10:37:03 855

原创 单例模式的5种实现方式,最后一种最推荐

单例模式有多种实现方式,选择哪种方式取决于你的具体需求。如果你希望在程序启动时就创建实例,可以选择饿汉式;如果你希望在需要时才创建实例,可以选择懒汉式、静态内部类或枚举。在多线程环境下,需要注意线程安全问题。希望本文能帮助你更好地理解和使用单例模式。

2024-02-18 09:58:39 2565

原创 设计模式分类(23种设计模式,3大分类)

在软件开发的世界里,设计模式是一种被广泛认可的解决方案,用于解决在特定上下文中反复出现的软件设计问题。它们是一套经过优化并被证明有效的设计经验,可以帮助开发者编写出更加清晰、灵活和可重用的代码。

2024-02-13 10:38:52 599

原创 面向对象设计的七大原则(附带例子)

一个类应该只负责一项职责,即一个类应该只有一个引起它变化的原因。

2024-02-12 21:34:32 965

原创 UML类图:可以清晰描述类的标准图形

UML类图是一种用于描述系统中类的静态结构的图形表示。它展示了类、接口、以及它们之间的各种关系,如继承、聚合和关联等。通过类图,开发人员可以更清晰地理解系统的结构和行为。UML类图是理解和设计软件系统结构的重要工具。通过图形化的方式展示类和它们之间的关系,开发人员可以更加直观地理解系统的结构和行为,从而更有效地进行设计和开发。

2024-02-10 16:42:50 1111

原创 UML概述:统一建模语言的魅力与实践

在软件开发领域,统一建模语言(Unified Modeling Language,简称UML)已经成为一种广泛采用的可视化建模工具。UML不仅提供了一种统一的表示法从各个方面描述软件系统,还帮助开发人员更好地理解、设计和实现复杂的软件系统。在本文中,我们将深入探讨UML的基本概念、特点和实际应用。

2024-02-10 16:08:13 373

原创 Java开发必会的反编译知识

将便于人编写、阅读、维护的高级计算机语言所写作的源代码程序,翻译为计算机能解读、运行的机器语言的程序的过程就是编译。

2024-02-04 14:46:44 659

原创 什么是Servlet?

Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,你可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。Servlet 有权限访问所有的 Java API,包括访问企业级数据库的 JDBC API。Servlet 是服务 HTTP 请求并实现接口的 Java 类。

2022-09-25 20:06:37 223 1

原创 什么是JSP?

JSP文件后缀名为 *.jsp。

2022-09-25 20:01:34 149

原创 二进制原码补码反码运算规则

按位&规则:只有1&1=1,有0即为0。

2022-07-29 09:20:40 3138

原创 JVM内存结构(Java8之前版本)

对于Java程序员来说,JVM相关的知识不管是面试还是写代码都有可能会用到,所以今天就来记录一下这方面的知识。首先上图为了方便记忆,我用红色表示线程私有,而绿色表示线程共享的模块。PS一般来说,堆的内存空间总是最大的,因为虚拟机将各种各样的对象都放在这里。PSJVM是一种抽象的概念和规范,这就和unicode是一种编码规范,我们使用的时候就是UTF-8,UTF-16等具体实现类似。如图所示,这篇文章里,我们只研究HotSpot虚拟机。...

2022-02-18 22:34:27 325

原创 Springboot 监听同一个RabbitMQ的多个虚拟主机Virtual-Host

目录配置信息application.properties配置类RabbitMqConfig监听消息示例场景:需要监听 同一个RabbitMQ下的 不同的虚拟主机下的 队列 来完成数据流转配置信息application.propertiesmy.rabbitmq.host=你的ipmy.rabbitmq.port=你的portmy.rabbitmq.username=你的usernamemy.rabbitmq.password=你的passwordmy.rabbitmq.first.virt

2020-07-23 11:21:11 3724 8

空空如也

空空如也

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

TA关注的人

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