自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 langchain4j实战:向量模型EmbeddingModel落地实践

项目面临多合作方集成挑战,涉及复杂的业务场景和接口字段间的数据映射,需手动配置映射表达式,效率低下,接口字段非常多时很费时费力。通过运用大模型的自然语言处理能力,能精准识别用户查询的“证件号码”意图,确保映射至正确的X.idNo字段,而非误配至如手机号等其他字段,极大地提升了对接新合同方时的自动化程度与准确性。文本分割器,解析表达式文本,包含接口类型、字段名称、表达式;最终实现效果:如下图,在接口字段配置页面,无需再手动填充,点击“一键生成”,自动适配出表达式内容。postman调用结果。

2024-07-10 15:00:41 327

原创 langchain4j实战:向量模型EmbeddingModel&RAG场景使用

检索增强生成(RAG)为大语言模型(LLMs)提供了从数据源检索的信息,以此为基础生成回答。简而言之,RAG结合了搜索技术和大语言模型的提示功能,即模型根据搜索算法找到的信息作为上下文来回答查询问题。无论是查询还是检索的上下文,都会被整合到发给大语言模型的提示中。

2024-07-02 15:10:05 445

原创 langchain4j实战:AiServices(chatMemory、chatMemoryProvider)的使用

本节主要介绍聊天对话内存ChatMemory,由于语言模型不保留对话的状态,因此有必要在与语言模型的每次交互中提供所有先前的消息。有助于跟踪对话并确保消息适合语言模型的上下文窗口。以下示例与大模型交互中,先告诉他“你好,我是小橘”,然后再问他“我叫什么”,看他的问答完全不知道我的名字,明明前面已经告诉大模型了,为啥还不知道呢,这是因为每次执行model.generate方法与大模型交互,相当于打开了一个新的对话窗口,对于大模型来说,没法直接关联到上下文信息。

2024-05-20 17:29:06 463 5

原创 langchain4j实战:AiServices(@SystemMessage、@UserMessage、Tools)的使用

AiServices服务提供了一种更简单、更灵活的替代链。您可以定义自己的API(带有一个或多个方法的Java接口),AiServices将为其提供实现(我们称之为“AI服务”)。底层则是使用Jdk动态代理方式增强定义的接口,让其具备和LLM交互的功能。

2024-05-20 16:35:21 723

原创 langchain4j实战:三种模型的使用(ChatLanguageModel、StreamingChatLanguageModel、ImageModel)

langchain4j版本用的是0.27.1,LLM大模型使用OpenAi本文主要介绍聊天对话、流式对话、文生图三种模式的使用,只需要两步就可以实现和LLM交互。

2024-05-17 16:08:05 1188

原创 LangChain4j:利用AI新技术给Java应用赋能

LangChain用来构建具有LLM能力的应用框架,只有Python和Javascript版本,无Java版本。对于Java应用开发者很不友好,因此LangChain4j应用而生。LangChain4j利用LLM的强大功能增强你的Java应用,目标是简化将LLM功能集成到Java应用中的过程。官网地址:https://docs.langchain4j.dev/从官网描述可以看到它的特点和优势支持超过10个流行的LLM,包括OpenAI、ZhiPu、Qianfan等等。

2024-05-17 13:59:44 958

原创 Redis实现限流功能

自定义限流注解RateLimiter,当频繁调用注解的方法时,会触发限流规则(限流规则支持配置多个),比如10s内只支持20次调用,当超过20次时会被限流。

2024-02-22 17:09:12 400

原创 记录一次内存泄露问题

使用JProfiler工具分析dump文件,看到了ThreadLocal对象,出现这个很容易联想到ThreadLocal对象没remove释放,造成的内存泄露,查看实例来源,发现这个ThreadLocal对象来自于LambdaFunction对象,差不多已经定位到问题了,我们只需要找到使用LambdaFunction对象的地方即可。LambdaFunction来自于aviator包,aviator是来自于google的表达式计算引擎,LambdaFunction的创建器是LambdaFunctionBoot

2024-02-22 10:17:26 476

原创 Spring cloud负载均衡Ribbon&LoadBalancer实战使用

使用浏览器访问http://localhost:8041/client/hello1,则nacos-client用webclient响应式客户端通过loadbalancer从服务实例列表中选择一个nacos-server实例进行调用。使用浏览器访问http://localhost:8041/client/hello,则nacos-client用RestTemplate客户端通过loadbalancer从服务实例列表中选择一个nacos-server实例进行调用。方式一:修改pom文件。

2023-09-17 18:32:32 200

原创 Spring cloud负载均衡Ribbon&LoadBalancer

Springcloud提供了两种负载均衡实现Ribbon和LoadBalancer1、在使用时引入对应的starter依赖即可2、默认使用的是Ribbon,因此在使用Loadbalancer时,除了引入Loadbalancer的starter依赖外,还要排除掉ribbon的依赖,这样生效的就是Loadbalancer3、Ribbon只支持RestTemplate,LoadBalancer支持RestTemplate以及响应式客户端WebClient4、Ribbon属于netflix组件已经不在开源,

2023-09-16 23:48:00 414 1

原创 Nacos(1.4.2)服务注册、服务心跳源码分析

在服务注册执行putServiceAndInit方法时,调用Service#init方法,一个服务Service对应一个任务,开启健康检查定时任务ClientBeatCheckTask,默认延迟5s后执行,若某个实例超过15s没有收到心跳,则认为实例不健康;若某个实例超过30s没有收到心跳,则删除该实例。执行Cluster的updateIps方法,更新具体的实例信息,此处更新利用了写时复制技术,从老的集合中复制一份数据用来更新数据,而查询时继续从原来的实例中获取。

2023-05-25 21:16:25 511

原创 Nacos注册中心简介

Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例,被剔除的实例如果恢复发送心跳则会重新注册。在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。

2023-05-25 20:41:00 79

原创 Nginx、Kong、Apisix、Gateway网关比较

Apache APISIX基于 nginx(openresty)和 Lua 实现的一款国产软件,是一个动态、实时、高性能的云原生API网关,提供了负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。Filter可以对请求和响应进行处理。API网关为微服务架构的系统提供简单、有效 且统一的API路由管理,作为系统的统一入口,提供内部服务的路由中转,给客户端提供统一的服务,可以实现一些和业务没有耦合的公用逻辑,主要功能包含认证、鉴权、路由转发、安全策略、防刷、流量控制、监控日志等。

2023-05-14 17:33:17 5798

原创 RPC框架简介

是一个高性能、轻量级的开源RPC框架,专注于两个服务之间的调用,支持多种通信协议(dubbo、dubbo2、rest、Triple)等。典型 RPC 的使用场景中,包含了服务发现、负载、容错、网络传输、序列化等组件。Triple 则是基于 HTTP/2之上构建的支持流式模式的通信协议,并且 Triple 完全兼容 gRPC 但实现上做了更多的符合 Dubbo 框架特点的优化。2、协议层(Protocol):协议层定义了数据传输格式,负责网络传输数据的序列化和反序列化;

2023-04-01 17:00:35 1138

原创 IO模型和Selector详解

内核函数,将我们的epoll对象和socketChannel关联起来,并将事件注册到epoll实例上,有事件该方法就能感知到,然后将事件添加到epoll内部的就绪事件列表rdlist中,该rdlist其实就是我们每次while循环要处理的事件(在操作系统层面,服务到接受到客户端数据后,就会产生事件,会进行系统中断,然后将响应的事件放到rdlist列表中)。给客户端SocketChannel注册读事件。Selector是基于epoll的事件通知方式调用的,当有IO事件就绪,系统注册的回调函数就会被调用。

2023-04-01 16:26:25 143

原创 Redis核心原理和应用场景总结

哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次都通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端(这里面redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息)。gossip协议的优点在于元数据的更新比较分散,不是集中在一个地方,更新请求会陆陆续续,打到所有节点上去更新,有一定的延时,降低了压力;

2023-03-13 23:19:01 88

原创 RocketMq核心原理总结

基于Netty的实现远程通信功能,如NameServer何broker,broker和客户端之间,以及各个broker之间同步数据都是基于netty来实现的。集群消费模式下, 相同Consumer Group的每个Consumer实例平均分摊消息。;广播消费模式下,相同Consumer Group的每个Consumer实例都接收全量的消息。

2023-03-12 17:47:45 196

原创 RabbitMq、RocketMq、Kafka比较

使用 MQ 使得应用间解耦,提升容错性和可维护性。异步能提高系统的响应速度、吞吐量;以稳定的系统资源应对突发的流量冲击。

2023-03-12 00:18:22 466

原创 kafka核心原理总结

Broker:多个Broker可以组成一个Kafka集群Topic:消息主题,属于逻辑概念,根据topic对消息进行归类Partition:分区,属于物理概念,一个topic可以分为多个partition,每个partition内部消息是有序的。

2023-03-11 23:36:08 171

原创 BlockingQueue、Future、CompletionService总结

如何优雅使用中断interrupt,基于数组结构实现的一个有界阻塞队列ArrayBlockingQueue;基于链表结构实现的一个无界阻塞队列,指定容量则是有界阻塞队列LinkedBlockingQueue;通过阻塞队列和FutureTask来实现的CompletionService原理分析

2023-03-05 00:15:19 149

原创 AbstractQueuedSynchronizer独占模式共享模式分析

AQS中同步等待队列、条件队列分析,独占模式和共享模式解析

2023-03-02 20:57:31 139

原创 JVM和JMM内存模型的区别

JVM是java虚拟机,可以让class文件在不同操作系统上运行。JMM描述的是一种抽象的概念,规定了一个线程怎么样可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。

2023-02-26 22:19:10 307

原创 Mysql高级面试点汇总

索引数据结构使用B+Tree,而非B-Tree、hash的原因;MVCC多版本控制机制,Innodb引擎SQL执行的底层原理

2023-02-21 21:29:40 219

原创 spring相关知识总结

容器启动过程、AOP原理、事务原理、@AutoWired 原理、invokeBeanFactoryPostProcessors执行过程、BeanPostProcessor和BeanFactoryPostProcessor

2023-02-18 23:26:41 77

原创 spring中的扩展点及其应用

spring容器启动时,会先解析BeanDefinition,然后生成BeanDefinition信息;再实例化生成bean对象,在这个过程中spring为我们提供了很多扩展点,来实现定制功能。

2023-02-18 23:20:27 1406

原创 Netty源码解读

Boss的NioEventLoop线程处理accept事件, 与client 建立连接,生成NioSocketChannel;worker的NioEventLoop线程处理read, write事件

2023-02-18 23:06:03 635

原创 CPU高速缓存、内核态与用户态、堆外内存、零拷贝简述

CPU高速缓存、上下文切换流程操作系统内存空间分为内核态和用户态堆外内存的使用、零拷贝描述

2022-09-11 22:16:21 1094

原创 ZAB、Raft协议简述

zab、raft集群leader选举、数据同步流程

2022-09-11 21:52:39 4656

原创 Zookeeper与Nacos选举比对

Zookeeper使用多级列队选举两轮投票流程Nacos使用随机时间进行选举流程

2022-09-11 01:07:34 775

空空如也

空空如也

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

TA关注的人

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