自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 问答 (3)
  • 收藏
  • 关注

原创 滑动窗口-01-无重复字符的最长子串

本文介绍了寻找字符串中最长无重复字符子串的三种解法。第一种错误解法在遇到重复字符时清空集合,导致结果不准确;第二种正确解法使用双指针法,时间复杂度为O(N^2);第三种优化解法采用滑动窗口技术,通过动态调整窗口边界来高效查找最长子串,时间复杂度更优。文章通过代码示例和思路分析,比较了不同方法的优缺点,最终推荐使用滑动窗口作为最优解决方案。

2025-12-25 11:01:32 144

原创 哈希-03-字母异位词分组

本文介绍了如何将字符串数组中的字母异位词分组。通过分析错误示例,指出HashSet无法处理未重写equals方法的数据结构。正确解法是使用HashMap,将排序后的字符串作为key,原字符串列表作为value。最终将Map的值转为列表返回。关键点:1)HashSet的去重限制;2)异位词字符相同但顺序不同;3)利用排序字符串作为唯一标识。该方法有效解决了异位词分组问题。

2025-12-24 16:03:35 201

原创 哈希-02-最长连续序列

本文探讨了如何寻找未排序整数数组中最长连续数字序列的长度。文章提出两种解法:第一种是通过排序后遍历比较相邻元素,时间复杂度较高;第二种利用HashSet去重后,通过寻找连续序列起点并计算长度,实现O(n)时间复杂度。代码示例展示了两种方法的实现,第二种方法通过判断数字前驱是否存在来确定序列起点,再向后扩展计算长度,效率更优。文末指出该方法适用于大数组场景,并欢迎指正问题。

2025-12-23 11:48:46 225

原创 MinIO整合SpringBoot实现获取文件夹目录结构及文件内容

本文介绍了Minio环境安装及获取目录结构和文件内容的实现方法。首先参考前文完成Minio安装配置,然后通过Java代码实现了两个核心功能:1)获取指定路径下的非递归目录结构,返回包含名称、类型、大小和路径的列表;2)获取文件内容,包括文件信息和文本内容。代码示例展示了如何调用Minio API,并提供了两种目录结构查询的JSON返回示例。服务层封装了异常处理,使用Builder模式构建返回对象,适用于文件管理系统开发。

2025-12-23 09:59:33 180

原创 GitHub Copilot 一键生成中文commit提示语规则设置

本文介绍了如何在IDEA中配置GitHub Copilot的提交信息规则。主要内容包括:1. 通过Settings设置Copilot的自定义规则;2. 提供了标准的中文提交信息模板,包含必选的Header(类型+范围+主题)和可选的Body/Footer;3. 说明了7种提交类型(feat/fix/docs等)及其含义;4. 给出了格式要求(每行不超过72字符)和示例。配置后Copilot将按照该规范生成标准化的中文提交信息,提升版本管理规范性。

2025-12-22 17:56:15 228

原创 HTTPS详解

HTTPS是HTTP的安全升级版,通过加密、身份验证和数据完整性保护解决HTTP的三类安全隐患:窃听、冒充和篡改。其安全机制由TLS/SSL协议实现,分为两个阶段:首先通过TLS握手建立安全通道(包括证书验证和密钥交换),然后使用对称加密传输数据。尽管HTTPS更安全,但由于加密开销和证书成本,部分网站仍选择HTTP传输非敏感信息。HTTPS在安全性和性能之间取得了平衡,成为现代网络通信的重要标准。

2025-12-19 11:00:37 763

原创 使用Redis队列优化内存队列

摘要:项目遇到内存队列在服务升级时丢失未完成任务的问题,通过Redis队列替代内存队列实现持久化。选型时考虑业务特性(一次性任务、无需重试)和维护成本,Redis比消息队列更合适。实现方案:1)将ConcurrentLinkedQueue改为Redis List结构存储任务;2)使用RedisTemplate操作队列的添加、取出和重试功能。改进后代码保持原有逻辑,但解决了服务重启导致任务丢失的问题,同时保留了异步处理特性。

2025-12-15 14:51:41 314

原创 Mybatis一、二级缓存解析

本文介绍了MyBatis中的一级缓存和二级缓存机制。一级缓存是SqlSession级别的默认缓存,作用范围限于同一SqlSession,执行增删改操作后自动失效。二级缓存是Mapper级别的跨SqlSession缓存,需要手动开启,实体类需实现序列化接口。文章对比了两者的特性差异,并说明了缓存查询顺序:先查二级缓存,再查一级缓存,最后查数据库。最后建议生产环境用Redis替代二级缓存,避免数据不一致问题,指出一级缓存仅适用于单次SqlSession场景。

2025-12-14 15:01:35 516

原创 网关路由后出现接口正常异常交替的问题处理

接口升级后新增字段返回不稳定,排查发现是集群部署问题。解决方案包括:确保接口返回使用类结构而非Map,检查集群版本一致性,通过连续请求确认是否存在轮询问题。最终发现Nacos配置中服务实例版本不一致,需下线错误实例或统一集群版本。附配置检查截图。(99字)

2025-11-27 15:23:57 227

原创 异步批量任务日志穿插问题解决

异步批量任务中日志穿插问题可以通过MDC(Mapped Diagnostic Context)和TraceID解决。在Java异步任务执行时,为每个任务设置独立的traceId和任务名称存入MDC,并在finally块中清理。Logback配置中添加traceId和taskName的日志输出模式,使每条日志都能关联到具体任务。该方法能清晰区分不同任务的日志,方便错误排查。实现方式包括:1) 任务执行前设置MDC参数;2) 配置Logback输出格式;3) 任务完成后清理MDC。最终日志会显示对应任务的ID和

2025-11-05 17:40:18 910

原创 CONCAT函数使用中出现空指针异常问题分析

MySQL CONCAT函数使用中出现空指针异常问题分析。开发人员在执行SQL查询时,使用CONCAT函数拼接字段值(software_name、software_version和developer),结果出现NullPointerException。异常日志显示堆栈来自CodeCheckTaskServiceImpl的deleteFailedTasks方法。初步判断问题可能源于:1) 待拼接字段中存在NULL值;2) 传入的查询参数list可能为空。建议解决方案:1) 使用CONCAT_WS函

2025-11-04 14:32:50 239

原创 Java下划线转驼峰序列化

本文介绍了将带下划线的JSON数据转换为驼峰命名的两种实现方式。第一种针对单个实体类,通过ObjectMapper设置SNAKE_CASE命名策略实现自动转换;第二种处理List结构,同样利用命名策略并配合TypeFactory进行类型转换。两种方法都基于Jackson库的PropertyNamingStrategies实现字段名的自动映射转换,适用于API返回数据处理场景。文中提供了完整的Java代码示例,包括实体类定义和JSON转换工具方法。

2025-10-10 15:30:49 538

原创 PostgreSQL表备份并重命名出现索引、外键仍指向旧表,恢复后仍失败的问题

摘要:本文分析了PostgreSQL表重命名后出现外键和索引问题的原因,包括约束名称未更新、系统目录表未同步等。提供了三种解决方案:完整的表交换流程(禁用外键→重命名→重建约束)、模式切换法(使用不同schema)和视图抽象法。最后给出了检查脚本和重要提示,强调处理表复制时需特别注意外键约束和索引命名问题,建议彻底检查所有依赖关系。

2025-09-26 16:13:42 693

原创 Linux文件下载卡在0%进度问题处理

文件下载进度卡在0%可能是权限问题导致。解决方法:1)使用sudo -i获取root权限;2)进入目标目录;3)执行chmod -R 777命令递归修改目录权限。此方法可解决因权限不足导致的下载异常情况。

2025-09-20 21:58:44 213

原创 idea、服务器、数据库环境时区不一致问题

开发中遇到SQL查询时间字段在本地和线上环境显示不一致的问题。本地IDEA显示为东八区时间,而服务器和数据库显示UTC时间。这是由于三者时区配置不一致导致的。解决方案包括:1)在应用配置中设置数据库连接时区和初始化SQL;2)在Dockerfile中配置东八区时区;3)检查并设置服务器时区为东八区。通过统一时区配置可解决该问题,确保环境一致性。

2025-09-09 17:18:00 638

原创 gitlab私服搭建

本文介绍了通过Docker部署GitLab的完整步骤,重点解决了500错误和域名访问问题。关键步骤包括:1)创建数据目录;2)使用--shm-size 256m参数启动容器,避免500错误;3)配置端口映射(443/80/2222)和持久化存储;4)修改hosts文件绑定域名;5)通过控制台重置root密码;6)创建初始化项目。文中提供了详细命令和截图指引,并标注了常见问题解决方法,如必须添加共享内存参数等,最终实现GitLab的稳定部署和访问。

2025-07-22 11:56:48 475

原创 SpringBoot-允许跨域配置

允许跨域配置

2025-05-27 22:09:42 391

原创 动态规划-01-称砝码

现在要用这些砝码去称物体的重量(放在同一侧),问能称出多少种不同的重量。特别地,称重重量包括0。输出一个整数,代表利用给定的砝码可以称出的不同的重量数。。

2025-03-07 17:39:19 462

原创 xxl-job配置及简单使用

xxl-job官网XXL-JOB是一个分布式任务调度平台,主要包含调度中心执行器两个部分。传统的定时任务存在的问题:(如:jdk自带的Timer、基于线程池设计的定时任务类、Spring Task、Quartz等)当单机无法承载用户流量时,不能保证消息的幂等性(即:不会多发,也不会漏发消息)。任务异常结束了没有处理方法没有友好的可视化界面。

2025-03-03 16:21:48 2915

原创 MinIO整合SpringBoot实现文件上传、下载

与MQ类似,需要先部署服务,也有相应的图形化界面便于查看。写好配置文件,使用MinIO提供好的方法类即可。以上为个人学习分享,如有问题,欢迎指出:)

2025-02-26 17:26:19 1414

原创 Mybatis-Plus使用page类实现分页查询

引入依赖,注意版本问题写好config配置类,注意扫描配置类的路径配置传参pageNum和pageSize给定

2025-02-23 22:03:41 1898

原创 git使用-克隆远程项目、分支管理

切换到需要合入的主分支-》选择需要被合并的次分支-》点击“merge “xxxx” into ‘xxx’”例如:feature_20250221_userModule。选择要切换的分支,右击“checkout”即可。分命名规则:feature_年月日_开发的命名。以上为个人学习分享,如有问题,欢迎指出:)可以查看到主分支中出现了次分支中的内容。出现下方弹窗,选择git,点ok即可。勾选“trust project”右下角点击主分支“main”点击“new branch”右下角可看到分支已建好。

2025-02-21 13:55:38 580

原创 TCP协议:三次握手、四次挥手

三次握手是TCP协议中用于建立连接的过程。第一次,表示请求建立连接。第二次,表示同意建立连接。第三次,表示确认收到接收端的SYN/ACK。为什么2次不可以?一定要3次?为了确保连接的可靠性。第一次握手,客户端向服务端发送消息;第二次握手,服务端给予响应;第三次握手,客户端对服务端的响应给予响应。如果没有第三次握手,服务端将不能得知发送给客户端的内容是否正常收到。四次挥手是TCP协议中用于断开连接的过程。这里以服务端主动发起断开连接为例来进行说明。

2025-01-05 15:34:33 465

原创 git使用-创建本地仓库、绑定远程仓库

以github为例,简单介绍下仓库的创建及绑定,方便忘记了能快速的想起来。

2024-12-08 12:01:21 572

原创 sql删除冗余数据

工作或面试中经常能遇见一种场景题:删除冗余的数据,以下是举例介绍相应的解决办法。

2024-12-04 17:00:42 711

原创 区间-01-合并区间

请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].:区间 [1,4] 和 [4,5] 可被视为重叠区间。

2024-11-27 16:42:57 639

原创 二分查找-02-搜索插入位置

给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。输入: nums = [1,3,5,6], target = 5。输入: nums = [1,3,5,6], target = 2。输入: nums = [1,3,5,6], target = 7。请必须使用时间复杂度为 O(log n) 的算法。

2024-11-25 12:36:56 269

原创 字符串-07-判断两个IP是否属于同一子网

华为od算法——HJ39 判断两个IP是否属于同一子网

2024-11-22 14:18:17 1162

原创 数组-02-明明的随机数

华为od算法——HJ03 明明的随机数

2024-11-20 11:41:38 1026

原创 一致性哈希介绍及原理

减少数据迁移:只在服务器变化时,少量数据需要迁移,而不是所有数据都要重新分配。均匀分配:通过哈希函数,数据和服务器均匀分布在环上,避免某些服务器负载过重。

2024-11-11 18:21:05 510

原创 事务注解@Transactional失效的情况解析

理解注解失效的情况,先要谈Spring中注解的实现原理,是以动态代理的形式出现的,如果无法实现动态代理,注解自然就无法生效。另外,如果类没有被Spring管理,其上的注解也不会生效。此外,如果执行事务的过程中遇到异常却没有回滚处理,不同事务之间的传播机制的问题,或者Spring管理不正确也会导致失效。因此,注解动态代理无法实现Spring管理不当事务遇到异常未回滚接下来将分别进行介绍。

2024-11-08 16:54:27 1450

原创 Java手写二分查找

二分查找Java代码实现

2024-11-07 11:53:08 202

原创 Java实现JWT登录认证

JWT(Json Web Token),简单来说就是:web领域中基于json格式的令牌。是最常用的令牌规范。第一部分:Header(头),指定了令牌的签名算法、令牌类型。第二部分:Payload(有效载荷),使用Base64来编码的,不是加密算法,能够解码。因此,该部分不适合存放用户的私密信息(如:密码)。第三部分:Signature(签名),将第一部分和第二部分通过密钥加密得到。解析Token可以根据第三部分解密得到前两部分的信息,再比对前端传来的用户信息,完成校验。

2024-11-05 16:10:12 1330

原创 字符串-06-整数与ip地址之间的转换

华为od算法——HJ33

2024-11-04 13:51:18 505

原创 双指针-01-三数之和

给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i!= k ,同时还满足 nums[i] + nums[j] + nums[k] == 0。请你返回所有和为 0 且不重复的三元组。,遍历数组时对于每个元素都指定双指针,一个最左,一个最右,能够减少一半的遍历开销,还能数组下标不重复。

2024-10-30 12:52:07 354

原创 字符串-05-字符串合并处理

华为od算法——HJ30

2024-10-29 16:11:05 1066

原创 锁总结(分类、介绍、选择)

锁总结

2024-10-29 12:47:22 792

原创 SpringBoot构建父子工程

父工程中,定义打包类型为pom,便于管理;并且列出子模块module。子工程中,定义parent信息。

2024-10-25 12:24:47 815

原创 字符串-04-字符串加解密

华为od算法——HJ29

2024-10-24 11:37:13 1127

原创 解决n+1查询数据库问题

可以通过批量查询或join联表查询来获取。

2024-10-23 13:52:33 973

空空如也

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

TA关注的人

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