- 博客(48)
- 收藏
- 关注
原创 Spring AOP 中记录日志
在需要记录日志的方法上标注自定义注解@Log通过 AOP 和,在通知中进行统一的日志记录,便于跟踪和排查 HTTP 请求相关的信息。@Around通知允许在方法执行前后和异常情况下插入日志逻辑,适用于统一的日志记录场景。
2025-02-24 17:15:19
300
原创 Spring AOP 中记录日志
在需要记录日志的方法上标注自定义注解@Log通过 AOP 和,在通知中进行统一的日志记录,便于跟踪和排查 HTTP 请求相关的信息。@Around通知允许在方法执行前后和异常情况下插入日志逻辑,适用于统一的日志记录场景。
2024-12-24 23:59:09
784
原创 单例Bean
单例 Bean 默认是线程不安全的,具体是否安全取决于业务逻辑。如果 Bean 是无状态的,则是线程安全的。如果有状态且有可变共享变量,需采取措施保证线程安全,例如同步、或将其作用域改为非单例。
2024-12-24 20:42:11
1052
原创 联合索引的使用
查询优化:联合索引能同时优化多列查询,性能优于多个单列索引。最左前缀原则:联合索引只能在按照定义顺序访问字段时生效。合理设计优先将高频查询和选择性高的字段放在索引的前列。避免不必要的冗余索引。覆盖索引:尽量设计联合索引覆盖查询所需的字段,避免回表操作。
2024-12-19 19:37:17
2357
原创 不可重入锁与死锁
特别是在同一线程尝试多次获取同一把锁时。如果锁是不可重入的,那么线程在第二次尝试获取锁时会永远阻塞,从而导致死锁。不可重入锁确实会导致死锁,尤其是在递归调用或嵌套调用时。如果代码中存在这种场景,建议使用可重入锁(例如。不可重入锁不允许同一个线程多次获取同一把锁。因此,在递归调用或嵌套调用时,线程可以多次安全地获取锁,不会导致死锁。允许同一个线程多次获取同一把锁,而不会被阻塞。
2024-12-18 22:52:27
686
原创 NPE的一些理解
是 Java 中的一种运行时异常,表示程序试图对一个null对象执行某种操作时发生的错误。例如,访问一个为null的对象的方法或属性。NPE 是 Java 开发中非常常见的异常,但通过良好的编程习惯和工具的辅助,可以有效避免它的发生。关键是要对程序中可能为null的对象保持敏感,并进行适当的处理。
2024-12-18 22:51:26
1263
原创 关于java中Activity7中的变量问题
也就是说我只要启动了流程实例就会将设置的variable存储在ACT_HI_VARINST和ACT_RU_VARIABLE中,然后流程结束只会删除ACT_RU_VARIABLE中的数据、是的,你的理解是完全正确的!
2024-12-13 10:57:54
898
原创 redis短期存储的目的
这里我的疑问是为什么要使用redis来存储呢,就5s的过期时间,他存储的意义是什么呢?不是浪费内存空间吗?方法通过 Redis 来生成唯一的(签到码)。你可能在思考,为什么需要用 Redis 来生成和存储,尤其是这个代码只是在业务代码中设置了,而且看起来它的生命周期很短(只需 5 秒)。这行代码是将code作为键存储到redis中,值由0自增为1,并返回1。
2024-12-11 15:57:02
1161
3
原创 java枚举的基本用法
/ 定义一个枚举类型表示星期几// 使用枚举// 根据枚举值执行不同的操作");break;");break;default:定义枚举:枚举类型通过enum关键字定义,代表一组常量。枚举字段:枚举可以包含字段、构造函数和方法,可以用来为每个枚举常量定义额外的属性。values():返回所有枚举常量的数组。:通过字符串获取枚举常量。ordinal():返回枚举常量的顺序(从0开始)。枚举类使代码更加简洁且类型安全,能够替代常规的int或String。
2024-12-08 20:11:37
2951
原创 IDEA中MAVEN的一些设置问题
虽然可以定义本地仓库位置,但 IDE 提供了单独设置本地仓库路径的选项,这样用户可以快速调整仓库路径,而无需修改文件。IDE 设置(Local Repository,勾选 Override) >中的> 默认路径。
2024-12-03 15:58:48
1883
原创 由于导包而引发的错误
今天在调试时发现删除功能无论如何都无法实现,于是调试找到了mapper层的错误但不知道为什么报错。以下是报错信息。参数为什么会识别成呢?后面发现是导包的问题,我一开始导的包是。
2024-11-29 20:29:48
494
原创 RabbitMQ 消息确认机制
Spring AMQP提供了和两种确认机制。开启确认机制后,当发送者发送消息给MQ后,MQ会返回确认结果给发送者。消息投递到了MQ,但路由失败。此时会通过PublisherReturn返回路由异常原因,然后返回ACK,告知投递成功。临时消息投递到了MQ,并且入队成功,返回ACK,告知投递成功。持久消息投递到了MQ,并且入队完成持久化,返回ACK,告知投递成功。其它情况都会返回NACK,告知投递失败。通过以上机制,消息的可靠性得到进一步保证。
2024-11-28 11:45:57
2130
原创 @PostConstruct 在 Java 中的使用概述
是一种很方便的方式,用来在 Spring Bean 初始化完成后执行自定义逻辑,常用于加载配置、初始化资源或校验数据。执行次数:在默认的单例作用域中,方法只会执行一次。而如果 Bean 是其他作用域,比如原型作用域,每次实例化时都会执行。
2024-11-28 10:45:14
587
原创 spring.factories文件的作用
只要common模块被依赖,并且配置了相关的自动配置类,你的其他模块无需扫描common包,也能注入这些配置类定义的 Bean。
2024-11-28 09:35:28
826
原创 springcloud中的线程问题
的值是由common模块的拦截器设置的。购物车模块无需重复写拦截器,只需确保common模块的拦截器在 Spring 容器中注册并生效。模块之间的线程隔离性依然存在,但用户信息是通过请求头在网关和微服务之间传递的,每个模块都有自己的,不会相互干扰。也就是说就算拦截器在其他模块,只要被spring容器管理了,购物车模块就可以使用吗?**是的,完全正确!**只要拦截器被Spring 容器管理,那么任何引入该模块(common模块)并运行在同一个 Spring Boot 应用中的模块。
2024-11-25 02:06:21
1666
1
原创 @EnableConfigurationProperties && @ConfigurationProperties
今天在写properties时想到了这个问题,为什么有时候我需要写。注解,也就是没有注册为 Spring 容器中的 bean。注解,也就是已经被spring管理了,所以不需要额外添加。但是如果为了更加稳妥可以把这两个注解全部都加上。都可以使其被spring容器管理。然后在下面方法中通过参数自动注入。,只是简单的注入就可以使用。标注,则无需额外使用。
2024-11-24 23:07:31
586
原创 BigDecimal为什么比int要好
在Java中,金钱通常使用BigDecimal而不是double或floatdoublefloat0.1doubleBigDecimalBigDecimalBigDecimaldoublefloatBigDecimal。
2024-11-14 21:29:26
896
原创 MapUtil
这是一段hutool工具包中的map构建,我感慨是不理解这样写的意义在哪里,直接构建HasnMap不是更快吗?方式的意义在于代码的可读性、易用性和简洁性,尤其是在需要链式调用构建复杂的Map对象时。虽然在性能上可能会稍微快一些(因为少了链式调用的开销),但在实际应用中差距不大,而。带来的代码组织和可读性提升可能会更值得追求。适合在需要构建小的、链式调用的Map场景中使用。
2024-11-13 14:21:43
684
原创 SpringBoot中的两种字段自动填充方式
这个拦截器的作用是自动填充createdAt和updatedAt字段,以便在执行INSERT和UPDATE操作时自动记录创建和更新时间。主要拦截Executor的update方法,通过判断SQL类型来确定是INSERT还是UPDATE操作,从而设置相应字段。使用了MyBatis的MetaObject工具类来动态操作参数对象的字段值。通过这个拦截器,开发者不需要在业务代码中手动设置createdAt和updatedAt,大大减少了重复代码,也保证了这些公共字段的一致性和正确性。
2024-11-10 21:20:59
1872
原创 SpringBoot序列化与反序列化
如果不加规范的话在json序列化或者反序列化时时间格式会出问题。这个格式是后端将数据序列化传给前端时格式的错误。方法加入MvcConfig中。这个方法也是直接写到MvcConfig中。本项目选择了第一种。
2024-11-10 20:59:38
299
原创 springboot图书管理系统(一个简单的单体架构项目,适合小白)
为了水一水期末作业,打算写一个简易的单体架构图书管理系统。以下为后端主要技术栈(后期可能更新,打算一个星期左右写完吧)。
2024-11-07 21:19:12
704
原创 算法笔记:Day-11(了解了一些API)
可以用字符串表示,遵循实部给你两个字符串表示的复数num1和num2,请你遵循复数表示形式,返回表示它们乘积的字符串。这道题不难主要学一些方法\\+|i"1+1i"["1", "1"]
2024-11-07 21:09:13
463
原创 算法笔记:Day-10
在二维平面上,有一个机器人从原点(0, 0)开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0)。移动顺序由字符串moves表示。字符move[i]表示其第i次移动。机器人的有效动作有R(右),L(左),U(上)和D(下)。如果机器人在完成所有动作后返回原点,则返回true。否则,返回false。**注意:**机器人“面朝”的方向无关紧要。“R”将始终使机器人向右移动一次,“L”将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。这道题比较简单,利用哈希表记数就好了。
2024-11-05 23:32:21
632
原创 算法笔记:Day-09(初始动态规划)
(通常用F(n)表示)形成的序列称为。该数列由0和1开始,后面的每一项数字都是前面两项数字的和。给定n,请计算F(n)。
2024-11-04 23:54:37
1003
原创 算法笔记-Day09(字符篇)
这一行代码对于这类单词提还挺好用的。如果为true的话说明遇到了一个单词,然后存到temp里,temp在将单词存完之后要清0.这个代码不难,主要是掌握一些 API。
2024-11-04 22:50:31
569
原创 背包问题的详细理解(无基础->详细掌握)
0/1 背包问题:每个物品只能选一次,使用二维数组保存状态。完全背包问题:每个物品可以选多次,优化空间复杂度到一维数组。多重背包问题:每个物品的数量有限,加入多重循环。分数背包问题:物品可以部分选择,使用贪心算法。背包问题的其他应用:子集和问题、找零问题、分割等和子集、工作选择问题等都可以通过背包问题的思路来解决。每种问题都有各自的特点和适用场景,根据具体需求可以选择合适的算法。每个示例中都有代码和可视化部分帮助你理解动态规划表格的变化过程。希望这能帮助你理解不同类型的背包问题。
2024-11-03 22:03:58
1626
原创 动态规划的三种类型
方法实现方式时间复杂度 ⏱️空间复杂度 💾适用场景自顶向下递归 + 备忘录O(n)O(n)递归易于理解的问题自底向上迭代 + 数组O(n)O(1)递归深度过大时适用自底向上优化迭代 + 常量存储O(n)O(1)需要优化空间时适用备忘录缓存递归中间结果O(m * n)O(m * n)多维问题,减少重复计算每种方法都有自己的优缺点。自顶向下的方法适合递归容易表达的问题,而自底向上适合需要避免深递归的问题。根据具体情况选择合适的方法,能够让问题的解决更加高效📈。
2024-11-01 20:01:29
2237
1
原创 迷茫内耗的一天
今天看了看动态规划,不知不觉看了三四个小时,英语也没背,项目也已经停止了一个星期就看了几个小时的xml文件(不停ctrl+B),好累,感觉要学的好多。这难道是必经之路吗?一个星期算法已经刷了40+道题吧,算是对java中一些API有了些许认识。今天也没啥内容就发一篇自己的日记吧。希望明天可以看开一点吧。(本人大三上,java已经学了8个月了)。
2024-10-31 23:37:26
3938
23
原创 初识动态规划(由浅入深)
动态规划是一种把问题分成更小的子问题🔍,并用这些子问题的答案来解决整个问题的方法。动态规划最常用于具有重叠子问题♻️和最优子结构⭐的问题。重叠子问题♻️:一个大问题可以被分成多个小问题🧩,而且这些小问题会被多次求解。最优子结构⭐:问题的最优解可以通过其子问题的最优解来构造🛠️。通过记住每个子问题的答案📝,动态规划可以避免重复计算,显著提高效率⏱️。在应用动态规划时,我们通常会使用一个状态数组📊来表示每个小问题的解,然后使用状态转移方程来描述如何从这些子问题得到最终答案🏁。
2024-10-30 21:43:17
1501
4
原创 算法笔记:Day-08(字符篇)
给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。示例 1:输入:s = “Hello World”输出:5解释:最后一个单词是“World”,长度为 5。示例 2:输入:s = " fly me to the moon "输出:4解释:最后一个单词是“moon”,长度为 4。
2024-10-30 21:32:39
401
原创 <collection> 和 <association>的详细用法(附详细代码解析)
标签用于一对一映射,将Address映射到User对象的address属性中。标签用于一对多映射,将Order列表映射到User对象的orders属性中。这两个标签在 MyBatis 的复杂查询和结果集映射中非常有用,能有效地将关系型数据库的数据转换为 Java 对象,从而简化开发工作。
2024-10-27 20:14:51
1788
1
原创 算法笔记:Day-05(am)
这真的想不到,有点像脑经急转弯了都。😮💨,以下是数学依据。多完美的解法(),空间复杂度为O(1),但是超时了,白高兴一场。参考官方的枚举法,只寻找舰队的左上角顶点,有一个顶点则。类似深度优先搜索吧,但这种解法会对原数组进行修改。(这道题也很好,空间复杂度为。,如果不是顶点的话会执行。
2024-10-27 16:29:47
409
原创 算法笔记:Day-04(二维前缀和)
这道题真的很好,板子题😁。代码第一个方法是构造方法,构造出以左上角为a[0][0],右下角为a[i][j]的矩阵的和所构成的矩阵。然后第二个方法就可以计算任意子矩阵和了。
2024-10-26 22:26:21
560
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅