- 博客(54)
- 收藏
- 关注
原创 哈希表讲解
问题 有一个公司,当有新的员工来报道时,要求将该员工的信息加入(id,性别,年龄,住址……),当输入该员工id时,要求查找到该员工的所有信息。 要求:不使用数据库,尽量节省内存,速度越快越好==>哈希表。 哈希表的基本介绍 哈希表是根据关键码值而直接进行访问的数据结构。 ...
2021-08-19 15:06:27
303
原创 Collection总结
Collection : List:有序且重复。 ArrayList:底层时数组,查询快,增删慢,线程不安全,所以效率高。 Vector:底层数据结构是数组,查询快,增删慢,线程安全,所以效率低。 LinkedList:底层是链表,增删快,查询慢,线程安全,所以效率高。 Set:无序且位置。 HashSet:底层是哈希表,他的底层依赖于hashCode和equals方法来实现元素唯一。 LinkedHashSet:底层是链表和哈希表,哈希表保证元素唯一,链表保证元素有序。 TreeSet:底层是红黑树,它的
2021-08-19 15:06:10
205
原创 树的常用术语
二叉树 1)树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树。 2)二叉树的子节点分为左节点和右节点。 3)如果该二叉树的所有叶子节点都在最后一层,而且节点总数=2^n-1,n为层数,则我们称为满二叉树。 4)如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边是连续的,倒数第二层的叶子节点在右边连续,我们称为完全二叉树。 ...
2021-08-19 15:05:47
245
原创 二叉树的前序中序后序遍历
概念 前序遍历:先输出父节点,再遍历左子树和右子树 中序遍历:先遍历左子树,再输出父节点,再遍历右子树。 后序遍历:先遍历左子树,在遍历右子树,最后输出父节点。 小结:看输出父节点的顺序。 前序遍历 1、先输出当前节点(初始的时候是root节点) 2、然后如果左子节点不为空,则递归继续前序遍历。 3、如果右子节点不为空,则递归继续前序遍历。 中序遍历 1、如果当前节点的左子节点不为空,则递归中序遍历。 2、输出当前节点 3、如果当前节点的右子节点不为空,则递归进行中序遍历。 后序遍历 1、如果当前节点的左子
2021-08-19 15:05:32
480
原创 线索化二叉树
线索化二叉树基本介绍 1)n个节点的二叉链表中含有n+ 1 公式2n-(n-1)=n+1个空指针域,利用二叉树链表中的空指针域,存放指向该节点某种遍历次序下的前驱和后续节点的指针。 2)这种加上了线索的二叉链表陈为线索链表,相应的二叉树称为线索二叉树,根据线索性质不同,线索二叉树分为前序线索二叉树、中序线索二叉树、后续线索二叉树。 3)一个节点的前一个节点,称为前驱节点 4)一个节点的后一个接待你,称为后续节点 案例 说明:当线索化二叉树后,Node节点的属性left和right,有如下情况: 1)le
2021-08-19 15:05:15
162
原创 JVM详解
JVM探究 1、请你谈谈你对JVM的理解?Java–>class—>jvm 1、JVM的位置 2、JVM的体系结构 3、类加载器 4、双亲委派机制 5、沙箱安全机制 6、Native 7、PC寄存器 8、方法区 9、栈 10、三种JVM 11、堆 12、新生区 13、永久区 14、堆内存调优 15、GC(垃圾回收器) 1、常用算法 16、JMM 17、总结 1、JVM位置 jvm就像一个软件 Java程序都是跑在JVM上面的,JVM是用C写的。JVM就是一个环境, 3、类加载器 作用:加载cl
2021-08-19 15:04:59
309
原创 泛型的使用
由于添加元素的集合的不确定,我可以添加任意类型的元素,那么在遍历的时候可能会出现问题。 我们之前学习过的数组,就可以声明一种类型,使得在添加数据时,数据类型不匹配的情况下,就会出现异常。 那么集合中有没有这样的方法呢? 有的,泛型。 泛型的概述 泛型是一种特殊的类型,可以理解为参数化类型,也就是可以把类型像参数一样传递。 泛型的格式: <泛型类型> 泛型的用处 一般多用于集合。 泛型的好处 1、提高了程序的安全性, 2、将原本运行时期的错误在编译时期就暴露了出来。 3、省去了强制类型转换的麻烦。
2021-08-05 14:29:39
180
原创 集合之Collection!!!
集合的出现 我们面向对象语言都是以对象的形式出现的,所以为了对多个对象进行操作,Java就提供了集合类。 集合和数组的区别 长度不同 数组:长度固定 集合:长度不固定 内容不同 数组:存储的相同数据类型 集合:可以存储不同数据类型 类型不同 数组:可以存储基本数据类型和引用类型 集合:只能存储引用类型。 集合的特点 集合只用于存储对象,它的长度是可变的,并且可以存储不同类型的对象。 集合继承体系 ...
2021-08-05 14:28:41
245
原创 内部类详解!!!
概述: 把类定义在其他类的内部,这个类就称为内部类。 面试题 package org.wdzl.unit04; /** * 1、内部类与外部类不是继承关系 * 2、通过外部类名限定this * 格式:外部类.this.num; */ public class Test { public static void main(String[] args) { Outer4.Inner4 oi = new Outer4().new Inner4(); oi
2021-08-05 14:28:23
206
原创 返回值类型为引用类型详解
抽象类作为返回值 package org.wdzl.unit04; /** * 返回值类型: * 类:返回该类的对象 * 抽象类:返回该抽象类子类的对象 * 接口: */ public class ArgsDemo2_2 { public static void main(String[] args) { PersonDemo2 personDemo2= new PersonDemo2(); Person2 person = per
2021-08-05 14:28:08
723
原创 参数为引用数据类型详解
类作为参数时 类:在调用方法时,传入相应类的对象(匿名类) package org.wdzl.unit04; /** * 形式参数是引用数据类型问题 * 1、类:在调用方法时,传入相应类的对象(匿名类) * 2、抽象类 * 3、接口 */ public class ArgsDemo { public static void main(String[] args) { StudentDemo studentDemo = new StudentDemo
2021-08-05 14:27:43
768
原创 Java基础知识点---抽象类讲解!!!
抽象类 抽象类的概述 用来描述抽象概念的类,叫做抽象类,抽象类中的方法不一定要实现具体的功能。 特点 1、被abstract关键字修饰 2、抽象类中不一定有抽象方法,但是有抽象方法的类一定要被定义为抽象类。 3、抽象类有构造方法,但是不能被创建对象,构造方法是供子类去调用的。 4、抽象类可以被标准类继承,也可以被抽象类继承。但是标准类必须重写抽象类中的抽象方法,但抽象类就不需要了。 package org.wdzl.unit04; /** * 抽象类: * 概述:用来描述抽象概念的类叫做抽象类,抽
2021-08-04 16:21:51
256
原创 炒鸡讲解笔记之IO流
File类 1、1 File类概述 文件和目录路径名的抽象表示形式。 对File而言,其封装的并不是一个真正存在的文件,仅仅是一个路径而已。 File类可以新建,删除,重命名文件和目录,但是File不能访问文件内容本省。如果需要访问内容本身需要输入/输出流。 File对象可以作为参数传递给流的构造函数 案例: public class fileDemo { public static void main(String[] args) { File file = new File("
2021-08-04 16:20:47
209
原创 a++与++a
代码: public class Demo { public static void main(String[] args) { int a =3; int b=a++; int c=++a; System.out.println(a); System.out.println(b); System.out.println(c); } } 这串代码就相当于: package com.superp
2021-08-04 16:20:31
170
原创 Super
super注意点: 1、super调用父类的构造方法,必须在构造方法的第一个 2、super必须只能出现在子类的方法或者构造方法中! 3、super和this总不能同时调用构造方法! Vs this: 代表的对象不同: this:本身调用者这个对象 super:代表父类对象的应用 前提 this:没有基础也可以使用 super:只能在继承条件下才可以使用 构造方法 this():本类的构造 super():父类的构造 ...
2021-08-04 16:20:15
155
原创 Java基础知识----继承!!!
1、继承 继承概念的引入: /** * 学生类 */ public class Student{ //成员变量 String name; int age; //get和set方法 //构造方法 public Student(){ } //成员方法 public void eat(){} public void sleep(){} } /** * 教师类 */ public class Teacher{ //成员变量 String name; int age; //g
2021-08-04 16:19:11
177
原创 Java炒鸡重要知识点:多态!!!
多态的概述: 多态:同一操作(方法)作用于不同对象,可以产生不同的执行结果。 多态的前提和体现 !有继承关系 !有方法的重写 !父类的引用指向子类的对象,简单来记就是“父父new子” package org.wdzl.unit03; /** * 同一操作作用于不同的对象,可以产生不同的执行结果 * 举例: * 父类: 宠物:叫的这个方法 * 子类: 猫:叫()……喵喵喵 * 狗:叫()……汪汪汪 * 多态的前提: *
2021-08-04 16:18:47
208
原创 Java炒鸡重要知识点---final关键字
final关键字 final关键字概述: final关键字:最终的,可以修饰类,方法,变量 ** final修饰方法时不能被重写!!!** package org.wdzl.unit03; /** * final关键字:最终的 * 可以修饰类,方法,变量 */ public class FinalDemo { public static void main(String[] args) { Zi zi = new Zi(); zi.method();
2021-08-04 16:18:27
167
原创 java基础知识---封装!!!
封装 **封装概述:**隐藏对象的属性和实现细节,仅对外提供公共的访问方式。 package org.wdzl.unit02; public class Student { String name; private int age; public void setAge(int age1){ if (age1 > 0 ){ age=age1; }else { System.out.println(
2021-08-04 16:18:09
220
原创 Java学习炒鸡重要知识点---面向对象!!!
1、 面向对象概述 **面向过程:**我们首先分析我们需要做什么,然后在分析怎么做,最后我们再使用代码一步一步具体实现,每一个过程我们都是参与者。 **面向对象:**将许多功能封装在一个类当中,不在乎处理问题的过程,只注重最后的结果。 面向对象特点: 1、将我们从执行者变成了一个指挥者。 2、更符合我们平时的思考方式。、 3、将问题简化了。 **面向对象举例:**把大象装冰箱 更符合面向对象思想的思考: a、有哪些类 b、每个类中有那些方法 c、类与类之间有怎样的关系 分析: 有哪些类?名词提取法 大象类
2021-08-04 16:17:42
163
原创 数据结构--栈
栈的介绍 1):栈的英文名叫做:stack 2):栈是一个先入后出的有序列表 3):栈是限制线路列表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,称为栈顶,另外一端称为栈底。 4):根据栈的定义可知,最先放入的元素在栈底,最后放入的元素在栈顶,而删除元素刚好相反,最后放入的元素最先删除,最先放入的元素最后删除。 栈的应用场景: 1、子程序的调用:跳往子程序前,会先将下个指令的地址存在栈堆中,直到子程序指向完毕后再从地址取出,以回来原来的程序。 2、处理递归调用:和子程序
2021-07-18 20:01:52
150
原创 二分查找算法
二分查找 对一个有序数组查找,涉及递归的方法 二分查找思路 1、首先先确定该数组中间的下标mid=(left+right)/2 2、然后让需要查找的数findVaue和arr[mid]比较 2、1findValue>arr[mid],说明要查找的数在mid的右边,因此需要递归的向右查找。 2、2findValue<arr[mid],说明要查找的数在mid的左边,因从需要递归向左查找。 2、3findValue == arr[mid]说明找到,就返回 什么时候结束递归? 1、找到就结束递归 2、递
2021-07-18 20:01:26
152
原创 斐波那契(黄金分割法)查找算法
1、黄金分割点是指把一条线段分割成两部分,是其中的一部分与全长之比等于另外一部分与这部分之比,取其前三位数字的近似值是0.618 2、斐波那契数列{1,1,2,3,5,8,13,21,34,55}发现斐波那契数列的两个相邻的数比例,无线接近黄金分割值0.618 斐波那契原理 mid = low +F(k-1)-1 low:数组最前面的索引 F(k-1)的理解: F(k)=F(K-1)+F(K-2) 可推导 (F[k]-1) = (F[k-1]-1)+(F[k-2]-1)+1 代码实现 package co
2021-07-18 20:00:57
609
原创 插值查找算法介绍
对应前面的代码公式:mid = left + (indValue - arr[right])/(arr[right]-arr[left])*(right-left) 一步定位 代码实现 package com.search; import java.util.Arrays; public class InsertValueSearch { public static void main(String[] args) { // int[] arr= new int[100]; //.
2021-07-17 11:34:27
247
原创 哈希表详解(韩顺平)!!!
哈希表的基本介绍 散列表(哈希表)是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数就叫做散列函数,存放记录的数组就是散列表。 图解如下: 哈希表的结构: 例题: 有一个公司,当新员工来报道时,要求将改员工的信息加入(id,年龄,名字,住址),当输入该员工的id时,要求查找到该员工的所有信息。 要求:不使用数据库,速度越快越好。 使用哈希表来管理雇员信息 ...
2021-07-17 11:33:46
230
原创 线性查找算法
线性查找代码: package com.search; public class SeqSearch { public static void main(String[] args) { int arr[] = {1, 9, 11, -1, 34, 89}; int index = seqSearch(arr,-11); if (index == -1){ System.out.println("没有查找到!!");
2021-07-17 11:33:20
185
原创 Javaweb-01:web的基本概念
JavaWeb Java Web 1、基本概念 1、1 前言 web开发: 1、web,网页的意思,www.baidu.com 2、静态web !html,css !提供给所有人看的数据不会发生改变 3、动态web !淘宝,几乎所有的网站 !提供给所有人看的数据会发生改变,每个人在不同的时间,不同的地点看到的信息各不相同。 !技术栈:Servlet/JSP,ASP,PHP 在Java种,动态web资源开发的技术统称位javaWeb; 1、2web应用程序 web应用程序:可以提供浏览器访问的程序; !a.h
2021-07-17 11:32:11
204
原创 八皇后问题(回溯算法)
八皇后问题概述:在8X8格上的国际象棋上放置8个皇后,即 :任意两个皇后都不能处于同一行,同一列或者同一斜线上,有多少种摆法? 说明:理论上因该创建一个二维数组,但是实际上可以通过一个一维数组就可以解决问题,arr[8]={0,4,7,5,2,6,1,3}//对应arr下标表示第几行,即第几个皇后,arr[i]=val,val表示第i+1个皇后,放在第i+1行的第val+1列。 代码实现: package com.recursion; //八皇后问题 public class Queue8 {
2021-06-10 11:28:35
236
原创 时间频度介绍
**时间频度:**一个算法花费的时间与算法中语句执行次数成正比。 对于时间频度来说,常数项可以忽略,低次项也可以忽略, 时间复杂度:
2021-06-10 11:28:25
349
原创 冒泡排序详解
冒泡排序思想:通过下标从小到大开始,依次比较相邻元素,若发现逆序则交换,使较大的元素注解从前往后移。 冒泡排序规则: 1、一共进行数组的大小-1次大的循环 2、每一趟排序的次数在逐渐的减少 3、如果我们发现在某趟排序时,没有发生一次交换,可以几天结束循环; 冒泡排序代码演示: package com.sort; import java.util.Arrays; public class BubbleSort { public static void main(String[] args) {
2021-06-10 11:28:10
244
原创 选择排序详解
**基本介绍:**选择式排序也属于内部排序,是从欲排序的数据中,按指定的规则选出某一元素,再依照规定交换位置后达到排序的目的。 说明: 1、选择排序一共有数组大小-1轮排序 2、每1论排序,又是一个循环, 2、1先假定当前这个数是最小数 2、2然后和后面的每个数进行比较,如果发现有比当前更小的数,就重新确定最小数; 2、3当遍历到数组的最后时,就得到本轮最小数和下标 2、3交换 代码演示: package com.sort; import java.text.SimpleDateFormat; impo
2021-06-10 11:28:00
164
原创 插入排序介绍
插入排序法介绍: 插入排序属于内部排序法,是对于欲排序的元素以插入的方式寻找该元素的适当位置,以达到排序的目的。 插入排序思想 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只包含一个元素,无序元素中包含n-1个元素,排序过程中每次从无序表中取出第一个元素,把他的排序码依次与有序码进行比较,将他插入到有序表中的适当位置,使之称为新的有序表。 代码实现 package com.sort; import java.util.Arrays; /** * 插入排序 */ public cla
2021-06-10 11:27:51
213
原创 希尔排序详解(面试必要掌握!!!)
结论 当需要插入的数是比较小的时候,后移的次数明显增加,对效率有影响。 希尔排序基本思想 希尔排序是把记录按下标按一定增量分组,对每组使用直接插入排序;随着增加量逐渐减少,每组包含的关键词越来越多,当增量减少到1时,整个文件恰好被分为一组,算法便终止。 代码实现 package com.sort; import java.util.Arrays; // 希尔排序 public class ShellSort { public static void main(String[] args) {
2021-06-10 11:27:30
404
原创 快速排序详解(面试必会!!)
快速排序思想 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对两部分分别进行快速排序,整个过程可以递归进行,以达到整个数据变成有序序列 代码实现 package com.sort; import java.util.Arrays; public class QuickSort { public static void main(String[] args) { int[] arr={-9,78,0,23,-567
2021-06-10 11:27:03
182
原创 归并排序详解(韩顺平版,面试必考!!!)
基本思想 代码实现 package com.sort; import java.util.Arrays; class MergetSort { public static void main(String[] args) { int[] arr={8,4,5,7,1,3,6,2}; int temp[] = new int[arr.length];//归并排序需要一个额外的空间 mergeSort(arr,0,arr.length-1,temp
2021-06-10 11:26:30
277
原创 基数排序详解(面试必会!!)
基数排序基本思想 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。 具有稳定性 排序介绍 1、将每个元素的个位取出,然后看这个数放在那个对应的桶(一个一维数组)。· 2、按照这个桶的顺序(就是一维数组的下标)依次取出数据,放入到原来的数组)。 3、将每个元素的十位取出,看放在对应的那个桶 4、按照这个桶的顺序(就是一维数组的下标)依次取出数据,放入到原来的数组)。 5、将每个元素的百位取出,看放在对应的那个桶 6、按照这个桶的顺序(就是一维数组的下标)依次取出数据,放入到原来的数组)。
2021-06-10 11:25:48
335
原创 约瑟夫问题
Josephu(约瑟夫、约瑟夫环)问题 概述:设编号为1,2,3,……n的n个人围坐一圈,约定编号为K(1<k<n)的人从1开始报数,数到m的那个人出咧,他的下一位又从1开始报数,数到m的那个人又出列,以此类推,知道所有人都出列为止, ...
2021-06-03 20:18:22
223
原创 队列与链表
数据结构 线性结构: 1、线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系。 2、线性结构有两种不同的存储结构,即顺序存储和链式存储结构。顺序存储的线性表称为顺序表,顺序表中的存储元素是连续的。 3、链式存储的线性表称为链表,链表中的存储元素不一定是连续的,元素节点中存放数据元素和相邻元素的地址信息。 4、线性结构常见的有:数组、列表、链表和栈, 非线性结构: 非线性结构包括:二维数组,多维数组,广义表,树结构,图结构。 稀疏数组 基本介绍: 当一个数组大部分元素为0,或者为同一个值的
2021-06-03 16:34:32
1553
原创 Spring Cloud
Spring Cloud 微服务产生背景 单体应用存在的问题: !随着业务的发展,开发变得越来越复杂 !修改、新增某个功能,需要对整个系统进行测试,重新部署。 !一个模块出现问题,很有可能导致整个系统崩溃。 !多个团队同时对数据进行管理,容易产生安全漏洞; !各个模块使用同一种技术框架,局限性太大,很难根据业务选择最适合的技术框架。 !模块的内容太复杂,如果有员工离职,可能需要很长时间才能完成任务的交接。 为了解决上述问题,微服务应运而生,简单来说,微服务就是将一个单体应用拆分成若干个小型服务,协同完成系
2021-05-31 17:00:17
256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅