- 博客(307)
- 收藏
- 关注

原创 一文详细说明spring cloud和Spring Cloud Alibaba的各自组件以及联系和区别
我们通过对springboot的使用,就知道,spring从来不是重复造轮子,而是对现有技术的封装和维护,举个简单例子,比如最早spring只提供了IOC和AOP的核心功能,而像ORM框架、缓存、MVC框架,spring只是提供了一种兼容以及支持,所以当时大家说spring是万能胶,可以把各种各样的框架整合进来。同理,springcloud也不是自己开发组件,他也不是一个框架,因为Spring Cloud的核心并没有实现服务注册、熔断、配置中心等功能,它提供了一个标准规范。
2022-09-01 19:45:20
22929
4
原创 Docker 部署 Nginx:前端部署路径与 nginx.conf 配置详解
如果你想使用自己的配置文件,可以通过-v-p 80:80 \nginx这样就可以用你自己写的nginx.conf替换默认配置。问题解答前端部署应该放哪?放在,推荐使用-v挂载nginx.conf在哪?默认路径是,可挂载替换启动时怎么指定挂载?使用-v 宿主机路径:容器路径参数已运行的容器怎么查挂载?使用查看Mounts字段如何确认配置是否生效?如何查看日志?
2025-06-13 11:20:25
170
原创 使用 Spring 注入 Map 实现策略模式-一个接口多个实现(附完整示例)
策略模式是一种行为设计模式,它允许定义一系列算法,并将每个算法封装起来,使它们可以互换使用。通俗点说:我们有一组“相似”的处理实现类,通过传入不同的参数,动态选择其中某一个实现类来执行。优势描述✅ 简洁易维护不需要硬编码 switch-case 或 if-else 判断✅ 可扩展性强新增策略只需添加新实现类,无需改动已有代码✅ 高内聚低耦合所有策略统一管理,解耦业务逻辑与实现细节✅ 强类型安全推荐结合枚举使用,避免字符串拼写错误。
2025-05-22 11:00:19
738
原创 Maven构建流程详解:如何正确管理微服务间的依赖关系-当依赖的模块更新后,我应该如何重新构建主项目
在现代 Java 开发中,Maven 是一个非常重要的项目管理工具。它不仅可以帮助我们自动下载依赖库,还能通过标准的生命周期命令(如)来完成项目的编译、测试、打包和部署。“当依赖的模块更新后,我应该如何重新构建主项目?本文将从 Maven 的基本命令讲起,结合一个典型的项目依赖场景,带你彻底理解如何正确使用 Maven 构建项目。场景推荐操作修改了 B,想让 A 使用最新版先B,再或installAA 和 B 是父子模块在父级目录执行想清除所有历史构建加上clean是个好习惯。
2025-05-14 14:27:26
754
原创 总结下Jackson 中的JsonNode,ObjectNode,ArrayNode的方法
Jackson 是 Java 中非常流行的 JSON 处理库,JsonNode是 Jackson 中用于表示 JSON 树结构的核心接口。它有多个实现类,其中最常用的是ObjectNode和ArrayNode。
2025-05-14 11:09:48
783
原创 JsonNode 和 ObjectNode的区别以及他们能互换吗
JsonNode是只读的,适合用于解析和读取 JSON 数据ObjectNode是可写的,适合用于创建或修改 JSON 数据是JsonNode的子类,因此你可以将ObjectNode当作JsonNode使用❌ 但反过来不行:不能将一个只读的JsonNode强转为ObjectNode项目建议想要读取 JSON 数据使用JsonNode想要修改 JSON 数据使用ObjectNode把字符串解析为可修改对象修改字段删除字段修改嵌套对象强转后再操作FastJSON 迁移建议封装。
2025-05-14 11:05:16
553
原创 Jackson 使用问题记录(持续更新)
本文将持续记录我在使用 Jackson 进行 JSON 序列化与反序列化过程中遇到的各种问题和解决方案,适合正在使用或准备替换 FastJSON 的 Java 开发者参考。
2025-05-13 17:59:01
353
原创 替换 FastJSON:推荐 Jackson 及详细用法指南(含工具类 + 替换方案)
User user = new User("admin", "若依", 1L);场景推荐库Spring Boot 项目✅ Jackson微服务、分布式系统✅ JacksonAndroid / Kotlin 项目✅ Moshi简单工具类或小项目✅ Gson已有项目迁出 FastJSON✅ fastjson2(过渡),尽快转 Jackson/Gson。
2025-05-13 11:16:42
1011
1
原创 RuoYi 中使用 PageUtils.startPage() 实现分页查询的完整解析
PageHelper 是一个为 MyBatis 提供分页功能的第三方插件。它通过 ThreadLocal 存储当前线程的分页参数,并在执行下一条查询语句时动态生成带LIMIT的 SQL,同时生成统计总数的 SQL。原因说明PageHelper 的 ThreadLocal 缓存机制即使返回的是 List,分页信息仍被缓存PageInfo 工具类自动读取缓存能正确获取 total、pageNum、pageSize 等信息RuoYi 的封装设计。
2025-05-12 16:42:22
929
原创 MyBatis 报错:invalid comparison: java.util.Date and java.lang.String 的原因及解决方法
问题原因解决方案对Date使用了!= ''判断删除对空字符串的判断,仅保留!= null。
2025-05-12 10:23:05
449
原创 Playwright JAVA版本 常用操作总结
Playwright 提供了丰富的 API 来模拟用户行为、截图、断言等操作。create()。。newPage()。navigate()。locator()。click()。fill()。。。。等。route()。
2025-04-25 10:02:07
1045
原创 Playwright 入门教程:从概念到应用(Java 版)
Playwright是由 Microsoft 开发的一个现代化的自动化测试工具,专为现代 Web 应用设计。它支持多种编程语言(如 Java、JavaScript/TypeScript、Python 和 C#),并提供对主流浏览器(Chromium、Firefox、WebKit)的原生支持。Playwright 不仅可以用于自动化测试,还可以用于抓取动态内容、调试和分析 Web 应用。
2025-04-24 20:53:25
1139
原创 Jsoup、Selenium 和 Playwright 的含义、作用和区别
Jsoup:适合静态网页的数据抓取和解析,轻量高效,但无法处理动态内容。Selenium:适合动态内容抓取和自动化测试,功能强大,但性能较低。Playwright:适合现代化 Web 应用的复杂测试和动态内容抓取,性能优越,功能丰富。如果只是抓取静态网页数据,Jsoup是最佳选择。如果需要处理动态内容或进行功能测试,Selenium和Playwright都是不错的选择,但Playwright更加现代化和高效。
2025-04-23 20:15:44
1012
原创 Elasticsearch(ES)中的脚本(Script)
字段含义类型是否必需默认值lang脚本语言String否painlesssource脚本代码逻辑String是(或idparams传递给脚本的参数Object否{}id存储脚本的唯一标识符String否stored是否引用存储脚本Boolean否false使用访问数值型字段(高效)。使用访问文档原始内容(灵活但较慢)。通过params传递动态值,避免脚本注入风险。频繁使用的脚本应存储()以提升性能。默认启用 Painless 沙箱,禁止文件/网络操作。
2025-04-23 20:04:56
1234
原创 MinIO 教程:从入门到Spring Boot集成
MinlO是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据。例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinlO是一个非常轻量的服务 可以很简单的和其他应用的结合,类似NodeJS, Redis或者MySQL。MInIO官网核心特性支持海量非结构化数据(图片、视频、日志等)支持单个对象最大5TB。轻量级(二进制文件仅数十MB)。
2025-04-23 15:49:47
3429
2
原创 OpenFeign 使用教程:从入门到实践
OpenFeign 是一个声明式的 Web 服务客户端,它使得编写 HTTP 客户端变得更加简单。只需要创建一个接口并添加注解,就可以完成对远程服务的调用。OpenFeign 集成了 Ribbon 和 Hystrix(可选),支持负载均衡和服务熔断。在微服务架构中,服务之间的调用是常见的需求。为了简化这种跨服务的调用,OpenFeign和Feign提供了一种声明式的 HTTP 客户端解决方案。本文将详细介绍 OpenFeign 的简介,并深入探讨它与 Feign 的关系。OpenFeign。
2025-04-21 18:04:28
1340
原创 SpringCloud和SpringCloudAlibaba技术栈全面对比
功能模块服务注册与发现Eureka(已停止维护)Nacos负载均衡Ribbon(已停止维护)熔断与限流Hystrix(已停止维护)Sentinel分布式配置管理、配置中心NacosAPI 网关消息队列RocketMQ分布式事务第三方工具(如 Seata)Seata服务调用日志采集与聚合第三方工具(如 Logstash、Fluentd)阿里云 SLS/Logtail监控与指标阿里云云监控/Spring Boot Actuator链路追踪分布式锁事件驱动架构RocketMQRPC 框架。
2025-04-21 17:02:12
1252
原创 @RefreshScope 和@nacosvalue 的区别
是 Spring Cloud 提供的一个注解,主要用于实现配置的动态刷新。它的作用是让被标记的 Bean 在运行时能够感知到外部配置的变化,并重新加载这些配置。是 Nacos 提供的一个注解,专门用于从 Nacos 配置中心读取配置值。它类似于 Spring 的@Value注解,但直接与 Nacos 集成,支持动态获取配置。
2025-04-21 16:06:29
856
原创 @Primary 注解的作用
Primary是 Spring 中用于解决依赖注入歧义问题的一个注解,主要用于指定默认的首选 Bean。解决多个相同类型 Bean 的注入冲突。适用于全局范围,默认优先选择被标记为@Primary的 Bean。可以与@Qualifier配合使用,满足更复杂的注入需求。在实际开发中,合理使用@Primary和@Qualifier可以让代码更加清晰和灵活。
2025-04-20 18:11:33
770
原创 IDEA在Git提交时添加.ignore忽略文件,解决为什么Git中有时候使用.gitignore也无法忽略一些文件
忽略所有 .class 文件*.class# 忽略所有 .log 文件*.log# 忽略所有 .settings 目录.settings/# 忽略所有 .project 文件.project# 忽略所有 .idea 目录.idea/# 忽略所有 .gitignore 文件.gitignore# 忽略所有 target 目录target/通过本文的介绍,我们了解了如何在IntelliJ IDEA中高效地管理.gitignore文件,并分析了为什么有时候.gitignore。
2025-04-20 15:38:31
3243
原创 Java 泛型详解:从基础到实践(以 Elasticsearch 结果解析为例)
/ 使用泛型 T特性List<T>List<?类型参数T是一个具体的类型参数?表示未知类型可读性可以安全地读取和写入元素只能读取元素,不能写入(除了null适用场景需要明确类型参数的场景需要处理多种类型列表的场景灵活性更适合类型安全的操作更灵活,但牺牲了部分类型安全性示例或List<?可以表示或泛型是 Java 中实现类型安全和代码复用的核心工具。通过案例泛型解决了传统集合的类型不安全问题。通配符和上下界增强了泛型的灵活性。合理使用泛型能显著提升代码的健壮性和可维护性。
2025-04-17 14:53:21
610
原创 Nginx-04- Nginx配置详解-最详细的配置
------------------- http 块配置 -------------------http {# 包含 MIME 类型定义文件,用于识别文件类型。# 默认 MIME 类型,无法识别时返回此类型。# 设置默认字符集为 GB2312(已注释)。如果需要支持中文,可以启用此配置。# 设置服务器名称哈希表的大小,避免因域名过长导致性能问题。# 设置客户端请求头的缓冲区大小,适合处理较大的请求头。# 设置大请求头的缓冲区数量和大小。
2025-04-14 16:26:23
1150
原创 MyBatis中mapper.xml 的sql映射规则
MyBatis 映射文件的顶级元素(按定义顺序):-POJO 对象:2. 多参数- 默认 , (不推荐):- 注解(推荐):3. 复杂参数- Map 类型:- 混合参数(POJO + ):三、主键生成与回填1. 自增主键(如 MySQL):启用 JDBC 的自动生成主键。:将生成的主键赋值给对象的 属性。2. 非自增主键(如 Oracle):先执行 生成主键,再插入数据。四、结果映射()1. 基础映射2. 关联对象(一对一)3. 集合
2025-03-26 18:32:44
1290
原创 Maven 多模块项目(如微服务架构)中,父 POM(最外层) 和 子模块 POM(具体业务模块)的区别和联系
父 POM 是项目的 全局配置中心,负责统一管理依赖版本、插件版本和公共配置,确保所有子模块的一致性。作用:集中定义依赖的版本和范围,子模块引用时无需重复指定版本。示例:1.2 插件管理 ()作用:统一插件版本和默认配置,子模块按需启用。示例:1.3 其他公共配置定义全局属性(如 中的 Java 版本)。声明模块聚合()。2. 子模块 POM 的核心职责子模块 POM 负责 具体模块的实现配置,继承父 POM 的依赖和插件模板,并按需覆盖或扩展。规则:示例:2.2
2025-03-25 15:34:38
651
原创 lombok突然不好用了-和MapStruct冲突解决方案
我在idea上写java代码,使用了lombok的@data功能,本来没问题,但是加入了mapstruct框架依赖就不行了,虽然代码没报错,但是编译后的class里面没有了get,set方法了。报错截图:idea没报错,但是编译后的class就是没有getxx,setxx方法。
2025-03-25 15:31:29
1289
原创 BeanUtils.copyProperties(target, source)-在两个 Java 对象之间复制属性值
默认只支持浅复制,适用于简单对象。深度复制 :需要手动实现(如clone方法)或借助工具(如 Jackson)。适用场景 :如果对象结构简单且不需要深度复制,可以直接使用。如果对象包含嵌套结构或需要深度复制,建议使用 Jackson 或其他专用工具。如果你有更具体的需求或问题,请进一步说明,我可以为你提供更详细的解决方案!
2025-03-19 14:50:21
985
原创 swagger全部注解,附swagger2和swagger3的注解区别
注解作用常用属性示例代码@Api标记一个类是 API 的入口点,描述整个控制器的功能。tags:API 分组:API 描述信息java @Api(tags = "用户管理", description = "用户相关的操作") @RestController public class UserController { }描述一个方法的功能(如 GET、POST 请求)。value:方法简短描述notes:方法详细描述response:返回值类型。
2025-03-18 14:07:34
1391
原创 Springdoc 全部注解一文解释清楚
以下是springdoc注解作用@Tag为控制器或方法分组,便于组织和分类 API。@Operation描述 API 方法的功能。描述单个响应结果。@Parameter描述方法参数的含义。@Schema描述实体类或字段的信息。@Hidden隐藏某个类、方法或参数,不包含在生成的文档中。全局配置 OpenAPI 文档的元信息(标题、版本、描述等)。
2025-03-18 14:02:11
1816
原创 Springdoc配置参数详解
默认值:无示例效果Swagger UI 将加载自定义配置文件。作用:禁用 API 文档的缓存。默认值false效果每次请求都会重新生成 OpenAPI 文档。示例作用:通过 Java 配置类自定义 OpenAPI 对象。示例:@Bean.title("用户管理系统").description("用户管理相关的 API 文档")).addServersItem(new Server().url("http://localhost:8080").description("本地开发环境"));
2025-03-18 13:59:03
1307
原创 SpringBoot之如何集成SpringDoc最详细文档
默认值:无示例效果Swagger UI 将加载自定义配置文件。作用:禁用 API 文档的缓存。默认值false效果每次请求都会重新生成 OpenAPI 文档。示例以下是springdoc类别参数作用基础配置配置 API 文档路径、Swagger UI 路径及启用状态。全局元信息设置 API 文档的标题、描述、版本等基本信息。分组与模块化支持分组、限制扫描范围、排除特定路径。安全配置定义全局安全方案和要求。自定义行为控制缓存、参数对象展平、服务器地址等高级功能。高级配置。
2025-03-18 13:54:04
1000
原创 ES8 JAVA API client使用报错:Invalid media-type value on headers [Content-Type, Accept]
解决办法:在es实体bean配置ElasticSearchConfig中,去掉这一行代码Elasticsearch-06-Elasticsearch Java API Client-Elasticsearch 8.0 的基础配置和使用Elasticsearch-07-Elasticsearch Java API Client-Elasticsearch 8.0 的高阶api
2025-03-17 18:34:00
1167
原创 ES报错:Elasticsearch health check &URI [/_cluster/health/], status line [HTTP/1.1 404 ]
具体来说,Spring Boot应用尝试通过HTTP GET请求访问Elasticsearch的/_cluster/health/端点来检查集群健康状态,但返回了HTTP 404错误,即“Not Found”。3:发现程序在执行Elasticsearch health check时,访问的是http://localhost:9200。我这是使用的是springcloud框架,链接了es8 的API。可以正常启动,但是看着报错就很难受。2:java程序可以查询es,表明ip和端口都没问题。
2025-03-17 18:05:51
354
原创 RUOYI框架在实际项目中的应用三:Ruoyi微服务版本-RuoYi-Cloud
RuoYi-Cloud 是一个 Java EE 分布式微服务架构平台,基于经典技术组合(Spring Boot、Spring Cloud & Alibaba、Vue、Element),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源。
2025-03-16 15:52:16
1209
原创 RUOYI框架在实际项目中的应用二:Ruoyi前后端分离版本-RuoYi-Vue
1、系统环境Java EE 82、主框架3、持久层4、视图层Vue 2.6.xcom.ruoyi├── common // 工具类│ └── annotation // 自定义注解│ └── config // 全局配置│ └── constant // 通用常量│ └── core // 核心控制│ └── enums // 通用枚举│ └── exception // 通用异常│ └── filter // 过滤器处理│ └── utils // 通用类处理。
2025-03-16 15:34:36
2037
原创 RUOYI框架在实际项目中的应用一:ruoyi简介
若依框架是一个基于java语言的开源项目,在原有的代码基础之上开展自己的功能代码的开发任务。在我们实际的开发任务中,很多系统都有一些共同的框架和开发内容,比如用户管理、菜单管理、、定时任务、日志管理等等一些功能。这些功能虽然简单但是自己写的话依旧少不了花时间去建表,写代码,测试,调试。也是很消耗时间的。最重要的是如果公司是以项目交付为业务的公司,那么每一个项目都需要反复去创建这一套管理模型,就很麻烦。
2025-03-16 14:21:31
1532
原创 Elasticsearch-07-Elasticsearch Java API Client-Elasticsearch 8.0 的高阶api
Elasticsearch-06-Elasticsearch Java API Client-Elasticsearch 8.0 的基础配置和使用通过之前的配置,目前已经将elasticsearchClient 注入了容器中,后续只要引入即可还不知道怎么注入elasticsearchClient的去看我上篇文章Elasticsearch-06-Elasticsearch Java API Client-Elasticsearch 8.0 的基础配置和使用3:查询某个索引4:创建索引5:删除指定
2025-03-12 18:25:29
1495
原创 MAVEN解决版本依赖冲突
依赖冲突是指项目依赖的某一个jar包,有多个不同的版本,因而造成类包版本冲突,从而导致调试过程中出现类似类找不到,NoSuchMethodError等错误。综上就是maven如何排查依赖冲突以及解决方法,对于排查依赖个人比较推荐使用maven helper插件,至于解决依赖冲突个人推荐使用版本锁定的方法,此外dependencyManagement只是声明依赖,并不自动实现引入,因此子项目需要显示的声明需要用的依赖。
2025-03-12 12:09:58
1942
原创 Spring Framework 的版本历史和JDK、Springboot对应关系
Spring从最初的一城一池,发展到如今已经发展为一个生态帝国,旗下拥有诸多的子项目,从最基本的Spring Ioc/AOP使用,到安全管理,再到 大数据,Spring已经逐渐的渗入到各个领域。
2024-11-22 17:41:31
3884
1
原创 SpringBoot项目部署时application.yml文件的加载优先级
多层级配置文件间的属性采用叠加并覆盖的形式作用于程序。如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。先后加载顺序:若application 和bootstrap 在同一目录下:bootstrap先加载 application后加载。
2024-08-19 18:22:40
2215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人