- 博客(52)
- 收藏
- 关注
原创 算法题——图论
本文摘要:本文主要介绍了图论相关算法,包括图的存储方式(邻接矩阵和邻接表)以及深度优先搜索(DFS)和广度优先搜索(BFS)在图中的应用。具体内容包括:1)使用DFS和BFS求解可达路径问题;2)利用DFS/BFS统计岛屿数量;3)计算最大岛屿面积和孤岛总面积;4)沉没孤岛问题;5)并查集算法检测环路;6)Prim算法求解最小生成树。每种算法都提供了Java实现代码,并说明了核心思路和实现要点。这些算法是解决图论问题的基本方法,适用于路径搜索、连通性检测、最小生成树等常见图论问题。
2025-10-31 12:13:19
316
1
原创 算法题——动态规划
本文总结了常见的动态规划算法题解,主要包括以下几类问题: 基础DP问题:斐波那契数列、爬楼梯、最小花费爬楼梯等,介绍递归和DP的转换思路。 背包问题:详细讲解0-1背包、完全背包、多重背包的解法,并通过分割等和子集、零钱兑换等例题展示应用。 股票买卖系列:涵盖6种不同限制条件的股票问题,分析状态定义和转移方程。 子序列问题:包括最长递增子序列、最长公共子序列、编辑距离等,重点讲解二维DP的应用。 回文问题:回文子串和最长回文子序列的解法对比。 文章采用统一的DP解题框架,明确状态定义、转移方程和初始化方法,
2025-10-20 20:13:07
386
原创 算法题——回溯算法
首先定义一个二维数组res保存最终结果,再定义一个集合path保存中间结果,这两个集合都作为全局变量进行修改,避免在递归中传参。这里回溯的参数首先是n和k,其次还需要传入遍历的起始序号startIndex,因为本题查找组合个数,(1,2)和(2,1)是同一个组合,所以需要定义startIndex确保不会重复。if的终止条件是当path集合的大小等于k时,说明找到了大小为k的一个组合,于是将其存入res,再跳出一层递归。
2025-10-17 12:16:21
839
原创 算法题——二叉树
本文总结了二叉树常见遍历算法的Java实现,包括: 基础遍历:前序、中序、后序遍历的递归实现 层次遍历: 普通层次遍历(102题) 从下往上遍历(107题) 右视图(199题) 层平均值(637题) N叉树层序遍历(429题) 每层最大值(515题) 填充右侧指针(116/117题) 其他算法: 最大/最小深度(104/111题) 翻转二叉树(226题) 对称判断(101题) 节点计数(222题) 平衡判断(110题) 所有路径(257题) 左叶子之和(404题) 主要采用递归和迭代(队列实现)两种方法,涵
2025-10-15 15:45:30
163
原创 算法题——单调栈
首先定义一个栈,栈中保存数组的下标(因为结果需要下标),同时保证栈底到栈顶是递减的。遍历数组temperatures,每当遍历到 i ,首先与栈顶元素比较:若,则直接将下标入栈;若栈不为空且i位置元素值要栈顶位置元素值,则直接入栈即可(保证栈递减);若栈不为空且i位置的值要栈顶位置的值,则说明找到了栈顶位置的下一个更大值的位置,也就是i,将二者之差存入结果数组,并将栈顶元素弹出,和栈顶比较直至i位置元素值要小于栈顶元素或栈空,循环结束后,将i压栈。最后结果都存入了res。
2025-10-13 14:11:45
401
原创 算法题——栈与队列
首先要在全局定义两个栈,stackIn的栈顶作为队列的队尾,栈底作为队列的队首;stackOut相反。定义一个方法,将stackIn中的全部元素倒入stackOut,如果stackOut为空则倒入,如果不为空就不处理。每次操作前,如果要取队首元素,先moveStack,再从stackOut的栈顶取元素即可。
2025-10-09 16:00:23
169
原创 9.17 SpringBoot原理(P183-P194)
SpringBoot中支持三种格式的配置文件:application.properties、application.yml、application.yaml优先级:properties > yml > yaml项目开发时推荐统一使用一种格式的配置(yml是主流)SpringBoot还支持Java系统属性和命令行参数的方式进行属性配置。
2025-09-18 16:06:31
285
原创 9.13 9.15 JavaWeb(事务管理、AOP P172-P182)
AOP:Aspect Oriented Programming(面向切面编程),其实是面向特定方法编程场景:实现:动态代理是面向切面编程的主流实现。SpringAOP是Spring框架的高级技术,旨在管理bean对象的过程中,主要通过底层的动态代理机制,对特定的方法进行编程。
2025-09-15 21:01:46
614
原创 8.23 8.25 JavaWeb(登录 P156-P170)
首先定义一个LoginController来接收请求参数并返回响应结果(因为这里请求路径为/login并不是/emps或/depts),请求方式为Post,请求参数为Json格式的username和password,使用注解@RequestBody将Json格式的参数转换到Emp类中。
2025-08-23 15:15:24
641
原创 8.18 8.20 8.21(JavaWeb 案例P135-P155)
部门管理:查询部门列表删除部门新增部门修改部门员工管理:查询员工列表(分页、条件)删除员工新增员工修改员工。
2025-08-18 15:18:46
663
原创 8.16、8.17 JavaWeb(MyBatis P116-P134)
Java DataBase Connectivity,是使用Java语言操作关系型数据库的一套APIsun公司提供一套操作所有关系型数据库的规范,即接口,各个数据库厂商去实现这些接口,提供数据库驱动jar包,我们就可以用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2025-08-16 16:23:57
795
原创 算法题——哈希表
首先new一个标记数组mark,遍历字符串s,在mark中记录每个字母出现的次数;再遍历字符串t,每遍历一个字母,就在mark中减去一次标记,若最后mark数组的内容全部为0,则说明两个单词为字母异位词,注意这里标记数组的大小只有26,所以手动建立一个哈希表,而不需要使用Java的map或set集合。
2025-08-13 16:59:20
455
原创 8.13 JavaWeb(MySQL P89-P103)
Data Manipulation Language,用来对数据库表中的数据记录进行增、删、改操作。
2025-08-13 15:32:02
901
原创 8.8 JavaWeb(MySQL P80-P88)
SQL:一门操作关系型数据库的编程语言,定义操作所有关系型数据库的统一标准SQL语句可以单行或多行书写,以分号结尾SQL语句可以使用空格/缩进来增强语句的可读性MySQL数据库的SQL语句不区分大小写单行注释: --注释内容 或 #注释内容(MySQL)多行注释:/* 注释内容 */Data Definition Language,用来定义数据库对象(数据库、表)
2025-08-08 14:59:25
785
原创 8.7 JavaWeb(分层解耦 P75-P79)
控制层,接收前端发送的请求,对请求进行处理,并响应数据:业务逻辑层,处理具体的业务逻辑:数据访问层(Data Access Object),负责数据访问操作,包括数据的增删改查对于中的案例部分,所有的功能全部写入EmpController中,复用性较差,应当使用三层架构首先编写dao层进行emp.xml文件的数据解析,在包dao下定义一个接口EmpDao,里面写了一个抽象方法listEmp用于解析数据再定义一个实现类EmpDaoA实现该接口(如果需求改变,直接再写一个新的实现类即可,便于代码复用)
2025-08-07 15:57:20
765
原创 8.6 JavaWeb(请求响应 P67-P74)
Browser/Response,浏览器/服务器架构模式,客户端只需要浏览器,应用程序的逻辑和数据存储在服务端(维护方便,体验一般):Client/Server,客户端/服务器架构模式(开发、维护麻烦,但体验好)
2025-08-06 15:37:56
691
原创 算法题——链表
头节点和非头节点要分开处理,若要删除头节点,直接让head指针后移即可;若要删除非头节点,注意指针要指向该节点的前一个结点,这样才能修改前一个结点的next指针进行删除操作。
2025-08-05 16:33:30
150
原创 8.5 JavaWeb(Web入门 P58-P66)
需求:使用SpringBoot开发一个web应用,浏览器发起请求/hello后,给浏览器返回字符串"Hello World"分析:1.创建SpringBoot工程,并勾选web开发相关依赖2.定义HelloController类,添加方法hello,并添加注解3.运行测试运行启动类在浏览器中访问localhost:8080/hello,就访问到了web应用程序。
2025-08-05 15:28:54
385
原创 8.4 Java Web(Maven P50-P57)
Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具1.依赖管理:方便快捷地管理项目依赖的资源包(jar包),避免版本冲突问题2.统一项目结构:提供标准、统一的项目结构3.项目构建:标准跨平台(Linux、Windows、MacOS)的自动化项目构建方式官网:https://maven.apache.org/
2025-08-04 16:03:11
837
原创 8.3 Java Web(JavaScript P15-P28)
</script>标签之间在HTML文档中,可以在任意地方,放置任意数量的<script>一般会把脚本置于<body>元素的底部,可改善显示速度外部JS文件中,只包含JS代码,不包含<script>标签<script>标签不能自闭和<head><title>JS-引入方式</title>-- 内部脚本 -->--<script>
2025-08-03 16:56:02
774
原创 8.1 Java Web(HTML、CSS P1-P14)
(Hyper Text Markup Language):超文本标记语言超文本:超越了文本的限制,除了文字信息,还可以定义图片、音频、视频等内容标记语言:由标签构成的语言,HTML标签都是预定义好的,例如使用<a>展示超链接,使用<img>展示图片,使用<video>展示视频;HTML代码直接在浏览器中运行,HTML标签由浏览器解析(Cascading Style Sheet):层叠样式表,用于控制页面的样式(表现)HTML结构标签HTML标签不区分大小写,属性值单双引号都可以,语法较松散。
2025-08-01 15:19:01
828
原创 7.29 Java SE(Java高级 P191-P199)
如果注解中只有一个value属性,使用注解时,value名称可以不写注解的本质都是一个接口,Java中所有注解都是继承Annotation接口的@注解(...):其实就是一个实现类对象,实现了该注解以及Annota接口//特殊属性@MyTest1(aaa="牛魔王", ccc={"Java", "HTML"})//@MyTest2(value = "孙悟空")//@MyTest2("孙悟空")@MyTest1(aaa="铁扇公主", ccc={"Python", "Java"})
2025-07-29 20:24:16
783
原创 7.28 Java SE(网络通信 P184-P190)
网络编程可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信)基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)
2025-07-28 17:05:32
194
原创 7.25 Java SE(多线程 P180-P183)
线程池就是一个可以复用线程的技术,如果不使用线程池,用户每发起一个请求,后台就需要创建一个新线程来处理,下次新任务来了又需要创建新线程来处理,然而创建新线程的开销是很大的,并且请求过多时,会产生大量的线程出来,会严重影响系统的性能。
2025-07-25 14:35:28
354
原创 7.24 Java SE(多线程 P175-P179)
线程(Thread)是一个程序内部的一条执行流程,如果程序中只有一条执行流程,那这个程序就是单线程的程序多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行)
2025-07-24 17:10:48
621
原创 7.22 Java SE(特殊文件、日志技术 P169-P174)
Properties是一个Map集合,但我们一般不会当集合使用Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。
2025-07-22 15:35:47
316
原创 7.21 Java SE(IO流 P161-P168)
IO框架封装了Java提供的对文件、数据进行操作的代码,对外提供了更简单的方式来对文件进行操作,对数据进行读写,如Commons-io。解决不同编码时,字符流读取文本内容乱码的问题,先获取文件的原始字节流,再将其按真实的字符集编码转换成字符输入流,这样字符输入流中的字符就不乱码了。注意字符输出流写出数据后,必须刷新流,或者关闭流,写出去的数据才能生效。以内存为基准,可以把文件中的数据以字符的形式读入到内存中去。以内存为基准,把内存中的数据以字符的形式写出到文件中去。字符转换输出流原理相同。
2025-07-21 12:52:15
326
原创 7.19 Java SE(IO流 P157-P160)
IO流按流的方向分为输入流和输出流,按流的数据最小单位分为字节流和字符流,字节流适合操作所有类型的文件,比如音频、视频、图片、文本文件的复制转移等;字符流只适合操作纯文本文件,比如读写txt、java文件等。
2025-07-19 15:37:49
316
原创 7.18 Java SE(IO流 P152-P156)
File是java.io.包下的类,File类的对象,用于代表当前操作系统的文件(可以是文件或文件夹),注意File类只能对文件本身进行操作,不能读写文件里面存储的数据。
2025-07-18 16:01:02
204
原创 7.17 Java SE(集合框架 P143-P148 Stream流 P149-P150)
可变参数就是一种特殊形参,定义在方法、构造器的形参列表里,格式是:数据类型...参数名称可变参数可以不传数据给他,可以传一个或者同时传多个数据给他,也可以传一个数组给他,常常用来灵活接收数据注意:可变参数在方法内部本质就是一个数组;一个形参列表中,只能有一个可变参数;可变参数必须放在形参列表的最后面。
2025-07-17 17:55:46
582
原创 7.15 Java SE(集合框架 P136-P142)
1.如果希望记住元素的添加顺序,需要存储重复的元素,又要频繁地根据索引查询数据用ArrayList集合(有序、可重复、有索引),底层基于数组2.如果希望记住元素的添加顺序,且增删首尾数据的情况较多用LinkedList集合(有序、可重复、有索引),底层基于双链表3.如果不在意元素顺序,也没有重复元素需要存储,只希望增删改查都快用HashSet集合(无序、不重复、无索引),底层基于哈希表4.如果希望记住元素的添加顺序,也没有重复元素需要存储,且希望增删改查都快。
2025-07-15 19:27:04
971
原创 7.14 Java SE(JDK8 新特性P127-P128 异常P134-P135)
Lambda表达式用于简化匿名内部类的代码写法以下为一个匿名内部类的写法注意Lambda表达式只能简化函数式接口的匿名内部类,因此按照规则下面代码是错误的对于以下匿名内部类才可以进行Lambda表达式简化简化代码如下函数式接口就是有且仅有一个抽象方法的接口,将来我们见到的大部分函数式接口,上面都可能会有一个@FunctionalInterface的注解,有该注解的接口就必定是函数式接口Lambda表达式的省略规则1.参数类型可以省略不写2.如果只有一个参数,参数类型可以省略,同时()也可以省略。
2025-07-14 11:34:22
231
原创 7.13 Java SE(常用API P118-P126)
StringBuilder代表可变字符串对象,相当于是一个容器,他里面装的字符串是可以改变的,就是用来操作字符串的,StringBuilder比String更适合做字符串的修改操作,效率会更高,代码会更简洁对于字符串相关的操作,如频繁的拼接、修改等,建议使用StringBuilder效率更高;如果操作字符较少,或者不需要操作,以及定义字符串变量还是建议使用String。
2025-07-13 16:08:38
970
原创 7.11 Java SE(面向对象高级 P111-P115 常用API P116-P117)
内部类是类的五大成分之一(成员变量、方法、构造器、内部类、代码块),如果一个类定义在另一个类的内部,这个类就是内部类。这里用Cat类继承Animal并重写抽象方法,但是如果子类并不是经常需要,那么我们可以不定义子类,而是使用匿名内部类,匿名内部类本质上其实就是一个子类。编译器为枚举类新增了几个方法,并且枚举类都是继承java.lang.Enum类的,从enum类中也会继承一些方法。Object类是Java中所有类的祖宗类,因此Java中所有类的对象都可以直接使用Object类中提供的一些方法。
2025-07-11 17:53:31
361
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅