自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈x509

X.509证书里含有、(比如网络主机名,组织的名称或个体名称等)和(可以是证书签发机构CA的签名,也可以是自签名)。另外除了证书本身功能,X.509还附带了和用于从最终对证书进行签名的证书签发机构直到最终可信点为止的。...

2022-07-16 13:37:11 1176 1

原创 java读取Excel文档 + 存入数据库

序在做项目的时候,我们有时想要读取Excel类型的文档,把表格里面的数据进行处理,比如把成绩Excel文档存储到数据库对应的表。而这时却不知道该如何操作,接下来我将讲解这个流程。以下面的数据为例总体思路1、想要读取Excel文件,必须要获得文件的位置,就是文件路径,看看文件在哪个文件夹里,复制文件夹的路径,并在java中定义。2、获得路径后,通过路径定位生成数据流,使用FileInputStream方法读取路径对应文件的原始字节流。3、使用ExcelUtils工具类读取 字节流 + 路径。4、

2022-05-20 17:16:22 23785 4

原创 ssm常用的注解

@RestController此注解有两个目的。首先他是一个类似于@controller和@Service的构造型注解,能够让类被组件扫描功能发现。但是,与REST最相关在于@RestController会告诉Spring,控制器中所有的处理器方法的返回值都要直接写入响应体中,而不是将值放到模型中并传递给一个视图以便于渲染。作为替代方案就是@Controller加上@Response。@RestControllerpublic class Controller { }@ApiVersi

2022-05-19 18:01:17 2463

原创 ssm框架下将文件上传到服务器 +下载到本地

在制作java项目时,我们会疑惑,如果我们想要把本地的图片或者文档上传到服务器,我们该怎么做呢?为实现这个,应该这样做。案例如下:1、使用spring框架实现文件上传到服务器并在本地目录生成的功能,可用在上传图片功能和导入excel功能2、具体实现流程是前端发送请求后端来处理,前端页面如下,这篇文章主要讲述后端业务处理,适合java有些基础的人学习3、业务逻辑梳理​ 想要实现文件上传,必须要定义文件上传的路径,这个路径是服务器所在的路径,在服务器中开辟空间,把本地的文件上传,这是总的,下面一条

2022-05-18 18:43:00 1984

原创 虚拟机部署docker流程

1、新建建虚拟机,把镜像放进去,运行,等待2、右键虚拟机桌面 Open Terminal 看是否有docker环境 --输入docker3、需要远程连接工具4、git bash进行操作,(1) ifconfig 查看ip 在虚拟机中输入​ 连接不上去输入需要安装sshsudo apt-get install openssh-server​ (2) 连接ubuntu 在git bash中输入 ssh ubuntu@(自己的ip地址),输入密码123456​ (3) 把(m

2022-04-25 17:54:14 2545

原创 MyBatis总览+入门流程

一、配置环境变量 moven二、MyBatis入门步骤1、引入依赖2、编写实体 User UserDaoUser写字段 get set toString方法UserDao中定义方法3、在resorce中写UserMapper<mapper namespace="com.qcby.dao.UserDao"> <select id="findAll" resultType="com.qcby.entity.User"> select * from

2022-03-06 09:31:44 214

原创 SSM使用总览

一、Mapper写sql语句1、 在里面映射dao2、 ,, 固定标签,可以在里面写sql语句 id绑定方法名3、ResultType 出参,用于查询;parameterType入参,从数据库读取二、写入bean 和Dao接口Dao 写方法名 ,bean是数据的载体Mapper +bean+Dao 是MyBatis部分,主要作用是使用数据库三、书写spring部分1、IOC 控制反转IOC的实现,依赖于以下3门技术① dom4j解析xml文档;② 工厂模式;③ 采用反射设

2022-03-06 09:28:16 447

原创 SSM 根据学号姓名性别模糊查询+实现分页的功能实现实现分页的sql语句

SSM 根据学号姓名性别模糊查询+实现分页的功能实现实现:可以根据多个查询框中的输入值灵活查询。查询返回所需内容的分页,点击分页跳转,并且无分页无数据bugMybatis语句 <select id="findAll" resultType="com.javen.model.Student" parameterType="com.javen.model.Student" > select student.student_id,student.student_name

2022-03-06 09:26:04 1058

原创 spring框架使用注解注入

spring使用注解一、基于注解的方式实现Bean管理和注入属性1.什么是注解①:注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值…)②:使用注解,注解作用在类上面,方法上面,属性上边③:使用注解的目的:简化XML配置2.Spring针对Bean管理中创建对象提供的注解@Component 普通的类@Controller 表现层@Service 业务层@Repository 持久层上边四个功能一样,都可以用来创建bean实例@Component(value =

2022-02-20 11:40:26 430

原创 spring框架的使用

spring的使用1、导入依赖<dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency>

2022-02-20 11:39:55 804

原创 spring框架的介绍

1. Spring框架的概述Spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。Spring是于2003 年兴起的一个轻量级的Java开发框架,由Rod Johnson在其著作Expert One-On-One J2EEDevelopment and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 Jav

2022-02-20 11:39:24 374

原创 servlet线程安全问题

Servlet线程安全问题线程安全问题当我们访问servlet的时候,我们需要执行实例化操作,创建一个servlet对象。而我们tomcat容器可以让多个线程并发访问Servlet,如果在方法当中对成员变量做修改,就会出现线程安全问题。如何保证线程安全1、synchronized :这种方式会大量的造成线程堵塞public class MyServlet extends GenericServlet{ @Override public synchronized void service(S

2022-02-09 19:42:37 2600

原创 url和http协议+请求+响应

一、url:统一资源定位符表示方法:<协议>://<主机>:<端口>/<路径>例如:http://localhost:8080/BuyechengServlet/login.htmllocalhost:代表的是我们本机的IP地址8080:代表我们的端口号BuyechengServlet/login.html :代表的是我们的路径。协议部分确定了我们的浏览器怎样向浏览器发送请求,以及服务器应该怎样反馈我们的请求,除了HTTP协议以外还有FTP协

2022-02-09 19:41:53 346

原创 servlet的两种配置访问方式

servlet的两种配置访问方式1.Servlet使用Web.xml配置<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/

2022-02-09 19:41:06 1209

原创 servlet接口和类

Servlet接口servlet接口是整个servlet的核心。它是所有Servlet类必须直接或者间接实现的一个接口,其内部需要实现的5个方法分别关乎着我们servlet的生命周期和业务实现。init(... ) 当Servlet第一次被请求时,Servlet容器就会开始调用这个方法来初始化一个Servlet对象出来 service(...) 每当请求Servlet时,Servlet容器就会调用这个方法destroy(...) 当要销毁Servlet时,Servlet容器就会调用这个方法g

2022-02-09 19:40:06 120

原创 java易错题整理1.23

public class Test { static { int x = 5;//局部变量不参与下面运行 } static int x,y; //定义,x,y默认为0 public static void main(String[] args) { x--;//x变为-1 myMethod(); System.out.println(x+y+ ++x);// 1+0+2=3 } public static void myMethod() { y = x

2022-02-08 08:48:35 377

原创 异常的概念

java异常体系分为两种 一种是Error 错误 一种是Expection异常Error:指jvm所抛出的错误,比如栈内存溢出Expection:分为两种:运行时异常(非受检异常)和非运行时异常(受检异常)运行时异常:数组越界 空指针非运行时异常:IO异常 ==》try catch finally |throws...

2022-02-08 08:47:34 199

原创 多态面试题

多态:同一行为具有不同的表现能力或形态特点:1、继承 2、重写 3、向上转型(父类指向子类)A a1=new A();//可以使用的只有A中的两个方法B b=new B();//使用A和B种的方法,因为B继承AC c=new C();D d=new D();A a2=new B();//因为类型是A,所以只能使用A中的两个方法,但是指向B,B重写A,A的方法被B覆盖sout(a1.shou(b));//A A向上转型sout(a1.shou(c));//A A向上转型sout(a1.s

2022-02-08 08:45:28 192

原创 包装类Interger

1、为什么要有包装类数值之间要自由转换java万物皆对象 //基本类型及其包装类 byte ---------------------> Byte short ---------------------> Short int ---------------------> Integer long ---------------------> Long float -----------------

2022-02-08 08:42:58 136

原创 java面试题

1.java的跨平台优势? *我们都知道java中有着jdk工具,而jdk中又有着jre,而jre中就有跨平台所需要的jvm,为什么说跨平台需要jvm呢,因为jvm可以在不同的平台安装,使得java能够在不同的平台运行,从而屏蔽了平台底层的差异,有着自己的跨平台优势。2.简述java中==和equals的区别 *==比较基本数据类型时,比较的是值;比较引用数据类型时,比较的是地址equals 基本类型没有equals方法;比较引用数据类型时,Object类比较的是地址,而其他的类可以重写Obje

2022-01-19 20:48:35 327

原创 java接口介绍及代码

接口接口是对方法或行为的规范1.接口用interface修饰,关键字是interface,和class是同一个层次的。public interface TestInterface {}2.接口当中所有的方法都是默认abstract类型public interface TestInterface {public abstract void run();public void eat();}3.接口没有构造器不能new对象4.接口和实现类之间存在着多态性;父类引用指向

2022-01-18 23:21:55 649

原创 java抽象类介绍及代码

抽象类抽象类本质就是一个类,抽象类经常作为父类使用,子类调用父类的方法或变量1.凡是有abstract修饰的类叫做抽象类public abstract class TsetAbstruct {}2.abstract修饰的类的方法可以不在抽象类中实现,可以在再子类中实现,子类重写抽象类方法public abstract class TsetAbstract { public abstract void run();}public class ExtendsAbstract ext

2022-01-18 23:20:58 3059

原创 java反射介绍及代码

反射获取反射//第一种获取方式,主要是获取信息Class clazz =Class.forName("包名.类名");//第二种获取方式,用来传递参数Class clabb=类名.class;//第三种获取方式,不推荐使用Cat cat =new Cat();Class clacc=cat.getClass();获取的反射类型Field 获取的是变量Method[]获取的方法Constructor[]获取的是构造器public 类型 的变量、方法、构造器获取变量1.关于获

2022-01-18 23:14:33 861

原创 内存指向(static解释+值传递内存图)

Static1、public class Cat extends Animal{ static{//static 在main方法之前执行,会先加载static System.out.println("2"); } public Cat(){ System.out.println("4"); } public static void main(String[] args){ //new Animal(); //这样不会创建子类的

2022-01-10 18:07:06 303

原创 b+树 b+树特点 b+树存储构建

b+树一、B+树的结构特点非叶子节点仅具有索引作用,也就是说,非叶子节点只能存储Key,不能存储value树的所有叶节点构成一个有序链表,可以按照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-01-05 11:55:35 387

原创 b树 b树特点 画图构建b树

b树一、b树的特点b树允许每个节点包含多个k值,如果我们构建一个M阶b树,那么他的特点是:每个节点最多有M-1个k值,并按照升序排列每个节点最多有M个子节点根节点至少有两个子节点如上图为4阶b树,在实际应用中B树的阶数一般比较大(通常大于100),所以,即使存储大量的数据,B树的高度仍然比较小,这样在某些引用场景下,就能体现出他的优势二、b树存储数据(构建b树)我们构建一个5阶b树,将数据 39,22,97,41,53,21,40,30,27,33,36,35存入操作步

2022-01-05 11:52:32 1426

原创 哈夫曼树个人笔记

哈夫曼树给定 I:1 V:1 L:1 E:1 Y:1 U:1 O:2 空格:2 频率的数画出哈夫曼树以图中为例带权路径长度从根节点到该节点所经过的路径长度与该节点的权的乘积 以O为例 3*2=6树带权路径长度(WPL为最小哈夫曼树)从根节点到所有子节点所经过路径长度与该节点的权的乘积之和3x1+3x1+3x1+3x1+3x1+3x1+3x2+3x2=30压缩率如果不按哈夫曼编码,每个字符占8bit,而压缩之后每个字符3bit字符占8bit,而压缩之后每个字符3bit(8x1

2022-01-03 22:58:43 524

原创 红黑树个人笔记

红黑树特点1.从一个节点到该节点的所有子孙节点的所有路径上包含相同数目的黑色节点。2.红黑树每个节点不是红色就是黑色。3.根节点是黑色节点。4.如果一个节点是红色的那么它的子节点都是黑色5.每个叶子节点都是黑色的节点。6.没有一条路径超过其他路径的2倍。红黑树变换...

2022-01-03 22:57:52 215

原创 平衡二叉树个人笔记

平衡的二叉树定义:平衡二叉树在有序的基础上左子树和右子树高度差值的绝对值不超过1。LL型旋转红色的3为新插入的节点,插入后,7的左右子树高度为2,超过了1,应该开始转换,以7的第一个节点4为根,将7,8变为右子树,其余的节点有序插入。RR型旋转插入6之后,2的左右子树差值大于1,开始RR型变换,以2的第一个节点4为根,将2,1变为左子树,其余节点按照顺序插入LR型旋转插入7,不平衡,以8的第二个节点6为根,将8,9变为右子树,其余节点按顺序插入。RL型旋转插入3后,不平衡,以2的第

2022-01-03 22:57:10 137

原创 二叉树的删除代码(包含所有情况)

二叉树的删除1、分类讨论如图 节点可以分为3种类型0个子树:删除①,先寻找 ①,再寻找①的父节点②,通过父节点②指向空(null)来实现删除①。1个子树:删除⑦,先寻找 ⑦,再寻找⑦的父节点⑤,让⑤直接指向⑦的左或者右子树来实现删除⑦。2个子树:删除②,先寻找 ②,找到②右子树的最小值或者左子树的最大值,将②变成那个值,并删除那个值。2、代码search通过value值找到目标节点,使用递归的方法查找public TreeNode search(TreeNode root,Int

2022-01-02 19:58:39 855

原创 二叉树的遍历代码(深度遍历+广度遍历)

二叉树的遍历深度遍历//深度遍历 node 为根节点,使用递归的方法 //中序遍历 public void mid(TreeNode node) { if(node!=null) { mid(node.leftChild); System.out.println(node.value); mid(node.rightChild); } } //前序遍历 public void before(

2022-01-02 19:57:09 243

原创 二叉树的构建代码(普通写法+递归写法)

二叉树的构建首先创建三个类//TreeNode构建每一个树节点,包括树的左子树、右子树和值(value)public class TreeNode { public TreeNode leftChild; public TreeNode rightChild; public Integer value; public TreeNode(Integer value) { this.value=value; }}//用于构建树的算法public class BinaryT

2022-01-02 19:56:38 1064

原创 二叉树的基本概念(为什么需要树这样数据结构+树示意图+二叉树的概念+二叉树的遍历说明)

二叉树的基本概念一、为什么需要树这样数据结构1.数组存储方式分析优点:通过下表方式访问元素,速度快。对于有序数组没还可以使用二分查找提高检索速度。缺点:如果要检索某一个具体值,效率比较低下2.链式存储方式分析优点:在一定程度上对数组存储方式进行优化(比如插入一个节点,只需要将插入节点,链接到链表当中可删除的效率也很好)。缺点:在进行检索时,效率仍然比较低,比如(检索某个数值,需要从头结点开始遍历)3.树存储方式分析能提高数据存储,读取的效率,比如利用二叉排序树,既可以保证数据的检索速度。同

2022-01-02 19:56:07 447

原创 java盛最多水的容器 力扣题11

11. 盛最多水的容器难度中等3020收藏分享切换为英文接收动态反馈给你 n 个非负整数 a1,a2,...,a``n,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。**说明:**你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49 解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情

2022-01-02 18:20:32 133

原创 java无重复字符的最长子串+画图解释 力扣题3(仅考虑ACSII码包含的字符)

这个实现的方法千万种,我列举其中一个。此代码仅仅考虑ASCII中的字符 。两种算法仅有略微差距,代码中详细说算法一public static int lengthOfLongestSubstring(String s) { //定义一个 ASCII码范围的数组,每个ASCII都对应一个数字,所以字符串中每一个字符都可以变换成ASCII码 int arr[]=new int[128]; //将数组中的所有数置位-1; for(int i=0;i<arr.length;i++)

2021-12-12 16:08:21 413

原创 java循环遍历+泛型代码(笔记,随时复习)

循环遍历代码+泛型(笔记防止忘记)1.循环遍历以队列为例,队列为先进先出。循环遍历核心是通过%arr.length而达到循环放入。使一个数组循环使用Queue类public class Queue{ int arr[]=new int[3]; public int f=0; public int s=0; public void in(int value) { if(f-s==arr.length) { int brr[]=new int[arr.length*2]; for

2021-12-09 15:30:33 282

原创 java单链表+链表反转+链表合并+输出后k个节点+判断链表是否成环

链表反转+链表合并+输出链表后k个值+判断链表是否成环链表的基础以及链表在内存中的解释,不太清楚的可以看这个链接https://blog.csdn.net/PDyee/article/details/121704424?spm=1001.2014.3001.5501先创建三个类ListNode类public class ListNode {public int value;public ListNode next; public ListNode(int value) { this.va

2021-12-06 15:00:24 340

原创 java单链表尾插法+头插法+输出链表+获取链表长度

先上代码后说明ListNode类//ListNode类public class ListNode { public int value; ListNode next; public ListNode(int value) { this.value=value; } }LinkNode类//LinkNode类用于管理添加链表,将链表存储到堆中public class LinkNode {ListNode head=null;public void insert(int

2021-12-03 18:07:55 740

原创 java常见代码的时间复杂度

提示:有时看代码无法看出时间复杂度,最好画图,一目了然。 //时间复杂度为O(n) for(int i=0;i<100;i++) { } //时间复杂度为O(logn) for(int i=0;i<100;i*=2) { } //时间复杂度为O(n^2) for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { } } //时间复杂度为O(nlogn) for(int i=0;i&lt

2021-12-03 17:25:21 364

原创 抽象类(abstract)和接口(interface)的区别

抽象类1.凡是有abstract修饰的类叫做抽象类public abstract class TsetAbstruct {}2.abstract修饰的类的方法可以不在抽象类中实现,可以在再子类中实现,子类重写抽象类方法public abstract class TsetAbstract { public abstract void run();}public class ExtendsAbstract extends TestAbstract{public void run()

2021-11-30 14:50:22 116

空空如也

空空如也

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

TA关注的人

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