- 博客(154)
- 收藏
- 关注
原创 OpenFeign
本文介绍了OpenFeign在微服务通信中的使用。OpenFeign作为声明式HTTP客户端,简化了微服务间的远程调用。首先对比了RestTemplate的不足,然后讲解了OpenFeign的快速上手方法,包括依赖引入、接口定义和使用方式。阐述了OpenFeign的参数传递技巧,包括单个参数、多个参数、对象和JSON的传递方式。最后介绍了两种优化方案:继承方式和抽取方式,将公共接口独立为模块,提高代码复用性。通过实际案例演示了如何简化微服务调用,使开发更加高效便捷。
2025-12-21 09:00:00
769
52
原创 Nacos
本文介绍了Nacos的安装配置、快速使用步骤、负载均衡策略(包括权重配置和同集群优先访问)、服务实例类型(临时/非临时实例)、环境隔离(命名空间)以及配置中心功能。通过实际案例演示了如何实现服务注册、远程调用、配置热更新等核心功能,并分析了不同配置文件的加载优先级。Nacos为微服务架构提供了完善的服务治理和配置管理解决方案。
2025-12-19 09:00:00
1683
27
原创 负载均衡 -LoadBalance
本文介绍了使用Eureka实现服务注册与发现时,如何通过负载均衡将请求分配到多个服务实例。首先展示了手动实现的轮询策略,通过原子计数器选择实例。然后重点讲解了Spring Cloud LoadBalancer的两种内置策略(轮询和随机),包括配置方法和实现原理。通过拦截器机制,LoadBalancer从注册中心获取服务列表并应用负载算法。文章还对比了服务端和客户端负载均衡的区别,说明Spring Cloud LoadBalancer作为客户端方案的优势。核心是通过智能分发请求提高系统性能、可用性和扩展性。
2025-12-11 09:00:00
1646
45
原创 Eureka 服务注册源码分析
本文深入分析了Eureka服务注册的核心源码流程。客户端通过DiscoveryClient发起注册请求,服务端基于ConcurrentHashMap实现高并发注册表,采用读锁提升并发性能,通过时间戳解决租约冲突,并动态更新自我保护阈值。注册完成后,服务端触发缓存失效与集群同步,通过批处理机制将注册事件异步复制至其他节点,保障高可用与最终一致性。从客户端到服务端,系统阐释了Eureka注册机制的高效实现与设计思想。
2025-12-03 09:00:00
1446
30
原创 服务注册与发现——Eureka
本文介绍了微服务架构中注册中心的作用及实现方式。针对硬编码URL导致的服务变更问题,提出通过注册中心进行动态服务管理。分析了注册中心的三大角色(服务提供者、消费者、注册中心)及其交互流程,并讲解了CAP理论在分布式系统中的权衡应用。对比了Zookeeper(CP)、Eureka(AP)和Nacos(AP/CP可切换)三种常见注册中心的特性,最后以Eureka为例,展示了从服务端搭建到客户端注册、发现的完整实现过程。通过实际代码演示了如何将订单服务和商品服务注册到Eureka并进行服务调用
2025-11-21 09:00:00
2092
29
原创 Spring Cloud 概述
本文介绍了微服务架构的发展历程及SpringCloud解决方案。内容涵盖:1.架构演进:从单体架构到微服务架构,分析了各阶段的优缺点。2.微服务特点:按业务边界划分独立服务,具有技术异构、独立部署等优势,但也面临分布式系统复杂性挑战。3.SpringCloud体系:简述了其核心组件及两种主流实现方案。4.实践演示:通过商品服务和订单服务示例,展示了服务拆分原则、独立数据库设计及RestTemplate远程调用方法,并指出了当前方案存在的问题。
2025-11-18 09:00:00
1169
43
原创 Spring AI 应用示例-聊天机器人
本文介绍了基于SpringAI实现的聊天机器人项目,主要包括核心功能实现和接口设计。项目支持文本对话、多轮上下文记忆和历史记录管理三大功能。通过ChatClient与AI模型交互,结合ChatMemory接口实现对话历史存储和管理,使用InMemoryChatMemory处理会话记忆。共5个核心接口:进行流式对话、获取会话列表、查看历史记录、删除会话记录等。
2025-11-12 09:00:00
1276
27
原创 Spring AI
文章介绍了人工智能(AI)的基本概念,并说明了AI相关术语,包括模型(Model)、大语言模型(LLM)、提示词(Prompt)和词元(Token)等核心概念。随后介绍了SpringAI框架,并提供了使用DeepSeek API的快速入门指南,包括环境要求、API申请和项目创建步骤,并展示了如何通过ChatModel和ChatClient接口与模型交互。最后介绍了SSE协议和Flux实现流式输出的方法,以及SpringAI中的Advisors拦截器机制
2025-11-04 09:00:00
2434
43
原创 DNS 域名解析
DNS(域名系统)是互联网将域名转换为IP地址的核心服务。其解析过程包括:本地缓存检查→递归查询→迭代查询(根→顶级→权威服务器)。DNS报文由Header、Question、Answer等5部分组成,通过标志位区分权威/非权威响应。实际解析中常使用CNAME别名(如baidu.com指向a.shifen.com)和负载均衡。全球13组根服务器通过任播技术部署,与顶级域(.com/.cn)、二级域共同构成树状体系。
2025-09-11 09:00:00
1304
47
原创 ARP 协议
本文介绍了 ARP 协议的报文结构和基本原理。详细分析了 ARP 协议的请求响应报文,以及 ARP 请求后未收到响应是如何进行处理的
2025-09-09 09:00:00
1010
33
原创 Curator 如何实现分布式锁
本文介绍了 Curator 框架中的 InterProcessMutex 具体是如何实现可重入的分布式排他锁,详细分析了加锁(acquire)和解锁(release)的核心流程:包括节点创建、锁竞争判断、前驱节点监听、锁计数管理等关键步骤,并对比了与原生Zookeeper实现相比的优势,如自动重连、Watcher管理、异常处理等。最后说明了通过异步方式处理节点变更事件来唤醒等待线程的机制
2025-09-06 09:00:00
1105
40
原创 zookeeper 实现分布式锁
本文介绍了基于 ZooKeeper 实现分布式锁的核心原理和具体实现,详细讲解了连接建立、加锁、解锁的实现过程,并提供完整Java代码示例
2025-09-05 09:00:00
2579
39
原创 在线抽奖系统——奖品模块
奖品模块主要包含:1. 奖品列表:奖品id、奖品图、奖品名称、奖品描述、奖品价格,列表支持翻页 2. 奖品创建:奖品名称、奖品描述、奖品价格、奖品图片(上传图片文件)
2025-03-22 09:00:00
1307
54
原创 在线抽奖系统——人员模块
人员模块主要包含人员列表和普通用户注册:1. 人员列表:人员 id、姓名、身份信息(普通用户/管理员)2. 普通用户注册:姓名、邮箱、手机号
2025-03-02 09:00:00
724
42
原创 在线抽奖系统——项目测试
1. 在线抽奖系统的基本功能正常运行,正常流程能够正确执行2. 用户进行抽奖时响应及时,能够对抽奖过程中的异常情况进行处理3. 在进行抽奖通知时,仅使用 qq 邮箱进行通知,可对其进行优化,使系统支持多种邮箱通知以及验证码通知1. 所有按钮点击响应及时,页面显示良好,无错别字,无遮挡或显示错误情况2. 对于异常情况都使用弹窗进行提示,对用户体验不友好,可使用自定义模态框、表单验证反馈等进行提示1. 该系统的性能测试结果表明其在当前并发场景下表现优秀,能够满足需求。
2025-02-28 09:00:00
2162
48
原创 在线抽奖系统——管理员注册
用户输入注册信息后,点击注册按钮,发送注册请求给服务器,服务器校验用户信息是否正确,对 用户密码 和 手机号 分别进行加密,再将用户信息保存到数据库,保存成功后,服务器返回注册成功响应
2025-02-27 09:00:00
1235
31
原创 在线抽奖系统——通用模块
通用功能模块 是在软件开发中,创建的一组通用的功能模块,以便在不同的应用场景中重用,从而提高开发效率、降低重复开发工作量,并确保系统的一致性与可维护性。通用功能模块通常具有高度的复用性,能够服务于多个系统或应用
2025-02-26 09:00:00
1078
22
原创 网页五子棋——通用模块
通用功能模块 是在软件开发中,创建的一组通用的功能模块,以便在不同的应用场景中重用,从而提高开发效率、降低重复开发工作量,并确保系统的一致性与可维护性。通用功能模块通常具有高度的复用性,能够服务于多个系统或应用
2025-02-13 09:00:00
1954
35
原创 网页五子棋——项目介绍
实现一个网页版五子棋对战程序,支持以下核心功能:1. 用户模块:用户注册、用户登录、用户天梯分数记录 以及 用户比赛场次记录2. 匹配模块:按照用户的天梯分数实现匹配机制3. 对战模块:实现两个玩家在网页端进行五子棋对战功能
2025-02-12 09:00:00
1100
20
原创 WebSocket
Websocket 是一种 协议,用于在 客户端 和 服务器 之间建立持久的 双向通信连接,广泛应用于需要实时数据交换的应用程序,例如在线聊天、实时游戏、股票行情等。是从 HTML5 开始支持的一种网页端和服务端保持长连接的 消息推送机制
2025-02-04 09:00:00
2269
60
原创 Spring Boot 自动配置
当 Spring 容器启动后,一些配置类、bean 对象等就自动存入 Ioc 容器中,而不再需要我们手动去声明,从而简化了程序开发过程,省去了繁琐的配置操作。Spring Boot 的自动配置,就是 SpinrgBoot 将依赖 jar 包中的配置类以及 Bean加载到Spring Ioc 容器中的过程,在本篇文章中,我们主要学习一下两个方面:1. Spring 如何将对象加载到 Spring Ioc 容器中 2. SpringBoot 是如何进行
2025-01-23 09:00:00
3745
75
原创 Bean的作用域和生命周期
在 Spring 框架中,Bean 的作用域(Scope)和生命周期(Lifecycle)是两个非常重要的概念,决定了 Bean 的创建、存储和销毁方式
2024-12-27 09:00:00
1607
108
原创 Spring Boot 中 RabbitMQ 的使用
在本篇文章中,我们就来在Spring Boot 中实现常见的工作模式,进而学习在 Spring Boot 中如何使用 RabbitMQ
2024-12-05 09:00:00
7250
120
原创 RabbitMQ 的工作模式
RabbitMQ 共提供了 7 种工作模式进行消息传递,在本篇文章中,我们就来学习 RabbitMQ 的工作模式
2024-11-30 09:00:00
7744
107
原创 RabbitMQ入门
RabbitMQ 是一个开源的消息中间件(Message Broker),实现了消息队列的功能,允许不同的应用程序或服务之间通过消息进行异步通信。RabbitMQ 采用 Erlang 语言实现了AMQP(Advanced Message Queuing Protocol,高级消息队列协议)标准,提供了可靠的消息传递、队列管理、消息路由等功能
2024-11-23 09:00:00
2048
120
原创 Java 枚举
枚举(enum):是一种特殊的类,用于定义一组常量,将其组织起来。枚举使得代码更具有可读性和可维护性,特别是在处理固定集合的值时,如:星期、月份、状态码等
2024-11-08 09:00:00
6050
127
原创 Spring AOP
AOP(Aspect-Oriented Programming,面向切面编程):是一种软件开发的编程范式,旨在将横切关注点(cross-cutting concerns)与核心业务逻辑分离,以提高代码的模块化性、可维护性和复用性
2024-11-04 09:00:00
5156
100
原创 Java 反射
反射(reflection)是 Java 中的一项特性,它允许程序在运行时查询和操作类的信息。即,在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意方法和属性。获取到方法和属性后,就可以对其进行修改。这种动态获取信息以及动态调用对象方法的功能也就是Java的反射机制
2024-11-01 09:00:00
8381
105
原创 Java 泛型
泛型是在 JDK 1.5 引入的新语法,是 Java 中的一个特性,在定义类、接口或方法时,使用类型参数来提高代码的灵活性和可重用性。通过泛型,可以在编写代码时不指定具体的类型,而是在使用时再指定,从而实现更通用的代码
2024-10-27 09:00:00
5715
110
原创 KMP 算法
KMP 算法是一种改进的字符串匹配算法,利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。文章介绍了KMP算法为什么不需要在主串中进行回退、如何计算next数组、next数组的优化以及如何查找所有匹配成功的起始位置
2024-10-20 09:00:00
4764
112
原创 BF 算法
BF算法:即暴力(Brute Force)算法,是一种模式匹配算法,将目标串 S 的第一个字符与模式串 T 的第一个字符进行匹配,若相等,则继续比较 S 的第二个字符和 T 的第二个字符;若不相等,则比较 S 的第二个字符和 T 的第一个字符,依次比较下去,直到得出最后的匹配结果
2024-10-16 09:00:00
4484
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅