自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 7. LangChain4j如何使用统一api调用?

当我们对接LangChain4j的时候,面对复杂的各种各样的大模型的api的对接,让很多开发者感到力不从心。在每个大模型的api都不一样的时候?该如何快捷的切换模型的使用呢?这时,One-API应运而生,它以其简洁,高效的特性,吸引了大量开发者的关注。那么,究竟什么是One-API?它有哪些应用场景?又该如何尝试呢?本文将为你一一解答。

2024-07-21 19:47:16 632

原创 Docker无法拉取镜像!如何解决?

Docker无法拉取镜像!如何解决?

2024-07-21 01:30:22 306

原创 6. 基于RAG实现一套企业智能客服系统

LLM的知识仅限于它所训练的数据。如果你想让 LLM 了解特定领域的知识或专有数据,你可以使用 RAG。什么是RAG?简而言之,RAG(检索增强生成) 是从数据中查找和注入相关信息的方法 再将其发送到 LLM 之前添加到提示符中。这样,LLM将获得相关信息,并能够使用这些信息进行回复, 这应该会降低幻觉的可能性。再简单一点,就是用户输入问题时, 我们先从我们的知识库查看答案, 再把用户输的问题和我们知识库的答案,一起发送给大模型,让大模型根据我们的答案回复用户问题。

2024-07-17 18:30:42 735

原创 5. 基于Embedding实现超越elasticsearch高级搜索

Embedding是向量的意思,向量可以理解为平面坐标中的一个坐标点(x,y),在编程领域,一个二维向量就是一个大小为float类型的数组。也可以用三维坐标系中的向量表示一个空间中的点。在机器学习中,向量通常用于表示数据的特征。向量分数越高,代表位置越接近,匹配的数据越相似。

2024-07-15 00:25:00 850

原创 4. LangChain4j 之 Tools

大模型在解决问题时,是基于历史数据进行预测的,而且答案具有一定的随机性,它没办法拿到当前最新的数据.比如你问它 "今天是几号?","今日的热点新闻是什么?",大模型大概率是回答不上来。而LangChain4j的Tools机制就能够帮助大模型来获取到当前最新的数据。它允许大模型在必要时调用一个或多个可用的工具,这些工具通常由开发人员定义。工具可以是任何东西:Web搜索、对外部API的调用或特定代码段的执行等。LLMs实际上不能调用工具本身;相反,它们在响应中表达调用特定工具的意图(而不是以纯文本响应)。

2024-07-13 16:43:36 273

原创 3. LangChain4j 之 Chat Memory

TokenWindowChatMemory和MessageWindowChatMemory类似,区别在于计算容量的方式不一样,MessageWindowChatMemory直接取的是List的大小,而TokenWindowChatMemory会利用指定的Tokenizer对List对应的Token数进行估算,然后和设置的maxTokens进行比较,超过maxTokens也会进行淘汰,也是淘汰最旧的ChatMessage。根据集合的大小,来淘汰掉旧的消息。

2024-07-12 00:21:06 337

原创 2. LangChain4j 之AI Services

LangChain4j提供了很多基础的组件,每次使用都需要你编写大量的样板代码,LangChain4j就提供了一个高级的组件AI Services,它可以简化与大模型(LLM)和其他组件交互的复杂度。让开发者更专注于业务逻辑,而不是底层的实现细节。

2024-07-11 17:26:36 847

原创 1. LangChain4j 之入门(简单易学)

不知道的朋友,可以看我一下两篇文章。

2024-07-08 10:44:01 525

原创 IDEA 好用的插件,必备的插件

菜单栏显示git分支信息快速定位找到sql的xml文件快速定位接口的插件 默认快捷键: Ctrl+Alt+N字符串转驼峰 默认快捷键: Ctrl + Alt + Q。

2024-07-02 14:51:54 414

原创 1分钟了解LangChain4j是什么?

LangChain现在仅支持​ Python语言与Javascript语言, 而LangChain4J就是属于Java版本的。

2024-07-01 18:19:23 458

原创 1分钟了解LangChain是什么?

是一个基于大型语言模型(LLM)开发应用程序的框架, 它旨在简化语言模型应用的开发流程,特别是在构建对话系统和其他基于语言的AI解决方案时.目标是将复杂的语言模型技术转化为可通过简单API调用实现的功能,从而使开发者能够更加专注于创造性的解决方案设计。高效地解决了开发大语言模型应用的痛点问题。Langchain 最主要的特色是可以将 LLM 应用研发过程中的交互 Prompt、LLM 模型调用、语言模型与环境互动的自适应等方式融为一体。

2024-07-01 16:22:12 854

原创 JVM线上监控环境搭建Grafana+Prometheus+Micrometer

Spring Boot 2.0以上,使用了micrometer作为底层的度量工具,micrometer是监控度量的门面,它能支持按照各种格式来暴露数据,其中就有Prometheus。SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。这个依赖的作用就是会开启一个endpoint,输出兼容Prometheus exporter的结果,方便Prometheus来采集。然后启动应用, 访问。

2024-06-28 18:10:08 1202

原创 Java线上问题排查神器Arthas实战分析

6到飞起的线上排查利器

2024-06-27 15:19:03 1062

原创 JVM之jstat命令解析

jstat全称叫JVM statistics monitoring tool ,JVM统计监控工具,查看堆,GC详细信息。

2024-06-25 21:55:32 638

原创 JVM之jmap命令解析

jmap全称叫JVM Memory Map,用来查看堆内存使用状况,一般结合jhat使用,jmap生成dump内存快照文件,而jhat根据dump文件启动一个服务,进而对文件进行分析,我们可以访问启动的服务进行信息查看。打印的虚拟机内 部的类名称将会带有一个’*’前缀。使用不带选项参数的jmap打印共享对象映射,将会打印目标虚拟机中加载的每个共享对象的 起始地址、映射大小以及共享对象文件的路径全称。:对象及对象引用链中所有对象的大小总和,如果一个对象被释放掉,因为该对象的释放而被释放的所有的对象的大小。

2024-06-19 10:32:10 1087

原创 JVM之jstack命令解析

通过结果可以看出Thread-3线程锁住了0x00000000f6360238,然后在等待0x00000000f6360228,而Thread-2却却相反,从下面每个线程的第一行ThreadController.java:42可以看到死锁的代码在哪个地方,进而排查出问题所在。通过上面的命令,可以得到线程的堆栈信息后10行信息,从堆栈中可以发现导致CPU飙高的调用方法。除堆栈外,显示关于锁的附加信息,在发生死锁时可以用jstack -l pid来观察锁持有情况。当正常输出的请求不被响应时,强制输出线程堆栈。

2024-06-16 23:04:05 550

原创 Mybatis 一级缓存引发的bug

为了更快捷的进行开发,很多项目会在service层中会引入mybatis plus来进行代码的编写。在使用mybatis plus进行分页的时候,稍不注意就会死循环。而这一切的真凶竟然是mybatis的一级缓存。

2024-06-13 22:56:26 398

原创 消息系统接口设计

消息系统接口设计 系统涉及的消息模块 短信接口设计 IM业务分析

2024-04-15 09:37:37 896

原创 Git回滚和强推的使用方法及注意事项

git有三大分区,平常我们操作git命令的时候,就是把文件提交在不同的分区流转,流程如下。(可参考如下图片理解)

2024-04-14 21:10:49 600

原创 SpringBoot项目打包部署Linux后访问不到resources下的文件

而对于 Class.getResource(String path)来说,可以加"/"开头,也可以不加"/"开头,它底层还是调到Class.getClassLoader().getResource(String path)去,但如果path不加"/",例如"static/img/template.png",则代表是相对路径,表示相对于当前运行这行代码的类,此时会加上 包名+static/img/template.png。结果打印出来了,并且可以看到有报错信息,就是开头所说的问题。也行,也可以正常运行。

2024-03-30 22:21:43 1983

原创 项目中使用@ConditionalOnBean注解带来,spring bean加载顺序问题

否, 在解决问题中,我发现了一个奇特的现象是,如果common模块没有打成jar, gy模块正常启动得了, 如果common模块打成jar时, gy模块启动时service层注入的时候,会报找不到RedissonClient 这个bean.此时,瞬间懵b,这又是什么问题.........项目中有这样一段代码,不知道同事为什么这么写,A配置类,依赖于B配置类中的xx对象, 然后在A配置类上面加了@ConditionalOnBean(xx.class)的注解,导致项目启动一直说找不到A配置类中的Bean.

2024-03-05 16:43:01 983 1

原创 mysql问题排查命令总结

注意,state只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copying to tmp table,Sorting。解释:从server端发送数据到客户端,也有可能是接收存储引擎层返回的数据,再发送给客户端,数据量很大时尤其经常能看见。:显示执行的sql语句,因为长度有限,所以长的sql语句就显示不全,但是,是一个判断问题语句的重要依据。消耗内存,数据来回拷贝删除,消耗时间。:显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)

2023-09-06 13:48:08 136

原创 Spring AOT java跨时代产物

Spring AOT 还支持通过配置文件自定义一些编译参数,以满足不同项目的需求。在目录下创建一个名为的文件,并添加以下内容:上述配置表示使用 agent 模式启动 AOT 编译器。

2023-04-21 16:37:11 1781 1

原创 ProxyFactory

在计算机科学中,代理模式是一种结构型设计模式,它可以为其他对象提供一个替代品或者占位符,以控制对这个对象的访问。代理对象通常充当了客户端和目标对象之间的中介,从而可以隐藏目标对象的实现细节、保护目标对象不被非法访问、增强目标对象的功能等等。代理模式有两种形式:静态代理和动态代理。静态代理的优点是能够提前做好一些工作,例如参数的检查、日志记录等等;缺点则是需要针对每个需要代理的接口编写一个代理类。而动态代理则可以根据接口生成代理对象,并且可以在运行时动态的添加和修改代理方法,因此更加灵活。

2023-04-21 15:20:35 333

原创 Cglib Callback使用

在Java中,有时需要使用代理模式来实现某些功能。Java提供了内置的动态代理支持,但其局限性较大,只能代理接口类型。如果要代理非接口类型的类,则可以使用Cglib库。Cglib是一个强大的Java字节码生成库,它允许我们动态生成字节码,并使用它来创建代理对象。在Cglib中,Callback是一个接口,通过实现Callback接口的不同子类来实现各种代理行为。常见的Callback类型包括MethodInterceptor、LazyLoader、Dispatcher、FixedValue和NoOp等。

2023-04-21 14:55:13 318

原创 Cglib入门到使用

Cglib是一个强大的Java代码生成库,用于创建动态代理和增强对象。本文介绍了Cglib的基础知识、核心原理和使用方法,以及一些高级用法,如字段拦截、构造函数拦截和BeanGenerator等。Cglib提供了比Java自带的动态代理更好的性能和灵活性,可以满足各种代理需求,是Java开发人员不可或缺的工具之一。

2023-04-21 14:51:01 755

原创 单点登录CAS

1.0、SSO概念单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO 并不能算是一种架构,只能说是一个解决方案。SSO核心意义就一句话:一处登录,处处登录;一处注销,处处注销。就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,即用户只需要记住一组用户名和密码就可以登录所有有权限的系统。1.1、Cookie单点登录单点登录的实现方案,一般就包含以下三种:CookiesSession同步Session同步目前的大

2021-03-29 11:53:56 2110

原创 Spring Security会话管理-实战五

Spring Security已经为我们提供了完善的会话管理功能,包括会话固定攻击,会话超时检测以及会话并发控制。会话(session)就是无状态的HTTP实现用户状态可维持的一种解决方案。当用户首次访问系统时,系统会该用户生成一个sessionId,并添加到cookie中。在该用户的会话期内,每个请求都自动携带该cookie,因此系统可以很轻易地识别出这个来自那个用户的请求。一:会话固定攻击尽管cookie非常好用,但有时用户会在浏览器禁用它。为了解决这个问题,有些服务器还支持用URL重写的方式来实现

2021-03-25 16:40:09 617 1

原创 自动登录和注销登录-实战四

自动登录时将用户的登录信息保存在用户浏览器的cookie中,当用户下次访问时,自动实现校验并建立登录态的一种机制。Spring Security提供了两种非常好的令牌:用散列算法加密用户必要的登录信息并生成令牌。数据库等持久性数据存储机制用的持久化令牌。一:散列加密方案首先在静态页面加上<div> <p><input name="remember-me" type="checkbox" value="true">记住我</p></di

2021-03-24 22:18:27 348

原创 spring security实现图形验证码-实战三

代码gitee地址:https://gitee.com/original-intention/spring-security.git一:使用过滤器实现图形验证码1.使用开源的验证码组件kaptcha<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</ver

2021-03-24 22:13:17 233

原创 spring security认证授权-实战二

一:基于内存的多用户认证授权:@EnableWebSecuritypublic class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests() .antMatchers("/admin

2021-03-23 16:37:38 196

原创 spring security自定义表单登录 实战一

<--spring security依赖--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId></dependency>加入依赖就可以进行HTTP基本认证,但绝大多数Web应用都不会选择这种认证方式,除了安全性差,无法携带cooki

2021-03-23 10:13:52 165 1

空空如也

空空如也

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

TA关注的人

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