- 博客(71)
- 收藏
- 关注
原创 使用IDEA搭建SSM项目
文章目录1 创建一个webapp模板的maven项目1.1 选择模板并创建项目1.2 设定项目名称并设置工作坐标1.3 设置maven路径与配置文件,之后点击finish就配置好了2 导入jar包依赖2.1 删除用不到的坐标依赖,我们删除掉原有的properties标签、dependencies标签和build标签中的所有内容2.2 导入相应的坐标依赖1 创建一个webapp模板的maven项目首先我们在IDEA中创建一个webapp模板的maven项目,名字随意,设定好工作坐标以及我们自己的maven
2022-05-19 20:07:33
10135
9
原创 SpringMVC常用注解
文章目录一、RequestMapping注解1.RequestMapping的属性2.RequestMapping的请求参数绑定jsp代码JavaBean代码controller代码二、配置过滤器三、常用的注解1.RequestParam注解2. RequestBody注解四、RestFul风格1.概念2.功能3.基本使用一、RequestMapping注解RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系RequestMapping注解可以作用在方法和类上作用在类上:
2022-04-23 14:46:40
1004
原创 Spring MVC的运行流程
文章目录1.Spring MVC官方流程图2.Spring MVC流程分析2.1.用户向DispatcherServlet发送请求并转发至正确的处理器2.2.处理器中的行为springmvc.xml分析1.Spring MVC官方流程图2.Spring MVC流程分析2.1.用户向DispatcherServlet发送请求并转发至正确的处理器用户发送的请求会被xml文件中的配置生成的进程检测到,因此xml文件中的配置信息能够反映出用户发送请求的处理情况,xml文件如下所示:<web-app
2022-04-23 14:33:57
535
原创 SpringMVC配置和基本原理
文章目录第一章:Java web的发展历史一.Model I和Model II1.Model I开发模式2.Model II开发模式二. MVC模式第二章:SpringMVC的入门案例1.搭建SpringMVC的入门程序第三章: SpringMVC原理SpringMVC中心控制器第一章:Java web的发展历史一.Model I和Model II1.Model I开发模式Model1的开发模式是:JSP+JavaBean的模式,它的核心是Jsp页面,在这个页面中,Jsp页面负责整合页面和JavaB
2022-04-23 14:21:05
223
原创 mybatis的增删改查
文章目录第一章:代理Dao方式的CRUD操作1. 代理Dao方式的增删改查第二章:MyBatis参数详解1. parameterType**2. resultType****3. resultMap结果类型**第三章:MyBatis获取参数值的两种方式1.配置sql输出日志2.看#{}和${}的输出现象3.#{}:预编译4.sql注入5.什么时候使用${}6.如何选择使用 #{} 和 ${}第一章:代理Dao方式的CRUD操作1. 代理Dao方式的增删改查创建项目UserDao接口代码impo
2022-04-20 15:58:58
460
原创 配置MyBatis
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录第一章:框架的概述第二章:MyBatis的入门程序(重点)1. 创建数据库和表结构2. MyBatis入门流程总结3. MyBatis的入门步骤4.mybatis比jdbc好在哪里第一章:框架的概述JDBC存在的问题我们要想研究mybatis就必须知道jdbc所存在的问题,那我那么我们首先来复习一下jdbc操作数据库的大致流程。1.加载数据库驱动2.创建并获取数据库连接对象connection3.通过连接对象获取会话.
2022-04-20 15:48:02
70
原创 LINUX安装kafka步骤
1.首先下载kafka安装包2.进入usr/local文件夹下执行如下命令:(创建文件夹kafka)mkdir kafka进入该文件cd kafka将下载好的kafka安装包上传到该文件rz上传完毕后 解压:tar -zxvf kafka_2.11-2.4.0.tgz完成后如图所示:3.修改配置文件:进入解压后的文件内执行下面两句[root@VM-16-2-centos kafka_2.11-2.4.0]# cd config/[root@VM-16-2-centos c
2022-04-08 19:36:19
8878
5
原创 java根据zookeeper源码实现节点增删改查
import org.apache.zookeeper.CreateMode;import org.apache.zookeeper.KeeperException;import org.apache.zookeeper.ZooDefs;import org.apache.zookeeper.ZooKeeper;import org.apache.zookeeper.data.ACL;import org.apache.zookeeper.data.Stat; import java.io.I
2022-04-08 19:33:42
93
原创 哈夫曼树和哈夫曼编码
一、在通讯领域中信息处理的方式(1)定长编码我们要传输一条数据:i like like like java do you like a java //共40个字符通过Ascii码将其转化为对应的二进制形式http://tool.alixixi.com/ascii2/按照二进制来传递数据,总长度为359(包括空格)通常我们不会这么去做,主要是因为我们要传输的数据太长了,很不划算(2)变长编码我们要传输一条数据:i like like like java do you like a j
2022-04-02 13:39:00
909
原创 数据结构-B+树
一、B+树的结构特点1.非叶子节点仅具有索引作用,也就是说,非叶子节点只能存储Key,不能存储value2.树的所有叶节点构成一个有序链表,可以按照key排序的次序依次遍历全部数据。二、B+树存储数据若参数M选择为5,那么每个节点最多包含4个键值对,我们以5阶B+树为例,看看B+树的数据存储(a) 在空树当中插入5(b)继续插入8,10,15(c)继续插入16(d)继续插入17(e)继续插入18(f)继续插入6,9,1920,21,22(e)继续插入7三、B+树和B树的
2022-04-02 13:38:28
426
原创 数据结构-B树
一、认识2-3查找树二叉排序树简单的实现在多数情况能够达到预期的查找效率,但是每个节点只能存储一个元素和只能有两个孩子,使得在大量数据下会造成二叉排序树的深度特别大,那么在进行查找时多次的访问会造成查找效率的下降,同时,在对二叉查找树进行插入时,可能会破坏二叉查找树的平衡。为了降低对于树的访问次数,实现树的平衡,我们需要新的数据结构来处理这样的问题。2-3查找树的定义2-节点包含一个键(及其对应的值)和两条链,左连接指向2-3树中都小于该节点,右链接所指向的值都大于该节点。3-节点包含两个键(及
2022-04-02 13:38:10
116
原创 数据结构-红黑树
一、首先先来了解什么是2-3-4树1.简介2-3-4属于一种多路查找树,是一种四阶的B树,它的结果有以下特点所有叶子节点都拥有相同的深度节点只能是2-节点、3-节点、4-节点节点元素的排序整体上保持二叉查找树的特性,即父节点大于左子节点,小于右子节点;当节点有多个元素时,每个元素都必须大于他左边的和他的左子树中的元素。2.三种节点的示意图①:2-节点:有两个子树的节点③:3-节点:有三个子树的节点④:4-节点:有四颗子树的节点3.构建一颗2-3-4树2-3-4树中结点添加需要遵守
2022-04-01 17:40:10
96
原创 平衡二叉树
平衡二叉树画图网站https://www.cs.usfca.edu/~galles/visualization/AVLtree.html一、有序二叉树可能存在的问题给一个数列{1,2,3,4,5,6},要求创建一颗二叉排序树(BST)并分析问题所在二、平衡二叉树的基本介绍平衡二叉树具有以下特点:1)它是一颗空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两颗子树都是一颗平衡二叉树。2)平衡因子: 左子树的高度 - 右子树的高度我们将平衡因子的绝对值小于1的的有序二叉树称为平衡二叉树
2022-04-01 17:37:52
868
原创 二叉排序树的删除
一、二叉排序树的删除二叉排序树的删除情况比较复杂,有以下三种情况需要考虑1)删除叶子节点 (比如:2,5,9,10)2) 删除只有一个子树的节点(比如:1)3)删除有两个子树的节点 (比如:7,3,10)分析情况一:删除叶子节点 (比如:2,5,9,10)思路分析情况二: 删除只有一个子树的节点(比如:1)思路分析情况三: 删除有两个子树的节点 (比如:7,3,10)思路二、代码实现1.查找相应的节点/** * * @param value 希望删除啊的节点值 *
2022-04-01 17:35:42
1561
原创 树-二叉排序树的构建
一、二叉排序树介绍二叉排序树:对于二叉排序树的任何一个非叶子节点,要求左子节点的值比当前节点的值小,右子节点的值比当前节点的值大。特别说明:如果有相同的值,可以将该节点放在左子节点或右子节点一、构建有序二叉树实现思路如果左子树不为空,那么左子树上的所有值都均小于它的根节点的值如果右子树不为空,那么右子树上的所有值都均大于或等于它的根节点的值左,右子树也为二叉排序树新建TreeNode节点public class TreeNode { private TreeNode leftTreeN
2022-04-01 17:34:26
3396
原创 数据结构-树
一、为什么需要树这样数据结构1.数组存储方式分析优点:通过下表方式访问元素,速度快。对于有序数组没还可以使用二分查找提高检索速度。缺点:如果要检索某一个具体值,效率比较低下2.链式存储方式分析优点:在一定程度上对数组存储方式进行优化(比如插入一个节点,只需要将插入节点,链接到链表当中可删除的效率也很好)。缺点:在进行检索时,效率仍然比较低,比如(检索某个数值,需要从头结点开始遍历)3.树存储方式分析能提高数据存储,读取的效率,比如利用二叉排序树,既可以保证数据的检索速度。同时也可以保证数据的
2022-04-01 17:32:05
102
原创 数据结构-哈希表
一、哈希表的由来我们的java程序通过访问数据库来获取数据,但是当我们对数据库所查询的信息进行大量分析后得知,我们要查询的数据满足二八定律,一般数据库的数据基本存储在磁盘当中。这使得每次查询数据将变得无比缓慢。为此我们可以将经常查询的数据放置在内存当中,在内存当中设置缓存,我们java程序先去缓存当中去查询数据,这样将大大节省我们的数据查询时间。缓存可以分为两种一种是市面上的存储产品,例如redis.也或者我们自己可以开发一个缓存(哈希表)二、哈希表的数据结构散列表(Hash table,也叫哈希
2022-04-01 17:30:22
125
原创 数据结构-队列
队列的特点:先进先出(这里改成了in和out放在一起)实现public class Queue { private int[] arr; // 该数据用于存放数据, 模拟队列 private int front; // 队列头 private int rear; // 队列尾 //构造方法 public Queue(int size){ arr = new int[size]; front = 0; rea
2022-04-01 17:28:22
56
原创 数据结构-栈
栈的特点是:先进后出一、我们为什么要将数组封装起来?同学们的疑惑点:为什么要用数组来进行先进先出?我们知道数组有一个特点就是能够通过下标的形式来进行获取和设置数据。但是一般情况之下我们是不能够得到数组的下标的,所以在这个地方我们一般需要借助相应的游标。并不是直接去操作数组。这样的话我们就可以将这个数组进行封装。二、实现栈public class Stack { //声明一个数组 private int[] arr; //声明头结点 private int flage = 0;
2022-04-01 17:25:48
76
原创 数据结构-链表
线性结构的链式存储是用若干地址分散的存储单元存储数据元素,逻辑上相邻的两个数据元素在物理位置上并不一定相邻,必须采用附加信息来表示数据元素之间的顺序关系。因此存储一个数据元素的数据单元至少包含两部分------数据域和地址域上述的结构通常称为结点一个节点表示一个数据元素,通常节点当中的地址会把数据结点连接起来,节点当中的连接关系体现了线性表当中数据元素间的顺序关系,采用这种关系的称为线性链表。从上图当中,head是线性链表当中的第一个节点,但是这个节点在数据域当中并没有存储数据,这里之所以写这个的
2022-04-01 17:22:02
132
原创 八大排序-归并排序
合并两个有序序列基本思想归并排序就是递归得将原始数组递归对半分隔,直到不能再分(只剩下一个元素)后,开始从最小的数组向上归并排序。将一个数组拆分为两个,从中间点拆开,通过递归操作来实现一层一层拆分。从左右数组中选择小的元素放入到临时空间,并移动下标到下一位置。重复步骤2直到某一下标达到尾部。将另一序列剩下的所有元素依次放入临时空间。将临时空间的数据依次放入原数据数组。动态图下边是动态图分解的时候我们可以使用递归的方式进行首先我们可以先定义三个变量,数组的头部位置可以定义为 low
2022-04-01 17:18:55
59
原创 redis的安装及使用
1、安装redis make有错,gcc版本低的原因yum -y install centos-release-scl yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils scl enable devtoolset-9 bash echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile gcc -v2、安装redis本
2022-03-21 16:34:32
135
原创 Linux下安装zookeeper
1,下载安装包wget https://downloads.apache.org/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz方案1:wget是一个下载指令,后面可以跟下载连接去从服务器上下载东西。方案2:也可以先下载到windows上,再通过xftp传上去。2,解压tar -zxvf apache-zookeeper-3.6.2-bin.tar.gz3,新建data 和 logs文件夹cd zookeeper-3
2022-03-21 16:31:57
2373
原创 maven简介
1.maven是干什么的?Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包2.maven的优点①.简洁了添加jar包的过程。②.我们需要导入哪个jar包的时候不需要去了解他的jar包依赖关系,maven会自动导入他的相关依赖包。③.帮我们节省了,去寻找jar包的过程,可以更好地让我们去注重编程。3.mave
2022-03-21 16:13:31
209
原创 redis简介
1.Redis是干什么的Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库。Redis全称为:Remote Dictionary Server(远程数据服务),该软件使用C语言编写,Redis是一个key-value存储系统,它支持丰富的数据类型,如:string、list、set、zset(sorted set)、hash。2.Redis特点Redis以内存作为数据存储介质,所以读写数据的效率极高,远远超过数据库。以设置和获取一个256
2022-03-21 15:58:23
636
原创 Linux常用指令
ls -a:查看隐藏的信息类似于Windows中的用户目录二、cd/进入主盘"/"是根目录蓝色是文件夹浅蓝色是软链接(快捷方式)三、穿件文件夹mkdir:创建文件夹四、yum是一个安装工具安装什么,百度yum安装***五、创建文件touch:创建文件六、vi:编辑文件如果没有文件,就会创建这个文件并进入编辑点a进入编辑,点esc退出编辑1.点冒号2.w:保存 q:退出(:wq退出并保存)七、cat:查看这个文件的内容(一次性展现)more:查看文件内容(分批次展
2022-03-20 23:02:43
464
原创 考试题——3.10
下列程序的运行结果class Two{ Byte x;}public class Student { public static void main(String[] args) { Student student = new Student(); student.start(); } void start() { Two two = new Two(); System.out.print(two.x +" "); Two two2 = fix(two); Syste
2022-03-12 17:58:36
267
原创 包装类例题
以下的输出是什么?为什么?public static void main(String[] args) { int a = 10; int b = 10; Integer a1 = 10; Integer b1 = 10; Integer a2 = new Integer(10); Integer b2 = new Integer(10); System.out.println(a == b); // T 基本数据类型 == 比较值
2022-03-12 11:42:44
279
原创 多态经典例题
简述每一个输出的原因public class A { public String Show(D obj) { return "A and D"; } public String Show(A obj) { return "A and A"; }}public class B extends A{ public String Show(Object obj) { return "B and B"; }public String Show(A obj) { r
2022-03-12 11:26:48
441
原创 八大排序-基数排序
先按照个位排序,再按照十位排序,再按照百位排序。。。。以此类推排序的过程就是创建编号为0~9的十个桶(二维数组),根据各个位上的值一次放进去,然后按顺序取出crr[]是一个记录当前数组有几个数的数组代码:package com.qcby.sort;import java.util.Arrays;public class RedixSort {public static void main(String[] args) {int[] arr = new int[]{100,15,10,2,2
2022-03-09 16:05:12
73
原创 八大排序-堆排序
堆:大顶堆:在完全二叉树的基础上,每个节点的值都大于或等于他的左右孩子小顶堆:在完全二叉树的基础上,每个节点的值都小于或等于他的左右孩子步骤:1.定义一个游标p,然后从后向前遍历2.找到p的左右孩子当中的最大值,和p的值进行对比,如果父节点的值大,不需要互换位置,如果小,则互换位置3.将最大值放入堆顶,然后进行维护,p指向堆顶,然后c指向p的孩子当中的最大值进行对比,然后p指向c,c指向原来c的孩子当中的最大值,然后依次向下对比,直到c指向空4.之后堆顶元素和堆底元素进行互换,然后触发维护
2022-03-09 16:05:01
73
原创 八大排序-快速排序
先找一个基准数之后将数组在相遇的位置拆分为两份继续进行以上步骤用递归地方式拆分到left>=right时代码:import java.util.Arrays;public class QuickSort {public static void main(String[] args) {int[] arr = new int[] {5,7,8,9,1,4,3,2,6};quickSort(arr, 0, arr.length-1);System.out.println(Array
2022-03-09 16:04:50
75
原创 数据结构-原理性
21.哈夫曼编码:是不定长编码好处:存储空间更小缺点:每次都有需要重新计算,解析很慢作用:用来压缩的空间的分配是以变量为申请单位的,哈夫曼编码存储在一个变量里最优二叉树每次挑任意两个最小的,所以最优树可能不唯一,但结果需要的存储空间是唯一的22.电脑中磁盘的数据其实都是满的,之所以现实多少可用,只是把他们标记成了无效数据,并不是空的,计算机中的的删除和格式化磁盘的原理就是把他们都标记为无效数据,并不是真的删除,所以可以恢复数据23.创建一个栈代码:public class Tes
2022-03-09 16:04:34
67
原创 八大排序-希尔排序
两两分组先排序,然后再合并排序,不断缩小步长,在组内进行插入排序1.希尔排序如何分组:第一轮:步长:数组长度的一半第二轮:步长:数组长度的一半的一半第三轮:步长:数组长度的一半的一半的一半代码:import java.util.Arrays;public class ShellSort { public static void main(String[] args) { int[] arr = new int[]{5,7,4,2,0,1,3,6}; shellsort(arr);
2022-03-08 18:40:42
321
1
原创 八大排序-插入排序
将数组第一个看成排序好的数组,每次都把下一个插入前边已经排序好的数组中代码:import java.util.Arrays;public class InsertSort { public static void main(String[] args) { int[] arr = new int[]{5,7,4,2,0,1,3,6}; insertsort(arr); } public static void insertsort(int[] arr) { for (int i =
2022-03-08 18:40:09
244
原创 八大排序-简单选择排序
每次循环找数组当中最小的值,放在有序数组中的第i位代码:import java.util.Arrays;public class SearchSort { public static void main(String[] args) { int[] arr = new int[]{5,7,4,2,0,1,3,6}; searchSort(arr); } public static void searchSort(int[] arr) { for (int i = 0; i <
2022-03-08 18:39:37
54
原创 八大排序-冒泡排序
每次循环i和j都往后移一位,如果i>j的话,这两个进行交换实现冒泡排序需要一个数组,两个游标,游标要执行多少轮只有循环才能让游标移动链表多用while循环,数组多用for循环,因为链表不知道长度,数组知道长度代码:import java.util.Arrays;public class BubbleSort { public static void main(String[] args) { int[] arr = new int[]{5,7,4,2,0,1,3,6}; bub
2022-03-08 18:38:29
331
原创 JAVA-异常
首先我们来看一下java异常体系结构图一、java异常体系Thorwable类(表示可抛出)是所有异常和错误的超类,两个直接子类为Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常, 这两种异常有很大的区别,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。1、Error与ExceptionError是程序无法处理的错误,它是由JVM产生和
2022-03-08 18:35:31
129
原创 JAVA-浅拷贝和深拷贝
对于java拷贝的理解在java语言中,当我们需要拷贝一个对象的时候,常见的会有两种方式的拷贝;深拷贝和浅拷贝。浅拷贝只是拷贝了原对象的地址,所以原对象的任何值发生改变的时候,拷贝对象的值也会随之而发生变化。深拷贝则是拷贝源对象的所有值而不是地址,所以即源对象的值发上变化时,拷贝对象的值不会发生变化。一:浅拷贝浅拷贝示意图:我们来做一个基本的演示:定义一个User类public class User {private String username = "张三";private Str
2022-03-08 18:31:10
267
原创 JAVA-代理
代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法java中的代理模式:*定义:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用*目的:①:通过代理对象的方式间接的访问目标对象,防止直接访问目标对象给系统带来不必要的复杂性②:通过代理业务对原
2022-03-08 18:28:47
152
空空如也
请教各位,求一个搜索算法
2024-01-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人