自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 一招解决内存不够用的现象

现象描述:最近一段时间,电脑一开机内存直接飙升到75%,寻思着自己也没打开什么东西。才运行了几个软件,内存就直接拉满了,很是无语……解决方案:直接WIN+R,输入mdsched.exe。关机重启,自动修复(需要一点点时间,耐心等待),完美解决。...

2022-03-31 19:20:08 641

原创 算法 | 堆排序

堆排序的基本介绍1、堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序也是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),同时它也是不稳定排序;2、堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大项堆;每个结点的值都小于或等于其左右孩子结点的值,称为小项堆。堆排序的基本思想1、将待排序序列构成一个大项堆,此时整个序列的最大值就是堆顶的根节点;2、将其与末尾元素进行交换,此时末尾就为最大值;3、然后将剩余的n-1个元素重新构造成一个堆,这样

2021-08-13 20:13:44 418

原创 数据结构 | 线索化二叉树

线索化二叉树的由来在二叉树中,我们经常发现,有许多的叶子结点的左右指针没有完全利用上,于是我们希望能将这些指针充分的利用,所以就出现了线索化二叉树线索化二叉树的基本介绍1、n个结点的二叉链表中含有n+1个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为线索);2、这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。根据线索性质的不同,线索二叉树可分为前序线索二叉树,中序以及后序三种;3、每一个结点的前一个结点称之为前驱结点

2021-08-13 13:51:24 758

原创 数据结构 | 二叉树

为什么需要树这种数据结构?因为它能够提高数据的存储、读取的效率。比如二叉排序树,既可以保证数据的检索速度,也可以保证数据的插入、删除、修改速度,相比于数组这种存储方式,显然效率以及实用性更高。二叉树的概念树有很多种,且每个节点最多只能有两个子节点的一种形式称为二叉树,二叉树的子节点分为左节点和右节点,如果该二叉树的所有叶子结点都在最后一层,且结点总数=2^n-1(n为层数),则称之为满二叉树;如果该二叉树的所有叶子结点都在最后一层或者倒数第二层,且最后一层的叶子结点在左边连续,倒数第二层的叶子结点在

2021-08-13 12:42:06 244

原创 算法 | 求和最大的子序列

题目说明给定一整数序列A1,A2,A3,…,An(其间可能存在负数),求A1到An的一个子序列Ai-Aj,使得Ai~Aj的和最大,并输出子序列的内容。代码体现public class MaxSub { public static void main(String[] args) { int[] nums = {-4, -2, 1, 4}; method_1(nums); method_2(nums); } //方法一:暴力破

2021-08-04 15:30:48 330

原创 总结四种常见的查找算法

四种常见的查找算法1、顺序查找1.1、定义1.2、代码体现2、二分查找2.1、定义2.2、思路分析2.3、代码体现3、插值查找3.1、定义3.2、代码体现4、斐波那契查找4.1、定义4.2、原理4.3、代码体现1、顺序查找1.1、定义顺序查找又名线性查找,是一种最简单的查找方法,它的基本思想是从第一个记录开始,逐个比较记录的关键字,直到和给定的K值相等,则查找成功;若比较结果与文件中n个记录的关键字都不等,则查找失败。1.2、代码体现public class SequenceSearch {

2021-08-02 18:59:57 4501 1

原创 算法 | 八皇后问题

什么是八皇后问题?八皇后问题是一个古老而著名的问题,它是回溯算法的典型案例。其问题的内容是:在8x8格的国际棋盘上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问共有多少种摆法。八皇后问题算法思路分析:1、先把第一个皇后放在第一行第一列;2、第二个皇后放在第二行第一列,然后判断是否可行,如果可以,继续放在第二列、第三列,依次把所有列都放完,找到一个合适的;3、继续放第三个皇后,还是从第一列、第二列…直到第八个皇后也能放在一个不冲突的位置上,这样就找到了一

2021-07-28 20:20:40 2145 1

原创 算法 | 大数相乘

题目描述例如:String a = “12546546…”;String b = “4845452…”,a的长度和b的长度都很大,且给出的数都是正整数注意一点:一个n位数乘以一个m位的数,相乘最终的结果位数区间应该在:n到n+m之间。代码体现://大数相乘public class Solution { public static void main(String[] args) { String a = "9674657999"; String b

2021-07-18 16:03:01 395

原创 总结Java中常见的一些排序算法

部分常见的排序算法:1、冒泡排序1.1代码体现2、选择排序3、插入排序4、希尔排序5、快速排序6、归并排序7、基数排序8、以上排序算法的总结和对比1、冒泡排序冒泡排序的基本思想是:依次比较相邻元素的值,若发现逆序则交换,使较大的元素逐渐向后移动,就像是水底的气泡一样逐渐向上浮动。1.1代码体现public class BubbleSort { public static void main(String[] args) { int value[] = {3, -6, 18

2021-07-18 10:50:14 394

原创 算法 | 大数相加

题目描述:例如:String b = “12546546…”;String b = “4845452…”,a.size和b.size都大于1000位,且给出的数都是正整数思路分析:1、在进行相加的时候需要将末尾对齐,然后依次相加。2、此时会涉及到一个问题,进位。两个数相加最多只会进一位,因为两个个位数相加最大只会是18。3、两个数相加结果的位数只会有两种情况,要么是较大数位数的长度,要么就是较大数位数的长度加一。4、在相加的时候可以把两个String代表的数转成数组然后再进行一个计算

2021-07-15 20:41:14 672

原创 数据结构——栈 | 使用数组及单链表来模拟栈的实现

Tips:①栈是一个先入后出的有序列表;②栈的插入和删除只能在同一端进行,允许插入和删除的一段为栈顶,固定的一段为栈底;③由栈的特性可知,最先放入的元素在栈底,最后进入的元素在栈顶。而删除元素则刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。这里使用两种方式来实现栈的创建一、使用数组来模拟栈代码体现://定义一个ArrayStack用来表示栈public class ArrayStackDemo { private int maxSize;//栈的大小 privat

2021-07-12 16:25:42 487

原创 单例模式的常见写法

什么是单利模式?单例类在整个程序中只能有一个实例,这个类负责创建自己的对象,并确保只有一个对象被创建什么情况下会使用单例?一般情况下,全局使用的类,我们要把它写成单例。会消耗很多系统资源的类,要使用单例(eg:数据库连接池、工厂类、数据源等,这些创建和销毁都要消耗很多系统资源的对象)比如在我们使用Spring框架的时候,Spring的Bean它的默认作用域就是单例的单例模式的实现要点:1、私有的构造器(当私有化构造器之后我们的对象就不能通过外界的构造方法去进行创建了);2、持有该类

2021-07-12 11:14:28 456 1

原创 数据结构——单向环形链表 | 约瑟夫问题

据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一个重新报数,直到所有人都自杀身亡为止。然而Josephus 和他的朋友并不想遵从。首先从一个人开始,越过k-2个人(因为第一个人已经被越过),并杀掉第k个人。接着,再越过k-1个人,并杀掉第k个人。这个过程沿着圆圈一直进行,直到最终

2021-07-11 16:35:08 458

原创 数据结构——双向链表

单向链表和双向链表的区别:单向链表查找的方向是单一的,而双向链表既可以向前查找,也可以向后查找;在删除时,单向链表需要靠辅助节点进行删除操作,而双向链表。和单链表一样,首先仍然需要先创建一个头结点public class Node { public int no; public String name; public Node pre;//指向前一个节点 public Node next;//指向下一个节点 public Node(int no, Str

2021-07-11 16:05:07 463

原创 Java创建线程的四种方式

Java创建线程的四种方式如下:1、继承Thread类由于Java不允许多继承,所以当继承了Thread类之后,就无法继承其他类了,局限性太大。2、实现Runnable接口在Java中,虽然无法多继承,但是可以实现多个接口,所以相比于去继承Thread类创建线程,实现Runnable接口会更加灵活3、Callable和Future继承Thread类与实现Runnable接口虽然都可以创建线程,但是都无法接收线程执行之后的返回值,所以在JDK1.5之后,出现了Callable和Futur

2021-06-21 14:29:31 501

原创 数据结构——单链表

单链表的介绍1、链表是以节点的方式来存储2、每个节点包含一个data域以及next域,next域指向下一个节点;3、链表的各个节点在内存中不一定是连续存储的。先创建一个头结点/** * 定义Node,每个Node对象就是一个节点 */public class Node { public int no; public String name; public Node next;//用于指向下一个节点 public Node(int no, String

2021-06-20 19:01:22 539 1

原创 数据结构——数组模拟队列

队列是一个有序列表,可以用数组或链表来实现,它遵循先进先出的原则。内容概述:1、数组模拟队列2、数组模拟循环队列一、数组模拟队列代码实现/** * 使用数组模拟队列 */public class ArrayQueue { private int maxSize;//表示数组的最大容量 private int front;//队列头 private int rear;//队列尾 private int[] arr;//该数组用于存放数据,模拟队列

2021-06-13 23:13:33 622 2

原创 数据结构——稀疏数组

稀疏数组作用:数组中有很多无效数据,压缩数组。疏数组可以简单的看作为是压缩,在开发中也会使用到。比如将数据序列化到磁盘上,减少数据量,在IO过程中提高效率等等。为什么要进行压缩?由于稀疏矩阵中存在大量的“空”值,占据了大量的存储空间,而真正有用的数据却少之又少,且在计算时浪费资源,所以要进行压缩存储以节省存储空间和计算方便。这里用一个小Demo来展示稀疏数组的作用,主要功能如下:1、将二维数组转稀疏数组2、将稀疏数组转回原始数组3、将稀疏数组存到磁盘中4、从磁盘中读取稀疏数组并将其

2021-06-10 17:47:35 456

原创 力扣第十一题——盛最多水的容器

给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 2:输入:height = [1,1]输出:1示例 3:输入:height = [4,3,2,1,4]输出:16示例 4:输入:height = [1,2,1]输出:2提示:n = height.length

2021-05-19 11:54:51 541

原创 力扣第九题——回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。示例 1:输入:x = 121输出:true示例 2:输入:x = -121输出:false解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3:输入:x = 10输出:false解释:从右向左读, 为 01 。因此它不是一个回文数。示例 4:输

2021-05-18 09:46:04 594

原创 力扣第七题——整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。示例 1:输入:x = 123输出:321示例 2:输入:x = -123输出:-321示例 3:输入:x = 120输出:21示例 4:输入:x = 0输出:0提示:-231 <= x <= 231 - 1来源:力扣(LeetCode)链

2021-05-18 08:48:06 522

原创 力扣第三题——无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: s = “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: s = “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。请注意,你的答案必须是 子串 的长度,“pwke” 是一个子序列,不是

2021-05-13 17:47:18 667

原创 力扣第一题——两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [2,7,11,15], target = 9输出:[0,1]解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。示例 2:输入:nums = [3,2,4], target = 6输出:[1,2

2021-05-10 21:04:33 577

原创 Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0

在使用Springboot测试时,遇到一个错误,具体报错信息如下:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources) on project helloword: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:res

2021-04-06 20:27:19 784 1

原创 Servlet+mysql+jsp实现管理员登录权限操作以及实现数据的分页功能

Tips:本项目使用Maven搭建,项目实现的分页效果,使用的是最原始的方式,未使用分页插件!数据库环境搭建创建数据库:create database emp_sys;创建数据表:员工表create table employee( id int primary key auto_increment, name varchar(20) not null , salary double not null , age int not null) charset=ut

2021-01-26 23:35:06 2304 2

原创 策略模式

我们先来看一下在未使用策略模式之前采用面向对象的方式来做以下案例。用一个最简单的案例,来了解策略模式的思维方式。直接上代码:Dog超类:/** * Dog超类 */public abstract class Dog { //狗狗的毛色各不相同,由子类去实现 public abstract void color(); //狗狗的叫声是共性行为,直接由父类实现 public void bark() { System.out.println("汪汪汪.

2021-01-24 16:28:57 727 1

原创 简单快速搭建一个SSM框架

刚学完SSM框架,这里用SSM框架来实现操作数据库的功能,话不多说,直接上代码。在pom.xml中导入所需要的依赖: <!--spring-mvc核心依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId>

2021-01-19 15:22:01 896

原创 @Autowired注入service时失败

错误信息为:Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.1:test (default-test) on project SpringMVC_03: There are test failures.Please refer to F:\Spring_Code\SpringMVC_03\target\surefire-reports for the individual test results.P

2021-01-17 19:02:39 1436

原创 Error:(3, 47) java: 程序包org.springframework.web.bind.annotation不存在

程序报错如下:解决办法:File ——> Settings清理之前项目的target重建项目即可。

2021-01-16 15:12:09 1113

原创 U盘在电脑上不显示怎么办?

右键此电脑,点击管理,选择设备管理器,找到通用串行总线控制器,看到有一个USB大容量存储设备,鼠标右击,选择卸载设备,将U盘拔下后再插入即可正常使用。如下如:...

2019-06-13 20:40:34 3430

原创 Struts2的初步使用与配置

准备工作:下载Struts2的开发环境,下载地址:https://struts.apache.org/下载完成后解压压缩包,如图所示:目录结构说明:apps : 这里名放的是一系列的war文件(war文件就是web项目打成的war包,类似于java文件的jar文件,war文件可以直接放入Tomcat中使用)。docs : 这里面放的是一些开发文档和API。lib : 这里放的是S...

2019-05-25 12:21:30 803 1

原创 JavaEE中如何使用别人给你的jar包

当你需要使用被人给你的jar包时,操作的步骤如下第一步:先导入这个jar包,导入的位置为:在你的WEB-INF下的lib文件夹里,只需要复制进去即可,无需其他操作,具体位置如图所示:然后你再该路径下可以看到导入后的jar包的class文件第二步:在web.xml中注册该Servlet,注册代码为注:servlet中的servlet-name和servlet-mapping中的se...

2019-05-21 18:22:04 2305

原创 Java如何使用junit执行单元测试以及如何实现数据库增删改查

在上一篇里面,我们学会了如何简单的使用Java连接数据库。现在我们就来看看如何实现数据库常用的操作,即增删改查。通过观察,我们发现连接数据库的方式每次都是那些代码,固定不变,因此,我们可以将其抽取出来,做一个工具类,来实现数据库的连接以及关闭资源等操作。没有看的小伙伴可以先看一下上篇博客Java如何连接MySQL、SQLserver数据库我们抽取出来的工具类如下代码所示:package ...

2019-05-19 14:45:43 10832

原创 Java如何连接MySQL、SQLserver数据库

Java如何连接MySQL、SQLserver数据库 关于Java与数据库的连接,总体上大同小异,差别不是太大,这里我们以MySQL数据库为例。Java与数据库连接,总体上可以概括为六个步骤,分别是: 1.注册驱动 2.建立连接 3.创建Statement 4.执行查询 5.遍历查询所有数据 6.释放资源在进行与数据库的连接之前,我们需要先导入驱动如图所示,在你的工程目录下建...

2019-05-18 19:48:31 1628

原创 初识策略设计模式

什么是策略设计模式:它定义了算法家庭,将其分别封装起来,让它们之间可以互相替换,通过此设计模式让算法的变化,不会影响到使用算法的客户。核心思想:把算法提取出来放到一个独立的对象中,使用策略模式修改之后,代码的可读性和扩展性都有了很大的提高。好了,废话不多说,就先简单的介绍到这里,接下来用一个简单的案例来看一下这种模式,代码如下:一、首先定义一个策略接口: public interf...

2019-03-19 10:31:46 865

空空如也

空空如也

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

TA关注的人

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