- 博客(360)
- 资源 (5)
- 收藏
- 关注
原创 Dubbo应用开发之Dubbo中协议的简介
摘要: Dubbo 3.x支持6种协议,核心差异体现在报文格式、序列化方式和连接模型。默认的dubbo协议采用自定义二进制格式,支持双工异步通信和高并发场景;triple协议基于HTTP/2,兼容gRPC,适合云原生和跨语言调用;rest协议适用于对外开放API。其他协议如rmi和webservice主要用于遗留系统。协议选择显著影响性能,dubbo协议在响应时间和TPS上远超HTTP协议(如REST),推荐优先使用。triple协议支持平滑迁移,可与dubbo协议共存于同一端口。
2025-11-11 10:27:46
421
原创 Dubbo应用开发之ProtoBuf序列化的使用
本文介绍了在Dubbo框架中使用Protocol Buffers(ProtoBuf)进行序列化的方法与优势。主要内容包括: ProtoBuf特点:相比其他序列化方式(Hessian2、JSON等),ProtoBuf具有更小的体积、更快的速度,且支持跨语言通信和版本演进。 使用步骤: 引入Maven依赖(protobuf-java和dubbo-serialization-protobuf) 编写.proto文件定义服务接口和数据结构 通过Maven插件生成Java代码 实现生成的接口完成服务开发 适用场景:适
2025-11-10 09:15:06
269
原创 Dubbo应用开发之FastJson序列化的使用
摘要:本文介绍了在Dubbo应用开发中使用FastJson2序列化的方法。FastJson2仅支持Dubbo>3.1.0版本,3.2.0后将替代Hessian作为默认序列化方式。文章详细说明了XML和Springboot两种配置方式,包括依赖引入和序列化配置修改步骤。对于XML方式需修改protocol配置的serialization属性为fastjson2,Springboot方式则在yml文件中配置。Consumer端调用时需要在URL中指定serialization=fastjson2参数。测试
2025-11-07 09:01:26
320
原创 Dubbo应用开发之FST序列化的使用
摘要:本文介绍了在Dubbo应用开发中使用FST序列化的方法。与Kryo类似,只需修改依赖和序列化配置。XML方式需排除冲突的dubbo-common依赖,配置dubbo:protocol的serialization属性为"fst"。Springboot方式则在yml配置文件中设置serialization。Consumer端通过url参数或@DubboReference注解指定序列化方式。两种方式启动服务后,日志中会显示"prefer.serialization=fst&qu
2025-10-30 11:39:58
317
原创 Dubbo应用开发之Kryo序列化的使用
本文介绍了在Dubbo应用中使用Kryo序列化的配置方法。通过XML和Spring Boot两种方式实现:XML方式需在protocol标签添加serialization="kryo"属性,并引入dubbo-serialization-kryo依赖;Spring Boot方式则在application.yml中配置protocol.serialization为kryo。消费者端调用时需在URL参数中指定serialization=kryo。启动服务后,日志中会显示prefer.seria
2025-10-27 12:56:06
261
原创 Dubbo应用开发之Dubbo中常用的序列化方式
本文系统介绍了Dubbo中常用的序列化方式及其特点。Dubbo默认使用Hessian2序列化,同时支持Java原生、JSON、Kryo、FST等多种方案。不同序列化方式在性能、兼容性、安全性等方面各有优劣,其中Kryo性能突出,但Hessian2仍是当前最成熟稳定的选择。文章还分析了序列化在分布式系统中的关键作用,包括性能影响、跨语言支持和安全性考量,并提供了各序列化方案的性能对比数据,为开发者选型提供参考。
2025-10-24 13:55:19
243
原创 Dubbo应用开发之RPC直连开发
摘要:本文介绍了Dubbo RPC直连应用开发的核心概念,主要包括服务提供者(Provider)、服务消费者(Consumer)和网络通信三部分。重点阐述了网络通信的三大要素:协议(如dubbo私有协议)、通信方式(默认Netty4,可配置为Mina等)和序列化技术。文章还提供了通过XML和SpringBoot配置修改通信方式和序列化方案的具体方法,帮助开发者根据性能需求优化Dubbo应用的网络传输效率。
2025-10-23 09:03:01
348
原创 Dubbo应用开发之Dubbo中注解详解
本文介绍了Dubbo应用开发中的三个核心注解: @EnableDubbo - 用于扫描并发布Dubbo服务,在Spring Boot环境下可省略(自动配置),但在非Boot环境或需自定义扫描路径时需显式添加 @DubboService - 标记服务实现类,会被实例化并发布为RPC服务,功能等同于@Component+@Service @DubboReference - 消费者端注入远程服务代理对象,作用类似@Autowired 文中还说明了@EnableDubbo的扫描范围可通过@DubboComponen
2025-10-22 09:11:41
332
原创 Dubbo应用开发之基于springboot方式使用Dubbo
本文介绍了如何在SpringBoot项目中集成Dubbo框架。首先构建生产者应用(dubbo-boot-prod),通过引入dubbo-spring-boot-starter依赖和配置application.yml文件实现Dubbo服务。使用@DubboService注解暴露UserService接口实现。然后构建消费者应用(dubbo-boot-consumer),通过@DubboReference注解引用远程服务进行RPC调用。测试结果显示调用成功,生产者端正确接收并打印了传入参数。
2025-10-21 09:49:31
392
原创 Dubbo应用开发之基于xml的第一个Dubbo程序
本文介绍了基于Spring XML配置开发第一个Dubbo程序的过程。首先创建了包含dubbo-prod、dubbo-api和dubbo-consumer三个模块的Maven项目,定义了User实体类和UserService接口。在服务提供方dubbo-prod中实现了UserService接口,并通过XML配置暴露服务。消费方dubbo-consumer通过XML配置引用服务,并成功调用远程方法。这种开发方式避免了SpringBoot的过度封装,更直观地展示了Dubbo的核心功能和使用流程。
2025-08-08 10:21:08
1033
原创 Dubbo应用开发之Dubbo对应版本
本文介绍了Dubbo框架与JDK版本的兼容性问题。JDK8与Dubbo3.1.x之前版本搭配使用Zookeeper注册中心时可能出现节点已存在的异常;JDK17与旧版Dubbo会引发深反射问题,需通过JVM参数解决,且Spring5.2.x不支持JDK17,需升级至Dubbo3.2.0.beat5以上版本。文章还提供了Spring与JDK版本对应关系表及JDK主版本号对照表,帮助开发者避免因版本不匹配导致的异常问题。
2025-08-07 10:22:50
444
原创 Dubbo应用开发之架构的演进之路
本文系统梳理了Dubbo应用架构的演进历程:从单体架构到水平扩展、垂直架构,再到RPC架构,最终发展为SOA架构和微服务架构。重点介绍了Dubbo3的核心升级内容,包括易用性提升、高性能通信(Triple/GRPC)、云原生适配(Kubernetes集成)以及创新的Proxyless Mesh方案,解决了传统Service Mesh的性能损耗问题。文章通过架构演进过程的对比分析,展示了Dubbo如何通过持续创新来满足大规模微服务实践需求。
2025-08-06 09:55:16
460
原创 Git 提交备注应该如何规范
Git提交备注规范对代码可维护性和团队协作至关重要。规范提交应包含类型(如feat/fix)、可选范围、简洁主题(祈使句)、可选正文(详细说明)和脚注(相关Issue号)。建议遵循语义化提交规范,保持信息简洁完整,并与项目文档和Issue管理相结合。团队应制定统一规则,利用工具检查格式,在代码审查中关注提交备注质量。良好规范的提交备注能提高沟通效率,支持自动生成变更日志,成为团队文化的重要组成部分。
2025-06-05 09:12:25
612
原创 Spring Boot 如何实现定时任务
本文介绍了Spring Boot实现定时任务的两种方式。内置的@Scheduled注解适合简单的定时任务,支持通过cron表达式配置执行周期。对于复杂需求,Quartz框架提供了更强大的功能,包括任务持久化、恢复和分组管理。作者详细说明了两种方式的配置步骤和使用注意事项,建议根据任务复杂度选择合适方案:简单任务使用@Scheduled注解,复杂调度则推荐Quartz框架。
2025-05-29 09:17:26
1235
原创 如何使用 Redis 实现排行榜功能
CI/CD(持续集成/持续交付)的发展历程与软件开发的敏捷性需求紧密相关。从早期的持续集成到如今的持续交付和部署,CI/CD通过自动化构建、测试和部署流程,显著提高了软件的交付速度和质量。容器化技术如Docker和Kubernetes的兴起,以及微服务架构的普及,进一步推动了CI/CD的发展,使其更加高效和灵活。然而,CI/CD的实施也面临着配置和维护成本、团队文化变革、安全性和复杂性等挑战。尽管存在这些劣势,CI/CD的优势如提升交付速度、软件质量、团队协作和用户体验,仍然是推动其广泛应用的关键因素。未来
2025-05-27 10:32:31
1173
原创 CI/CD的演进之路
CI/CD(持续集成/持续交付)的发展历程与软件开发的敏捷性需求紧密相关。从早期的持续集成到如今的持续交付和部署,CI/CD通过自动化构建、测试和部署流程,显著提高了软件的交付速度和质量。容器化技术如Docker和Kubernetes的兴起,以及微服务架构的普及,进一步推动了CI/CD的发展,使其更加高效和灵活。然而,CI/CD的实施也面临着配置和维护成本、团队文化变革、安全性和复杂性等挑战。尽管存在这些劣势,CI/CD的优势如提升交付速度、软件质量、团队协作和用户体验,仍然是推动其广泛应用的关键因素。未来
2025-05-20 09:13:04
863
原创 Java实现PDF加水印功能:技术解析与实践指南
本文详细介绍了如何使用Java实现PDF加水印功能,涵盖了多种常用库及其使用方法。PDF加水印在版权保护、文档状态标记和安全性增强方面具有重要意义。文章首先介绍了PDF加水印的背景与意义,随后分别使用Apache PDFBox、iText、Ghostscript、Free Spire.PDF for Java和Aspose.PDF for Java等工具,提供了具体的代码示例和操作步骤。通过这些方法,开发者可以快速掌握为PDF文件添加水印的技术,满足不同场景下的需求。
2025-05-19 09:23:34
1225
原创 随机森林在故障诊断中的作用
随机森林在故障诊断中展现出显著优势,主要体现在提高诊断准确性、评估特征重要性和适应性强三个方面。通过集成多个决策树,随机森林能够有效处理复杂故障模式,即使在数据存在噪声和异常值的情况下,仍能保持高精度。此外,它还能识别对故障分类最具区分性的特征,简化模型并指导维修工作。随机森林对高维度数据和缺失值的适应性使其在工业环境中具有广泛应用。实际案例表明,随机森林在滚动轴承和柴油机涡轮增压器故障诊断中均取得了高准确率。通过Python代码示例,展示了如何使用随机森林进行设备故障诊断,包括数据加载、模型训练、预测评估
2025-05-16 09:28:29
410
原创 电网开发人员必会的电网 104 规约解析(Java版本)
本文详细介绍了如何使用Java语言实现电网104规约的解析,旨在为电力系统自动化领域的开发人员提供可行的解决方案。104规约是基于TCP/IP网络的通信规约,广泛应用于电网自动化领域。文章首先简要介绍了104规约的分层结构、APDU(应用协议数据单元)和帧格式等关键特点。随后,详细讲解了Java实现104规约解析的步骤,包括环境搭建、建立TCP连接、数据帧解析和数据处理。在环境搭建部分,建议使用Netty框架处理TCP/IP通信。数据帧解析部分则通过代码示例展示了如何识别帧格式和解析APDU。最后,文章强调
2025-05-14 09:33:45
817
1
原创 Spring Boot 实现二维码生成:详细步骤与完整代码示例
本文详细介绍了如何在 Spring Boot 项目中实现二维码生成。首先,通过 Spring Initializr 创建项目,并引入 com.google.zxing 依赖库。接着,编写 QrCodeService 类,利用 QRCodeWriter 生成二维码,并通过 BufferedImage 保存为图片。然后,创建 QrCodeController 控制器,提供生成二维码的 HTTP 接口。最后,启动应用并通过浏览器或工具发送请求,测试二维码生成功能。整个过程涵盖了环境搭建、依赖引入、代码实现和测试运
2025-05-13 09:13:13
1243
原创 大家在开发中经常喷的MyBatis-Plus?
MyBatis-Plus(简称MP)是一个在MyBatis基础上进行增强的框架,它旨在通过提供更多的便利性和自动化功能来简化开发和提高效率。然而,每个工具都有其优势和局限,MyBatis-Plus也不例外。本文将对MyBatis-Plus的优点和缺点进行全面的分析。
2025-05-08 15:58:38
619
原创 如何使用 Nacos 对 Python 服务进行服务发现与注册
在微服务架构中,日志管理是一个复杂但至关重要的任务。通过合理的日志生成、收集、存储和查询策略,可以有效地管理和分析日志,从而提高系统的可维护性和可靠性。统一日志格式,使用 JSON 格式记录日志。使用日志代理(如 Fluentd)或云原生日志收集工具(如 AWS CloudWatch)收集日志。将日志存储在中央存储系统(如 Elasticsearch)中。使用可视化工具(如 Kibana 或 Grafana)查询和分析日志。考虑安全和合规性问题,对敏感信息进行脱敏处理,并限制访问权限。
2025-04-29 10:05:47
1981
2
原创 微服务架构中如何查询日志
在微服务架构中,日志管理是一个复杂但至关重要的任务。通过合理的日志生成、收集、存储和查询策略,可以有效地管理和分析日志,从而提高系统的可维护性和可靠性。统一日志格式,使用 JSON 格式记录日志。使用日志代理(如 Fluentd)或云原生日志收集工具(如 AWS CloudWatch)收集日志。将日志存储在中央存储系统(如 Elasticsearch)中。使用可视化工具(如 Kibana 或 Grafana)查询和分析日志。考虑安全和合规性问题,对敏感信息进行脱敏处理,并限制访问权限。
2025-04-28 09:19:53
993
原创 设计模式初探:程序员的必备利器
设计模式(Design Pattern)是软件工程中被反复使用、容易理解且经过分类编目的代码设计经验。它是一种通用的解决方案,用于解决在软件开发过程中遇到的常见问题。设计模式并不是直接的代码片段,而是一种更高层次的抽象,它描述了在特定场景下如何解决问题的思路和方法。设计模式的出现源于软件开发过程中对代码复用和可维护性的追求。随着软件系统的复杂度不断增加,开发者们发现,许多问题的解决方案具有相似的结构和逻辑。于是,人们开始总结这些共性,将其抽象为设计模式,以便在未来的项目中能够快速应用,避免重复造轮子。
2025-04-23 09:21:48
619
原创 基于银河麒麟操作系统安装 Java 环境
在银河麒麟操作系统上安装 Java 环境是进行 Java 开发和运行 Java 应用程序的基础。本文将详细介绍在银河麒麟操作系统上安装 Java Development Kit(JDK)的步骤,包括使用yum安装和手动安装,并配置环境变量,确保 Java 环境能够正常运行。
2025-04-21 09:34:33
2279
原创 基于银河麒麟系统部署 Nginx(常见问题总结,建议收藏保存!)
银河麒麟操作系统是一款基于 Linux 内核的国产操作系统,具有高性能、高安全性和良好的兼容性。它广泛应用于政府、金融、能源等关键领域,为用户提供稳定可靠的操作系统环境。银河麒麟操作系统提供了多种软件包管理工具,如yum和apt,方便用户安装和管理软件。在银河麒麟操作系统上部署 Nginx 是一个相对简单的过程,通过使用yum包管理器或从源码编译安装,可以快速完成 Nginx 的安装。通过合理配置 Nginx 的配置文件,可以满足各种 Web 应用的需求,包括静态资源服务、HTTPS 支持和反向代理等功能。
2025-04-18 09:32:10
770
原创 基于 Spring Boot 和 UniApp 实现微信小程序消息通知
本文详细介绍了如何基于 Spring Boot 和 UniApp 实现微信小程序的消息通知功能。通过后端服务的搭建、微信小程序的配置以及前端页面的实现,我们成功实现了一个完整的消息推送流程。在实际开发中,可以根据业务需求进一步扩展和优化代码,例如增加消息推送的重试机制、优化用户体验等。希望本文对大家有所帮助!通过本文的介绍,我们已经完整地实现了基于 Spring Boot 和 UniApp 的微信小程序消息通知功能。
2025-04-15 09:28:27
1817
原创 Spring Boot实现微信小程序支付功能
通过以上步骤,我们成功在Spring Boot项目中实现了微信小程序支付功能。从环境搭建到接口开发,再到支付流程实现和支付结果通知处理,每一步都至关重要。在实际开发中,还需要根据具体业务需求进行进一步的优化和调整。希望本文能够为开发者提供一个清晰的实现思路和参考代码,帮助大家快速实现小程序支付功能。
2025-04-11 09:24:21
2430
2
原创 Spring AI应用:利用DeepSeek+嵌入模型+Milvus向量数据库实现检索增强生成--RAG应用(超详细)
本文详细介绍了如何利用Spring AI框架、DeepSeek大模型、嵌入模型和Milvus向量数据库实现一个检索增强生成(RAG)应用。通过这一实践,我们构建了一个能够处理复杂查询并生成高质量答案的智能系统。多模态数据支持:将RAG技术扩展到多模态数据(如图像、视频等)的处理。实时数据更新:实现对Milvus数据库的实时更新,以支持动态数据的检索。跨语言支持:探索跨语言的RAG应用,支持多种语言的查询和生成。通过不断探索和优化,RAG技术将在更多领域发挥重要作用,为用户提供更加智能和便捷的服务。
2025-04-10 10:32:40
1106
原创 【微服务】SpringBoot整合LangChain4j 操作AI大模型实战详解
在 Java 编程中,ArrayList 和 LinkedList 都是常用的集合类,它们都实现了 List 接口,但在内部结构、性能特点、适用场景等方面存在着诸多差异。深入理解它们的区别,有助于我们在实际开发中根据具体需求选择合适的集合类型,从而提高程序的效率和可维护性。ArrayList 是基于动态数组实现的。它在底层使用一个数组来存储元素。当向 ArrayList 中添加元素时,它会将元素存储到数组的末尾。如果数组的空间不足以容纳新的元素,ArrayList 会自动扩容,即创建一个新的更大的数组,并将
2025-04-09 09:11:38
1402
原创 以纯文字的形式讲讲ArrayList 与 LinkedList 的区别
在 Java 编程中,ArrayList 和 LinkedList 都是常用的集合类,它们都实现了 List 接口,但在内部结构、性能特点、适用场景等方面存在着诸多差异。深入理解它们的区别,有助于我们在实际开发中根据具体需求选择合适的集合类型,从而提高程序的效率和可维护性。ArrayList 是基于动态数组实现的。它在底层使用一个数组来存储元素。当向 ArrayList 中添加元素时,它会将元素存储到数组的末尾。如果数组的空间不足以容纳新的元素,ArrayList 会自动扩容,即创建一个新的更大的数组,并将
2025-04-07 09:53:52
872
原创 Spring Boot应用中实现Jar包热更新的实践指南
我们需要创建一个自定义的类加载器,用于加载指定目录下的Jar包。以下是if (!return;if (!return;本文详细介绍了在Spring Boot应用中实现Jar包热更新的方法,包括自定义类加载器的实现、Spring Bean的动态注册、文件上传接口的开发以及热更新流程的设计。通过这些技术,我们可以实现无需重启应用即可动态更新Jar包的功能,提高开发效率并减少对用户的影响。希望本文能够帮助大家快速掌握这一技术,并应用于实际项目中。
2025-04-03 14:24:57
1524
原创 保姆级Spring AI 注解式开发教程,你肯定想不到还能这么玩!
Spring AI 是 Spring 项目中一个面向 AI 应用的模块,旨在通过集成开源框架、提供标准化的工具和便捷的开发体验,加速 AI 驱动应用程序的构建和部署。它支持多种 AI 任务,包括自然语言处理(NLP)、计算机视觉(CV)和推荐系统等。创建一个自定义注解@AiPromptSpring AI 提供了强大的注解式开发支持,通过注解简化了 AI 服务的集成和调用。通过 AOP 切面,可以自动处理 AI 接口的调用逻辑,显著提升开发效率。提示词工程的可维护性提升;业务代码与 AI 基础设施解耦。
2025-04-02 09:49:21
699
原创 Redis 与 AI:从缓存到智能搜索的融合之路
Redis 的 AI 能力和缓存功能的结合,为现代应用架构提供了强大的支持。通过合理配置和使用,可以在单一实例中同时满足缓存和向量搜索的需求,既节省了资源,又简化了系统架构。
2025-04-01 09:42:37
1219
原创 DeepSeek R1 集成难题完美解决:DeepSeek4j来帮你解决
DeepSeek4j 的开源为 Java 开发者提供了一个强大且易于使用的 DeepSeek R1 集成方案。通过简洁的 API 设计、开箱即用的 Spring Boot 集成以及丰富的性能优化特性,DeepSeek4j 使得开发者能够快速将 DeepSeek R1 的强大能力集成到自己的项目中。无论是智能安防、智慧医疗还是金融科技,DeepSeek4j 都能够为开发者提供强大的支持,推动人工智能技术的广泛应用。
2025-03-31 09:26:57
339
原创 调用DeepSeek API增强版纯前端实现方案,支持文件上传和内容解析功能
在现代Web开发中,文件上传和内容解析是常见的需求。随着人工智能技术的发展,DeepSeek API增强版提供了一个强大的解决方案,支持多种文件格式的上传和内容解析。本文将详细介绍如何通过纯前端技术调用DeepSeek API增强版,实现文件上传和内容解析功能,帮助开发者快速构建高效、安全的Web应用。DeepSeek API增强版是一款基于人工智能的文件处理和内容解析服务,支持多种文件格式的上传和解析。通过调用API,开发者可以轻松实现文件内容提取、文本识别、数据分析等功能。API提供了丰富的接口和灵活的
2025-03-27 09:32:28
2311
8
原创 SpringBoot整合高德地图完成天气预报功能
通过本文的详细步骤,我们成功地在SpringBoot项目中整合了高德地图的天气预报功能。从环境搭建到代码实现,再到定时任务的设置,每一步都清晰明确,确保大家能够按照教程直接上手操作。在实际开发中,可以根据需求进一步优化和扩展功能,例如将天气数据存储到数据库中,或者为用户提供更多城市的天气查询服务。希望本文对大家有所帮助!
2025-03-26 09:44:26
718
原创 【AI大模型】使用Python调用DeepSeek的API,原来SDK是调用这个,绝对的一分钟上手和使用
为了更好地展示和使用DeepSeek的功能,您可以创建自定义的用户界面。<template>'我' : '李白' }}</span></div></div></div></div><el-input v-model="userInput" placeholder="输入你的问题" class="input-box" clearable></el-input>
2025-03-24 10:01:09
467
原创 没有好的学历,Java开发未来的路应该怎么走?
没有高学历并不意味着Java开发者在新兴技术领域没有机会。通过深入了解大模型应用、鸿蒙系统等新兴技术,积累实战经验,持续学习新技能,开发者可以在这些领域找到新的职业发展方向。同时,合理规划职业路径,建立人脉网络,利用新兴教育平台提升技能,也将为开发者的职业发展提供有力支持。在这个充满机遇和挑战的时代,Java开发者可以通过自身的努力和创新,实现职业突破,拥抱更加广阔的发展空间。
2025-03-21 09:33:01
642
原创 蓝耘智算:开启智能算力新时代
通过这些故事,我们可以看到蓝耘智算不仅是一个强大的技术平台,更是一个能够改变我们生活的工具。它为创意工作者提供了灵感,为金融分析师提供了决策支持,为学生提供了学习帮助。在未来,随着技术的不断进步和应用场景的不断拓展,蓝耘智算将继续为我们带来更多的惊喜。在这个数字化的时代,蓝耘智算就像是一个强大的“引擎”,为我们的生活和工作注入了新的动力。它不仅推动了人工智能技术的发展,也为各行各业带来了新的机遇和挑战。让我们期待蓝耘智算在未来能够发挥更大的作用,为我们的生活带来更多便利和美好。
2025-03-20 14:15:49
952
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅