自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [JavaEE] Mybatis操作数据库

Mybatis是一个持久层框架,用来简化JDBC的开发的,持久层就是持续化操作的层,这里指的是数据操作层(Dao),本质就是更简单的去操作数据库。

2026-02-26 20:09:24 652

原创 [JavaEE] Spring Boot 日志

日志就是程序在运行过程中记录下来程序所做的工作。日志门面: SLF4J日志实现:log4J JUL logback这里的日志门面相当于是一种规范,不具体实现操作,而是直接调用日志实现的框架,具体的操作实现由下面三个框架去实现。上面的这种设计模式就是门面模式,提供一个统一的接口去使用,这个接口再去调用其他子接口,更方便的去调用子接口。比如我们想要关家里的灯,但是需要关很多开关但是此时我们可以设置一个总开关,来控制所有的灯,直接关闭这个总开关就可以关闭所有的灯。//开灯//关灯。

2026-01-07 17:13:50 1106

原创 [JavaEE] SpringBoot 配置文件

该配置文件里面的信息都是以 键值对的形式存在的,中间使用=连接,如果要注释,使用#,每个单词需要小写,并且每个单词之间使用 . 来分割。#配置项目端口号我们还可以自定义配置,自己起一个建名,对应一个值。key=1server:port: 8080key: 1spring:官网我们就可以使用它提供的方法来生成验证码,之类需要引入依赖,在官方文档中有,我们使用下面的就行。请求:/captcha/getCaptcha响应:验证码的图片内容请求:/captcha/check。

2026-01-07 17:13:20 705

原创 [JavaEE] Spring IoC&DI

Spring在广义上来说是一个家族,包含了很多Spring的框架和项目。在狭义上来说就是Spring Famework,是Spring家族的最底层的项目,它提供了IoC容器,AOP,事务管理,JDBC继承,MVC等功能,其他的项目都是基于Spirng来创建的。IoC是一种思想,就是控制反转的意思,之前我们使用对象时候,需要自己new一个对象去使用,这时候对象的创建和生命周期都受到类的控制,

2025-12-19 20:07:44 663

原创 [算法]---多状态dp问题

【代码】[算法]---多状态dp问题。

2025-12-19 20:07:00 425

原创 [JavaEE] Spring Web MVC入门

Spring Web MVC 是基于 servlet API 构建的原始Web框架,从一开始就包含在spring框架里面,但通常称为:Spring MVC,也就是说 Spring Web MVC 最开始就包含在Spring FrameWork框架里面。servlet:就是用来处理客户端请求,处理业务逻辑,生成响应内容的。而Tomcat这样的servlet容器是用来接收客户端请求,管理servlet的执行,并将响应返回给客户端。

2025-12-11 16:54:03 1289

原创 [Java EE] HTML·CSS·JavaScript基础

JavaEE也就是Java平台企业版,是JavaSE的拓展,用于企业级开发,相当于定制一套Java规则用于在企业中进行使用。2017年,Oracle将javaEE捐赠给Eclipse基金会,后来就改名字为JakartaEE。而在利用JavaEE进行开发时,避免不了学习框架。框架就是:一套标准,我们可以在标准上进行拓展,比如说:建造一套房子,工程方将房子建造好,将毛胚房卖给买家,买家再进行装修使用,这里的毛胚房就是框架。HTML:超文本标记语言。我们平常使用的记事本就是文本语言只能用来写字。

2025-12-11 16:53:09 741

原创 [JavaSE] JVM

JVM就是Java虚拟机,是专门为Java程序服务的模型,可以将Java代码编译后的字节码文件通过JVM将字节码转换成不同操作系统对应的机器码进而运行,是Java跨平台性的核心机制。

2025-12-10 13:42:25 788

原创 [JavaEE] SpringBoot快速入门

Maven是一个项目管理工具,它可以通过一小段的描述来管理项目的构建,报告和文档的项目管理工具软件。其实就是一个pom.xml文件用来添加jar包的。Maven的主要作用就是项目构建和管理依赖。Spring具有两个含义,一个是Spring家族,包含了很多的框架:另一个含义就是Spring Framework这个框架,这个框架是后续的框架的基础,但是这个框架的配置过于复杂,后来就推出了Spring Boot框架,来简化开发者的使用。

2025-12-10 13:41:51 1130

原创 [JavaSE] 网络原理(TCP_IP)

但是存在一些问题,如果发送方发了很多条数据,接收方拿到的数据有可能是乱序的,不能得到原始数据,因为TCP协议是面向字节流传输数据的,数据在传输时候,走的路线可能不同,可能会发生后发先到的情况,此时接收方不能根据乱序的数据得到原始数据,如果部分数据丢失,发送方和接收方也不知道那些数据丢失了,如何让发送方知道,接收方已经收到了那些数据呢?每跳一级路由器,路由器的路由表包含的信息越多,越容易找到,如果找到了,就会直接从该路由器保存的该IP的发送端口转发出去。接收端接收数据的能力是有限的。

2025-12-05 16:53:44 954

原创 [算法]---分治-快排和归并

利用了归并排序的思路,可以提高效率。

2025-12-05 16:53:12 400

原创 [JavaSE] 网络原理(HTTP_HTTPS)

自定义协议分为两个阶段:明确需要传输那些信息,确定好信息组织的格式。明确需要传输那些信息,这个是根据具体的业务来确定需要传递那些信息,比如一个外卖平台用户点外卖:客户端传:用户的位置,用户的id等信息。服务端传:商家的点名,菜名,图片,评分等信息。确定好信息的组织方式:方法一:行文本的方式每个请求或者响应包含多行,行与行之间按照符号分开。

2025-12-04 18:40:01 1504 1

原创 [算法]---路径问题

这里需要注意的是当元素中只有一个障碍物时候,需要返回0,也就是dp[1][1]初始化成0。

2025-12-04 17:26:32 405

原创 [算法]---斐波那契数列模型

我们可以使用递归来解决这道题,但是递归中有重复的运算,给一个数找到这个数的泰波那锲数,这里我们可以利用动态规划设置一个dp数组来记录这些计算过的数,直接在数组里面找这些重复计算的结果。

2025-12-04 17:25:41 328

原创 [JavaSE] 网络编程

网络编程是指网络上的主机,通过不同的进程,用编程的方式实现网络通信。网络编程只需要是不同进程之间进行通信就行,可以是一台主机上的不同进程之间通过网络来通信。

2025-11-20 17:59:04 1028

原创 [JavaSE] 文件操作和IO

文件包括狭义的文件和广义的文件,狭义的文件就是硬盘上存储的文件,广义上的文件就是操作系统进行资源管理的一种方式,将很多的硬件和软件资源抽象成“文件”来进行表示。下面就是狭义上的文件:第一个我们在生活中叫做文件夹,但是在计算机领域专业术语叫做目录,第二个就是文件,这些都是保存在硬盘上的。计算机中能够存储数据的有:硬盘,内存,CPU。硬盘又分为机械硬盘和固态硬盘,机械硬盘的读写速度大概为:1秒几百MB,固态硬盘读写速度大概为:1秒几个GB,但是机械硬盘比固态硬盘便宜。

2025-11-20 17:58:29 681

原创 算法---FloodFill算法和记忆化搜索算法

我们在利用递归解决问题时候,发现会有好多的重复计算,这时候我们就想到使用一个类似于备忘录的东西,将这些计算过的数据记录在备忘录里面,然后每次进行递归时候就先在备忘录里面进行查询,这样就可以减少重复计算的次数。这道题让我们就可以猜到数字的最小金额,我们需要把[1,n]之间的每个数字都作为开始遍历一遍,找到这些数字中最小的金额,而每个单独的遍历过程,需要得到左子树和右子树返回的最小金额中的最大值,再加上头节点本身。如果我们使用暴搜的话,时间会超时,我们可以设置一个二维数组表示在某个区间范围的数的最小现金数。

2025-11-16 13:59:23 846

原创 算法---二叉树的深搜和回溯

我们需要先设置一个哈希表来表示题目中数字对应的字符串是那个,然后我们先获取到字符串中对应pos位置对应的字符串,然后遍历这个字符串,将字母添加到第二个全局变量中,然后递推下一个字符串对应的pos位置的字符串,回溯时候要把第二个全局变量删除最后一个字母。这道题给我们一个完整二叉树(每个节点没有子节点或者有两个子节点),并且节点中0代表false,1代表true,2代表or(||),3代表and(&&),并且叶子节点是0或者1,其他节点是2或者3,让我们从叶子节点开始进行运算,返回最后的运算结果。

2025-11-16 13:58:54 1092

原创 算法---递归

我们会发现每次我们需要比较两个链表头节点的大小关系,小的节点作为头结点,连接后续链表跟另一个链表合并后的有序链表的头节点,循环往复。我们想要反转整个链表,可以先反转1节点后的链表,此时再将1节点加到反转后的链表后面,注意将1节点的next置为null。这道题让我们将A柱子上的盘子通过B柱子移动到C柱子上面,最后能够打印出C柱子上的盘子。我们可以先交换第三个节点后的链表,然后再交换前两个节点,最后指向后面交换好的节点。这道题给我们一个链表,让我们将原来的链表两两进行交换,然后返回交换后的链表。

2025-11-08 14:57:11 768

原创 [JavaSE] 多线程

CPU的指令有两种:精简指令集:一条指令包含较少的操作,基本上一个指令对应一个时钟周期。复杂指令集:一条指令包含很多操作,一个指令占用很多时钟周期。CAS全称是Compare and swap,就是CPU中的一个原子操作,具体执行的内容是:存在一个内存地址V,一个寄存器A,一个寄存器B,此时从V中读取数据,判断该数据跟A中的值是否一样,一样的话就会交换V和B中的值。

2025-11-08 14:56:27 1168

原创 前置知识介绍

递归是一种解决问题的方式,本质就是方法自己调用自己。

2025-11-08 14:55:53 540

原创 算法---模拟

这道题给我们一个数字n,让我们求该数字的行程长度编码,n的行程长度编码=(n-1)的行程长度编码进行运算,这个运算指的是对这个字符串进行解析,例如:"111133355566",这个字符串有4个1,3个3,3个5,2个6 运算后为41 33 35 26。这道题给你一个字符串cro,里面包含多个青蛙的叫声,青蛙的叫声是“croak”,字符串cro可能包含多个青蛙的叫声,返回这个字符串最少需要几个青蛙完成叫。这道题给我们一个字符串s和一个行数n,让我们返回字符串按照上面排序后的新字符串。

2025-10-24 17:25:25 732

原创 [MySQL] JDBC

JDBK是java与数据库之间建立联系的桥梁,JDBC包含了一套Java定义的用于执行SQL语句的接口,主要作用是:与数据库建立连接,向数据库发送SQL语句,处理数据库返回的执行结果。市面上有很多的数据库,每个数据库都会提供一个驱动包来兼容Java语言,驱动包里面是各种类实现了JDBC里面的各种接口,进而利用Java语言操控不同数据库,只需要学习JDBC这一套标准就可以了。

2025-10-24 17:24:56 769

原创 [MySQL] 事务和视图

事务就是把多条SQL语句打包成一个整体,里面的sql语句要么全部执行成功,要么都不执行,这里的都不执行,不是说真没执行,而是发生了回滚操作。比如说有两个人A和B,A有 1000, B有1000,语句一:A给B转账500,语句二:B接收转过来的500。这两个sql语句需要都执行,不能中断,要成功都成功。如果执行完语句一后,没有执行语句二就会出现回滚现象,执行回滚的SQL语句,返回到语句一执行前的状态。

2025-10-24 17:24:09 1114

原创 [MySQL] 索引

索引是数据库中的数据结构,可以帮助我们快速的更新和查找数据。索引需要消耗额外的内存空间,但是这些空间很小。Mysql中的页指的是B+树上的每个节点,一个节点对应一页,一页的大小默认是16KB,MySQL在与硬盘进行读写操作时都是以页为单位的,并且每次MySQL读取时都至少读取一页,在硬盘中每个页内部的存储空间都是连续的,我们就可以读取一页,每页包含多条数据,下次用的数据在内存中就直接使用,不再的话就再读取,有效的减少了读取硬盘的次数。这里利用到了局部性原理。

2025-10-21 20:18:10 999

原创 [MySQL] 联合查询

数据库中笛卡尔积指的是两个表之间的运算,我们可以将两个表进行笛卡尔积就能得到两个表的完整信息。对下面这两个表进行笛卡尔积的运算:得到的结果表是:两个表通过笛卡尔积得到的 表的行数是两个表行数的乘积,表的列数是两个表列数的和。我们观察新得到的表会发现这张表里面有很多无效数据,也就是张三应该是一班的,所以第二行是无效数据,那我们会发现无效数据是两个班级id不相同的数据,那我们在查询的时候可以添加一个where条件。如何区分两个班级id呢?我们可以这样表示 student.id 和 class.id。

2025-10-21 17:12:13 917

原创 算法---位运算

<:左移运算符,一个数的二进制位向左移动,末尾补0。>>:右移运算符,一个数的二进制位向右移动,这里有符号右移补符号位,无符号右移补0。~:按位取反,就是一个数的二进制位都取反得到的数。&:按位与,两个数按位与,二进制位进行比较,有0则为0。|:按位或,两个数按位或,二进制位进行比较,有1则为1。^:按位异或,两个数按位异或,二进制位进行比较,相同为0,不同为1。注意:这里我们在使用不同的位运算符的时候,我们要根据运算的优先级加小括号。

2025-10-17 18:58:15 915

原创 [MySQL] 数据库的约束与设计

数据库的约束是对数据库中的数据施加的规则或者条件,确保数据的准确性和可靠性。

2025-10-14 20:34:55 1094

原创 [JavaSE] 计算机的工作原理

寄存器中的数据不会主动释放,只会被新的数据覆盖。

2025-10-11 16:44:10 864

原创 算法---前缀和算法

我们先创建前缀和数组,然后调用前缀和数组求最后结果数组,结果数组每个位置元素相当于求 [i-k,j-k] 到 [i+k,j+k]区域的元素之和。这里我们可以换个思路,我们可以把数组中的0换成-1,这样我们就是找到和为0的最长连续子数组,然后我们就是找以每个数组元素为结尾的数组中从0开始的和为数组长度的最短子数组。我们可以设置两个数组,前缀数组用来存储原数组[0,i-1]元素的乘积,后缀数组存储原数组[i+1,n+1]的元素乘积。并且我们要找以数组中每个元素结尾的数组里面是否存在符合条件的子数组。

2025-10-11 10:28:43 799

原创 算法---二分查找算法

题目链接。

2025-10-04 17:18:36 681 1

原创 [MySQL] 初识数据库

数据库也就是用来存储数据的,可以帮你更好的管理数据, 当你需要数据的时候可以更加方便的去查找数据.数据库可以持久化的保存数据, 可以是数据结构化方便查询, 数据库具有可拓展性, 数据库还支持多个用户同时进行数据的访问.\

2025-10-01 16:34:10 823 1

原创 算法---滑动窗口算法

我们设置两个指针left 和 right ,指向数组的开头,设置一个变量sum = 0,让right向右移动,每次移动后sum加上right位置的值,遇到sum >= target时候,此时设置一个变量len记录长度,right遍历完后,然后,让left++,right再从left位置开始,直到left走到最后,此时len就是目标值。我们可以先定义两个下标,left 和 right 指向0位置,然后开始进窗口,将right位置的元素加到sum里面,然后判断sum 跟target的大小,

2025-09-27 20:26:42 96 1

原创 算法---双指针算法

目录1. 移动零1.1 解题思路1.2 代码实现2. 复写零2.1 解题思路2.2 代码实现3. 快乐数3.1 解题思路3.2 代码实现3.3 拓展4. 盛最多水的容器4.1 解题思路4.2 代码实现5. 有效三角形的个数5.1 解题思路5.2 代码实现6. 查找总价格为目标值的两个数6.1 解题思路6.2 代码实现7. 三数之和7.1 解题思路7.2 代码实现8. 四数之和8.1 解题思路8.2 代码实现题目链接我们可以设置两个指针dest 和 cur ,dest的左边表示已遍历元素的非零元素,右边可以表

2025-09-27 16:55:23 858 1

原创 [数据结构] 反射,枚举与lambda表达式

目录1. 反射1.1 概念1.2 反射相关的类1.2.1 Class类1.2.2 Class类相关的方法1.3 反射的举例1.3.1 获取Class对象的三种方式1.3.2 反射的使用2. 枚举2.1 概念2.2 使用2.3 常用方法2.4 枚举的构造方法2.5 枚举与反射2.6 单例模式2.6.1 饿汉式2.6.2 懒汉式2.6.3 静态内部类实现2.6.4 枚举实现3. Lambda表达式3.1 语法3.2 函数式接口3.3 Lambda表达式的基本使用3.3 语法精简3.4 变量捕获3.4.1 匿名内

2025-09-20 14:15:12 1019 1

原创 [数据结构] Map和Set

Map里面存储的是<key,value>结构的键值对,并且key的值具有唯一性。Map.Entry<K,V>是Map类内部实现的用来存放<Key,Value>键值对的内部类,该类主要提供了下面的方法:K getKey() 获取entry里面的keyV getValue() 获取entry里面的valueV setValue(V value) 修改键值对中Value的值但是其中不包含设置Key的值的方法。Map是一个接口,实例化对象只能实例化其实现的类TreeMap或者HashMap。

2025-09-19 16:51:10 1120

原创 [数据结构] 排序

目录1. 排序的概念2. 常见的排序算法3. 常见排序算法的实现3.1 插入排序3.1.1 基本思想3.1.2 直接插入排序3.1.3 希尔排序3.2 选择排序3.1.1 基本思想3.1.2 直接选择排序3.1.3 堆排序3.3 交换排序3.3.1 基本思想3.3.2 冒泡排序3.3.3 快速排序3.3.4 快速排序的优化3.3.5 快速排序的非递归方法实现3.5 归并排序3.5.1 递归实现3.5.2 非递归实现3.5.3 归并排序的应用场景4. 排序算法的总结5. 其他非比较排序5.1 计数排序5.2

2025-09-14 20:47:41 981

原创 [数据结构] 优先级队列(堆)

根据上面的内容,我们可以发现offer方法先检查传入的数据是否有效,有效的话就调用siftUp方法,这个方法检查一下是否有构造器,没有构造器就调用siftUpComparable方法,该方法是向上调整的方法(前面讲过)这个方法会调用compareTo接口来比较插入进来的数跟头节点的数谁大,用插入进来的数 - 头节点的数 大于等于0的话不会交换位置,但是小于0的话会交换位置,换成小根堆。第一步:将前K个元素组成的堆进行排序,求前K个最大元素,排序成小根堆,求前K个最小元素,排序成大根堆。

2025-09-12 16:15:56 802

原创 [数据结构] 栈和队列

现在rear在6下标位置,假设让rear走到2位置,可以利用(rear + rear到2下标位置的距离) % 数组长度。

2025-09-07 21:09:44 983

原创 [数据结构] ArrayList(顺序表)与LinkedList(链表)

顺序表是一组物理地址连续的空间用来存储数据,一般来说是用数组来存储,对数组进行增删改查。绿色是抽象类,粉色是类,其他是接口这里ArrayList实现了RandomAccess接口,表明ArraysList支持随机访问。ArrayList实现Cloneable接口,表示ArraysList可以clone。ArrayList实现Serializable接口,表示ArraysList支持序列化。ArrayList在单线程下可以使用,在多线程选择1使用Vector或者CopyOnWriteArrayList。

2025-09-06 18:33:07 1034 2

空空如也

空空如也

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

TA关注的人

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