自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在使用JSONArray或Array中出现Exception in thread “AWT-EventQueue-0“ java.lang.UnsupportedOperationException

雷电点是:使用==Arrays.asList()==出现Exception in thread “AWT-EventQueue-0” java.lang.UnsupportedOperationException。

2023-08-04 11:29:56 104

原创 Java注解(Annotation)

目录内置的注解作用在代码的注解元注解(或者说:作用在其他注解的注解)Annotation 架构说明元注解Annotation 的作用Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。 当然它也支持自定义 Java 标注。内

2021-09-20 17:07:18 182

原创 “听书”项目大纲+梳理

我的听书项目Java语言实现的大纲和具体梳理。

2021-08-31 12:03:09 725

原创 实现搜索树的插入,查找和删除

二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树操作—查找操作—插入如果树为空树,即根 == null,直接插入如果树不是空树,按照查找逻辑确定插入位置,插入新结点操作—删除设待删除结点为 cur, 待删除结点的双亲结点为 parentcur.left == nullcur 是 root,则

2021-08-22 22:29:50 205

原创 堆的向上调整

注意:堆的向上调整的前提是除了传入的index位置的元素不符合堆的性质,其他元素都符合,才能进行向上调整。堆的向上调整2种实现代码。(小堆) public static void shiftUp(int[] array, int index) { while (index != 0){ int parentIndex = (index - 1) / 2; if (array[parentIndex] <= array[index

2021-08-21 16:09:16 122

原创 堆的向下调整以及创建

注意:堆的向下调整的前提是除了传入的index位置的元素不符合堆的性质,其他元素都符合,才能进行向下调整。堆的向下调整2种实现代码。(小堆) public static void shiftDown1(int[] array, int index) { int size = array.length; while (true){ int left = 2 * index + 1; if (left >= si

2021-08-21 14:16:04 110

原创 判断二叉树是不是完全二叉树

满二叉树: 一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,如果一个二叉树的层数为K,且结点总数是2k−12^k-12k−1 ,则它就是满二叉树。完全二叉树: 完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。 要注意的是满二叉树是一种特殊的完全二叉树。 public boolean isCompleteTree(Tree

2021-08-20 23:19:10 776

原创 二叉树的遍历

深度优先遍历是利用栈的性质,采用递归或者非递归的方式进行的。深度优先遍历包括前序遍历、中序遍历和后序遍历。广度优先遍历利用的是队列的性质,采用层序遍历的方法进行的。

2021-08-20 10:26:25 97

原创 非递归实现二叉树的前序、中序和后序遍历

非递归实现二叉树的前序遍历需要使用到栈的回溯作用。import java.util.Stack;class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) { this.val = va

2021-08-19 19:26:19 142

转载 HTTP所有状态码描述

状态码状态码英文名称中文描述100Continue继续。客户端应继续其请求101Switching Protocols切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议200OK请求成功。一般用于GET与POST请求201Created已创建。成功请求并创建了新的资源202Accepted已接受。已经接受请求,但未处理完成203Non-Authoritative Information...

2021-05-14 18:41:48 289

原创 HTTP协议详解(超级详细)

目录1. HTTP概述2. HTTP特点3. HTTP之URL4. HTTP协议格式HTTP请求请求行请求头(Header)空行请求体(Body)HTTP响应状态行响应头(Header)空行响应体(Body)消息头请求头响应头hTTP工作流程1. HTTP概述HTTP 协议(Hypertext Transfer Protocol,超文本传输协议),是一个客户端请求和响应的标准协议,这个协议详细规定了浏览器和万维网服务器之间互相通信的规则。用户输入地址和端口号之后就可以从服务器上取得所需要的网页信息。H

2021-05-14 18:31:46 7461 4

原创 HTTP之URL详解

认识URLURL(Uniform Resource Locator,统一资源定位器)是因特网的万维网服务程序上用于指定信息位置的表示方法。在WWW上,每一信息资源都有统一的且在网上唯一的地址,该地址就叫URL,它是WWW的统一资源定位标志,就是指网络地址(就是我们俗称的网址)。对外的资源一定有URL,但URL不一定有相应的资源。URL作用:HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。详细介绍在上面的这个URL中:ht

2021-05-12 11:36:33 16163 5

原创 JavaScript和Java重要的相异点

1.JavaScript中的所有变量都是无类型的,类似于Java中的object类型的引用。定义JavaScript代码中的变量方法是:var 变量名;//z这是老版本的书写方法。let/const 变量名;//这是新版本的书写方法。2.JavaScript不需要通过类(class)来组织代码。3.JavaScript中没有main的概念,执行顺序是按照定义的顺序执行。4.JavaScript代码需要运行,必须依托于html。(这里特质前端的情况)具体情况是在html的<body&gt

2021-05-09 20:45:55 110

原创 HTML基本知识(元素、属性、文档结构等)

HTML(Hyper Text Markup Language):HTML的全称为超文本标记语言,是一种标记语言。用来定义网页结构。它包括一系列标签,通过这些标签可以将网络上的文档格式统一,使分散的Internet资源连接为一个逻辑整体。认识HTML 元素(Element) 空元素(Empty Element) 嵌套元素(Nesting Element) 块级(block)元素和内联(inline)元素 属性(Attributes) 属性的构成 布尔属性 HTML 注释 HTML中的空白 文档结构

2021-05-01 18:02:25 499

原创 Java语言 equals和==的用法以及区别

==比较两个引用变量本身的值,即两个对象在内存中的首地址。 equals()比较字符串(字符串对象)中所包含的内容是否相同。但是在字符串类型中,String重新实现了equals方法,覆盖了之前的Object类下的equals方法。所以才会产生出equals和“==”的区别。如果有的类或者自己定义的类没有覆盖Object类下的equals方法,那么其使用的就是Object类下的equals方法,使用时时出现的结果和双等号相同。就没有equals和“==的区别的概念了。

2021-04-27 14:45:35 196

原创 MySQL表的增删查改CRUD—(经典SQL语句)

目录增删查改(CRUD)增删查改(CRUD)DDL(data definition language):数据定义语言,用来维护存储数据的结构,主要包括增加(create)、删除(drop)、alter(修改)。DML(Data Manipulation Language): 操作是指对数据库中表记录的操作,主要包括表记录的插入(insert)、更新(update)、删除(delete)和查询(select),是开发人员日常使用最频繁的操作。在使用MySQL中,我们接触最多的就是:==CRUD 即增加

2021-04-25 18:12:12 542 1

原创 MySQL数据库基础操作

数据库的基本操作创建数据库使用数据库删除数据库常用的数据类型数值类型字符串类型日期类型表的操作

2021-04-25 13:19:57 195

原创 了解什么是数据库、MySQL和SQL

目录数据库存在的意义数据库关系型数据库(RDBMS)和非关系型数据库MySQLSQLSQL分类数据库存在的意义因为数据存在内存中有优点也有缺点。优点支持随机访问,访问速度快;缺点是内存的容量小,且断电遗失。为了客服和护具存储在内存中的缺点,数据库存在的意义是:现实场景中需要持久化存储(Persistent Stores)和管理数据库。数据库的存储介质:磁盘,内存。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也称为数据库服务器。数据库数据库(database):是一个以某种有组织的方

2021-04-24 22:44:46 215

原创 七大经典排序算法总结

概念排序排序:排序是计算机的一种操作方法,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。(就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作)。通常我们提到的排序指的是排升序,就是按从小到大的顺序排列。通常意义上的排序都是指的原地排序(in place sort)。稳定性两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变化,则我们称该算法是具备稳定性的排序算法。排序算法简介Java语言中基于比较的“原地”排序算法有7种。(基于比较能力是

2021-04-09 16:22:22 174

原创 一篇看懂归并排序MergeSort算法与代码

目录原理代码实现代码分析性能分析稳定性原理归并排序(MergeSort)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并排序是稳定的排序算法。作为一种典型的分而治之思想的算法应用,归并排序的实现由两种方法组合实现:自上而下的递归(所有递归的方法都可以用迭代重写,所以就有了第 2 种方法);自下而

2021-04-09 16:12:57 435

原创 一篇看懂快速排序QuickSort算法与代码

目录原理代码实现代码分析性能分析稳定性原理快速排序(Quicksort)是对冒泡排序的一种改进,由东尼·霍尔在1960年提出。快速排序是指通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序。整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序不是稳定的排序算法。快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为两个子序列(sub-lists)。步骤为:

2021-04-08 21:33:55 321

原创 一篇看懂堆排序HeapSort算法与代码

目录原理代码实现代码分析性能分析稳定性原理堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序不具备稳定性。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:1、大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;2、小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;堆排序的基本原理也是选择排序,只是不再在使

2021-04-08 00:43:59 238

原创 一篇看懂希尔排序ShellSort算法与代码

目录原理代码实现代码分析性能分析稳定性原理希尔排序(Shell’s Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。希尔排序是不稳定的排序方法。希尔排序法的的基本思

2021-04-07 16:10:37 106 2

原创 一篇看懂插入排序InsertSort算法与代码

目录原理代码实现代码分析性能分析稳定性原理插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。插入排序是稳定的排序算法。能用冒泡排序算法的必然能用插入排序。插入排序时将整个区间被分为有序区间,和无序区间。每次选择无序区间的第一个元

2021-04-06 23:57:44 213 2

原创 一篇看懂选择排序Select Sort算法与代码

目录原理代码实现代码分析性能分析稳定性原理选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最大(或最小)的一个元素,存放在序列的最后(起始)位置,直到全部待排序的数据元素排完。选择排序是不稳定的排序方法。一趟选择排序结束后,最大的数在最后面,再遍历未排序区间,第n趟结束后,前n大的n个数在集合的最后面,循环这个步骤,全部排序完成数组有序。代码实现 public static void selectSort(int[] arra

2021-04-06 22:10:40 213 2

原创 一篇看懂冒泡排序Bubble Sort算法与代码

目录原理代码实现性能分析稳定性原理冒泡排序(Bubble Sort),是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。一趟冒泡结束后,最大的数在最后面,再遍历未排序区间,第二趟结束后,最大的两个数在后面,循环这个步骤,全部排序完成数组有序。代码实现基本代码: public static void b

2021-04-06 18:33:39 227

原创 顺序表的迭代能力和迭代器

目录迭代顺序表的迭代能力和迭代器迭代元素(Element):被管理的原子数据,元素类型不限。集合(Collection):存放元素的容器,需要利用一定的数据结构知识对元素进行组织。迭代(Iterate)/遍历(Traversal):在数据结构的语境下,往往表示对一个集合中的所有元素都按照一定的顺序处理一次。Java中常见的Iterate接口和继承的类:TODO:图片顺序表ArrayList的继承链条简单版:TODO:图片顺序表的迭代能力和迭代器每种容器(Collection)都是具备迭代

2021-03-31 17:01:46 126

原创 认识线性表和顺序表

目录线性表顺序表线性表线性表(linear list)是n个具有相同特性的数据元素的的有限序列。线性表是一种在实际中广泛使用的数据结构,线性表用于存储逻辑关系为“一对一”的数据,常见的线性表有:顺序表、链表、栈、队列、字符串……线性结构特点:元素和元素之间有前后关系元素会有在第几个位置的概念,位置通过下标(index)表示,从 0 开始插入可以根据位置的不同,分为:头插、尾插、按位置插入删除可以根据位置的不同,分为:头删、尾删、按位置删除遍历可以分为从前往后遍历和从后往前遍历Java 中

2021-03-28 20:51:37 204

原创 Java语言 找出出现一次的数字

“有一组数据,只有一个数字是出现一次,其他是两次,请找出这个数字。”最简单的方法是用到异或`^`操作符。根据他的相同为0,相异为1的特性。

2021-03-28 18:27:43 126

原创 Java语言 一篇看懂 static 关键字的作用

第一,为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关。第二,实现某个方法或属性与类而不是对象关联在一起。具体而言,在Java语言中,static主要有4种使用情况:修饰属性(修饰成员变量),修饰方法,修饰代码块,修饰内部类。Java静态属性和类相关,和具体实例无关。换句话说,静态属性是属于类的,同一个类的不同实例对象共用一个静态属性。只要静态成员变量所在的类被加载,这个静态成员变量就会被分配内存空间。因此在引用该静态成员变量时,通常不需要生成该类的对象,而是通过类名直

2021-03-15 21:30:46 92

原创 Java语言 类的定义和使用、类的实例化、类的成员

Java编程语言是典型的面向对象的计算机编程语言,处理的最小的完整单元为对象。而现实生活中具有共同特性的对象的抽象就称之为类。类由类声明和类体构成,类体又由变量和方法构成。Java中的类就是具备某些共同特征的实体的集合,它是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。**类主要是用来对一个实体(对象)来进行描述的。**主要描述该实体(对象)具有哪些属性(外观、尺寸等),哪些功能(有哪些作用),描述完成后告诉计算机。

2021-03-14 21:57:17 680

原创 Java语言 变量的形态(variable kind)及其存储位置

Java种变量的形态一共有三种:1, ==出现在类中,方法之外,用`static`关键字修饰的,称为:**静态变量** 或者 **类成员变量** 或者 **类变量**----- *它们保存的位置在方法区*==2, ==出现在类中,方法之外,称为:**属性** 或者 **成员变量** 或者 **实例变量**-----*它们保存在堆上*==3, ==出现在方法中,称为:**局部变量**-----*它们保存在栈上*==

2021-03-13 17:51:11 102

原创 Java语言 区别引用类型和基本数据类型

Java中提供了两种数据类型,分别是基本数据类型(primary data type)和引用数据类型(reference type)。它们之间最明显的区别就是:基本数据类型就是现金,要用直接用;引用类型是存折,要用还得先去银行取现。基本数据类型也称值类型、原始类型或者内置类型。Java中的基本数据类型一共有8种,byte、short、int、long、float、double、char、Boolean。同时为了面向对象操作的一致性,这些基本类型都有相应的封装类型

2021-03-11 19:54:11 1039

原创 Java语言 认识并理解对象和引用

Java中“万物皆对象”。·引用是一种数据类型(引用类型),用来指向对象。·对应用的大部分操作实际上操作的都是该引用指向的对象。·当多个引用指向同一个对象时,通过其中的任一引用修改了对象,其他引用都可以看到变化(共享特性)。·当一个引用不指向任何对象时(==null),要求访问其指向的对象,就会遇到空指针异常(NullPointerException)。java中,引用变量实际上可以理解为一个指针,它指向的是堆内存中对象实例。

2021-02-20 23:09:40 331

原创 Java语言 冒泡排序法 具体简单实现

Java语言 冒泡排序法冒泡排序(Bubble Sort),是一种计算机科学领域的较简单基础的排序算法。其基本思路是,对于一组要排序的元素列,依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面,如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面,重复步骤,直至全部排序完成。

2021-02-20 16:54:25 79

原创 Java语言 二分查找法(折半查找)具体实现 普适写法

这种写法适用于大多数的二分查找,不用不停的思考参数和区间的开闭。算是一种总结性的,比较普适的写法。

2021-02-10 17:25:59 118

原创 Java语言 数组的定义与使用详解

数组(Array)是在内存中连续存储的具有相同类型的一组数据的集合。数组是一组相同类型元素的集合。数组的定义与使用数组的定义什么是数组创建数组基本语法动态初始化静态初始化数组的使用代码示例:数组长度的获取、访问数组中的元素代码示例:下标越界代码示例:遍历数组补充:打印数组内容Arrays.toString()方法

2021-02-03 21:26:00 2017 1

原创 Java语言 图文详解JVM内存及其区域划分

图文详解 JVM内存区域划分及JVM内存区域超详解根据《Java虚拟机规范》的规定,JVM内存(运行时数据区)通常包括5个部分:**程序计数器**(Program Counter Register)、**Java虚拟机栈**(VM Stack)、**本地方法栈**(Native Method Stack)、**方法区**(Method Area)、**堆**(Heap)、**运行时常量池**(Runtime Constant Pool)。

2021-01-31 20:59:53 159

原创 Java语言 Java语言所有关键字及其具体含义

Java语言所有关键字及其含义下面是Java语言的所有关键字,有些关键字是“受限的”,它们只在某些特定场合(例如,在模块声明中)有特殊含义。在其他情况下,它们可以是标识符。关键字含义abstract抽象类或方法assert用来查找内部程序错误boolean布尔类型break跳出一个选择语句或循环byte8位整数类型caseswitch的一个分支catch捕获异常的try块子句charUnicode字符类型class定义

2020-12-29 18:32:54 966

原创 Java语言 Java基本数据类型详解 byte short int long float double char boolean

Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本数据类型(primitive type)。其中有4种整型,2种浮点型,1种字符型char,1种用于表示真值的布尔型boolean。

2020-12-28 22:22:31 648

空空如也

空空如也

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

TA关注的人

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