RustFS入门
了解S3协议MinIO 中提到的 S3 协议,指的是 Amazon S3(Simple Storage Service,简单存储服务)的 API(应用程序编程接口)标准。可以把这个协议理解为一套通用的“命令”或“语言” S3的核心概念有两个: **存储桶 (Bucket):**就像是一个顶级的“存储空间”或“数据容器”。你可以为不同的项目或应用创建不同的存储桶,它们之间是相互隔离的。 **对象 (Object):**指的是你存储在存储桶里的具体文件。每个对象都由一个唯一的键(Key,即文件名)来标识。 RustFS简介它是基于Rust语言开发的高性能分布式对象存储软件,定位和minio高度相似。根据官方同等硬件压测,RustFS 在小对象(4KB)场景下吞吐量约为 MinIO 的2.3 倍,大对象场景也高达1.8~2.2 倍 安装参考:https://docs.rustfs.cn/installation/ 运行成功后,访问 http://localhost:9001/ 进入管理后台。 用户名:rustfsadmin 密码:rustfsadmin在管理后台可以: 创建和管理...
Java21 新特性
JEP 444: Virtual Threads(虚拟线程)虚拟线程是由 Java 21 版本中实现的一种轻量级线程。它由 JVM 进行创建以及管理。虚拟线程和传统线程(我们称之为平台线程)之间的主要区别在于,我们可以轻松地在一个 Java 程序中运行大量、甚至数百万个虚拟线程。 用一个比喻来讲,平台线程就像家里墙上的插座,虚拟线程就像是家里的插线板。 由于虚拟线程是 java.lang.Thread 的实现,并且遵守相同规则,因此开发人员无需学习新概念即可使用它们。 123456789// 平台线程Thread.ofPlatform().start(()->{System.out.println(Thread.currentThread());});// 虚拟线程Thread vt = Thread.ofVirtual().start(() -> { System.out.println(Thread.currentThread());});//等待虚拟线程打印完毕再退出主程序vt.join(); 适用场景 虚拟线程适...
RAG了解
RAG主要解决大模型知识受限的缺点,在时间和空间上。 RAG原理将数据全部向量化 向量模型在spring.ai.opendi.embedding.options.model: 配置向量模型,配置完后注入 OpenAiEmbeddingModel 就可以使用了。 1234567891011121314151617181920212223242526@Autowiredprivate OpenAiEmbeddingModel model;@Testpublic void testEmbedding() { // 1.测试数据 // 1.1.用来查询的文本,国际冲突 String query = "国际冲突"; // 1.2.用来做比较的文本 String[] texts = new String[]{ "哈马斯称加沙下阶段停火谈判仍在进行 以方尚未做出承诺", "土耳其、芬兰、瑞典与北约代表将继续就瑞典“入约”问题进行谈判", ...
SpringAI智能客服开发
逻辑设计开始->了解、分析用户->查询满足条件的商品->给用户推荐->新增订单->完成 加粗为大模型处理;其他两个是传统程序处理,将其定义为方法 prompt设计略 function 发送prompt,包含function定义(一个复杂的json) agent任务拆分,判断是否需要调用function 返回function名称和参数 执行函数,拼接结果到prompt,再次发送给大模型 要注意大模型是否支持function 定义function在后续版本中,function也叫做tools。首先定义tools模板: 1234567891011121314@Datapublic class XXXQuery{ @ToolParam(Required = false,description = "根据条件查询课程") private String type; @ToolParam(Required = false,description = "排序方式") private List<...
大模型理论
大语言模型在自然语言处理(Natural Language Processing,NLP)中,有一项关键技术叫Transformer,这是一种神经网络模型,是如今AI高速发展的主要原因。我们熟知的大模型(Large Language Models,LLM),列如GPT,DeepSeek底层都是采用的Transformer神经网络。 Generative:根据上文预测之后应该出现在哪个文本,从而形成连续的文本输出 Pre-trained:预训练,让大模型可以理解人类语言的语法、词性 Transformer:推理预测,深度学习的一种神经网络模型。多数的AIGC模型都依赖于此 文本向量化将文本相近的变成坐标点,文本语义相近的就距离较近。 将文本转成一组浮点数,放入一个数组,作为多为空间坐标(words–enbedding->vectors) 通过训练调整向量坐标,使其在不同的方向具备含义,让其相近的语义的词在空间中更加接近 两个向量的差,也就是一个向量到另外一个向量,可以表示两个点的不同点;比如man和woman 举例:E(中国)和E(美国)的饮食有什么差别,向量逻辑就是...
Spring AI 入门
Spring AI 入门 前置知识参考:Spring AI 中文网用于快速接入大模型 以下是 Spring AI、Spring Boot 与 JDK 的版本兼容性整理: Spring AI 版本 Spring Boot 版本 JDK 版本 1.0.x 3.1.x - 3.5.x Java 17 1.1.x 3.5.x Java 17 2.x 4.0.x 及以上 Java 21 大模型选型 自研大模型,AI算法岗(985,211) 云端大模型,阿里百炼 本地 ollama 部署开源大模型 github 大模型评分 调用大模型入门使用百炼大模型创建API-KEY导入maven: 12345678910111213141516171819202122232425262728293031<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId&...
maven 使用记录
maven依赖查找官网 https://mvnrepository.com/ dependencyManagementdependency 真正引入依赖,而 dependencyManagement 只是声明依赖版本等信息,并不实际引入。其中的<type>pom</type>和<scope>import</scope>引入的不是代码依赖,而是版本管理信息 <relativePath/>空标签等价于 ,它告诉 Maven: 不要尝试从相对路径查找父 POM,直接去本地仓库和远程仓库寻找。 这是一种显式声明“父 POM 必须从仓库获取” 的方式,可以避免 Maven 因在相对路径查找而浪费时间和产生误导
shell
Shell 环境Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。Linux 的 Shell 种类众多,常见的有: Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh)……本文关注的是 Bash,也就是 Bourne Again Shell,由于易用和免费,Bash 在日常工作中被广泛使用。同时,Bash 也是大多数Linux 系统默认的 Shell。 在一般情况下,人们并不区分 Bourne Shell 和 Bourne Again Shell,所以,像 #!/bin/sh,它同样也可以改为 #!/bin...
分布式基础
什么是分布式系统?架构分:单体和分布式。集群只是一种物理形态,分布式是工作方式。 架构演进 定义 优点 缺点 单体架构 所有功能模块都在一个项目里 开发部署简单 无法应对高并发 集群架构 单体的多服务器版本 解决大并发 问题1:模块升级麻烦问题2:多语言团队交互不通 分布式架构 一个大型应用被拆分成很多小应用分布部署在各个机器 解决了单体+集群的问题 版本关系 Spring Boot 版本 Spring Cloud 版本 Spring Cloud Alibaba 版本 主要特点与说明 3.5.x 2025.0.x 2023.0.3.3 当前较新的稳定组合:需要JDK 17或更高版本,采用Jakarta EE命名空间。 3.2.x 2023.0.x 2022.0.x 需要JDK 17+,采用Jakarta EE。 2.7.x 2021.0.x 2021.0.6.2 支持JDK 8的最终LTS组合:生态成熟稳定,是企业级项目的稳妥选择。 环境搭建 使用 JDK17根目录pom文件如下 1234567891011121314151617...
ForkJoin框架
Java Fork Join 框架对于简单的并行任务,你可以通过“线程池 +Future”的方案来解决;如果任务之间有聚合关系,无论是 AND 聚合还是 OR 聚合,都可以通过 CompletableFuture 来解决;而批量的并行任务,则可以通过 CompletionService 来解决。 CompletableFuturerunAsync 和 supplyAsync 方法CompletableFuture 提供了四个静态方法来创建一个异步操作。 1234public static CompletableFuture<Void> runAsync(Runnable runnable)public static CompletableFuture<Void> runAsync(Runnable runnable, Executor executor)public static <U> CompletableFuture<U> supplyAsync(Supplier<U> supplier)public static...








