自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 B+树的“页分裂“机制

页1利用率100%,页2才开始填充。假设一个数据页最多能放。

2025-12-15 15:59:14 346

原创 数据库中,为什么数字类型的索引效率比字符串类型的要高

局部性更好:顺序/可排序的数字(雪花ID)插入更接近顺序,减少页分裂和碎片;- 存储更小:`BIGINT` 8 字节,`CHAR(36)` UUID 文本 36 字节,页内可放更多条目,B+树层级更浅,IO 次数更少。简要说明:数字主键/索引通常比字符串(如UUID文本)更快,原因在于存储、比较和页分裂三个方面。- 使用有序 UUID(如 UUID v7)或雪花ID,减少随机插入导致的页分裂。- 内存与网络:更小的键占用更少 buffer/cache,也减小网络传输开销。

2025-12-15 15:38:24 162

原创 win10 Git Bash安装make命令

目录(或者其他你喜欢的目录)

2025-11-28 17:40:29 379

原创 十分钟了解适配器模式

中国电器(220V) ↔ 电源适配器 ↔ 美国插座(110V):将一个类的接口转换成客户期望的另一个接口。让不兼容的接口能够一起工作。:新增适配器不影响现有代码。:让不兼容的接口能够协作。

2025-11-25 16:05:59 168

原创 依赖管理中的<scope>import</scope>

你想买可乐,但不知道今天卖多少钱,每次都要去问店员:"可乐今天多少钱?你办了一张,这张卡告诉你:可乐:3元薯片:5元啤酒:8元以后买东西就直接按这个价格,不用再问了!

2025-11-18 16:49:35 191

原创 IDEA Maven 仓库配置优先级

它们会共同作用。

2025-10-09 17:49:37 314

原创 CSS元素的总宽度计算规则

时:总宽度 = 240px(内容) + 40px(左内边距) + 0(右内边距) + 1px(左边框) + 1px(右边框) = 282px。要解决这个问题,可以使用 box-sizing: border-box。时,元素的总宽度会变大(内容宽 + 左内边距 + 边框宽度)。会让元素整体变宽 —— 因为默认规则下,内边距和边框都是在。包含内容区、内边距和边框的宽度,这样修改。CSS 盒子模型(Box Model)的。就不会改变元素的总宽度了。

2025-09-23 15:47:56 369

原创 十分钟了解@Version注解

Service@Slf4jthrow new OptimisticLockingFailureException("数据已被修改,请重试");// 重试失败后的处理@Recoverlog.error("用户 {} 更新失败,经过3次重试仍失败: {}", userId, e.getMessage());// 发送通知或记录日志@Version 的核心价值解决并发冲突:防止数据覆盖无锁性能高:不需要数据库锁,性能更好使用简单:只需一个注解+插件配置自动管理:MP自动处理版本号增减。

2025-09-19 14:00:33 500

原创 在Navicat中生成表的建表语句

【代码】在Navicat中生成表的建表语句。

2025-09-18 16:13:05 334

原创 如何打包maven项目依赖复制到指定目录

上述命令会将依赖复制到项目所在盘(比如我的D盘)的tmp文件目录下的lib目录下然后在执行命令 这个命令会在当前工作目录下创建 文件夹,并将依赖下载到其中。如果当前目录是 :目录结构示例:下载后的目录结构会像这样:如图所示 文件是 Maven resolver(依赖解析器)自动生成的,用于记录:每个依赖是从哪个仓库下载的依赖的仓库来源信息用于后续的依赖解析和缓存管理如何避免生成这些文件?方案一:在配置中排除这些文件(推荐)方案二:使用复制后清理脚本

2025-09-05 11:31:48 1092

原创 线程的竞态条件

是指多个线程或进程在访问和操作共享数据时,最终的结果取决于线程执行的精确时序。当多个线程在没有适当同步的情况下访问共享资源时,就会发生竞态条件。

2025-09-04 14:30:41 340

原创 MyBatis-Plus的分页、原生MyBatis的SQL分页以及内存分页对比

wrapper.like("u.name", "张")MyBatis-Plus分页是最佳选择,它在保持原生SQL分页性能优势的同时,大幅提升了开发效率。只有在极端复杂的查询场景下才需要考虑原生SQL分页,而内存分页应该避免在生产环境中使用。// 最终推荐写法。

2025-08-28 11:23:11 407

原创 Java Bean 的命名规范 和 JSON 序列化库如何处理名称之间的不匹配问题

最近遇到一个很新奇的问题,之前从来没遇到过,用apifox测试的时候,传参但是在打断点的时候发现没有赋值成功。但是打断点测试的时候,只有cityCode,cityName,deptCode,deptName这几个属性成功赋值了,剩下的都是空的!经过一顿排查发现,这是由于 Java Bean 的命名规范 和JSON序列化库(如 Jackson)如何处理这些名称之间的不匹配所导致的。简单来说,问题出在属性命名上。

2025-08-11 14:42:32 789

原创 多数据源环境下使用 @Transactional 需要特别注意事务管理器的选择

在多数据源环境下使用需要特别注意事务管理器的选择。根据你的配置,sysService使用了xxx数据源(通过@DS("xxx")注解),而其他操作可能默认使用primary数据源(yyy。

2025-07-30 18:04:17 603

原创 failed to req API:/nacos/v1/ns/instance after all servers([localhost:8848]) tried

我的bootstrap文件激活的是dev的yml,所以以下方法解决我的问题。但是仍然没有解决我的问题。

2025-06-23 10:32:32 219

原创 五分钟了解@ExcelIgnoreUnannotated注解

框架中的一个注解,用于控制 Excel 导入/导出时对实体类字段的处理方式。如果没有此注解,EasyExcel 默认会尝试处理实体类中的所有字段(包括未标注的字段)。,可以更严格地控制 Excel 导入/导出的字段范围,避免因遗漏注解而导致的数据问题。对于嵌套对象,该注解仅作用于当前类的字段,不会影响嵌套类自身的注解规则。A:字段会被完全忽略,可能导致导出数据缺失或导入时字段为。明确指定需要处理的字段,否则这些字段会被完全忽略。减少反射扫描的字段数量,加快导入/导出速度。的字段,忽略其他字段(即使它们是。

2025-06-23 10:07:20 1177

原创 XMLGregorianCalendar跟Date、localDateTime以及String有什么区别

支持任意精度(年、月、日、时、分、秒、毫秒等)。,也没有时区支持(依赖系统默认时区)。(如 SOAP/WSDL、XSD 的。(Java 8+ 标准,清晰易用)。,属于现代日期时间 API(,并提供丰富的操作方法(如。,仅作为格式化后的文本(如。,仅表示本地日期时间(如。(大部分方法已废弃,如。(除非维护旧系统)。

2025-06-09 09:35:19 460

原创 SQL 的 DECODE 函数

DECODE函数是 Oracle 数据库中的一种条件表达式,用于基于某个条件返回不同的值。虽然它在 Oracle 中很方便,但在其他数据库系统中,通常使用CASE语句来实现类似的功能。了解这些函数和语句可以帮助在不同的数据库环境中编写灵活且可移植的 SQL 代码。

2025-05-23 16:19:58 1909

原创 Cause: org.apache.ibatis.ognl.OgnlException: sqlSegment

创建的是一个,而remove()方法内部会尝试获取sqlSegment在某些 MyBatis-Plus 版本中,这种链式调用会导致方法被错误调用。

2025-05-22 16:51:12 666

原创 内存分页法

现在有个场景,页面需要分页处理,但是后端在查询完数据库后又会进行筛选,就会导致后端的查询数目跟请求的每页条数是不一样。在内存筛选后手动实现分页逻辑,保证返回数量与请求的。

2025-05-20 17:47:15 413

原创 FastByteArrayOutputStream和ByteArrayInputStream有什么区别

保持现有。

2025-05-14 23:13:37 1025

原创 十分钟了解 @MapperScan

是 MyBatis 和 MyBatis-Plus 提供的一个,用于,使其能够被 Spring 容器管理,并与对应的 XML 或注解 SQL 绑定。它的核心作用是,避免手动逐个声明。:Spring 会扫描包及其子包下的所有 Mapper 接口,并自动注册为 Bean。可以传入多个包路径,适用于 Mapper 分散在不同模块的情况。会触发,扫描指定包下的接口。(通过 JDK 动态代理或 CGLIB),并注册到 Spring 容器。(XML 或注解方式),执行数据库操作。

2025-05-06 23:34:16 1226

原创 深入理解 mapper-locations

告诉 MyBatis/MyBatis-Plus 去哪里扫描并加载 SQL 映射文件(即。MyBatis 默认会尝试加载与 Mapper 接口同名的 XML 文件(如。打包后解压 JAR,确认 XML 文件在指定路径下(如。XML 文件名通常与 Mapper 接口名一致(如。:从所有类路径(包括依赖的 JAR 文件)中搜索。)中的一项关键配置,用于指定 MyBatis。如果你的 XML 文件不放在默认位置(如。),但需要明确指定 XML 的存放路径。修改为一个不存在的路径(如。:匹配单级目录或文件名(如。

2025-05-06 23:26:16 1373

原创 Invalid bound statement (not found)

今天在预发布环境测试的时候遇到的,查了一下,这个报错通常表示 MyBatis 无法找到与接口方法匹配的 SQL 映射语句。

2025-05-06 23:07:57 967

原创 HTTP 503(Service Unavailable)

访问的服务实例无法正常响应请求,可以看看这个服务是不是没有启动。

2025-04-30 16:21:27 536

原创 Linux查看文件列表并按修改时间降序排序

但是我们在根据日志来排查问题的时候,是需要看最新的日志,如果直接找的话,日志多,而且费眼,所以按时间排序是非常明显的。正常我们是使用 ll 或者 ls -l 等命令查看文件列表,但是这种情况下,文件是无序的。选项用于显示文件的详细信息,包括权限、所有者、大小和修改时间等。选项来查看文件列表并按修改时间降序排序。选项用于按照文件的修改时间排序。在 Linux 中,可以使用。选项用于反转排序顺序。

2025-04-28 11:36:25 833

原创 Method Not Allowed, status=405

我是在内网环境执行某个定时任务接口发出的请求,但是我F12是直接看不到直接对应的请求,因为中途进行了其他的接口调用,但是后端代码是 @GetMapping ,所以我将注解改为 @RequestMapping。,表示客户端尝试使用了不被支持的 HTTP 方法访问某个接口。说实话,这还是我第一次遇到405错误。)与后端接口定义的 HTTP 方法不匹配。怎么说呢,我百度了一下,这个错误是。完全一致(包括大小写和斜杠)。接口路径正确,但方法类型错误。访问,会触发 405。例如:后端接口只支持。

2025-04-24 21:45:31 508

原创 Your local changes would be overwritten by merge.Commit, stash or revert them to proceed

本想git pull拉取代码,但是突然遇到这种情况。当您执行git pull或git merge时,Git 检测到,而这些修改会被即将合并的代码覆盖。Git 要求您先处理这些本地修改才能继续合并。您本地修改了src/A.java但未提交同事已提交了src/A.java的新版本到远程仓库您运行git pull时,Git 发现这两处修改可能冲突。

2025-04-23 11:38:43 907

原创 Web server failed to start. Port XXX was already in use

相信很多后端开发在Idea启动项目的时候也有时会遇到这个问题,当遇到“Web server failed to start. Port XXX was already in use.”错误时,说明你尝试启动的 Web 服务器无法使用指定的端口(这里是 XXX),因为该端口已经被其他进程占用。

2025-04-18 16:05:31 1372

原创 Win10下载cursor后,点击sign in 按钮没反应

最后再点击sign in即可登录!

2025-04-07 22:06:26 493

原创 Idea上git提交修改的代码至本地仓库,怎么撤销再重新提交(全网最简洁!)

下班前开开心心按要求改好代码,然后就提交到远程仓库,结果发生了一件尴尬的事情,把一些不需要提交的代码(如下)也一起commit了,不够还好提前注意到了,所以就没继续提交到远程仓库。接下来,我就教大家怎么操作!

2025-04-02 22:05:23 1871

原创 玩转stream流之(existing, replacement) -> existing

在后端开发中,Stream流确实是一个非常强大且方便的工具,特别是在处理集合(如列表、集合、映射等)时。Stream提供了一种声明式的方式来处理数据,使得代码更加简洁和易读。

2025-03-31 23:17:10 674

原创 Windows安装Minio(全网最细篇)

打开命令行窗口(快捷键是 窗口键+R ),不需要以管理员身份打开,,进入到minio.exe所在bin目录,输入。分别点击下载后,会有两个exe执行文件,一个是客户端的(mc.exe),一个是服务端的(minio.exe)需要注意的的是,在Windows环境下,MinIO(或任何其他软件)的安装路径和目录名称。客户端文件:mac.exe 用于上传文件 ,如果用程序代码操作文件存储,只启动服务端就ok。9005是控制台端口,9000是服务的端口。,对UTF-8路径的支持可能存在潜在问题。

2025-03-28 18:05:40 2268

原创 15分钟了解设计模式----策略模式(全网看这篇就够了!)

通过@Component@ConfigurationProperties(prefix = "member.strategy") // 绑定配置前缀// 对应 member.strategy.active// 可选:支持多策略映射// Getters and Setters (必须)

2025-03-27 22:04:40 1261

原创 记录一次跑流水线的“艰辛旅程”(涉及webpack图片配置问题)~~

先分享一下喜悦,没错,跑到了七百多次(我是从五百多次开始跑的),终于跑成功了, 太艰难了~~在这里,我主要想分享一下我自己的一个方法。问题主要是这三个前端模块(菜鸡我是后端开发), 刚开始跑流水线的时候,遇到的一直是依赖缺失问题,但是因为在内网,所以也就不能连外网下载依赖。然后就一直手动加,,,结果感觉又耗时又费力,而且加不完。。。然后问了运维人员,改变了方法,因为在内网还有一个公共仓库A,所以就行。就这样,其中两个模块构建成功了。但是仍然有一个顽固份子,一直报的是有两个依赖的编译文件找不到。

2025-03-26 12:40:48 698

原创 Docker Desktop distro installation failed问题

但是依然没有解决我的问题,然后我就用。

2025-03-24 16:57:20 924 5

原创 flatMap(Collection::stream)

在开发中,尤其是后端开发中,stream流在处理集合这块应该是使用最频繁的,想必也遇到过.flatMap(Collection::stream),今天再重温一下这个知识点。是 Java 8 中 Stream API 的一个常用操作,用于Stream<T>。它的作用是将嵌套结构“扁平化”,即将多个集合合并为一个流。flatMap接受一个函数作为参数,该函数将流中的每个元素映射为一个新的流。然后将这些流“扁平化”为一个单一的流。是一个方法引用,表示将集合转换为流。例如,List<T>可以通过。

2025-03-21 14:26:11 679

原创 CountDownLatch类详解

在 Java 中,是一个,它允许一个或多个线程等待其他线程完成操作。的构造函数接受一个参数,这个参数指定了需要等待的计数。当计数到达零时,所有等待的线程将继续执行。这行代码创建了一个实例,名为。这个实例被初始化为,这意味着在所有线程都完成它们的任务之前,任何线程调用方法时都会阻塞。一旦个线程都完成了它们的任务,并且每个线程都调用了方法,计数就会减少,直到计数达到零,此时所有等待的线程都会被唤醒并继续执行。这里的应该是一个表示线程数量的变量。被声明为private和final,以及static。

2025-03-19 17:42:40 324

原创 如何打一个依赖分开的“大瘦身”的jar包

在后端开发的时候,是避免不了打jar包进行部署的(是的,没错,部署也是我==),但是很多时候,打的jar包很大,超过1G,就在微信上传不了。。。而且部署在服务器的时候,传输是很慢的,涉及频繁的部署的话, 是很耗时的!在这里我们先看看常规的打jar的方式吧这里使用的是Spring Boot 的 spring-boot-maven-plugin ,生成的是依赖 JAR 包被打包到目录中。应用程序的类文件被打包到目录中。包含 Spring Boot 的类加载器(可以直接通过java -jar运行。

2025-03-10 17:43:11 796

原创 LambdaQueryWrapper的notIn用法

如果flag为false(即存在相同的任务名称),则抛出一个IllegalArgumentException,并附带错误信息“已经存在相同的任务名称,请修改任务名称”。这意味着在检查任务名称是否唯一时,会忽略当前正在修改的任务,只检查其他任务。: 使用LambdaQueryWrapper构建查询条件,并将查询结果的数量与0进行比较,判断是否存在符合条件的任务。如果是0,则表示没有找到符合条件的任务,即任务名称是唯一的。: 添加一个条件,即任务状态不等于2,2L表示该任务的状态被删除。

2025-03-10 10:53:27 935

空空如也

空空如也

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

TA关注的人

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