自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 了解Spring AI吗,他都能干什么?

Spring通过简单的配置快速集成 OpenAI、Azure OpenAI、HuggingFace、Ollama、Mistral、Google Gemini 等主流 LLM 服务。ChatModel API 让应用开发者可以非常方便的与 AI 模型进行文本交互,它抽象了应用与模型交互的过程,包括使用。提供了与 AI 模型通信的 Fluent API,它支持同步和反应式(Reactive)编程模型。支持基于chat memory的对话记忆,也就是不需要调用显示的记录每一轮的对话历史。

2025-07-04 11:25:32 469

原创 MCP入门指南:大模型时代的USB接口

摘要: 模型上下文协议(MCP)是AI领域的标准化接口,类似于大模型时代的“USB协议”,旨在解决AI与外部工具和数据交互的碎片化问题。MCP通过标准化组件(服务器、客户端、主机、传输层)实现AI与多种数据源、工具的连接,提升AI的知识扩展、实际操作和上下文感知能力。 MCP为开发者带来标准化集成、安全控制及可扩展性,同时催生AI生态系统协作与创新。实际应用已覆盖开发者工具、研究分析和个人助理等领域。尽管面临采用障碍和安全挑战,MCP作为开放标准,未来可能成为连接AI与世界的核心协议。目前,支持MCP的编辑

2025-06-25 15:40:10 753

原创 深入解析Feign Client的configuration参数:局部配置与全局配置的抉择

✅ ‌局部配置‌:省略,通过参数指定⚠️ ‌全局配置‌:显式添加,并注意包扫描路径。

2025-04-22 19:17:46 1530

原创 Dubbo的异步调用

在分布式系统中,异步调用可以显著提高系统的并发处理能力和响应速度。本文将通过一个简单的示例,展示如何使用Apache Dubbo进行异步调用。

2025-03-24 19:26:13 446

原创 深入剖析Apache Dubbo:微服务时代的核心引擎

*技术交流**:欢迎加入Dubbo开发者社区(公众号:ApacheDubbo),获取最新技术动态和实战案例。- **Registry层**:集成ZooKeeper/Nacos/Consul等服务发现机制。- **Protocol层**:支持多种通信协议(Dubbo/gRPC/REST等)**本文关键词**:Dubbo框架、微服务架构、分布式系统、服务治理、云原生。- **服务暴露与订阅**:基于SPI机制的动态服务注册/发现。- **流量管控**:精准的QPS限流、并发控制、延迟降级。

2025-03-15 21:05:16 441

原创 架构设计篇

技术债务(Technical Debt)指的是在开发过程中,为了快速交付或避免解决问题所需的高成本和高风险而采取的妥协或折中方案,这些方案所留下的技术上的负担和后续成本即被称为技术债务。技术债务的本质是以速度和时间为代价,在软件开发中的某个时刻实施了不可持续的技术决策,通常是为了实现某种业务目标而对代码质量、架构设计、技术选型等方面进行了妥协。虽然技术债务能够让团队在短时间内快速交付软件产品,但随着时间的推移,技术债务会越积越多,导致软件系统越来越难以维护和升级,进而影响业务的持续发展和创新。

2025-03-13 19:53:47 977

原创 话说设计模式(七)

模板方法模式是一种行为设计模式,他的主要作用就是复用代码。在很多时候,我们的代码中可能会有一些公共的部分并且还有一些定制的部分,那么公共这部分就可以定义在一个父类中,然后将定制的部分实现在子类中。这样子类可以根据需要扩展或重写父类的方法,而不需要改变算法的结构。我们通常会把模板方法模式和策略模式一起使用,因为当我们使用策略模式的时候,会把具体的策略实现在策略服务里面,但是还剩下一些通用的逻辑,就可以通过模板方法模式进行复用。

2025-03-13 19:43:53 298

原创 话说设计模式(六)

代理对象充当原始对象的接口,客户端通过代理对象间接地访问原始对象,并可以在访问过程中添加额外的逻辑或控制。以上,就是一个代理模式的具体实现了,一般来说,我们也会基于上面的思想,再结合Spring的AOP的机制,和自定义注解,实现一个简单的注解,可以把他加到方法上就能实现缓存的逻辑了。代理模式的主要目的是通过引入代理对象,为原始对象提供一层间接访问的方式,以实现对原始对象的控制、保护或增强。4、日志代理:这种用的也挺多的,当我需要做日志记录的时候,可以做一个代理,在代理对象中进行统一的日志记录及管理。

2025-03-13 19:41:13 232

原创 话说设计模式(五)

观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式有助于实现松耦合,因为被观察者对象无需知道观察者的具体细节,只需通知它们即可。观察者模式在许多应用场景中都能够发挥作用,特别是在需要处理对象之间的松耦合关系、实时通知和更新的情况下。我们先创建一个主题,然后期望他在被修改的时候可以被立刻感知到。,这就是这个主题的观察者的列表。这里面定义了一个成员变量。

2025-03-13 19:38:26 350

原创 话说设计模式(四)

在获取怪兽对象时,如果该对象已经存在,直接返回已有的对象,否则创建一个新的对象并将其存储到 HashMap 中。然后,我们创建具体的怪兽类,例如红色怪兽、蓝色怪兽、方形怪兽、圆形怪兽等等。首先,我们创建一个抽象的怪兽类 Monster,包含所有怪兽共有的属性和方法,例如 draw() 方法来绘制怪兽。这样,我们就可以在游戏中随意创建各种类型的怪兽,但是实际上每个怪兽只会被创建一次,避免了过多的内存占用。在享元模式中,如果需要相同数据的多个对象,则共享这些对象而不是创建新的对象,从而提高系统的效率。

2025-03-13 17:30:35 203

原创 话说设计模式(三)

在并发编程的世界里,共享变量的线程安全问题永远是一个无法避免且不得不面对的问题,如果只有读的情况,那么永远也不会出现线程安全的问题,因为多线程读永远是线程安全的,但是多线程读写一定会存在线程安全的问题。那既然这么说是不是通过只读就能解决并发问题呢?其实最简单的办法就是让共享变量只有读操作,而没有写操作。。所谓不变性,简单来讲,就是对象一旦被创建之后,状态就不再发生变化。换句话说,就是变量一旦被赋值,就不允许修改了(没有写操作);没有修改操作,也就是保持了不变性。

2025-03-13 17:28:43 589

原创 话说设计模式(二)

工厂类是整个简单工厂模式的关键。包含了必要的逻辑判断,根据外界给定的信息,决定究竟应该创建哪个具体类的对象。通过使用工厂类,外界可以从直接创建具体产品对象的尴尬局面摆脱出来,仅仅需要负责“消费”对象就可以了。而不必管这些对象究竟如何创建及如何组织的。明确了各自的职责和权利,有利于整个软件体系结构的优化。但是由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中;它所能创建的类只能是事先考虑到的,如果需要添加新的类,则就需要改变工厂类了。

2025-03-13 17:23:22 1115

原创 话说设计模式(一)

设计模式是在软件开发过程中经常遇到的问题的通用解决方案。它们是经过无数的验证和经验积累的最佳实践。首先,设计模式是一些前人经验的一些总结,所以,当遇到相似的问题的时候,我们可以直接借鉴好的设计模式来实现,这样可以大大降低我们的试错成本和迭代成本。可以大大提升我们的开发速度。不要认为只有23种,只要是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结都是软件设计模式的。比如说MVC。

2025-03-13 17:06:52 867

原创 Caffeine本地缓存框架使用介绍

在异步模式下,如果多个线程同时访问同一个缓存项,可能会导致缓存穿透的问题。当调用 getUserById 方法时,会先从名为 userCache 的缓存中查找对应的用户信息,如果缓存中不存在,则执行方法的逻辑,并将返回的用户信息存储到 userCache 缓存中,并且将 userListCache 缓存中的所有数据移除。key():指定缓存的键值 key。@Cacheable 注解:使方法返回结果被缓存【返回结果为 NULL,则不进行缓存】,再次通过相同参数调用时,会直接从缓存获取,而不再执行该方法逻辑。

2025-03-13 15:56:24 1344

原创 基于Mybatis-plus实现的动态多数据源使用详解

dynamic-datasource-spring-boot-starter 是一款功能强大且易于使用的动态数据源组件,其核心原理基于 Spring 的 AOP 和代理模式,通过 ThreadLocal 实现数据源上下文的动态切换。动态数据源本质上是一个代理数据源,它内部维护了一个数据源集合(Map<String, DataSource>),并通过某种策略动态选择具体的数据源。当执行 SQL 时,动态数据源会根据当前线程绑定的数据源标识(通常存储在 ThreadLocal 中)选择对应的数据源。

2025-03-13 15:35:40 1397

原创 Elasticsearch 底层原理详解

Elasticsearch(简称 ES)是一个分布式、RESTful 风格的搜索和分析引擎,广泛应用于各种搜索场景,包括商城业务中的商品检索、推荐系统等。每个节点可以承担不同的角色,如主节点(Master Node)、数据节点(Data Node)和协调节点(Coordinating Node)。Elasticsearch 提供强大的聚合功能,支持复杂的统计、分组、排序等操作。Elasticsearch 提供丰富的聚合功能,支持复杂的统计、分组、排序等操作。副本是分片的副本,用于提高数据的冗余性和可用性。

2025-02-18 14:03:57 299

原创 Elasticsearch安装

当启动Elasticsearch后,在浏览器输入地址。

2025-02-18 14:01:01 223

原创 FastJson中使用到的问题

1.redis中存入的数据是Json格式时 取出数据时需要解析成对象 否则数据会不对,多个""

2022-06-26 20:56:07 360

原创 Linux下kafka安装

kafka问题小记

2022-06-08 14:34:45 1599 1

原创 Java Lambda表达式

Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读放大招,流如何简化代码如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字 菜肴:Dish.javapublicclassDish{privateStringname;privatebooleanveget...

2022-04-29 09:46:22 352

转载 @JsonField 不起作用

@JsonField 不起作用_嘉戈的博客-优快云博客_jsonfield不生效

2022-04-27 14:34:11 4357

原创 设计模式介绍

1.单例设计懒汉式:饿汉式在类创建的同时就实例化一个静态对象出来,不管之后会不会使用这个单例,都会占据一定的内存,但是相应的,在第一次调用时速度也会更快,因为其资源已经初始化完成。public class Single { private Single() { } private static Single single ; public static Single getInstance() { if (single == null) {

2022-03-28 16:00:10 573

原创 数据库面试常见问题记录

1.什么是索引,为什么要用索引索引是一列排好序的数据,类似于图书的目录,使用索引可以帮助mysql高效获取数据的排好序的数据结构2.索引的数据结构B+树 、B树、二叉树、Hash表Mysql使用B+树作为数据结构3.索引失效情况模:模糊查询LIKE以%开头型:数据类型错误数:对索引字段使用内部函数空:索引列是NULL运:索引列进行四则运算最:复合索引不按索引列最左开始查找快:全表查找预计比索引更快...

2022-03-28 11:33:17 1231

原创 Mybatis多表查询

一.多对一查询1.新建实体类Teacher,Student2.建立Mapper接口3.建立Mapper.xml文件4.在核心配置文件中绑定注册我们的Mapper接口或者文件 (resource ,class)5.测试查询能否成功小结:1.关联-association【多对一】2.集合-collection【一对多】3.javaType & ofType 1.JavaType 用来指定实体类型中属性的类型 2.ofType用来指定映射到List或者集...

2021-08-19 23:10:24 112

原创 Mybatis从入门到精通

2.第一个Mybatis程序2.1 搭建环境2.2 创建一个模块2.3 编写代码创建工具类(封装创建Sqlsession的类工具包)public class mybaitsTool{ public static SqlSessionFactory sqlSessionFactory; static { try { String resource = "mybatis-config.xml"; In

2021-08-13 23:48:05 162

原创 Mybatis从入门到精通

环境:JDK1.8 Mysql maven IDEA1.简介1.1 什么是MybatisMyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。pom.xml要加入的依赖...

2021-08-08 22:44:16 127

原创 Spring从入门到精通

什么是Spring?Spring是一个支持快速开发Java EE应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发Java EE应用程序的必备。

2021-08-05 20:25:04 160

空空如也

空空如也

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

TA关注的人

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