- 博客(41)
- 收藏
- 关注
原创 MySQL 支持的各类索引
在设计索引时,如果某些查询只需要返回少数几个字段,可以尝试创建一个包含这些查询字段的复合索引,使其成为覆盖索引,避免回表,能极大提升性能。:当MySQL优化器判断通过索引回表查询的成本高于直接顺序扫描全表时,会放弃使用索引。除全文索引外,下文讨论的索引类型(如唯一、主键、复合索引)默认都使用B+Tree结构。如果无法避免,优化器在数据量大时可能选择全表扫描,因为否定条件通常需要扫描大部分数据。,因为数据库引擎只需扫描索引即可返回数据,无需回表查询数据行。复合索引一索引多用,且比多个单列索引更高效。
2025-12-26 16:29:36
647
原创 优化SQL:如何使用 EXPLAIN
EXPLAIN是优化SQL查询不可或缺的工具。掌握其输出结果中type和Extra列的含义,是定位性能问题的关键。ALLrefrangeExtra下面这个表格汇总了使用EXPLAIN时返回结果中各字段的核心含义。字段含义与解读要点idSELECT 查询的序列号。。查询的类型,例如简单查询(SIMPLE)、主查询(PRIMARY)、子查询(SUBQUERY)、派生表查询(DERIVED)等。type,即MySQL决定如何查找表中的行。
2025-12-26 10:26:26
841
原创 在Java中,从List A中找出List B没有的数据(即求差集)
对于小数据量或初学者,使用循环遍历易于理解。对于常规数据量且追求代码简洁性Stream API是非常好的选择。当处理大数据量时,HashSet优化法能显著提升性能。使用removeAll 方法时,务必注意它会修改原集合。如果不希望原集合被修改,应先创建副本。
2025-12-25 20:08:45
259
原创 Spring Boot 与 Apache POI 实现复杂嵌套结构 Excel 导出
实际业务中,我们常遇到的数据关系。例如,一个主实体包含多个一级子项,每个一级子项又包含多个二级子项。传统平面表格难以直观展示这种层次关系,需要和来优化可读性。
2025-12-25 14:33:40
229
原创 Feign调用添加重试机制
本文介绍了5种实现Feign客户端重试机制的方法:1)使用SpringRetry框架,通过注解和配置实现;2)自定义重试器,手动控制重试逻辑;3)采用Resilience4j框架,提供更强大的容错能力;4)通过自定义异常处理实现重试;5)使用拦截器方式手动控制重试流程。这些方法都支持设置重试次数、间隔时间等参数,其中SpringRetry和Resilience4j两种方案功能较为完善,推荐优先使用。开发者可根据项目需求选择适合的重试策略,提升微服务调用的可靠性。
2025-12-24 15:57:22
101
原创 SQL窗口函数(使用场景)
窗口函数在大量数据上可能较慢,合理使用分区。:ORDER BY子句中的字段建议有索引。:明确指定ROWS或RANGE避免歧义。
2025-12-16 15:34:07
139
原创 EasyPOI 大数据导出
建议在方法中添加try-catch,避免单页失败导致整个导出失败。:使用SXSSFWorkbook,不会将所有数据加载到内存。:EasyPOI会自动循环调用。参数从1开始,每次调用自动递增。:当返回空列表时,导出自动结束。:导出完成后一定要调用。
2025-12-15 16:16:53
270
原创 定时器多节点部署,导致保存数据重复(分布式锁)
方案优点缺点适用场景数据库分布式锁实现简单,依赖少性能一般,可靠性需自行保证小型项目,数据库压力不大,任务不频繁Redis 分布式锁性能高,可靠性高(推荐)需要引入 Redis大多数互联网应用的首选,任务频繁调度框架功能最全,最专业(强推)架构最重,需要部署中心复杂的调度需求,需要可视化管理和故障转移业务状态控制无额外组件,性能好对业务模型有特定要求业务数据模型恰好支持此模式的场景如果项目处于早期,任务不复杂,可以选择方案一或方案二,其中方案二(Redis)
2025-12-03 16:26:51
644
原创 多线程 submit、execute 与 @Async 详解及完整代码
Spring项目,需要简单的异步执行,与框架深度集成。:需要获取支付结果进行后续业务(库存扣减、积分计算):发送邮件不需要等待结果,即使失败也不影响主流程。可通过AsyncConfigurer统一处理。 - 可以捕获和处理执行异常。Spring项目中的异步任务。void 或 Future。Future(有返回值)异常封装在Future中。:用户注册后发送欢迎邮件。 - 主线程不会阻塞。 - 复用线程资源。void(无返回值)
2025-12-03 15:08:10
279
原创 使用 poi-tl 生成 Word 文档并上传到 Minio
服务将自动生成Word报告并上传到Minio。生成人员: {{author}}返回包含文件路径的JSON响应。报告日期: {{date}}{{members}}姓名。
2025-12-02 10:42:49
335
原创 先按电压类型(直流优先于交流)排序,同类型下再按电压数值从高到低排序。
±1100kV (直流, 数值最大)直流500kV (直流)±800kV (直流)交流220kV (交流, 数值最大)交流110kV (交流)交流35kV (交流)交流10kV (交流)直流750V (直流, 但数值以V为单位,可能需注意单位统一)请注意"直流750V"中的单位是V(伏特),而其他都是kV(千伏)。代码在提取数字时,"750V"会变成750.0,但kV单位的数值(如10.0)代表10千伏,即10000伏特。因此,在数值比较时,750.0会远小于10.0,导致它排在很后面。
2025-12-02 09:49:08
273
原创 根据每个键对应的列表里所有实体的 count 最大值,将整个字典从大到小重新排列
count为了更直观地理解,我们来看一个例子。假设原始的如下:key(字符串)value(List<MyEntity> 中各实体的 count 值)列表中的最大 count"A"5"B"[count=10]10"C"7执行代码后,新的中的键值对顺序将是:key(字符串)排序依据(列表最大count)"B"[count=10]10"C"7"A"5。
2025-12-02 09:45:30
280
原创 获取某个字段时间最新的一条数据
要使用函数获取每个user_name最新的一条数据,其核心思路是。具体的写法会因数据库系统略有不同,以下是两种主流写法。
2025-11-27 19:53:01
570
原创 双节点部署WebSocket问题分析与解决方案
这样优化后的系统可以支持多节点部署,所有节点通过Redis实现数据同步和消息分发,确保WebSocket连接的全局一致性和消息的可靠传递。│ ├── nginx.conf # 主配置文件。├── conf\ # 配置文件目录。├── html\ # 静态文件目录。├── logs\ # 日志文件目录。: 通过Redis频道实现消息的全局广播和单播。: 设置Redis键的过期时间,防止僵尸连接。: http://[你的IP地址]:80。
2025-11-12 16:51:09
1028
原创 windows系统启动redis报错
在启动 Redis 时遇到了的错误,这通常意味着 Redis 服务无法成功绑定到指定的 IP 地址和端口(127.0.0.1:6380)。
2025-11-10 14:27:15
269
原创 JWT 用于身份认证和授权的、具有防篡改能力的数字令牌
JWT 的全称是 JSON Web Token。它本质上是一个字符串,由三部分组成,用点Header(头部): 描述令牌的类型和签名算法。好比在会员卡上写着“本卡使用V3.0防伪技术”。Payload(负载): 这是核心,里面包含了你想要传递的“声明”(用户信息、权限、过期时间等)。好比会员卡上印着的会员号会员级别有效期。注意: 这部分信息是Base64编码的,并非加密。所以绝对不能在里面放密码等敏感信息。Signature(签名)。
2025-10-22 10:39:48
433
原创 MyBatis 中 @InterceptorIgnore注解的作用。
这个拦截器就像一个“关卡”或者“监控摄像头”,每当 MyBatis 要执行一个 Mapper 接口中的方法(最终对应一条 SQL)时,这个拦截器都会被触发,执行你定义的记录日志逻辑(在。 当 MyBatis 执行这个被注解标记的方法时,它会“看到”这个注解,并知道:“哦,这个方法要求忽略某些拦截器”。 如果使用拦截器实现基于租户 ID 的数据过滤,对于某些需要访问所有租户数据的超级管理员方法,可以排除这个过滤拦截器。比如,你可以指定只有当拦截器的。时使用的,用来排除某些方法不被特定的拦截器拦截。
2025-10-22 09:55:21
575
原创 MQ的使用场景
当你不想让系统A的稳定性和性能被系统B、C、D拖累时(解耦)。当你想让用户更快地拿到响应,而把耗时的活儿放在后台慢慢干时(异步)。当你需要应对像秒杀、抢票那样的瞬时巨大流量时(削峰)。当你需要让多个系统之间的数据保持同步时(数据同步)。当你需要实现定时任务、广播通知、保证顺序等复杂业务逻辑时。
2025-10-22 09:09:19
517
原创 @Valid校验 -(Spring 默认不支持直接校验 List<@Valid Entity>,需用包装类或手动校验。)
/ 业务逻辑} MyEntity中某个参数没有传入,也没有提示,参数有加@NotNull注解在 Spring Boot 中,直接对使用@Valid验证时,集合内元素的校验可能不会自动触发。
2025-10-17 10:05:15
295
原创 easypoi导出
nametry {// 创建表头列表// 第一行表头:基础信息headerList.add(new ExcelExportEntity("姓名", "name"));headerList.add(new ExcelExportEntity("性别", "gender"));// 第一行表头:数学相关参数(合并3列)ExcelExportEntity mathHeader = new ExcelExportEntity("数学相关参数", "math");// 合并3列。
2025-09-26 14:33:49
407
原创 使用Python拆分DataFrame:将单行数据扩展为多行
在数据处理和分析过程中,我们经常会遇到需要将单行数据拆分成多行的情况。特别是在处理时间序列数据、版本对比数据或者多状态数据时,这种需求尤为常见。本文将介绍一个通用的Python函数,可以帮助您轻松实现DataFrame的拆分操作。
2025-08-28 16:52:08
258
原创 Spring Boot 连接 Consul 和使用 Feign 的完整指南
Spring Boot 启动后,自动向 Consul 注册(/swaggertest/health/custom-health 健康检查)。Spring Cloud Consul 可以自动将 Spring Boot 服务注册到 Consul,并实现服务发现。无需额外配置,Consul 会自动提供可用的服务实例列表。Feign 是 Spring Cloud 提供的。Consul 是一个服务网格解决方案,提供。,可以像调用本地方法一样调用远程服务。,服务会自动注册到 Consul。Feign 默认集成了。
2025-06-13 15:24:26
594
原创 redis实践运用(超详细版)
Spring Boot 集成 Redis 配置与应用 本文介绍了 Spring Boot 项目中集成 Redis 的完整方案,包含以下核心内容: 依赖配置:通过 spring-boot-starter-data-redis 引入 Redis 支持 Redis 配置: 连接池参数配置(Lettuce) 自定义 RedisTemplate 实现 JSON 序列化 支持 String/JSON 类型的 Key 和 Value RedisUtil 工具类: 封装了五种数据结构的操作
2025-06-11 14:16:55
781
原创 Idea提交代码到gitLab仓库报错ssh_exchange_indentification Connection closed by remote host fatal:could not rea
窗口的左侧显示的是【<本地分支名称> -> <提交方式>:<远程分支名称>】,将<提交方式>改成Manage Remotes点击新增"http"方式。2、在Manage Remotes点击新增,名称随意取,这里取"http",然后输入刚刚复制的“使用HTTP克隆”的Git地址。1、进入gitLab中相关服务,点击克隆,有“使用SSH克隆”和“使用HTTP克隆”,复制“使用HTTP克隆”的Git地址。Idea点击Git-->Manage Remotes-->Idea点击Git-->
2025-03-26 10:21:27
228
原创 MapStruct 拷贝(详细版)
工具性能特点适用场景MapStruct非常快编译时生成映射代码,避免反射开销高性能、大型项目、类型安全较慢使用反射进行属性拷贝,性能开销较大简单场景、不关注性能的小项目中等基于反射,但有优化Spring 项目,简易的对象映射BeanCopier很快使用字节码生成,避免了反射的性能瓶颈高性能、大量数据拷贝@Mapping注解是MapStruct框架中的一个核心注解,用于定义源对象与目标对象之间的字段映射关系。
2025-02-13 15:05:09
1190
1
原创 将一个Excel文件中的数据每1000条划分为一个新的Excel文件
要将一个Excel文件中的数据每1000条划分为一个新的Excel文件,最后剩余的数据(不足1000条)也保留为一个新的Excel文件,可以使用Python的库来实现。支持高效的数据处理和Excel文件的读取/写入。下面是一个完整的示例代码,演示了如何实现这个需求:首先确保安装了和,后者是用来处理Excel文件的引擎:示例代码代码解析 读取Excel文件:定义分割大小:计算需要分割成多少个文件:分割数据并保存:输出文件名:假设输入的 中有 2500 行数据:Excel表格大小:如
2024-11-25 17:54:15
969
原创 3.使用 Callable 接口与 Future
Callable与Future适合需要获取结果或处理异常的并发任务,但引入了性能开销、阻塞、复杂性和死锁风险等问题。适当使用时能提高代码的灵活性和可控性,但不当使用可能导致系统效率低下或代码混乱。
2024-11-19 13:54:56
1257
原创 0、多线程详解
多线程(Multithreading)是指在一个程序中同时执行多个线程的技术。线程是程序执行的最小单位,是程序执行流的基本单元。在现代操作系统中,程序一般由一个或多个线程组成。多线程使得一个程序能够同时执行多个任务,从而提高程序的执行效率,特别是在进行耗时操作时,如IO、网络请求、图像处理等。继承Thread类:适用于线程行为简单的情况,但不支持多重继承。实现Runnable接口:适用于线程行为比较复杂的情况,并且可以实现多重继承。使用Callable接口与Future。
2024-11-18 14:10:49
1145
原创 2.实现Runnable接口,重写run()方法
这样可以让你将任务与线程分离,从而使得任务可以被多次重用,或者可以在不同的线程池中执行。线程的创建、管理以及任务的执行是分开处理的,这让您的代码结构更加清晰、灵活,便于修改和维护。接口的优点之一是它可以让你更容易地管理和控制多个线程,特别是当需要多个线程执行相同任务时。时,任务的执行与线程池的管理是分开的。方法时,Java 会将你的线程任务与线程对象分离,这样可以更灵活地管理线程。线程池的设计依赖于将任务传递给线程池,而不是直接管理线程的创建和启动。接口时,任务的执行和线程的管理是分开的。
2024-11-18 10:48:07
1462
原创 gitlab里面的token的填到idea中(拉取代码的时候提示)
自动跳转会自动跳转到访问令牌页面,自动选好所需全需,如果没有可以按需生成令牌。搜索 "Version Control" -> "GitLab" ->自动跳转到gitlab中生成token的地址。进入 "设置"(Settings)。打开 IntelliJ IDEA。删除过期token。
2024-11-08 13:53:40
8698
原创 Windows系统搭建ELK日志收集(详细版)
ELK(Elasticsearch, Logstash, Kibana)是一个强大的开源数据分析和可视化平台,主要用于日志数据的收集、存储、分析和可视化。ELK在日志管理、监控、分析和故障排查等方面有广泛的应用。
2024-11-06 15:56:07
2363
原创 在Excel中,确保某个单元格的内容严格包含在某一列内,并且获取同行的数据
这个公式会根据 A1 的内容在 B 列中的存在与否,决定是否在 D1 中显示对应行的 C 列数据。选取的列一直在根据单元格的变化而变化,这样对我们的结果肯定是有影响的。假设 A1 是要查找的内容,B 列是包含可能值的列,C 列是要获取数据的列。这个公式会返回 "Exists" 表示 A1 的内容在列 B 中存在,返回 "Not Found" 表示不存在。:在列 B 中查找 A1 的内容,返回位置,如果找不到则返回错误。这个公式首先会判断 A1 的内容是否在列 B 中,如果是,则用。:在列 C 中,使用。
2024-08-08 15:15:13
4926
2
Python与MinIO结合使用Flask上传与下载文件的完整指南
2024-11-22
0、多线程详解 多线程(Multithreading)是指在一个程序中同时执行多个线程的技术
2024-11-18
GDAL-3.4.1-cp39-cp39-manylinux-2-5-x86-64.manylinux1-x86-64.whl
2024-11-06
GDAL-3.3.3-cp39-cp39-manylinux-2-5-x86-64.manylinux1-x86-64.whl
2024-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅