- 博客(506)
- 资源 (6)
- 收藏
- 关注
原创 jenkins 权限控制(用户只能看指定的项目)
本文介绍了Jenkins权限控制配置步骤:1)安装Role-based插件;2)设置授权策略;3)创建全局角色kaifa仅授予Overall的read权限;4)创建项目角色jcl,通过正则匹配项目名称;5)为用户分配全局和项目角色;6)登录验证权限设置。重点提示全局角色不要授权job权限,否则项目权限会失效。该配置可实现用户仅查看指定项目的权限控制。
2025-12-13 14:15:43
376
原创 Job for rabbitmq-server.service failed because the control process exited with error code. See “syst
Linux安装RabbitMQ时出现服务启动失败报错,提示"Job for rabbitmq-server.service failed"。通过执行systemctl status rabbitmq-server和journalctl -xe查看详细错误信息。解决方法很简单:先运行sudo yum update -y更新系统软件包缓存,然后重新启动RabbitMQ服务即可恢复正常。该问题通常是由于系统依赖包未更新导致的。
2025-12-10 13:58:47
41
原创 给运行中的docker容器添加对外映射端口
本文介绍了Docker容器端口映射的两种实现方式。首次启动容器时,可通过-p参数直接指定端口映射;对于已运行的容器,提供了两种新增端口的方法:一是将容器打包为新镜像后重新映射端口,二是修改hostconfig.json和config.v2.json配置文件。文章详细说明了配置文件的修改步骤,并分析了config.v2.json中Ports字段与hostconfig.json中PortBindings字段的区别与联系,建议优先使用PortBindings进行端口映射配置。两种方式各适用于不同场景,用户可根据实
2025-12-09 15:14:16
42
原创 恢复 Linux 上误删除的文件
摘要:在CentOS 9系统中尝试使用testdisk工具恢复误删文件失败。腾讯云开发者社区提供了三种Linux文件恢复方案,包括testdisk恢复方法、CentOS数据恢复指南等,但实际操作中第一种方法未能成功找回文件。建议尝试其他恢复方案或寻求专业技术支持。
2025-12-04 17:35:35
175
原创 docker安装宝塔,并使用nginx配置域名访问
摘要:本文介绍在Docker中安装宝塔面板的详细步骤。首先使用CentOS 7.2镜像创建容器并映射多个端口,然后执行宝塔安装脚本。安装完成后需注意随机端口问题,需进入容器将宝塔端口修改为映射端口8888,并在云服务器安全组开放对应端口。文章还提供了通过二级域名访问宝塔的方法,包括Nginx配置和WebSocket支持设置,最后建议修改宝塔访问入口为更简洁的路径。安装过程中可能遇到DBus连接失败等常见问题。
2025-12-01 11:13:11
55
原创 MyBatis映射MySQL中的JSON数据类型
MySQL插入JSON数据时报错"Data truncation: Cannot create a JSON value from a string with CHARACTER SET 'binary'"的解决方案包括:1)使用String或Map类型直接映射;2)推荐使用自定义TypeHandler结合Jackson库处理JSON转换;3)MyBatis-Plus用户可用注解简化配置;4)XML映射中需明确指定typeHandler。问题根源在于二进制字符集无法直接转为JSON值,通
2025-11-12 11:54:12
525
原创 No typehandler found for property xxxx
MyBatis映射文件解析错误:未找到类型处理器 摘要: 错误发生在解析CouponMapper.xml文件时,系统提示"Notypehandlerfoundforpropertyrule"。原因是MyBatis在处理"rule"属性时找不到合适的类型处理器。解决方案是自定义JsonTypeHandler类,继承BaseTypeHandler,实现JSON数据的转换处理。该处理器能将Java对象转换为JSON字符串存入数据库,也能将数据库中的JSON字符串反序列化为J
2025-11-11 15:26:44
152
原创 BigDecimal Postman 返回正常精度前端接收不正常(前后端交互丢失精度)
摘要:BigDecimal类型字段在前端交互时出现精度丢失问题,如"12345671234567.12345"变为"12345671234567.123"。主要原因是JavaScript数字类型限制和JSON序列化机制。解决方案包括:1)使用Jackson的@JsonSerialize(using=ToStringSerializer.class)注解将BigDecimal序列化为字符串;2)直接使用String类型;3)配置Jackson强制BigDecimal转为
2025-10-16 09:37:50
474
原创 数据库外键约束规则
摘要:ONDELETERESTRICT是数据库外键约束规则,用于阻止删除父表中被子表引用的记录,确保数据完整性。当子表存在关联记录时,系统会阻止删除操作。与其他约束不同,RESTRICT会直接阻止删除,而CASCADE会级联删除子表记录,SETNULL则将外键设为NULL。该约束适用于需要保持数据强关联的场景(如订单与订单项)。使用时需检查存储引擎支持(如InnoDB)和约束配置是否正确。
2025-10-14 10:03:23
76
原创 后端怎么确保与前端传递的价格一致
后端确保与前端价格一致的技术方案:1.采用双重计算校验机制,后端独立计算并与前端提交金额比对;2.实施安全防护,包括参数签名验证和事务性操作;3.通过预提交接口和统一数据类型优化协同;4.建立日志审计和数据库约束等监控兜底措施。方案结合实时计算、防篡改和事务控制,有效保障价格一致性,适用于各类交易场景。
2025-10-13 15:25:29
401
原创 购物车、订单表、订单详情表数据库设计
本文介绍了购物车系统的数据库表设计,主要包括用户表、商品表、购物车表和订单表等核心结构。设计方案遵循关系数据库范式,采用主表+明细表结构,通过外键建立关联关系。重点说明了购物车详情表的设计以解决范式问题,订单表的状态跟踪机制,以及商品表的属性管理。同时提供了MySQL建表示例,包含字段定义、外键约束和索引优化建议,强调时间戳自动维护、级联删除策略和价格实时查询等关键设计原则,确保数据一致性和查询性能。
2025-10-13 11:36:42
130
原创 MySQL排序规则utf8mb4_0900_ai_ci解析
MySQL8.0新增的utf8mb4_0900_ai_ci排序规则基于Unicode9.0标准,支持四字节存储和精确排序,但不兼容低版本MySQL。该规则不区分大小写和音调,适合新项目使用。若需兼容老系统,可替换为utf8mb4_general_ci(性能优先)或utf8mb4_unicode_ci(准确性优先)。解决方案包括升级MySQL8.0+或批量修改SQL文件中的排序规则。
2025-10-13 10:48:11
462
原创 java中的TimeZone、ZoneId和ZoneOffset
Java时区处理对比:TimeZone与ZoneId/ZoneOffset TimeZone(传统方式):处理时区偏移和夏令时,支持通过ID获取时区(如"Asia/Chongqing"),但线程安全性需注意。JDK8后推荐使用ZoneId替代。 ZoneId(Java8+):表示地理时区(如"America/New_York"),支持固定偏移和区域时区,自动处理夏令时转换,与LocalDateTime等配合使用更现代。 ZoneOffset:专用于固定时区偏移(如+0
2025-10-11 09:30:08
636
原创 java8提取list中对象有相同属性值的对象或属性值
本文介绍了三种Java Stream处理对象列表中重复数据的方法:1) 使用Collectors.groupingBy按属性分组后筛选计数大于1的条目,可获取重复对象或生成属性值映射;2) 通过Collectors.toMap统计属性出现次数,过滤出重复值;3) 使用TreeSet按特定属性去重。文中提供了完整代码示例,并强调需正确实现equals()和hashCode()方法,注意并行流线程安全问题。这些方法支持单属性和多属性组合的重复数据处理,结果可输出为列表、Map或拼接字符串格式。
2025-10-09 09:40:11
313
转载 Springboot使用redisson + 自定义注解实现消息的发布订阅(解决方案)
Redisson是一个基于Redis的Java分布式框架,提供分布式集合、锁和对象等服务。文章介绍了Redisson的基本功能和使用场景,包括分布式缓存、锁和任务调度。通过自定义注解实现消息发布订阅的优雅解决方案,详细展示了从依赖配置、初始化客户端到实现监听器的完整流程。这种方案避免了手动编码的繁琐,适合不需要引入MQ中间件的小型场景。
2025-10-09 08:53:17
99
原创 使用rabbitmq发送消息时消息体转换报错
【摘要】RabbitMQ消息处理报错,主要原因为JSON反序列化类型不匹配:期望String类型但实际收到Object。错误发生在"pay.queue"队列的消息处理过程中,虽然配置了Jackson2JsonMessageConverter序列化方式,但队列绑定配置错误(将delayProtocolValidQueue错误绑定到pay.key)。业务功能正常但持续报错,三天后发现是交换机与队列绑定配置问题导致。解决方案包括:1)统一配置消息转换器;2)修正队列绑定关系。该案例表明MQ配置
2025-09-25 18:05:24
211
原创 docker单个nginx容器部署多个vue项目
摘要:本文介绍Docker部署多个Vue项目的三种方法:1)独立容器法,为每个项目创建单独容器,通过不同端口访问;2)Nginx反向代理法,使用单个容器通过路径区分不同应用;3)分域名部署法,通过不同域名访问各项目。重点详解了前两种方法的实施步骤,包括Dockerfile编写、Nginx配置和容器运行命令,并比较了隔离部署与资源优化的适用场景。部署时需注意Vue项目的publicPath设置和Nginx的路径匹配规则。
2025-09-24 01:11:23
221
原创 在ubuntu中使用ufw命令开放端口后,docker部署的应用端口无法访问
摘要:用户在Ubuntu系统中尝试开放端口时遇到问题。最初使用firewalld未成功,后改用ufw开放22端口后可以访问,但导致Docker容器无法连接。通过重启Docker服务解决了问题(sudo service docker restart)。其他可能的解决方案包括:1)检查NAT转发规则;2)重置docker0网络(pkill docker,清除iptables规则等)。文章指出该问题可能与防火墙规则冲突有关,建议需要时深入学习防火墙知识。最终通过简单重启Docker服务解决了访问问题。
2025-09-22 00:40:23
237
原创 ubuntu防火墙开放端口
本文介绍了Linux系统中使用UFW防火墙的基本操作命令:1)启用防火墙sudo ufw enable;2)开放22号和8182端口sudo ufw allow 22、sudo ufw allow 8182/tcp;3)重载配置sudo ufw reload;4)查看状态sudo ufw status;5)检查80端口开放情况lsof -i:80。这些命令涵盖了防火墙的开启、端口配置和管理等基础操作。
2025-09-21 23:53:10
304
原创 maven下载历史版本
本文介绍了如何下载特定版本的Apache Maven。首先访问Maven官网,在"Other Releases"中找到"Maven3 archives",然后选择所需版本目录(如3.9.6),进入"binaries"子目录。最后根据系统选择下载格式:Linux/macOS用户下载.tar.gz文件,Windows用户下载.zip文件。
2025-09-21 20:21:36
700
原创 使用redisson实现延迟消息队列
Redisson实现延迟消息队列方案结合ZSET和BlockingQueue,通过RDelayedQueue存储延迟消息,RBlockingQueue处理到期消息。SpringBoot集成需配置RedissonClient并实现工具类,包含发送消息和消费者线程。生产环境建议增加重试机制、幂等控制和监控告警。相比Key过期事件和RocketMQ方案,Redisson支持分布式且内置重试,适用于订单超时等定时场景。完整实现参考官方文档和GitHub模板。
2025-09-19 16:07:47
93
原创 使用redisson实现延迟队列
Redisson延迟队列实现分布式延迟任务管理,通过ZSET存储任务(执行时间戳为score)和LIST实现目标队列。核心流程包括:1)任务存储到ZSET并排序;2)后台线程定期扫描到期任务并转移到阻塞队列;3)消费者通过take()阻塞获取任务。示例代码展示了从配置到生产消费的完整实现,支持秒级精度,依赖Redis持久化保证可靠性,适合订单超时等场景。需注意失败重试需业务层自行实现。
2025-09-19 15:44:34
245
原创 redisson延迟队列最佳实践
Redisson延迟队列最佳实践摘要:介绍了使用Redisson实现延迟任务的方法,包括初始化配置、添加任务、处理任务等核心步骤。强调了性能优化要点:批量处理、错误处理机制、监控和持久化配置。提供了高级特性应用示例,如死信队列处理失败任务。通过合理配置和资源管理,可构建高效可靠的延迟任务系统。
2025-09-19 15:13:23
204
原创 SpringBoot2.7X整合Swagger、Redission3.X的bug
摘要:在SpringBoot 2.7.0项目中整合Redisson和Swagger时,出现"Failed to start bean 'documentationPluginsBootstrapper'"错误。原因是redisson-spring-boot-starter 3.10.1自动引入的actuator与knife4j-openapi2 4.4.0冲突。解决方案是在引入redisson依赖时排除actuator模块,具体通过<exclusions>标签移除spring
2025-09-19 09:35:44
253
原创 java微信延迟支付 微信支付延迟付款
本文介绍了基于Redis实现的延时队列方案,用于解决支付回调不可达导致的订单状态不一致问题。方案采用Redisson实现,包含两个实现方式:定时任务和延时队列。重点讲解了延时队列的实现,包括核心实体类设计(DelayQueueJob、ScoredSortedItem)、常量定义、ZSet操作类(DelayBucket)、任务池管理(DelayQueueJobPool)以及队列监听初始化等关键组件。通过配置不同的延时时间(5秒/30秒/1分钟等),系统可自动查询支付状态,多次查询失败后自动关单。该方案相比定时
2025-09-17 10:21:15
81
原创 RabbitMQ、Kafka、RocketMQ以及Redis 实现消息队列介绍,优缺点对比
本文系统介绍了消息队列技术及其在Redis中的实现方式。首先阐述了消息队列的基本概念、核心特性(有序性、重复消息处理、可靠性)和典型应用场景(商品秒杀、系统解耦)。然后对比分析了三种主流消息中间件(RabbitMQ、Kafka、RocketMQ)的特点和适用场景。重点讲解了Redis实现消息队列的三种方法:基于List的FIFO队列(支持阻塞读取和消息备份)、发布订阅模式(支持频道和模式订阅)以及Stream类型(支持消息分组、确认机制和全局唯一ID)。最后指出Redis适合轻量级消息队列场景,而重量级场景
2025-09-17 09:58:09
193
原创 在java中写出流和写入流实例哪些可以不用关闭及常见使用场景
Java流资源关闭规范:标准输入输出流(System.in/out/err)和内存流(ByteArray)可不关闭,但文件/网络/缓冲/对象流必须关闭。推荐使用try-with-resources自动管理,或finally块手动关闭。最佳实践建议统一显式关闭所有流以确保资源释放,避免潜在问题。典型场景包括文件读写、多资源管理、数据库连接和网络操作等,通过实现AutoCloseable接口支持自动关闭机制。
2025-09-13 11:28:39
632
原创 SpringBoot大文件下载失败解决方案
SpringBoot大文件下载失败解决方案摘要 针对SpringBoot大文件下载失败问题,主要原因是内存溢出、超时设置和网络不稳定。解决方案包括:1)后端采用流式传输和分块传输技术,避免内存溢出;2)调整Nginx配置,优化缓冲区和超时参数;3)前端实现分片下载和断点续传功能;4)增加HTTP超时时间并优化网络层配置。综合运用这些措施可有效解决大文件下载问题,提升系统稳定性。
2025-09-13 10:56:36
224
原创 在springboot中使用mock做controller层单元测试,请求示例包括GET(带参数)、POST(带请求头)、下载文件、上传文件等
本文介绍了SpringBoot中使用MockMvc进行Controller层测试的完整示例,涵盖5种常见场景:GET带路径参数和查询参数测试、POST带请求头和JSON体测试、文件下载和上传测试。每个场景都提供了测试代码和对应的Controller方法实现,并说明了测试类的基础配置方法,包括MockMvc自动配置和服务层模拟。这些示例展示了如何验证HTTP状态码、响应头、JSON路径和文件内容,为开发人员提供了全面的Controller测试参考方案。
2025-09-13 09:57:05
128
原创 Java与Vue前后端Excel导入交互解决方案
摘要 针对Java后端Excel导入需返回不同响应类型(文件流或JSON),而Vue前端需统一处理的问题,提出完整解决方案: 后端实现: 成功时返回JSON响应(Content-Type: application/json) 有错误时返回Excel文件流(设置Content-Disposition和Excel MIME类型) 前端处理: 使用axios默认配置responseType: 'blob' 通过响应拦截器动态判断内容类型: JSON响应:将Blob转为JSON对象 文件流:处理下载逻辑 提供错误文
2025-09-10 17:21:15
80
原创 同一台nginx中配置多个前端项目的三种方式
本文介绍了在Nginx服务器上部署多个Vue3前端项目的三种方式:1)多个二级域名方式,每个二级域名对应一个项目,配置简单清晰;2)端口转发方式,通过非80端口监听再转发到80端口,配置复杂且需要启动多个server;3)同一server基于location配置方式,但可能出现静态资源404或MIME类型错误问题。作者重点分析了第三种方式的问题现象,包括静态资源加载失败和模块脚本类型错误,并提供了相关参考链接。其中第一种多二级域名方式最为推荐,配置简洁直观。
2025-09-06 15:23:04
888
原创 学习nginx location ~ .*.(js|css)?$语法规则
本文详细解析了Nginx中location指令的匹配规则,重点介绍了location~.*\.(js|css)?$这一正则匹配语法的应用。内容涵盖7种匹配模式(=、^~、~、~、!~、!~、/)的优先级顺序和实际应用场景,并提供了静态文件处理、动态请求转发等典型配置示例。文章还补充了Rewrite语法、防盗链配置、文件缓存设置等实用技巧,帮助开发者掌握Nginx性能优化的核心配置方法。通过合理运用这些规则,可以显著提升Web服务器的处理效率。
2025-09-06 09:43:12
951
原创 springboot中Controller、Interceptor、Filter的执行顺序
摘要:本文演示了在Spring Boot中创建两个过滤器(OneFilter、TwoFilter)和一个拦截器(interceptor)的过程。通过访问controller方法发现,过滤器执行会包含拦截器,且拦截器在过滤器的doFilter方法内执行。特别强调:整个请求过程中使用的response对象是同一个,需注意避免重复调用getWriter()方法,否则会报错"getWriter() has already been called for this response"。该问题在CS
2025-09-05 14:02:27
359
转载 getWriter() has already been called for this response 的解决办法
【摘要】在SpringBoot项目中,当多次调用response.getWriter()时会抛出"getWriter() has already been called for this response"异常。问题代码中同时使用了getWriter()和getOutputStream(),而HTTP响应输出流只能被调用一次。正确做法是统一使用OutputStream方式输出JSON数据:通过response.getOutputStream()获取流,将JSON字符串转为字节数组写入,最
2025-09-05 13:49:11
157
原创 生产环境中redis的SCAN命令如何替代KEYS命令?
本文介绍了使用SCAN命令替代KEYS的完整方案。SCAN通过游标分批迭代,避免KEYS命令遍历整个键空间导致的阻塞风险。文章详细说明了SCAN的基础语法、迭代流程和Java实现示例,强调必须关闭Cursor避免连接泄漏。针对生产环境,提供了COUNT参数调优、客户端去重、集群模式适配等优化建议,并列举了典型错误场景。SCAN通过分批次迭代和游标管理,可安全实现高性能键空间遍历。全文150字。
2025-09-03 16:44:34
99
原创 redis中查询key是否存在的命令
Redis提供多种方式检查key是否存在:1)EXISTS直接返回存在状态;2)TYPE通过返回none判断不存在;3)GET等命令返回nil/0间接判断。注意EXISTS支持多key检查,避免使用KEYS *而改用SCAN命令。
2025-09-03 16:42:01
165
原创 redis操作命令报错:(error) WRONGTYPE Operation against a key holding the wrong kind of value
Redis数据类型冲突解决方案 原因:Redis操作错误通常因键值类型不匹配,例如对字符串使用列表命令。 解决方法: 检查键类型:TYPE key 删除冲突键:DEL key 规范操作: 字符串用GET/SET,哈希用HGET/HSET 添加版本前缀避免冲突 示例: 错误:GET user_hash(实际为Hash) 正确:HGETALL user_hash 提示:操作前需确认数据类型,必要时先删除旧键。
2025-09-03 16:27:30
722
原创 redis中五大数据类型的操作命令
Redis五大数据类型核心命令解析:String适用于缓存和计数器;List支持双向操作,可用于消息队列;Set保证元素唯一性,适合标签系统;Sorted Set通过分数排序,实现排行榜功能;Hash适合存储对象数据。各数据类型命令设计针对不同场景需求,与Swagger2分组排序类似,需根据数据特性选择合适操作方式,如有序集合可满足自定义排序需求。
2025-09-03 16:20:18
49
转载 工作中常见的 6 种设计模式,以及其使用场景?
哈喽,大家好。平时我们写代码呢,多数情况都是流水线式写代码,基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中,我都使用过哪些设计模式。
2025-09-02 17:08:24
47
原创 springboot中@EnableAsync和@Async的使用
摘要:本文详细介绍了Spring框架中@Async异步执行注解的使用方法。主要内容包括:1.基础配置,需通过@EnableAsync启用支持,建议自定义线程池;2.方法级使用要求,必须是public方法,支持void或Future返回值;3.典型应用场景,如耗时任务、批量处理等;4.线程池配置方案,包含核心参数设置和异常处理;5.监控方案,通过Micrometer采集指标,结合Prometheus可视化展示。文章还提供了@Async与@Scheduled结合使用的示例,并强调了同类调用失效、事务边界等注意事
2025-09-02 11:50:50
176
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅