- 博客(18)
- 收藏
- 关注
原创 ThreadLocal在开发中的一种应用
在处理请求的过程中,许多业务逻辑都需要获取当前登录用户的信息。例如,如下图,我们在开发 添加业务 时,在后台数据库需要填写字段:create_user和update_user,这时就需要当前登录用户的信息。其内部实现通常依赖于一个ThreadLocalMap,该Map的键(key)是ThreadLocal对象本身,值(value)则是为当前线程存储的变量副本。但是问题在于:JWT的解析及校验我们写在了拦截器中,问题在于拦截器类中的参数很难传递到service类中。要动态获取当前登录者的ID,可以从。
2025-07-28 10:19:06
277
原创 依赖注入 (Dependency Injection, DI) 详解
依赖注入 (Dependency Injection, DI) 是一种核心的软件设计模式,也是实现控制反转 (IoC) 最主要的方式。它的目的是将一个对象所依赖的其他对象的创建和绑定过程,从对象本身转移到外部的第三方(即 Spring IoC 容器)来完成,从而达到的目的。
2025-07-22 16:03:47
455
原创 Spring 容器
总结来说,Spring 容器的核心职责是实现 IoC,它接管了对象的控制权,使得开发者可以从繁琐的对象创建和依赖管理中解放出来,专注于业务逻辑的开发。是 Spring 框架最核心的部分。它是一个在应用程序启动时被实例化的对象,主要负责。应用程序中的所有对象(这些对象在 Spring 中被称为 Bean)。
2025-07-22 15:41:04
289
原创 AOP思想(面向切面编程)
然后,我们通过声明的方式,告诉框架在「何时」(例如方法执行前/后)、「何地」(例如哪些类别的哪些方法)将「切面」中的代码动态地织入 (Weave) 到我们的业务逻辑中。AOP 是一种编程思想或典范,它的目标是将那些散布在应用程序中多个模块里的横切关注点 (Cross-cutting Concerns) 进行分离和模块化。这样一来,我们的业务方法就只需要专注于核心业务本身,变得非常干净。:业务方法中混杂了大量非业务功能的代码,难以阅读和维护。:如果要修改日志记录的方式,需要去修改所有相关的方法。
2025-07-22 15:20:41
385
原创 preHandle(request, response, handler) 方法中的handler 参数
当一个请求的 URL 指向的是一个静态资源时(例如 http://example.com/images/logo.png 或 http://example.com/index.html),Spring MVC 会使用 ResourceHttpRequestHandler 来处理这个请求,它负责读取并返回静态档案。HandlerMethod 对象内包含了这个 Controller 方法的详细信息(例如方法名、所属的类别、方法上的注解等)。我们称这种请求为对「动态方法」的请求。上述代码例中,出现了。
2025-07-22 10:54:34
368
原创 后端开发---全局异常处理器
在后端开发中,通常会设法统一处理异常,这时通常会定义一个这是一个使用 @RestControllerAdvice 或 @ControllerAdvice 注解的特殊类。这里的exceptionHandler方法的写法如此简单,完全归功于Java的多态机制。我们来看本项目的继承结构:BaseException是其他所有类的父类,而它自己继承于RuntimeException类。
2025-07-22 10:25:17
200
原创 JWT令牌
JWT全称,是一个开放标准 (RFC 7519),它定义了一种紧凑且自包含的方式,用于在各方之间安全地传输信息(以JSON对象的形式)。由于信息是经由数字签名的,因此可以被信任和验证。
2025-07-22 09:39:08
719
原创 初识Git
Git 是一个分布式版本控制系统(Distributed Version Control System, DVCS)。可以把 master 分支理解为项目的主干或正式版本。master 分支上存放的应该是随时可以部署到生产环境 (Production-Ready) 的代码。这意味着这个分支上的每一个提交 (Commit) 都应该是完整的、经过测试的、相对稳定的版本。历史的“官方”记录: 它代表了项目从诞生到现在的演进主线。
2025-07-19 12:10:25
556
原创 Leetcode刷题--贪心-- 盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。示例 2:输入:height = [1,1]输出:
2024-03-14 10:07:36
494
1
原创 Leetcode刷题--贪心--买卖股票的最佳时机 II
给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。返回 你能获得的 最大 利润 。示例 1:输入:prices = [7,1,5,3,6,4]输出:7解释:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5 - 1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入
2024-03-11 21:26:44
410
原创 Leetcode刷题--贪心--去除重复字母
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbacdcbc”输出:“acdb”思路1: 局部最优 ——> 全局最优 就是先找a,再找b …等等,先确定单个最小字母的位置,再依次确定较大字母的位置。但是该思路走不通思路2: 例如:s = “cbacdcbc” ,先找出所有的’c’,确定要保留哪个位置的’c’。但是无法确
2024-03-08 10:03:38
628
1
原创 Leetcode刷题--贪心--数组拆分
给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。示例 1:输入:nums = [1,4,3,2]输出:4解释:所有可能的分法(忽略元素顺序)为:示例 2:输入:nums = [6,2,6,5,1,2]输出:9解释:最优的分法为 (2, 1), (2, 5), (6, 6). min(2, 1) + min(2, 5) + m
2024-03-06 15:44:31
561
1
原创 Leetcode刷题--贪心算法
假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。示例 1:输入: g = [1,2,3], s = [1,1]输出: 1解释:你有三个孩子和两块小饼干,3个孩子的胃口值分别是:1,2,3。虽
2024-03-06 15:26:21
511
1
原创 蓝桥杯-算法训练
算法训练区间k大数查询区间k大数查询例题:资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式总共输出m行,每行一个数,表示询问的答案。样例输入51 2
2021-01-22 21:35:13
479
原创 蓝桥杯-基础练习
蓝桥杯-基础练习数列排序数列排序数列排序:例题:资源限制时间限制:1.0s 内存限制:512.0MB问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200输入格式 第一行为一个整数n。 第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。输出格式 输出一行,按从小到大的顺序输出排序后的数列。样例输入58 3 6 4 9样例输出3 4 6 8 9解析:对数据收集,排序并输出即可代码如下:import j
2021-01-20 20:52:29
187
原创 蓝桥杯入门训练
文章目录蓝桥杯入门训练Fibonacci数列:问题描述Fibonacci数列的递推公式为:Fn=Fn-1+Fn-2,其中F1=F2=1。当n比较大时,Fn也非常大,现在我们想知道,Fn除以10007的余数是多少。输入格式输入包含一个整数n。输出格式输出一行,包含一个整数,表示Fn除以10007的余数。说明:在本题中,答案是要求Fn除以10007的余数,因此我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数再取余简
2021-01-16 23:19:06
223
原创 蓝桥杯真题java b组
蓝桥杯真题java b组例题##分巧克力我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑 Mark
2021-01-13 18:00:41
363
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅