自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java复习资料-类之间的关系

类之间的关系类之间的关系共有六种继承:一个类继承另一个类,也成为泛化,体现共性与特性的关系实现:一个类实现接口中声明的方法依赖:在一个类的方法中去操作另一个类的对象,称为第一个类依赖第二个类关联:在一个类中使用另一个类的对象作为该类的成员变量,体现两个类之间的强依赖关系聚合:关联的一种特例,体现整体与部分的关系(has-a)组成:关联的一种特例,体现整体与部分之间的关系(constains-a)继承概念继承是面向对象编程技术的重要基石,被继承的类成为父类,继承父类的类称为子类继承有

2021-06-06 21:53:06 451 4

转载 Javaweb-HTTP

概念Hyper Text Transfer Protocol 超文本传输协议*传输协议:定义了,客户端和服务器端通信时*特点:1. 基于TCP/IP的高级协议2. 默认端口号:803. 基于请求/响应模型的:一次请求对应一次响应4. 无状态的:每次请求之间相互独立,不能交互数据*历史版本:* 1.0:每一次请求响应都会建立新的连接* 1.1:复用连接,发送数据的格式请求消息数据格式1.请求行请求方式 请求url 请求协议/版本GET /login.html HTTP/1.1

2021-04-23 10:31:41 91

原创 JavaScript-Servlet

概念什么是Servlet1、Servlet 是 JavaEE 规范之一。规范就是接口2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。生命周期创建servlet时有四个比较重要的,分别是:构造器方法,init初始化方法,service方法, destroy销毁方法,那么它的生命周期为先执行构造器

2021-04-21 11:18:57 613 1

原创 Javaweb-JavaScript之Windows对象

Windows窗口对象的方法与弹出框有关的方法alert()显示带有一段消息和一个确认按钮的警告框。confirm() 显示带有一段消息以及确认按钮和取消按钮的对话框。* 如果用户点击确定按钮,则方法返回true* 如果用户点击取消按钮,则方法返回falseprompt() 显示可提示用户输入的对话框。* 返回值:获取用户输入的值与打开关闭有关的方法close() 关闭浏览器窗口。* 谁调用我 ,我关谁open() 打开一个新的浏览器窗口* 返回新的Window对象

2021-04-21 10:37:33 104

原创 Javaweb-JavaScript加载完成事件

静态注册事件<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>加载完成事件</title> <script type="text/javascript"> onload事件方法 function onloadfun() { alert("静态注册onload");

2021-04-20 08:39:26 121 1

原创 Javaweb-JavaScript单击事件

静态单击事件<script> function onclickFun() { alert("静态注册onclick事件"); }动态单击事件<script> //动态注册onclick事件 window.onload = function () { //1.获取标签对象 /*document是JavaScript语言提供的一个对象(文档)

2021-04-20 08:32:46 425

原创 Javaweb-JavaScript失去焦点事件

首先,JavaScript的事件分为静态注册事件和动态注册事件,静态注册事件是通过html 标签的事件属性直接赋于事件响应后的代码;动态注册事件是是指先通过js 代码得到标签的dom 对象,然后再通过dom 对象.事件名= function(){} 这种形式赋于事件响应后的代码静态失去焦点事件<script> //静态注册失去焦点事件 function onblurFun() { //console是控制台对象,由JavaScript提供,专门向浏览

2021-04-20 08:26:35 691

转载 Javaweb-JavaScript基础笔记大全

概念JavaScript是一门客户端脚本语言,运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎脚本语言:不需要编译,直接就可以被浏览器解析执行了功能可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验发展史1992年,Nombase公司,开发出第一门客户端脚本语言,专门用于表单的校验。命名为 : C-- ,后来更名为:ScriptEase1995年,Netscape(网景)公司,开发了一门客户端脚本语言:LiveScri

2021-04-20 08:07:39 93

原创 Javaweb-CSS的一些基本属性

1.字体,文本font-size:字体大小color:文本颜色text-align:对其方式line-height:行高2.背景background3.边框border:设置边框,符合属性4.尺寸width:宽度height:高度5.浮动leftright这个有必要单独解释一下,看代码<div class="div3">aaaa</div><div class="div4">bbbbb</div><

2021-04-17 11:08:51 82

原创 Javaweb-CSS盒子模型

什么是盒子模型呢,举个栗子:假设你写了俩正方形,一大一小,像酱紫 div { boder: 1px solid #bbffaa; } .div1 { width: 100px; height: 100px; } .div2 { width: 200px; height: 200px; }<d

2021-04-17 10:59:53 126

原创 Javaweb-CSS扩展选择器

1.子选择器筛选选择器1元素下的选择器2元素语法: 选择器1 选择器2{} div p { color: green; }<div> <p>你好世界</p></div><p>helloworld</p>看吧,你好世界变绿了,但是helloworld并没有2.父选择器:筛选选择器2的父元素选择器1语法: 选择器1 > 选择器2{} div > p.

2021-04-17 10:35:25 81

原创 Javaweb-CSS常用选择器

1.标签名选择器标签名选择器的格式是: 标签名{属性:值;}标签名选择器,可以决定哪些标签被动的使用这个样式。举个栗子:在所有 div 标签上修改字体颜色为蓝色,字体大小 30 个像素。边框为 1 像素黄色实线。 并且修改所有 span 标签的字体颜色为黄色,字体大小 20 个像素。边框为 5 像素蓝色虚线<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &l

2021-04-14 11:33:51 208

原创 Javaweb-标签介绍

常用标签1.font标签是字体标签,它可以用来修改文本的字体,颜色,大小(尺寸)color 属性修改颜色 face 属性修改字体 size 属性修改文本大小font color=“red” face=“宋体” size=“7”2.h标签是标题标签(h1到h6)align是对齐属性left左对齐,center居中,right右对齐h1 align=“center”...

2021-04-14 10:39:38 990 1

原创 Java-图的遍历模式

图遍历介绍所谓图的遍历,即是对节点的访问,一个图有那么多节点,如何遍历这些节点,需要特定策略,一般有两种访问策略:1.深度优先遍历2.广度优先遍历深度优先遍历基本思想1.深度优先遍历,从初始访问节点出发,初始访问节点可能有很多邻接节点,深度优先遍历的策略就是首先访问第一个邻接节点,然后再以这个被访问的邻接节点作为初始节点,访问它的第一个邻接节点,可以这样理解,每次都在访问完当前节点后首先访问当前节点的第一个邻接节点2.我们可以看到,这样的访问策略是优先往纵向深入挖掘,而不是对一个节点的所有邻接节点进

2020-11-08 20:46:14 172 1

原创 Java-图的详解

图的基本介绍为什么要有图前面我们学习了线性表和树,线性表局限于一个直接前驱和一个直接后继的关系,树也只能有一个前驱节点是父节点,当我们要表示多对多的关系时,这里我们就用到了图图的举例说明图是一种数据结构,其中节点可以具有零个或多个相邻的元素,两个节点之间的连接称为边,节点也可以称为顶点,如图:图的常用概念1.顶点2.边3.路径4.无向图5.有向图6.带权图(边带权值的图也叫做网)图的表示方式图的表示方式有两种:二维数组表示(邻接矩阵);链表表示(邻接表)邻接矩阵邻接矩阵

2020-11-07 11:03:27 1776 1

原创 Java-B树,B+树与B*树

B树的介绍B-tree即B树,B即balance,平衡的意思。前面已经介绍了2-3树与2-3-4树,他们就是B树,如图:对上图的说明:1.B树的阶:节点的最多字节点个数。比如2-3树的阶是3,2-3-4树的阶是42.B树的搜索,从根节点开始,对节点内的关键字(有序)进行二分查找,如果命中则结束,否则进入查询关键字所属范围的子节点,一直重复,直到所对应的左指针为空,或者已经是叶子节点3.关键字集合分布在整棵树中,即叶子节点和非叶子节点都存放数据4.搜索有可能在非叶子节点结束5.其搜索性能等价于

2020-10-28 21:05:36 390 1

原创 Java-多路查找树

二叉树与B树二叉树的问题分析二叉树的操作效率高,但是也存在问题,请看下面的二叉树二叉树需要加载到内存的,如果二叉树的节点少,没有什么问题,但是如果二叉树的节点很多(比如1亿),就会存在下列问题问题1.在构建二叉树时,需要进行多次i/o操作(海量数据存在数据库或文件中),节点海量,构建二叉树时速度有影响问题2.节点海量,也会造成二叉树的高度很大,会降低操作速度多叉树1.在二叉树中,每个节点都有数据项,最多有两个子节点,如果允许每个节点有多个数据项和多个子节点,就是多叉树(multiway tr

2020-10-28 20:45:13 150 1

原创 Java-二叉排序树的删除

考虑情况二叉排序树的删除情况比较复杂,有下面三种情况要考虑1.删除叶子节点2.删除只有一颗子树的节点3.删除有两颗子树的节点思路分析第一种情况:删除叶子节点思路:1.需求先去找到要删除的节点targetNode2.找到targetNode的父节点parent3.确定targetNode是parent的左子节点还是右子节点4.根据情况对应删除第二种情况:删除只有一颗子树的节点思路:1.需求先去找到要删除的节点targetNode2.找到targetNode的父节点parent3

2020-10-25 21:56:52 367 3

原创 Java-二叉排序树的简介与遍历

先看一个需求给你一个数组(7,3,10,12,5,1,9),要求能高效的完成对数据的查询的添加解决方案分析使用数组数组未排序,优点:直接在数组尾添加,速度快。缺点:查找速度慢数组排序:优点:可以使用二分查找,查找速度快。缺点:为了保证数组有序,在添加数据时,找到插入位置后,后面的数据需要整体移动,速度慢使用链式储存-链表不管链表是否有序,查找速度都很慢,添加数据速度比数组快,不需要数据整体移动使用二叉排序树二叉排序树介绍二叉排序树:BST(Binary Sort(Search) Tree

2020-10-22 19:57:00 119

原创 Java-线索化遍历二叉树

先看一个问题将数列{1,3,6,8,10,14}构成一颗二叉树问题分析:1.当我们对上面的二叉树进行中序遍历时,数列为{8,3,10,1,6,14}2.但是6,8,10,14这几个节点的左右指针没有完全利用上3.如果我们希望充分利用各个节点的左右指针,让各个节点指向自己的前后节点怎么办4.解决方法:线索化二叉树线索二叉树基本介绍1.n个节点的二叉链表中含有n+1个空指针域(公式:2n-(n-1)=n+1),利用二叉链表的空指针域,存放指向该节点再某种遍历次序下的前驱和后继节点的指针(这种附

2020-10-22 16:01:08 164 4

原创 Java-顺序存储二叉树

顺序存储二叉树概念基本说明:从数组储存来看,数组存储方式和树的存储方式可以转换,即树可以转换成数组,数组也可以转换为树顺序储存二叉树的特点1.顺序存储二叉树通常只考虑完全二叉树2.第n个元素的左子节点为2n+13.第n个元素的右子节点为2n+24.第n个元素的父结点为(n-1)/25.n:表示二叉树中的第几个元素代码实现(以前序遍历的方式)注:不懂前序遍历的小朋友请移步我的另一篇文章链接: https://blog.csdn.net/qq_45739810/article/details/

2020-10-21 22:51:51 118 1

原创 Java-二叉树删除节点

思路分析首先先处理:考虑如果树是空树root,如果只有一个root节点,则等价二叉树置空然后进行下列操作:1.因为我们的二叉树是单向的,所以我们判断当前节点的子节点是不是需要删除的节点,而不能判断当前节点是不是需要删除的节点2.如果当前节点的左子节点不为空,并且左子节点就是要删除的节点,就将this.left=null,并返回3.如果当前节点的右子节点不为空,并且右子节点就是要删除的节点,就将this.right=null,并返回4.如果第二步和第三步没有删除节点,那我们就向左子树进行递归5

2020-10-21 22:20:22 318

原创 Java-二叉树的前序、中序和后序查询

前序查找的思路分析1.先判断当前节点是不是自己要找的2.如果是,则返回当前节点3.如果不是,则判断当前节点的左子节点是否为空,如果不为空,则递归前序查找4.如果左递归前序查找,找到节点则返回,若未找到,则继续判断当前节点的右子节点是否为空,如果不为空,则继续递归前序查找前序查找代码实现//前序遍历查找 //如果找到返回Node,没找到返回null public Node preOrderSearch(int no) { //比较当前节点是不是 if(this.no==no) {

2020-10-20 20:41:34 161 4

原创 Java-二叉树详解

基础部分1.为什么要有这种数据结构1.1数组存储方式分析优点:通过下标方式访问元素,速度快,对于有序数组,还可以使用二分查找提高检索速度缺点:如果要检索某个具体值,或者插入值(按一定顺序)会整体移动,效率较低1.2链式存储方式的分析优点:在一定程度上对数组的存储方式有优化(比如:插入一个数值节点,只需要将插入节点连接到链表中即可,删除效率也很高)缺点:在进行检索时,效率仍然很低,比如:检索某个值,需要从头节点遍历1.3树存储方式分析提高数据存储,读取效率,比如利用二叉排序树(Binary

2020-10-19 20:30:33 256 1

原创 Java-哈希表

哈希表的基本介绍散列表(Hash table,也叫哈希表),是根据关键码值(key value)而直接进行访问的数据结构,也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫散列函数,存放记录的数组叫做散列表我们用谷歌公司上机题来模拟哈希表1.有一个公司,当有新员工来报道时,要求将该员工的信息加入(id…),当输入该员工id时,要求查找到该员工的所有信息2.要求:尽量不要使用数据库,尽量节省内存,速度越快越好示意图代码实现//表示一个雇员 class E

2020-10-17 20:40:54 80

原创 常用的排序算法总结和对比

一张排序算法的比较图相关术语解释1)稳定:如果a原本在b前面,而a=b,排序之后a仍在b前面2)不稳定:如果a原本在b前面,而a=b,排序之后a可能会出现在b的后面3)内排序:所有排序操作均在内存中完成4)外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行5)时间复杂度:一个算法执行所耗费的时间6)空间复杂度:运行完一个程序所需要的内存大小7)n:数据规模8)k:“桶”的个数9)In-place:不占用额外内存10)Out-place:占用额外内存

2020-10-17 19:24:41 117

原创 用Java实现基数排序

排序介绍1)基数排序(radix sort)属于分配式排序,又称“桶子法”或bin sort,顾名思义,它是通过键值各个位的值,将要排序的元素分配至某些“桶”中,达到排序的作用2)基数排序法是属于稳定性的排序,基数排序法是效率高的稳定性排序法3)基数排序时桶排序的扩展4)基数排序是1887年赫尔曼·何乐礼发明的。他是这样实现的:将整数按位数切割成不同的数字,然后按每个位数分别比较排序思想将所有待比较数值统一为同样的位数长度,数位较短的数前面补零,然后,从最低位开始,依次进行一次排序,这样从最低位

2020-10-17 19:11:35 87

原创 用Java实现归并排序

排序介绍归并排序是利用归并思想实现的排序方法,该算法采用经典的分治策略(分治法即将问题分成一些小的问题然后递归求解,而治的阶段则将分的阶段得到的各个答案“修补”到一起,即分而治之)...

2020-10-17 18:58:21 81 1

原创 Java用数组的方式模拟栈

栈的介绍1)栈的英文名stack2)栈是一个先入后出的有序列表3)栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)4)根据栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除元素恰好想反,最后放入的元素最先删除,最先放入的元素最后删除栈的应用场景1)子程序的调用:在跳往子程序前,会先将下个指令的地址存到堆栈中,直到子程序执行完后再将地址取出,以回到原来的程序

2020-10-16 21:57:00 138

原创 Java用数组模拟环形队列

对前面的数组模拟队列进行优化,充分利用数组,因此将数组看成一个环形的。(通过取模的方式即可)如果看到这里一脸懵的小伙伴请看我之前的一篇博客Java用数组的方式模拟队列分析说明1)尾索引的下一个为头索引时队列满,即将队列容量空出一个作为约定,这个在做判断队列满时候要注意(rear+1)%maxSize=front时队列满,rear=front时队列为空这里解释一下什么是将队列容量空出一个作为约定,假设我们不空出一个,初始时rear=front=0,现在不断地添加数据,rear指针会不断的后移,当最后一

2020-10-16 21:04:13 88

原创 Java用数组的方式模拟队列

队列介绍1.队列是一个有序表,可以靠数组和链表模拟实现2.遵循先入先出的原则,即先存入队列的数据,要先取出,后存入的后取出3.示意图(用数组模拟队列):数组模拟队列思路1.队列本身是有序列表,若使用数组的结构来储存队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量2.因为队列的输入和输出分别从前后端来处理,因此需要两个变量front和rear分别记录队列前后端的下标,front会随着数据的输入而改变,rear会随着数据的输出而改变,如图所示:3.当我们将数据存入队列时

2020-10-16 20:45:57 109

原创 用Java实现快速排序

排序介绍快速排序是对冒泡排序的一种改进,基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据要小,然后再按此方法对两部分数据分别进行快速排序,整个排序可以递归进行,以此达到整个数据变为有序序列代码示意图代码实现public static void quickSort(int[] arr, int left, int right) { int l = left;// 左下标 int r = right;// 右下标 int pivot =

2020-10-15 20:46:30 95 1

原创 用Java实现希尔排序

排序介绍希尔排序是希尔于1959年提出的一种排序算法,希尔排序也是一种插入排序,他是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序排序思想希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序,随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分为一组,算法便终止代码示意图代码实现希尔排序交换法(对有序序列在插入时选择交换法)public static void main(String[] args) { int[]arr= {3,5

2020-10-15 20:16:06 70

原创 用Java实现插入排序

排序介绍插入排序属于内部排序法,是对于欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的代码思路插入排序的基本思想是把n个待排序的元素看成一个有序表和无序表,开始时有序表只包含一个元素,无序表中包含n-个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将他插入到有序表的适当位置,使之成为新的有序表代码实现public static void main(String[] args) { int[] nums = { 12, 45, 65,

2020-10-15 19:56:41 155 1

原创 用Java实现冒泡排序升级版

代码思路冒泡排序的基本思想是:通过对待排列序列从前到后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前向后移到后面,就像水底的气泡一样往上冒优化:因为排序过程中,各元素不断接近自己的位置,如果一趟下来没有比较进行交换,就说明序列有序,因此要在排序过程中设置一个flag判断元素是否进行交换,从而减少不必要的比较。代码实现public static void main(String[] args) { boolean falg = false; int[

2020-10-15 18:53:19 158

原创 用Java实现插值算法查找

代码思路插值查找的思路与二分法相似,小部分不知道什么是二分法的比较帅的观众请看我另一篇关于二分法介绍的文章那么插值查找和二分法查找有什么不同呢,二分法查找mid的索引公式是(left+right)/2,插值查找的mid =left+(right-left)*(findValue-arr[left])/(arr[right]-arr[left]),这是一个自适应的mid,相较于二分法它可以更趋近于你要寻找的数字代码实现public static int insertvalueSearch(int []

2020-10-15 18:44:11 207

原创 用Java实现二分法查找

代码思路1.首先确定该数组的中间下标mid=(left+right)/22.然后让需要查找的数findVal和arr[mid]比较2.1如果findVal>arr[mid],就说明你要查找的数在arr[mid]的右边,因此需要递归的向右查找2.2如果findVal<arr[mid],就说明你要查找的数在arr[mid]的左边,因此需要递归的向左查找2.3findVal==arr[mid],说明找到,就返回当找到这个数字,或者left>right时候,就退出代码实现publ

2020-10-15 18:37:04 128 1

原创 Java Map接口的常用方法

Map以键-值储存元素的容器常用方法V put(key,value)将一个键/值映射放入图中V get(key)根据键获取相应的value值Set keySet()返回包含键的规则集Collection values()返回包含值的集合boolean containsKey(key)返回图中是否包含键值keySet< Map.Entry<K,V> > entrySet()返回一个图中包含条目的规则集int size()返回途中

2020-07-07 14:19:31 78

原创 Java Queue接口的实现类LinkedList与ArrayDeque

Queue通常用于操作储存一组队列方式的对象信息特点:一般储存方式为先进先出常用方法boolean offer(element)像队列中插入一个元素,类似于add方法E poll()获取并删除队列头元素,如果队列为空返回nullE remove()获取并删除队列头元素,如果队列为空抛出异常E peek()获取但不删除队列头元素,如果队列为空返回nullE element()获取但不删除队列头元素,如果队列为空抛出异常举个栗子:Queue<String&

2020-07-07 14:00:02 618

原创 Java Set接口的实现类HashSet,LinkedHashSet和TreeSet

Set接口作用用来操作存储一组唯一,无序的对象HashSet用来储存互不相同的任何元素举个栗子:Set<String> cityset1=new HashSet<>(); cityset1.add("北京"); cityset1.add("上海"); cityset1.add("广州"); cityset1.add("哈尔滨"); cityset1.add("深圳"); System.out.println(cityset1)

2020-07-07 13:42:20 151

常见请求和响应头-说明.docx

常见请求和响应头-说明.docx

2021-04-23

C++图书管理系统.zip

用C++语言编写的图书管理系统,实现了图书的增加,删除,修改,查询功能以及对图书的统计(根据价格统计,库存统计等)以及读者的购买图书功能,

2020-06-18

空空如也

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

TA关注的人

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