自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

沉梦听雨的博客

时间是最好的浸渍剂,而沉淀是最好的提纯器✈️

  • 博客(151)
  • 收藏
  • 关注

原创 异步注解 @Async + 自定义线程池

在 Spring 框架中,@Async注解可以用于异步执行方法。当你使用@Async注解时,如果不自定义线程池,Spring 会为你自动创建一个默认的线程池。这个默认线程池是由管理的,它为每个任务创建一个新的线程。无限制的线程创建会为每个任务创建一个新的线程,而没有最大线程数的限制。如果异步任务的数量非常多,这可能导致大量的线程被创建,消耗大量的系统资源,最终可能导致或降低系统性能。线程管理:由于每次调用都会创建新线程,没有线程复用,这可能会导致线程管理上的开销,尤其是在高并发场景下。调试和监控困难。

2025-03-21 14:15:35 404

原创 SpringCache小记

:开启缓存功能,一般放在启动类上。:表示该方法支持缓存。当调用被注解的方法时,如果对应的键已经存在缓存,则不再执行方法体,而从缓存中直接返回。当方法返回 null 时,将不进行缓存操作。(一般用于查询方法上):表示执行该方法后,其值将作为最新结果更新到缓存中,每次都会执行该方法。(一般用于新增方法上):表示执行该方法后,将触发缓存清除操作。(一般用于更新或删除方法上):用于组合前三个注解,例如:常用注解属性/:缓存名称(必填),指定缓存的命名空间;:用于设置在命名空间中的缓存 key 值,默认使

2025-03-21 11:32:24 488

原创 元注解知识小结

官方解释:从 JDK5 开始,Java 增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解开发人员可以在不改变原有代码和逻辑的情况下在源代码中嵌入补充信息。

2025-03-20 09:43:44 476

原创 AOP 实战小记

Aspect用于定义一个切面,将横切逻辑封装在切面中。切面是包含切入点和通知的类。用于定义一个切入点,指定在哪些连接点上应用切面逻辑。可以在多个通知中重复使用同一个切入点。用于定义一个前置通知,在方法执行之前执行切面逻辑。在连接点之前执行。用于定义一个后置通知,在方法执行之后执行切面逻辑(无论方法是否抛出异常)。在连接点之后执行。用于定义一个返回后通知,在方法正常返回后执行切面逻辑。只在方法正常返回时执行,在方法抛出异常时不执行。用于定义一个异常通知,在方法抛出异常后执行切面逻辑。

2025-03-20 09:14:29 506

原创 聊聊 Spring IoC 和 AOP

循环依赖指的是多个 Bean 之间相互依赖,导致无法完成实例化。构造器循环依赖(Spring无法解决,会抛出异常)Setter/字段注入循环依赖(Spring可以解决,通过三级缓存)简单说就是自己依赖自己,或者和别的 Bean 相互依赖。只有单例的 Bean才存在循环依赖的情况,原型(Prototype)情况下,Spring 会直接抛出异常。原因很简单,AB 循环依赖,A 实例化的时候,发现依赖 B,创建 B 实例,创建 B 的时候发现需要 A,创建 A1 实例······无限套娃,直接把系统干垮。

2025-03-19 11:34:42 1342

原创 Spring基础小结

Spring Core 模块:提供了 Spring 框架的核心功能,包括 IoC(控制反转)和 AOP(面向切面编程)等,是整个 Spring 框架的基础。Spring Context 模块:建立在 Spring Core 模块之上,提供了一个框架式的上下文环境,用于管理 Bean 的生命周期和配置元数据等。提供了对 JDBC 的封装,简化了数据库访问的操作,包括了连接管理、事务管理、异常处理等。

2025-03-19 09:53:43 1454

原创 Redis 小记

Redis 小记。

2025-03-18 08:59:49 512

原创 【实战篇】SQL语句优化

将DATEDIFF改为使用CURDATE(),并将条件修改为,这样可以避免在每一行上执行函数。

2025-03-18 08:55:11 667

原创 【实战篇】exists语法解析

EXISTS是 SQL 中的一个子查询操作符,用于检查子查询是否返回任何行。EXISTSTRUEEXISTSFALSEEXISTS以下是EXISTS。

2025-03-17 09:07:48 1155

原创 【实战篇】一文教你如何删除重复记录

t_useruididuiduid以下是一个删除重复记录的示例 SQL 语句,它将为每个uid保留具有最小id值的记录在这个例子中,内部查询首先为每个uid分组内的记录分配了一个行号(row_num),根据id字段排序,其中最小的id值对应行号 1。然后,外层的IN子句用来选择那些行号大于 1 的记录,即重复的记录。最后,DELETE语句根据id删除这些记录。是 SQL 中的一个(window function)的语法。窗口函数用于在不失去分组的情况下,对分组内的数据进行计算。这里是OVERuiduid。

2025-03-17 09:06:40 348

原创 【实战篇】MySQL 时间字段的处理

NOW():返回当前的日期和时间。:返回当前日期,不包含时间部分。:返回当前时间,不包含日期部分。:返回当前时间的 Unix 时间戳。:将 Unix 时间戳转换为日期时间。

2025-03-14 11:36:05 304

原创 【实战篇】内置函数小记

在日常开发中,MySQL 内置函数在进行逻辑判断、条件筛选以及数据处理方面发挥了关键作用。

2025-03-14 11:01:43 1029

原创 【实战篇】执行计划解析

数据库优化器可能会根据连接方式、连接条件等因素选择不同的执行计划。你可以通过EXPLAIN关键字查看两个查询的执行计划,以便更好地理解优化器的选择。观察执行计划并查看其中的关键信息,这可以帮助你理解查询优化器是如何选择执行计划的,从而找到可能导致性能差异的原因。

2025-03-13 17:21:45 874

原创 【实战篇】JOIN 解析

这是 SQL 中一种早期的 JOIN 语法形式。在 FROM 子句中,通过在两个或多个表名之间使用逗号来表示 JOIN 操作。例如:这种语法形式实际上执行的是一个 Cartesian product(笛卡尔积)操作,即所有表中的行两两组合。然后,WHERE 子句用于筛选出满足特定条件的组合。显然,这种语法形式有以下几个问题:所以,笔者推荐使用明确的 JOIN 语句(如 、 等)来代替 ,因为它们更清晰、可读性和性能通常更好,并且允许在 ON 子句中指定连接条件,这还可能有利于查询优化。单独的 JOIN 语

2025-03-13 17:21:13 239

原创 【实战篇】Mysql 日常小记

1、第一条,可执行有个弊端,不灵活,需要写很多表进去2、触发器中使用动态 sql,不可用,会报错。

2025-03-12 09:16:19 849

原创 【实战篇】JSON字段处理

JSON 数据类型扩展了关系型数据库的功能,能够灵活存储和操作半结构化数据。熟练掌握常用函数(如提取、更新、删除)以及索引优化技巧,可以显著提高处理 JSON 数据的效率。

2025-03-12 09:12:29 834

原创 临时表简单入门

sql server 有和两个概念。

2025-01-22 19:58:12 344

原创 数据库优化

数据库的优化主要包括索引优化、查询优化和存储优化三个主要方面,这些优化措施旨在提升数据检索速度、降低查询响应时间、减少存储开销以及提高整体系统的性能。

2025-01-22 19:57:56 944

原创 【基础篇】什么是SQL注入,如何防止?

SQL 注入(SQL Injection)是一种常见的网络安全漏洞,它发生在 Web 应用程序中,当恶意用户在输入数据时,将恶意的 SQL 代码插入到输入中,从而导致应用程序执行非预期的 SQL 查询。攻击者通过 SQL 注入可以访问、修改或删除数据库中的数据,甚至完全控制数据库。SQL 注入的原因是:未经适当验证和处理的用户输入被直接拼接到 SQL 查询语句中,使得攻击者可以修改 SQL 查询的逻辑。

2025-01-21 20:16:30 774

原创 【基础篇】SQL语法基础小结

数据定义语言(Data Definition Language,DDL)是 语言集中负责数据结构定义与数据库对象定义的语言。DDL 的主要功能是定义数据库对象。DDL 的核心指令是CREATEALTERDROP。DDL的主要功能是定义数据库对象(如:数据库、数据表、视图、索引等)。

2025-01-21 20:16:00 1081

原创 MySQL索引详解

按照数据结构维度划分BTree 索引MySQL 默认和最常用的索引类型。非叶子节点存储键值和指针,叶子节点存储完整数据。哈希索引基于键值对,快速定位数据。不支持范围查询,主要用于内存存储引擎。RTree 索引支持geometry数据类型,适合空间查询和范围查找。实际中常用搜索引擎(如 ElasticSearch)替代。全文索引对文本内容分词以支持全文搜索,仅适用于CHARVARCHAR和TEXT。性能有限,通常由 ElasticSearch 替代。

2025-01-15 19:01:32 670

原创 Mybatis基础知识小结

ORM说白了就是建立数据库字段和Java对象(POJO)的一种映射关系技术而Mybatis由于建立这种映射需要我们手动编写SQL, 所以说它是半自动的。

2025-01-15 18:07:37 1112

原创 MySQL基础小结

SQL 是一种结构化查询语言(Structured Query Language),专门用来与数据库打交道,目的是提供一种从数据库中读写数据的简单有效的方法。MVCC,全称为 Multi-Version Concurrency Control(多版本并发控制),是数据库系统中一种用于实现并发控制的技术。它主要用于保证在多个并发事务同时读取和修改数据库中的数据时,能够获得一致性和隔离性,避免数据读写冲突和不一致性。

2025-01-13 10:01:22 488

原创 DM表结构修改

注:达梦数据库在操作数据库的时候需要带上模式名、即模式名 – 也就是数据库名。

2025-01-13 09:54:55 622

原创 DM_SQL语言支持的表达式

官方文档直达:[1.5 DM_SQL 语言支持的表达式 | 达梦技术文档 (dameng.com)](https://eco.dameng.com/document/dm/zh-cn/pm/dm_sql-introduction.html#1.5 DM_SQL 语言支持的表达式)

2025-01-13 09:54:23 472

原创 DM数据类型

需要说明的是,使用时间间隔数据类型时,如果使用了其引导精度的默认精度,要注意保持精度匹配,否则会出现错误。如果不指定精度,那么将使用默认精度。,它们通过时间间隔限定符区分,前者结合了日期字段年和月,后者结合了时间字段日、时、分、秒。由时间间隔数据类型所描述的值总是有符号的。其中,年月日之间可以使用分隔符或者没有分隔符。TIME 值的书写方式有两种:一是。整数,精度为 10,标度为 0。值的书写方式有两种:一是。值的书写方式有两种:一是。语法:INTEGER。语法:TINYINT。DATE '年月日'

2025-01-13 09:53:58 1212

原创 DM基础入门

是从基表或其它视图上导出的表,DM 只将视图的定义保存在数据字典中。综上所述,SQL 语言对关系数据库三级模式的支持如下图所示。DM_SQL 语言本身不提供对内模式的操纵语句。DM_SQL 语言支持关系数据库的三级模式,

2025-01-13 09:53:33 251

原创 【IDEA】插件篇

实现编辑器中文化。

2025-01-13 09:52:58 1582

原创 【IDEA】debug篇

Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。Step Over (F8):步过,一行一行地往下走,如果这一行上有方法不会进入方法。Step Into (F7):步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,如第25行的put方法。

2025-01-13 09:52:43 1048

原创 【IDEA】快捷键篇

您可以使用 Ctrl + Alt + L 快捷键来格式化代码,也可以通过菜单栏中的 Code -> Reformat Code 或者右键点击代码区域并选择Reformat Code来执行该操作。格式化代码的规则可以在设置中进行配置,例如缩进大小、代码块的大括号位置、行末空格等等。此外,您还可以在设置中选择启用或禁用自动格式化代码功能,并设置格式化代码的触发选项,例如保存文件时自动格式化代码等等。在结构窗口中,您可以快速导航到文件中的各个部分,也可以快速查找和定位特定的代码结构。,搜索内容并带有替换选项。

2025-01-10 17:53:43 525

原创 【IDEA】配置篇

我们希望查看哪个类代码,左边项目目录就能跟随显示这个文件所在位置,如下图,勾选这个选项即可。

2025-01-10 17:51:26 492

原创 【Git】常用操作

Git是一个分布式版本控制系统,它允许你跟踪文件和目录的历史更改。

2025-01-10 17:47:33 526

原创 【Git】分支管理

在使用命令时,Git 会默认为你生成一条合并提交信息。不过,你也可以在合并时提供自定义的提交信息。要实现这一点,可以使用--message或-m选项。

2025-01-10 17:46:51 913

原创 【Git】提交规范

在团队协作开发时,每个人提交代码时都会写 commit message。每个人都有自己的书写风格,翻看我们组的 git log, 可以说是五花八门,十分不利于阅读和维护。一般来说,大厂都有一套的自己的提交规范,尤其是在一些大型开源项目中,commit message 都是十分一致的。因此,我们需要制定统一标准,促使团队形成一致的代码提交风格,更好的提高工作效率,成为一名有追求的工程师。

2025-01-10 17:46:03 535

原创 【Git】修改已提交人的用户名和邮箱

git。

2025-01-10 17:45:08 1028

原创 【Git】配置相关操作

Git有三个主要的配置文件:三个配置文件的优先级是(–system):包含了适用于系统所有用户和所有仓库(项目)的配置信息,(–global):当前系统用户的全局配置,。(–local):仓库(项目)的特定配置,

2025-01-10 17:39:28 1154

原创 【Hot100】困难篇

困难篇4. 寻找两个正序数组的中位数何为分治?分治(Divide and Conquer)是一种算法设计策略,它将问题划分为更小的子问题,然后解决子问题并将它们的结果合并以获得原始问题的解。分治算法通常包括三个步骤:分解(Divide)、解决(Conquer)和合并(Combine)。在分治算法中,问题被逐步划分成更小的子问题,然后对子问题进行递归求解,最后将子问题的解合并起来得到原始问题的解。何为二分查找?二分查找是一种在有序数组中查找特定元素的算法。它通过将目标值与数组的中间元素进行比较,然后

2025-01-10 16:59:14 737

原创 【Hot100】中等篇(下)

前缀和与子数组的个数之间存在着紧密的关系,尤其在解决子数组和相关问题时。前缀和是指从数组起始位置开始,到数组中某个位置的所有元素之和。给定数组nums,可以计算前缀和数组prefixSum,其中表示数组前i个元素的和。形式化地,。对于数组nums中的任意子数组[i, j],其和可以通过前缀和数组计算得到。子数组和为,可以表示为。对于给定的整数 K,我们可以通过计算前缀和数组来确定子数组和为 K 的个数。假设s是当前的前缀和,那么我们只需要查找之前是否存在前缀和s - K。

2025-01-10 16:58:40 844

原创 【Hot100】中等篇(中)

通过前序遍历的结果确定当前子树的根节点,然后在中序遍历的结果中找到根节点的位置,进而划分左子树和右子树。这样,通过两轮遍历和标记,该算法就能够在常量空间内完成矩阵的原地修改,将包含零元素的行和列都置零。指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。的基本思想是:将问题分解成更小的子问题,解决子问题后再合并得到原问题的解。然后遍历排序后的区间,检查每个区间是否与结果列表中的最后一个区间重叠。节点组成,其中每个新节点的值都设为其对应的原节点的值。

2025-01-10 16:58:00 574

原创 【Hot100】中等篇(上)

的末尾元素删除,也就是删除最后一个添加到路径中的元素,这个元素是上一个循环中添加到路径中的元素。在每一层递归中,都会交换相邻的两个节点,并将结果传递给下一层递归。最终,当递归到最底层时,所有相邻节点都被成功交换,然后逐层向上返回,最终得到交换后的链表。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。所以,总的时间复杂度是排序部分的复杂度乘以遍历部分的复杂度,即 O(n * m * log(m))。这个函数的作用是将链表中的每两个相邻节点进行交换,并返回新的头节点。

2025-01-10 16:57:34 835

空空如也

空空如也

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

TA关注的人

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