自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DN金猿的博客

爱好编程的小沙弥

  • 博客(510)
  • 资源 (6)
  • 收藏
  • 关注

原创 使用ubuntu安装nginx时报错

摘要:在编译安装Nginx时出现"creating DT_TEXTREL in a PIE collect2: error: ld returned 1 exit status"错误,主要原因是系统中已有Nginx进程在运行(包括Docker容器中的Nginx)。解决方法为:1)关闭运行的Nginx进程;2)停止容器中的Nginx服务。若问题仍未解决,可参考相关技术文章排查其他可能原因。该错误提示表明链接器在创建位置无关可执行文件时遇到了问题。

2026-01-20 11:08:55 35

原创 docker实现导出、导入和数据搬迁

Docker数据迁移主要有两种方式:镜像备份和容器备份。镜像备份可通过docker save导出为tar包并用docker load导入,或使用docker export导出后通过docker import导入。数据迁移最直接的方法是复制volume路径,可在容器配置文件的Binds项中找到volume设置路径,然后在新服务器上指定相同路径运行容器即可完成迁移。

2026-01-17 14:09:40 50

原创 Ubuntu 24.04 安装 Docker

本文详细介绍了在VMware中的Ubuntu 24.04服务器上安装Docker的完整流程。主要内容包括:1) 环境准备,建议先创建系统快照;2) 通过阿里云镜像源安装Docker Engine及相关组件;3) 配置国内镜像加速器提升下载速度;4) 将普通用户添加到docker用户组以获取权限。文中提供了详细的命令说明和配置示例,确保用户能够高效、安全地部署和使用Docker。通过验证hello-world镜像运行,确认Docker安装成功并配置正确。

2026-01-17 11:13:10 93

原创 ubuntu在apt安装时出现的弹窗详解

Ubuntu 22.04 LTS在使用apt安装或更新软件时会出现"Daemons using outdated libraries"弹窗,这是由needrestart命令引入的新功能。默认的交互模式(i)会中断安装过程提示用户操作。要禁用弹窗,可修改/etc/needrestart/needrestart.conf文件,将$nrconf{restart}的值从默认的'i'改为'a'(自动重启)或'l'(仅列出需重启服务)。这一改动能避免安装过程中频繁弹出提示窗口。

2026-01-17 10:56:53 82

原创 jenkins 权限控制(用户只能看指定的项目)

本文介绍了Jenkins权限控制配置步骤:1)安装Role-based插件;2)设置授权策略;3)创建全局角色kaifa仅授予Overall的read权限;4)创建项目角色jcl,通过正则匹配项目名称;5)为用户分配全局和项目角色;6)登录验证权限设置。重点提示全局角色不要授权job权限,否则项目权限会失效。该配置可实现用户仅查看指定项目的权限控制。

2025-12-13 14:15:43 453

原创 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 86

原创 给运行中的docker容器添加对外映射端口

本文介绍了Docker容器端口映射的两种实现方式。首次启动容器时,可通过-p参数直接指定端口映射;对于已运行的容器,提供了两种新增端口的方法:一是将容器打包为新镜像后重新映射端口,二是修改hostconfig.json和config.v2.json配置文件。文章详细说明了配置文件的修改步骤,并分析了config.v2.json中Ports字段与hostconfig.json中PortBindings字段的区别与联系,建议优先使用PortBindings进行端口映射配置。两种方式各适用于不同场景,用户可根据实

2025-12-09 15:14:16 69

原创 恢复 Linux 上误删除的文件

摘要:在CentOS 9系统中尝试使用testdisk工具恢复误删文件失败。腾讯云开发者社区提供了三种Linux文件恢复方案,包括testdisk恢复方法、CentOS数据恢复指南等,但实际操作中第一种方法未能成功找回文件。建议尝试其他恢复方案或寻求专业技术支持。

2025-12-04 17:35:35 183

原创 docker安装宝塔,并使用nginx配置域名访问

摘要:本文介绍在Docker中安装宝塔面板的详细步骤。首先使用CentOS 7.2镜像创建容器并映射多个端口,然后执行宝塔安装脚本。安装完成后需注意随机端口问题,需进入容器将宝塔端口修改为映射端口8888,并在云服务器安全组开放对应端口。文章还提供了通过二级域名访问宝塔的方法,包括Nginx配置和WebSocket支持设置,最后建议修改宝塔访问入口为更简洁的路径。安装过程中可能遇到DBus连接失败等常见问题。

2025-12-01 11:13:11 78

原创 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 534

原创 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 173

原创 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 482

原创 数据库外键约束规则

摘要:ONDELETERESTRICT是数据库外键约束规则,用于阻止删除父表中被子表引用的记录,确保数据完整性。当子表存在关联记录时,系统会阻止删除操作。与其他约束不同,RESTRICT会直接阻止删除,而CASCADE会级联删除子表记录,SETNULL则将外键设为NULL。该约束适用于需要保持数据强关联的场景(如订单与订单项)。使用时需检查存储引擎支持(如InnoDB)和约束配置是否正确。

2025-10-14 10:03:23 82

原创 后端怎么确保与前端传递的价格一致

后端确保与前端价格一致的技术方案:1.采用双重计算校验机制,后端独立计算并与前端提交金额比对;2.实施安全防护,包括参数签名验证和事务性操作;3.通过预提交接口和统一数据类型优化协同;4.建立日志审计和数据库约束等监控兜底措施。方案结合实时计算、防篡改和事务控制,有效保障价格一致性,适用于各类交易场景。

2025-10-13 15:25:29 408

原创 购物车、订单表、订单详情表数据库设计

本文介绍了购物车系统的数据库表设计,主要包括用户表、商品表、购物车表和订单表等核心结构。设计方案遵循关系数据库范式,采用主表+明细表结构,通过外键建立关联关系。重点说明了购物车详情表的设计以解决范式问题,订单表的状态跟踪机制,以及商品表的属性管理。同时提供了MySQL建表示例,包含字段定义、外键约束和索引优化建议,强调时间戳自动维护、级联删除策略和价格实时查询等关键设计原则,确保数据一致性和查询性能。

2025-10-13 11:36:42 151

原创 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 503

原创 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 647

原创 java8提取list中对象有相同属性值的对象或属性值

本文介绍了三种Java Stream处理对象列表中重复数据的方法:1) 使用Collectors.groupingBy按属性分组后筛选计数大于1的条目,可获取重复对象或生成属性值映射;2) 通过Collectors.toMap统计属性出现次数,过滤出重复值;3) 使用TreeSet按特定属性去重。文中提供了完整代码示例,并强调需正确实现equals()和hashCode()方法,注意并行流线程安全问题。这些方法支持单属性和多属性组合的重复数据处理,结果可输出为列表、Map或拼接字符串格式。

2025-10-09 09:40:11 325

转载 Springboot使用redisson + 自定义注解实现消息的发布订阅(解决方案)

Redisson是一个基于Redis的Java分布式框架,提供分布式集合、锁和对象等服务。文章介绍了Redisson的基本功能和使用场景,包括分布式缓存、锁和任务调度。通过自定义注解实现消息发布订阅的优雅解决方案,详细展示了从依赖配置、初始化客户端到实现监听器的完整流程。这种方案避免了手动编码的繁琐,适合不需要引入MQ中间件的小型场景。

2025-10-09 08:53:17 123

原创 使用rabbitmq发送消息时消息体转换报错

【摘要】RabbitMQ消息处理报错,主要原因为JSON反序列化类型不匹配:期望String类型但实际收到Object。错误发生在"pay.queue"队列的消息处理过程中,虽然配置了Jackson2JsonMessageConverter序列化方式,但队列绑定配置错误(将delayProtocolValidQueue错误绑定到pay.key)。业务功能正常但持续报错,三天后发现是交换机与队列绑定配置问题导致。解决方案包括:1)统一配置消息转换器;2)修正队列绑定关系。该案例表明MQ配置

2025-09-25 18:05:24 227

原创 docker单个nginx容器部署多个vue项目

摘要:本文介绍Docker部署多个Vue项目的三种方法:1)独立容器法,为每个项目创建单独容器,通过不同端口访问;2)Nginx反向代理法,使用单个容器通过路径区分不同应用;3)分域名部署法,通过不同域名访问各项目。重点详解了前两种方法的实施步骤,包括Dockerfile编写、Nginx配置和容器运行命令,并比较了隔离部署与资源优化的适用场景。部署时需注意Vue项目的publicPath设置和Nginx的路径匹配规则。

2025-09-24 01:11:23 246

原创 在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 253

原创 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 310

原创 maven下载历史版本

本文介绍了如何下载特定版本的Apache Maven。首先访问Maven官网,在"Other Releases"中找到"Maven3 archives",然后选择所需版本目录(如3.9.6),进入"binaries"子目录。最后根据系统选择下载格式:Linux/macOS用户下载.tar.gz文件,Windows用户下载.zip文件。

2025-09-21 20:21:36 843

原创 使用redisson实现延迟消息队列

Redisson实现延迟消息队列方案结合ZSET和BlockingQueue,通过RDelayedQueue存储延迟消息,RBlockingQueue处理到期消息。SpringBoot集成需配置RedissonClient并实现工具类,包含发送消息和消费者线程。生产环境建议增加重试机制、幂等控制和监控告警。相比Key过期事件和RocketMQ方案,Redisson支持分布式且内置重试,适用于订单超时等定时场景。完整实现参考官方文档和GitHub模板。

2025-09-19 16:07:47 101

原创 使用redisson实现延迟队列

Redisson延迟队列实现分布式延迟任务管理,通过ZSET存储任务(执行时间戳为score)和LIST实现目标队列。核心流程包括:1)任务存储到ZSET并排序;2)后台线程定期扫描到期任务并转移到阻塞队列;3)消费者通过take()阻塞获取任务。示例代码展示了从配置到生产消费的完整实现,支持秒级精度,依赖Redis持久化保证可靠性,适合订单超时等场景。需注意失败重试需业务层自行实现。

2025-09-19 15:44:34 262

原创 redisson延迟队列最佳实践

Redisson延迟队列最佳实践摘要:介绍了使用Redisson实现延迟任务的方法,包括初始化配置、添加任务、处理任务等核心步骤。强调了性能优化要点:批量处理、错误处理机制、监控和持久化配置。提供了高级特性应用示例,如死信队列处理失败任务。通过合理配置和资源管理,可构建高效可靠的延迟任务系统。

2025-09-19 15:13:23 232

原创 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 264

原创 java微信延迟支付 微信支付延迟付款

本文介绍了基于Redis实现的延时队列方案,用于解决支付回调不可达导致的订单状态不一致问题。方案采用Redisson实现,包含两个实现方式:定时任务和延时队列。重点讲解了延时队列的实现,包括核心实体类设计(DelayQueueJob、ScoredSortedItem)、常量定义、ZSet操作类(DelayBucket)、任务池管理(DelayQueueJobPool)以及队列监听初始化等关键组件。通过配置不同的延时时间(5秒/30秒/1分钟等),系统可自动查询支付状态,多次查询失败后自动关单。该方案相比定时

2025-09-17 10:21:15 89

原创 RabbitMQ、Kafka、RocketMQ以及Redis 实现消息队列介绍,优缺点对比

本文系统介绍了消息队列技术及其在Redis中的实现方式。首先阐述了消息队列的基本概念、核心特性(有序性、重复消息处理、可靠性)和典型应用场景(商品秒杀、系统解耦)。然后对比分析了三种主流消息中间件(RabbitMQ、Kafka、RocketMQ)的特点和适用场景。重点讲解了Redis实现消息队列的三种方法:基于List的FIFO队列(支持阻塞读取和消息备份)、发布订阅模式(支持频道和模式订阅)以及Stream类型(支持消息分组、确认机制和全局唯一ID)。最后指出Redis适合轻量级消息队列场景,而重量级场景

2025-09-17 09:58:09 210

原创 在java中写出流和写入流实例哪些可以不用关闭及常见使用场景

Java流资源关闭规范:标准输入输出流(System.in/out/err)和内存流(ByteArray)可不关闭,但文件/网络/缓冲/对象流必须关闭。推荐使用try-with-resources自动管理,或finally块手动关闭。最佳实践建议统一显式关闭所有流以确保资源释放,避免潜在问题。典型场景包括文件读写、多资源管理、数据库连接和网络操作等,通过实现AutoCloseable接口支持自动关闭机制。

2025-09-13 11:28:39 655

原创 SpringBoot大文件下载失败解决方案

SpringBoot大文件下载失败解决方案摘要 针对SpringBoot大文件下载失败问题,主要原因是内存溢出、超时设置和网络不稳定。解决方案包括:1)后端采用流式传输和分块传输技术,避免内存溢出;2)调整Nginx配置,优化缓冲区和超时参数;3)前端实现分片下载和断点续传功能;4)增加HTTP超时时间并优化网络层配置。综合运用这些措施可有效解决大文件下载问题,提升系统稳定性。

2025-09-13 10:56:36 249

原创 在springboot中使用mock做controller层单元测试,请求示例包括GET(带参数)、POST(带请求头)、下载文件、上传文件等

本文介绍了SpringBoot中使用MockMvc进行Controller层测试的完整示例,涵盖5种常见场景:GET带路径参数和查询参数测试、POST带请求头和JSON体测试、文件下载和上传测试。每个场景都提供了测试代码和对应的Controller方法实现,并说明了测试类的基础配置方法,包括MockMvc自动配置和服务层模拟。这些示例展示了如何验证HTTP状态码、响应头、JSON路径和文件内容,为开发人员提供了全面的Controller测试参考方案。

2025-09-13 09:57:05 134

原创 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 86

原创 同一台nginx中配置多个前端项目的三种方式

本文介绍了在Nginx服务器上部署多个Vue3前端项目的三种方式:1)多个二级域名方式,每个二级域名对应一个项目,配置简单清晰;2)端口转发方式,通过非80端口监听再转发到80端口,配置复杂且需要启动多个server;3)同一server基于location配置方式,但可能出现静态资源404或MIME类型错误问题。作者重点分析了第三种方式的问题现象,包括静态资源加载失败和模块脚本类型错误,并提供了相关参考链接。其中第一种多二级域名方式最为推荐,配置简洁直观。

2025-09-06 15:23:04 911

原创 学习nginx location ~ .*.(js|css)?$语法规则

本文详细解析了Nginx中location指令的匹配规则,重点介绍了location~.*\.(js|css)?$这一正则匹配语法的应用。内容涵盖7种匹配模式(=、^~、~、~、!~、!~、/)的优先级顺序和实际应用场景,并提供了静态文件处理、动态请求转发等典型配置示例。文章还补充了Rewrite语法、防盗链配置、文件缓存设置等实用技巧,帮助开发者掌握Nginx性能优化的核心配置方法。通过合理运用这些规则,可以显著提升Web服务器的处理效率。

2025-09-06 09:43:12 958

原创 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 365

转载 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 186

原创 生产环境中redis的SCAN命令如何替代KEYS命令?

本文介绍了使用SCAN命令替代KEYS的完整方案。SCAN通过游标分批迭代,避免KEYS命令遍历整个键空间导致的阻塞风险。文章详细说明了SCAN的基础语法、迭代流程和Java实现示例,强调必须关闭Cursor避免连接泄漏。针对生产环境,提供了COUNT参数调优、客户端去重、集群模式适配等优化建议,并列举了典型错误场景。SCAN通过分批次迭代和游标管理,可安全实现高性能键空间遍历。全文150字。

2025-09-03 16:44:34 109

原创 redis中查询key是否存在的命令

Redis提供多种方式检查key是否存在:1)EXISTS直接返回存在状态;2)TYPE通过返回none判断不存在;3)GET等命令返回nil/0间接判断。注意EXISTS支持多key检查,避免使用KEYS *而改用SCAN命令。

2025-09-03 16:42:01 193

面试宝典之应对HR30问,满满的干货

面试宝典之应对HR30问,满满的干货

2022-02-11

java面试问题-spring框架相关.docx

java面试问题-spring框架相关.docx

2022-02-11

spring常见面试题.docx

应届生、程序员面试宝典

2022-02-11

java面试问题-java基础相关.docx

java面试问题-java基础相关.docx

2022-02-11

redis配置文件redis.conf

redis配置文件redis.conf

2024-05-30

java面试总结pdf版

应届生程序员、java基础的法宝

2022-02-11

空空如也

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

TA关注的人

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