自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 [Java 算法] 字符串

2.将两个字符串 第 i 位 × 第 j 位 存放在 tmp[] 的 i+j 位;中心扩展算法 , 分别枚举奇数长度以 i 为中心的子串 , 和偶数长度以 i 为中心的子串。从最低位开始拼字符串 , 最低位在字符串的起始位置 , 最终得到的数是逆序的。相加 : 前一位的进位 t+=两数的当前位 , 满 2 进 1 : t%2。,逐字符地去对比其他所有字符串。,不断缩小公共前缀的范围。字符串数组看作一条链,

2026-04-06 21:39:43 101 1

原创 [Java 算法] 栈

【代码】[Java 算法]

2026-04-06 21:38:05 47

原创 [Java 算法] 动态规划(4)

若 len[j] + 1 > len[i]:说明找到了更长的子序列,更新 len[i] = len[j] + 1,同时 cnt[i] = cnt[j](个数继承自 j)若 len[j] + 1 == len[i]:说明找到了长度相同的新子序列,累加计数 cnt[i] += cnt[j]cnt[i]:以 nums[i] 结尾的、长度为 len[i] 的最长递增子序列的个数。再遍历所有 i,累加所有 len[i] == maxLen 的 cnt[i],即为答案。

2026-04-05 20:08:15 375

原创 [Java 算法 ] 链表

【代码】[Java 算法 ] 链表。

2026-04-05 20:04:03 201

原创 [Java 算法] 动态规划(3)

的最大值,就是全局最大子数组和。环形数组的最大和只有。

2026-04-04 11:26:04 312

原创 [Java 算法] 归并排序

2.合并两个有序数组 : 双指针 cur1 = left,cur2 = mid+1。1.划分区间 : [left,mid] , [mid+1,right]3.拷贝回 nums 数组 , 范围 [left , right]

2026-04-01 22:59:13 377 6

原创 [Java算法] 递归(1)

当 -2147483648 去掉符号 2147483648 会超出 整型 2147483647;我们就按 2147483647 次处理 , 最后再单独处理一次即可。每次转移的圆盘应该是最上面的(A.size()-1)最小的哪个 , 而不是转移 0 下标的。再顺着递归一层层回溯相乘,最后外层统一用倒数规整负幂,全程避开数值越界。宏观角度看待 : 认为这个函数一定能完成排序工作。实际代码完全不会报错,直接大胆传。

2026-04-01 22:57:34 185 3

原创 [Java 算法] 快速排序和快速选择排序(※)

需要交换 left+1 和 i , 此时如果 i==++left , 是自己根自己交换;注意 : 由于 left+1 位置为已经排好序了的元素 , 所以能让 i++: 需要交换 right-1 和 i , 此时如果 i == --right,也是自己自己跟自己交换 , 交换完成退出循环(因为此时 i == right)[left+1,i-1] 为 1;[i,right-1] 为待排序元素;[right,len-1] 为 2。left : 用来标记 0 的最右端 , 包含 left。

2026-03-31 21:53:22 261 2

原创 [Java 算法] 哈希表(1)

【代码】[Java 算法] 哈希表(1)

2026-03-31 21:50:45 55 1

原创 [Mybatis] MyBatis 保姆级入门全套笔记

* 查询尽量不要用 select ***,写字段,效率更高。多表查询用 LEFT JOIN / INNER JOIN,不要用子查询。参数传递一律用 #{ }。排序、表名、列名用 ${ }。模糊查询用 concat ('%', #{key}, '%')。开启驼峰命名自动映射,不用写 resultMap单表:基础 CRUD多表:LEFT JOIN 轻松搞定动态排序:${sort}模糊查询:concat 安全写法参数安全:#{ } 防注入。

2026-03-30 22:54:27 1153 3

原创 [Mybatis] MyBatis 快速入门教程(2)

也可以通过@Param , 设置参数别名 , 如果使用别名 , 那么 #{ } 中的属性名必须和@Param 设置的一样。如果想要服用结果集 , 需要使用 id 属性给结果集起别名 , 在使用@ResultMap 注解来复用结果集。可以根据 IDEA 自动生成 XML 的 SQL 的格式 , 只需要填写注解类似的 SQL 语句。注意 : 如果遇到代码中无 高亮显示 , 可能是 IDEA 索引缓存损坏 , 请重启 IDEA。上述代码已经编写了很多查询相关的代码,并演示问题 , 此处不再演示。

2026-03-30 19:23:09 436 2

原创 [MyBatis] MyBatis 快速入门(1)

表示 Mybatis 中的 Mapper 接口;程序运行时 , 框架会自动生成接口的实现类对象 , 交给 Spring 进行 IOC 管理。JDBC 操作数据库太麻烦 : 手动获取连接 , 关闭连接;持久层 : 持久化操作层 , 通常是指数据访问层(dao) , 是用来操作数据库的。规范 : Mabatis 持久层接口规范一般命名为 xxxMapper。注意 : 如果报错 , 请检查 password 和数据库连接。Mybatis : 持久层框架 , 用于简化 JDBC 开发。

2026-03-28 19:27:42 264 6

原创 [Java EE 进阶] Spring Boot 日志全面解析 : 配置与实战

获取日志对象 : 通过LoggerFactory.getLogger(类名.class)获取 , 归属于(org.slf4j 包)输出日志内容 : 通过日志对象的 info()等方法打印日志//获取日志对象//输出日志logger.info("-------- -------- 自定义日志 -------- --------");return "打印日志";

2026-03-28 19:18:51 1108 5

原创 [Java 算法] 动态规划2

返回值问题 : 由于多加一行一列 , dp 数组中的 [i,j] 映射到原路径中应该是 [i-1,j-1];所以最终返回的位置是原路径中的 [m-1,n-1] , 对应到 dp 数组中就是 dp[m][n]由于到达 [i,j] 位置 可以从 [i-1,j] ,或者从 [i,j-1] 走一步到达;所以dp[i][j] = dp[i-1][j]+dp[i][j-1]无障碍物时 : dp[i][j] = dp[i-1][j]+dp[i][j-1]dp[i][j] : 到达 [i,j] 位置的最小下降路径。

2026-03-25 20:26:58 655 3

原创 [Java 算法] 动态规划(1)

状态转移方程 : dp[i] = min(dp[i-1]+cost[i-1],dp[i-2]+cost[i-2])状态表示 : dp[i] = 到达第 i 级台阶所需要的最小花费。

2026-03-25 12:13:51 76 3

原创 [Java 算法] 贪心(1)

③ 用 StringBuffer 来拼接 : 由于 String 类型为不可变类型 , 每次拼接都需要创建新的对象 , 浪费内存空间。找 15 元时 , 优先用 10 块钱找零 , 5 块钱可以留着给 10 块找零。通过大根堆找到最大的元素 , 减半再放入大根堆 , 同时修改数组和 , 循环往复 , 便可找到最小的操作次数。④ 判断特殊情况 : ['0','0'] : 拼接为 "00";直接返回 "0" , 而非 "00"① 整型转字符串 : strs[i] = nums[i]+"";

2026-03-25 12:12:01 368 2

原创 [Java EE 进阶] SpringBoot 配置文件全解析 : properties 与 yml 的使用与实战 (ULTRA)

概述 | HutoolHutool 是一个 Java 工具包类库 , 对文件 , 流 , 加密解密 , 转码 , 正则 , 线程 , XML 等 JDK 方法进行封装组成的 Util 工具类。

2026-03-22 18:53:13 795 30

原创 [Java EE 进阶] SpringBoot 配置文件全解析:properties 与 yml 的使用(1)

本文介绍了SpringBoot配置文件的两种主流格式:properties和yml。properties采用键值对形式,简单但冗余;yml采用树形结构,支持复杂数据类型,可读性更好。文章详细讲解了两种格式的语法规则、读取方式及实际应用场景,并通过对象、List、Map等复杂类型的配置案例进行对比分析。最后总结了两种格式的优缺点及适用场景,建议日常开发优先使用yml格式,特殊场景考虑properties格式。

2026-03-22 13:56:03 447 5

原创 [Java 算法] 模拟

其余行 : 两个元素为一组 , 每个周期加上一个公差 , 例如 第 i 行 , 周期为 0 , 两个元素的下标表示为 : (i , d-i);(其中 d 为公差)② String 类型为不可变类型 , 使用时需要配合 StringBuilder 和 char[] 类型来使用。第 0 行和最后一行 : 在行数的基础上每个周期 , 加上一个公差(d = 2n-2)① 周期次数放在 if-else 判断外 , 以免产生死循环。

2026-03-18 16:12:54 421 11

原创 [Java 算法] 位运算(1)

<(左移) , >>(右移) , ~ (按位取反)& (按位与) : 有 0 为 0| (按位或) : 有 1 为 1^(按位异或) : 相同为 0 , 相异为 1;或者使用无进位相加。

2026-03-18 16:10:45 344 4

原创 [Java 算法] 前缀和(2)

使用以上示例 出现这种情况 , 先执行 hash.put(sum, hash.getOrDefault(sum, 0) + 1), 将 hash[sum] = 1;sum 累加 nums[j] : 动态计算 nums[i] 到 nums[j] 的和 , 不重不漏。后缀积 : last[i] 表示 , 下标 i 右侧所有元素的乘积(不包含 nums[i])前缀积 : pre[i] 表示 , 下标 i 左侧所有元素的乘积(不包含 nums[i])练习三 : 和可被 k 整除的子数组。

2026-03-15 23:56:25 416 11

原创 [Java EE 进阶] 一文吃透 Spring IoC&DI:核心概念 + 实战用法 + 面试考点

本文深入解析了Spring框架的核心机制IoC(控制反转)和DI(依赖注入)。通过汽车制造案例,对比传统高耦合开发与Spring解耦方案,阐释IoC将对象创建权交给容器、DI实现依赖注入的核心思想。详细介绍了Bean存储的五种类注解(@Controller/@Service等)和@Bean方法注解,以及三种依赖注入方式(属性/构造方法/Setter注入)。针对多Bean注入问题,提出@Primary、@Qualifier和@Resource三种解决方案。最后总结IoC与DI的关系,指出这是理解Spring框

2026-03-15 16:01:49 1497 16

原创 [Java 算法] 前缀和(1)

要计算到 (i,j) 位置的所有元素和,需要把「左边一行的和」+「上边一列的和」,但左上角 (i−1,j−1) 被重复加了两次,所以要减一次,最后加上当前元素 arr[i][j]构建前缀和数组:prefix[j] = arr[1]+arr[2]+...+arr[j]后缀和:last[i] = nums[i] + ... + nums[len-1]前缀和:pre[i] = nums[0] + ... + nums[i-1]中心下标判断 : pre[i]== last[i+1]

2026-03-15 01:36:57 184 2

原创 [Java EE 进阶] ​​Spring Boot 三层架构 + 数据访问层

这是典型的。

2026-03-14 18:59:49 142 2

原创 [Java EE 进阶] 一文吃透 Spring IoC&DI:核心概念 + 实战用法 + 面试考点(1)

以 “造一辆车” 为例,传统开发中对象的创建和依赖关系由自身控制:汽⻋依赖⻋⾝,⻋⾝依赖底盘,底盘依赖轮;所有的对象都通过 new 手动创建;当底层组件(如轮胎尺寸) 发生变化时 , 整个调用链上的所有代码都需要修改 , 程序耦合度高 , 可维护性差car.run();int size;

2026-03-12 23:44:59 416 8

原创 [Java 算法] 二分查找进阶

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)if(len == 0||nums[len-1]<target||nums[0]>target){//把数组为空必免指针越界的优先级排到最高return ret;//找左端点//找左端点时,如果存在则最后mid会落在left处,经过处理会让两个指针重合,退出循环,返回结果}else{//判断双指针重合处是否是端点= target){return ret;//找右端点left = 0;

2026-03-11 21:20:25 379

原创 [Java 算法] 二分查找

34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode)if(len == 0||nums[len-1]<target||nums[0]>target){//把数组为空必免指针越界的优先级排到最高return ret;//找左端点//找左端点时,如果存在则最后mid会落在left处,经过处理会让两个指针重合,退出循环,返回结果}else{//判断双指针重合处是否是端点= target){return ret;//找右端点left = 0;

2026-03-10 23:17:54 758 7

原创 [Java 算法] 滑动窗口 2

让 in 进入窗口 , 通过getOrDefault(in,0)+1 , 完成修改 in 对应 value 的操作 : 如果 map 中包含 in , 则使 value+1;如果 map 的长度大于 2 , 让 out 出窗口 , 则让 left 指针右移 , 并处理 out 的 value。更新最长窗口长度 : 当前窗口的和 == target。扩展右指针 : 遍历数组 , 逐个加入当前窗口。收缩右指针 : 当前窗口的和>target。算法原理 : 哈希表+滑动窗口。左右指针 = 0 ,

2026-03-09 22:42:48 75 5

原创 [Java EE 进阶]Spring Web MVC 入门 (从零搭建 Spring Boot 图书管理系统)

本文介绍了一个基于Spring Boot的图书管理系统实现方案。系统包含用户登录验证和图书管理两大功能模块,采用Maven构建,使用Lombok简化代码开发。关键技术点包括:1) 通过配置Maven插件解决Lombok注解处理问题;2) 实现RESTful接口进行用户验证(/user/login)和图书列表查询(/book/getList);3) 前端使用Bootstrap框架,通过AJAX与后端交互。系统提供完整的图书增删改查功能界面,包括登录页、图书列表页和编辑页。测试数据显示,系统能正确处理用户登录验

2026-03-04 16:05:05 258

原创 [Java 算法] 滑动窗口 1

不重复 : 让右指针元素加入 , 更新长度 , 右指针右移 , 再判断(重复或不重复)大于 : 更新结果 , 出窗口 (让左指针元素出窗口)->接着判断。重复 : 让左指右移动 , 再判断(重复或不重复)扩展右指针 : 遍历数组 , 逐个先后移动。收缩做指针 : 窗口内 0 的数量>k 时。1.进窗口 : 让右指针元素进窗口。2.判断 sum 是否>=t。方法一 : 用数组模拟哈希表。小于 : 让右指针进窗口。判断右指针元素是否重复?方法二 : 使用哈希表。

2026-02-26 15:34:49 240

原创 [Java EE 进阶] Spring Web MVC 入门 (2)

lombook 是一个注解 ,用来简化大量模板化代码(如 getter/setter/构造方法) , 而 @Data 是一个组合注释 , 相当于加了以下注释。后端服务 : ① 提交留言 : 用户输入留言信息后 , 后端需要把留言信息保存起来;② 展示留言 : 页面展示时 , 需要从后端获取到所有的留言信息。加法计算器功能 , 对两个整数进⾏相加 , 需要客⼾端提供参与计算的两个数 , 服务端返回这两个整数计算的结果。限制 HTTP 请求方式(GET,POST,PUT,DELETE)

2026-02-26 10:06:51 869

原创 [Java EE 进阶]Spring Web MVC 入门 (请求)

访问不同的路径 , 就是发送不同的请求 , 在发送请求时 , 可能会带一些参数 , 所以学习 Spring 的请求 , 主要是学习如何传递参数到后端以及后端如何接收。("/User2")注册路由路径 , 可以修饰类和方法 , 访问路径为类路径+方法路径 , 支持 GET , POST 多种请求方式;: 但有多个参数时 , 前后端进行参数匹配时 , 是以参数的名称进行匹配的 , 因此参数的位置是不影响后端获取参数的结果。可以上传任意格式的文本 , 可以上传 text,json,xml,html 等。

2026-02-11 23:42:57 1165 5

原创 [Java EE 进阶] Cookie和Session

Cookie是客户端浏览器的轻量级文本数据,由服务器通过Set-CookieHTTP响应头下发给客户端,客户端会将其保存,后续向同一服务器发送请求时,会自动通过CookieHTTP请求头携带该数据,实现客户端侧的会话标识。存储位置:客户端浏览器(内存/本地文件,依Cookie属性而定);核心作用:存储会话令牌(SessionId)、少量非敏感的用户信息;特性:可被客户端修改/伪造,因此后端使用Cookie时必须做校验。Session是服务器端为每个客户端创建的专属会话对象,本质是一个。

2026-02-11 12:46:40 833 1

原创 简单介绍 JSON

使用 objectmapper.writeVakueAsString(Java 对象) -> 生成 JSON 字符串。objectmapper.readValue(Json 字符串 , 目标类.class)如果需要转换集合 , 需要用 TypeReference 指定泛型类型。无参构造器和所有属性的 get/set 方法。Jackson(Spring 框架内置)

2026-02-08 23:31:20 590 2

原创 Spring生态

Spring 生态是一套分层 , 解耦且高度协同的技术体系所有产品围绕 Spring Framework(Spring 核心框架)构建 , 核心框架是整个生态的基础与核心依赖 , 其他产品(Spring Boot , Spring Cloud 等)都是在其基础上的封装 , 扩展或领域化增强 , 最终形成"核心奠基 , 上层赋能 , 领域聚焦"的完整技术栈 , 支撑从单体应用到分布式微服务的全场景开发。

2026-02-08 22:08:46 792 2

原创 [Java EE 进阶] SpringBoot 快速入门

此处使用专业版 IDEA② 项目代码http://127.0.0.1:8080/hello或者使用 postmanhttp://127.0.0.1:8080/hello浏览器输入 URL 之后 , 发起请求 , 就和服务器之间建立了连接

2026-02-04 22:18:48 257 1

原创 [Java 数据结构] 图(1)

连通图的极小连通子图 , 包含原图 所有 n 个顶点 , 有且仅有 n-1 条边(无回路)

2025-12-30 21:28:14 1129 2

原创 [Java EE] 网络原理(3) https

HTTPS是HTTP的安全增强版本,通过SSL/TLS加密层实现数据传输的机密性、完整性和身份验证。与HTTP明文传输不同,HTTPS采用加密传输,默认使用443端口,并需要CA机构颁发的数字证书。HTTPS结合对称加密(高效)和非对称加密(安全)机制,通过数字证书防止中间人攻击。证书包含服务器公钥、域名和CA签名,客户端通过校验证书有效性和完整性确保通信安全。密钥协商后,后续数据传输使用对称加密,兼顾安全性与效率。

2025-12-24 20:11:14 768 5

原创 [Java EE] 网络原理(2) http

HTTP协议是应用层协议,基于TCP/IP工作,用于客户端和服务器间传输超文本数据。HTTP报文由请求/响应行、报头和正文组成,通过空行分隔。请求方法包括GET(获取资源)和POST(提交数据),GET参数通过URL传递,POST通过请求体传递。响应包含状态码和响应数据。URL编码确保特殊字符正确传输。使用工具如Fiddler可分析HTTP流量,Postman可构造请求。HTTP具有无状态、明文传输等特点,是互联网核心协议之一。

2025-12-21 22:58:37 1667 13

原创 [Java EE] 网络编程套接字

网络编程指的是 网络上的主机 , 通过不同的进程 , 以编程的方式实现网络通信。

2025-12-09 23:20:30 1504 8

图书管理系统 , 前端样式代码

前端样式 css,js,html

2026-03-04

前端样式 add.css

前端样式 add.css

2026-03-04

Java异常分类思维导图

Java异常分类思维导图

2025-08-05

马克思主义基本原理@神游杆菌小卖部.pdf

马克思主义基本原理@神游杆菌小卖部.pdf

2025-05-07

空空如也

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

TA关注的人

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