当前位置: 首页 > news >正文

WebMvcConfigurer 介绍

WebMvcConfigurer 介绍

  • 1. 什么是WebMvcConfigurer 介绍
  • 2. WebMvcConfigurer接口常用的方法
  • 3. 使用WebMvcConfigurer实现跨域
  • 4. 使用WebMvcConfigurer配置拦截器
  • 5. 使用WebMvcConfigurer配置静态资源
    • 5.1 配置外部目录(本地文件系统)详细解释
  • 6. 使用 WebMvcConfigurer 配置视图解析
    • 6.1 详细说明
      • 6.1.1 使用 WebMvcConfigurer 配置 Thymeleaf 视图解析
  • 7. 使用 WebMvcConfigurer 配置消息转换器

1. 什么是WebMvcConfigurer 介绍

WebMvcConfigurer 是 Spring Boot 中用于扩展 Spring MVC 功能的接口,可以用来自定义 Web 相关的配置,例如:

✅ 跨域(CORS) 配置 addCorsMappings
✅ 拦截器(Interceptor) addInterceptors
✅ 静态资源映射 addResourceHandlers
✅ 消息转换器(Message Converter) configureMessageConverters
✅ 视图解析器(View Resolver) configureViewResolvers
✅ 参数解析

它的主要作用是在不改变 Spring Boot 默认行为的情况下,提供灵活的扩展能力。


复杂的解释: WebMvcConfigurer配置类其实是Spring内部的一种配置方式,采用JavaBean的形式来代替传统的xml配置文件形式进行针对框架个性化定制,可以自定义一些Handler,Interceptor,ViewResolver,MessageConverter。基于java-based方式的spring mvc配置,需要创建一个配置类并实现WebMvcConfigurer 接口;

在Spring Boot 1.5版本都是靠重写WebMvcConfigurerAdapter的方法来添加自定义拦截器,消息转换器等。SpringBoot 2.0 后,该类被标记为@Deprecated(弃用)。官方推荐直接实现WebMvcConfigurer或者直接继承WebMvcConfigurationSupport。

2. WebMvcConfigurer接口常用的方法

 /* 拦截器配置 */
void addInterceptors(InterceptorRegistry var1);/* 视图跳转控制器 */
void addViewControllers(ViewControllerRegistry registry);/** 静态资源处理 **/
void addResourceHandlers(ResourceHandlerRegistry registry);/* 默认静态资源处理器 */
void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer);/** 这里配置视图解析器 **/
void configureViewResolvers(ViewResolverRegistry registry);/* 配置内容裁决的一些选项 */
void configureContentNegotiation(ContentNegotiationConfigurer configurer);/** 解决跨域问题 **/
public void addCorsMappings(CorsRegistry registry) ;

3. 使用WebMvcConfigurer实现跨域

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class CorsConfig {@Beanpublic WebMvcConfigurer corsConfigurer() {return new WebMvcConfigurer() {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**") // 允许所有路径.allowedOrigins("https://frontend.com") // 允许特定域名.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许的请求方法.allowedHeaders("*") // 允许所有请求头.allowCredentials(true) // 允许携带 Cookie.maxAge(3600); // 预检请求的缓存时间}};}
}

当然Nginx也可以实现

location / {proxy_pass http://localhost:8080;add_header 'Access-Control-Allow-Origin' 'https://frontend.com';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE';add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';add_header 'Access-Control-Allow-Credentials' 'true';if ($request_method = OPTIONS) {return 204;}
}

a. 其中location / 其中/代表匹配所有请求。

b. proxy_pass http://localhost:8080; Nginx 会把所有匹配 / 的请求转发到 http://localhost:8080(假设 Spring Boot 运行在 8080 端口)。 这样前端请求 Nginx,Nginx 代理请求到 Spring Boot,对外隐藏后端服务。

c. add_header 'Access-Control-Allow-Origin' 'https://frontend.com';
允许跨域的前端来源
允许 https://frontend.com 访问后端 API。
如果改成'*'add_header 'Access-Control-Allow-Origin' '*'; 表示所有域都可以访问:

d. add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; 允许前端调用 GET、POST、OPTIONS、PUT、DELETE 方法。

e. add_header 'Access-Control-Allow-Headers' 'Authorization, Content-Type';
允许前端在请求中携带 Authorization(比如 Bearer Token)和 Content-Type 头。

f. add_header 'Access-Control-Allow-Credentials' 'true';
🔹 允许携带 Cookie
允许前端发送带有 Cookie 的跨域请求(如身份验证)。
⚠️ 如果启用 Access-Control-Allow-Credentials,必须指定具体的 Access-Control-Allow-Origin,不能用 *。

g.

if ($request_method = OPTIONS) {return 204;
}

🔹 处理预检请求(OPTIONS)

当浏览器发送 OPTIONS 预检请求(比如跨域的 POST 请求),Nginx 直接返回 204 No Content,避免 Spring Boot 处理这类请求,提高性能。

总结

  1. 将请求转发到 Spring Boot (http://localhost:8080)
  2. 允许 https://frontend.com 访问后端 API
  3. 支持跨域(CORS):
  4. 允许 GET, POST, OPTIONS, PUT, DELETE 请求
  5. 允许 Authorization 和 Content-Type 请求头
  6. 允许前端携带 Cookie
  7. 优化预检请求(OPTIONS),直接返回 204,减少后端负担

📌 适用场景
✅ 前后端分离项目(前端 https://frontend.com,后端 http://localhost:8080)
✅ 使用 Nginx 代理后端 API,同时处理跨域
✅ 后端 API 需要支持身份验证(携带 Cookie 或 Token)

4. 使用WebMvcConfigurer配置拦截器

拦截器(HandlerInterceptor)可以用于日志记录、权限校验、请求处理等

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(new MyInterceptor()).addPathPatterns("/api/**") // 只拦截 /api/ 开头的请求.excludePathPatterns("/api/login", "/api/register"); // 这些路径不拦截}
}

✅ 适用场景:

  • 用户登录拦截
  • 请求日志记录
  • 权限控制

5. 使用WebMvcConfigurer配置静态资源

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void addResourceHandlers(ResourceHandlerRegistry registry) {// 将 /static/ 目录下的资源映射到 /resources/** 访问路径registry.addResourceHandler("/resources/**").addResourceLocations("classpath:/static/");// 访问 http://localhost:8080/images/test.jpg 时,会去 D:/uploads/ 目录查找registry.addResourceHandler("/images/**").addResourceLocations("file:D:/uploads/");// 访问 http://localhost:8080/files/doc.pdf 时,会去 /home/user/docs/ 目录查找registry.addResourceHandler("/files/**").addResourceLocations("file:/home/user/docs/");}
}

说明

  1. @Configuration:标记该类为 Spring 配置类,使其生效。
  2. 实现 WebMvcConfigurer 接口:
    通过 addResourceHandlers 方法自定义静态资源映射规则。
  3. registry.addResourceHandler("/resources/**"):
    访问路径形如 /resources/** 的请求,会被映射到 classpath:/static/目录下的资源(即 src/main/resources/static/)。
    例如,src/main/resources/static/css/style.css 可以通过 http://localhost:8080/resources/css/style.css 访问。
  4. 配置外部目录(本地文件系统):
    /images/** 访问路径映射到 D:/uploads/ 目录(必须加 file: 前缀)。
    /files/** 访问 /home/user/docs/ 目录下的资源。

默认静态资源位置
如果没有自定义 WebMvcConfigurer,Spring Boot 默认会从以下位置加载静态资源:

  • classpath:/static/

  • classpath:/public/

  • classpath:/resources/

  • classpath:/META-INF/resources/
    例如:

  • src/main/resources/static/index.html 可以直接通过 http://localhost:8080/index.html 访问。
    但如果自定义了 WebMvcConfigurer,默认配置可能会被覆盖,因此需要手动添加 addResourceHandlers 方法来保持默认行为。

5.1 配置外部目录(本地文件系统)详细解释

在 Spring Boot 中,默认的静态资源(如 CSS、JS、图片等)通常存放在 src/main/resources/static/ 目录下,并且可以直接通过 http://localhost:8080/资源路径 访问。

但是,如果你想让应用访问 本地文件系统(比如 D:/uploads/ 或 /home/user/docs/),就需要手动配置 addResourceHandlers(),并使用 file: 前缀 指定外部目录。

示例 1:Windows 配置外部目录

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {// 让 /images/** 访问 D:/uploads/ 目录下的资源registry.addResourceHandler("/images/**").addResourceLocations("file:D:/uploads/");
}

解释

  • addResourceHandler(“/images/**”):
    • 表示访问 http://localhost:8080/images/xxx.jpg 时,会去 D:/uploads/ 目录查找 xxx.jpg。
  • addResourceLocations(“file:D:/uploads/”):
    • file: 必须加上,表明这是一个文件系统路径,而不是类路径(classpath)。
    • 这个目录是 Windows 本地磁盘,不是 Spring Boot 默认的 static/ 目录。
  • 示例
    • D:/uploads/test.jpg 可以通过 http://localhost:8080/images/test.jpg 访问。

示例2:同时支持多个目录

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/uploads/**").addResourceLocations("file:D:/uploads/", "file:/home/user/docs/");
}

这样访问 http://localhost:8080/uploads/test.jpg 时,Spring 会先去 D:/uploads/ 目录找,再去 /home/user/docs/ 目录找。

6. 使用 WebMvcConfigurer 配置视图解析

WebMvcConfigurer 还可以用于配置自定义视图解析器。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.view.InternalResourceViewResolver;@Configuration
public class WebConfig implements WebMvcConfigurer {@Beanpublic ViewResolver viewResolver() {InternalResourceViewResolver resolver = new InternalResourceViewResolver();resolver.setPrefix("/WEB-INF/views/"); // 视图文件前缀resolver.setSuffix(".jsp"); // 视图文件后缀return resolver;}
}

✅ 适用场景:

  • Spring MVC + JSP
  • Thymeleaf 或 FreeMarker 视图解析

6.1 详细说明

在 Spring Boot 中,视图解析器(View Resolver) 负责将控制器返回的视图名称解析为实际的 视图文件(如 HTML、JSP、Thymeleaf 等)。如果你想自定义视图解析规则,可以实现 WebMvcConfigurer 接口。

6.1.1 使用 WebMvcConfigurer 配置 Thymeleaf 视图解析

Spring Boot 默认集成了 Thymeleaf 作为模板引擎,我们可以使用 WebMvcConfigurer 进行自定义配置,比如:

  • 修改视图文件存放路径
  • 自定义前缀/后缀
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {// 配置 Thymeleaf 视图解析器registry.jsp("/WEB-INF/views/", ".jsp");  // 仅用于 JSP}
}

解释

  • registry.jsp("/WEB-INF/views/", ".jsp")
  • 前缀:/WEB-INF/views/
  • 后缀:.jsp
  • 例如:当控制器返回 “home”,最终视图路径解析为 /WEB-INF/views/home.jsp。
    注意:
    这个registry.jsp() 主要用于 JSP 视图解析,如果使用 Thymeleaf,Spring Boot 会自动管理,无需额外配置。

7. 使用 WebMvcConfigurer 配置消息转换器

Spring Boot 提供了默认的 JSON 处理方式(Jackson),但如果你想使用 Gson 或自定义格式,可以在 WebMvcConfigurer 里配置消息转换器。

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.converter.HttpMessageConverter;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;import java.util.List;@Configuration
public class WebConfig implements WebMvcConfigurer {@Beanpublic Gson gson() {return new GsonBuilder().setPrettyPrinting().create();}@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new GsonHttpMessageConverter(gson()));}
}

✅ 适用场景:

  • 替换默认的 Jackson 为 Gson
  • 支持自定义 JSON 格式

相关文章:

WebMvcConfigurer 介绍

WebMvcConfigurer 介绍 1. 什么是WebMvcConfigurer 介绍2. WebMvcConfigurer接口常用的方法3. 使用WebMvcConfigurer实现跨域4. 使用WebMvcConfigurer配置拦截器5. 使用WebMvcConfigurer配置静态资源5.1 配置外部目录&#xff08;本地文件系统&#xff09;详细解释 6. 使用 Web…...

java05(类、泛型、JVM、线程)---java八股

类 Java中有哪些类加载器 JDK自带有三个类加载器&#xff1a;bootstrap ClassLoader、ExtClassLoader、AppClassLoader。 ●BootStrapClassLoader是ExtClassLoader的父类加载器&#xff0c;默认负责加载%JAVA_HOME%lib下的jar包和class文件。 ●ExtClassLoader是AppClassLoade…...

Python+appium实现自动化测试

目录 一、工具与环境准备 二、开始测试 1、插上手机&#xff0c;打开usb调试&#xff0c;选中文件传输&#xff0c;我这里用华为手机为例 2、启动Appium Server GUI​编辑 3、启动 Inspector Session 4、录制脚本 使用Python和Appium进行自动化测试是一种常见的移动应用…...

Unity中如何判断URL是否为RTSP或RTMP流

技术背景 如何在Unity中判断一个字符串URL是否是RTSP或RTMP流。首先&#xff0c;RTSP通常以“rtsp://”开头&#xff0c;而RTMP则是“rtmp://”或者有时是“rtmps://”用于安全连接。 接下来&#xff0c;如何在C#中进行字符串的检查。最简单的方法应该是检查URL是否以这些协议…...

基于角色访问控制的UML 表示02

一个用户可以成为很多角色的成员&#xff0c;一个角色可以有许多用户。类似地&#xff0c;一个角色可以有多个权限&#xff0c;同一个权限可以被指派给多个角色。每个会话把一个用户和可能的许多角色联系起来。一个用户在激发他或她所属角色的某些子集时&#xff0c;建立了一个…...

【函数题】6-10 二分查找

6-10 二分查找 1 题目原文2 思路解析2.1 基本二分查找算法2.2 常用二分模板2.2.1 第一个大于等于目标值的元素下标2.2.2 第一个大于目标值的元素下标2.2.3 最后一个小于等于目标值的元素下标2.2.3 最后一个小于目标值的元素下标2.2.4 小结 3 代码实现3.1 本题代码实现3.1.1 递归…...

关于conda换镜像源,pip换源

目录 1. 查看当前下载源2. 添加镜像源2.1清华大学开源软件镜像站2.2上海交通大学开源镜像站2.3中国科学技术大学 3.删除镜像源4.删除所有镜像源&#xff0c;恢复默认5.什么是conda-forge6.pip换源 1. 查看当前下载源 conda config --show channels 如果发现多个 可以只保留1个…...

DeepSeek与ChatGPT的全面对比

在人工智能&#xff08;AI&#xff09;领域&#xff0c;生成式预训练模型&#xff08;GPT&#xff09;已成为推动技术革新的核心力量。OpenAI的ChatGPT自发布以来&#xff0c;凭借其卓越的自然语言处理能力&#xff0c;迅速占据市场主导地位。然而&#xff0c;近期中国AI初创公…...

Spring AI发布!让Java紧跟AI赛道!

1. 序言 在当今技术发展的背景下&#xff0c;人工智能&#xff08;AI&#xff09;已经成为各行各业中不可忽视的重要技术。无论是在互联网公司&#xff0c;还是传统行业&#xff0c;AI技术的应用都在大幅提升效率、降低成本、推动创新。从智能客服到个性化推荐&#xff0c;从语…...

基于CT107D单片机综合训练平台的秒表设计

1. 项目简介 在CT107D单片机综合训练平台上&#xff0c;利用定时器T0、数码管模块和2个独立按键&#xff08;J5的2-3短接&#xff09;&#xff0c;设计一个具有清零、暂停、启动功能的秒表。秒表显示格式为&#xff1a;分-秒-0.05秒&#xff08;即50ms&#xff09;&#xff0c…...

opensuse [Linux] 系统挂在新的机械硬盘

opensuse [Linux] 系统挂在新的机械硬盘 需求描述 自用电脑型号如下&#xff1a; 电脑&#xff1a;Precision Tower 7810 (Dell Inc.) CPU &#xff1a; Intel Xeon CPU E5-2686 v4 2.30GHz GPU&#xff1a; NVIDIA GeForce GTX 1070 Linux版本&#xff1a;Linux version 6.…...

时间序列分析(四)——差分运算、延迟算子、AR(p)模型

此前篇章&#xff1a; 时间序列分析&#xff08;一&#xff09;——基础概念篇 时间序列分析&#xff08;二&#xff09;——平稳性检验 时间序列分析&#xff08;三&#xff09;——白噪声检验 一、差分运算 差分运算的定义&#xff1a;差分运算是一种将非平稳时间序列转换…...

【CUDA】Triton

【CUDA】Triton 1. CUDA 与 Triton 的基本区别 CUDA 编程模型&#xff1a; 在传统的 CUDA 编程中&#xff0c;CUDA 是标量程序&#xff0c;带有阻塞线程&#xff08;blocked threads&#xff09;。 标量程序&#xff08;Scalar Program&#xff09;&#xff1a;表示我们直接…...

Windows环境搭建ES集群

搭建步骤 下载安装包 下载链接&#xff1a;https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.27-windows-x86_64.zip 解压 解压并复制出3份 es-node1配置 config/elasticsearch.yml cluster.name: xixi-es-win node.name: node-1 path.data: D:\\wor…...

langchain学习笔记之消息存储在内存中的实现方法

langchain学习笔记之消息存储在内存中的实现方法 引言背景消息存储在内存的实现方法消息完整存储&#xff1a;完整代码 引言 本节将介绍 langchain \text{langchain} langchain将历史消息存储在内存中的实现方法。 背景 在与大模型交互过程中&#xff0c;经常出现消息管理方…...

怎么在智能合约中植入deepseek

怎么在智能合约中植入deepseek 这里写目录标题 怎么在智能合约中植入deepseek方法概述具体步骤1. 部署大语言模型到链下2. 创建预言机(Oracle)a. 部署预言机节点b. 创建自定义预言机接口(Custom Oracle)3. 设计智能合约a. 编写Solidity代码b. 部署智能合约4. 调用流程注意事…...

驱动开发系列37 - Linux Graphics 2D 绘制流程(二)- 画布创建和窗口关联

一:概述 前面介绍Pixmap表示一块画布,是绘制发生的地方,本节看看驱动程序如何为画布分配内存/显存,以及如何与窗口关联的。 二:为画布分配BO 在系统启动时(用户登录系统之后,会重启Xorg),在 Xorg 服务器初始化时,要为屏幕创建根窗口的 Pixmap,并绑定到 GPU framebu…...

B. Longest Divisors Interval

time limit per test 2 seconds memory limit per test 256 megabytes Given a positive integer nn, find the maximum size of an interval [l,r][l,r] of positive integers such that, for every ii in the interval (i.e., l≤i≤rl≤i≤r), nn is a multiple of ii. …...

前端与后端的对接事宜、注意事项

前端与后端的对接事宜、注意事项 一、对接核心流程(完整生命周期) #mermaid-svg-6yzij6OD8DKqiMLD {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-6yzij6OD8DKqiMLD .error-icon{fill:#552222;}#mermaid-svg-6yzi…...

【第13章:自监督学习与少样本学习—13.2 少样本学习(FSL)与元学习(Meta-Learning)的基础理论与应用案例】

凌晨三点的急诊室,值班医生李大夫正在使用AI辅助诊断系统——面对一张仅有3个标注病例的罕见皮肤病影像,系统竟然给出了95%置信度的准确诊断。这种"见微知著"的超能力,正是少样本学习技术创造的医学奇迹。 一、突破数据荒漠:少样本学习的生存法则 1.1 从人类学习…...

三维风场可视化终极指南:让气象数据在Cesium数字地球上流动起来 [特殊字符]️

三维风场可视化终极指南&#xff1a;让气象数据在Cesium数字地球上流动起来 &#x1f32a;️ 【免费下载链接】cesium-wind wind layer of cesium 项目地址: https://gitcode.com/gh_mirrors/ce/cesium-wind 想象一下&#xff0c;在三维数字地球上实时观看风的流动轨迹&…...

Scratch项目优化实战:避开这三个常见动画坑,让你的作品丝滑度提升200%

Scratch项目优化实战&#xff1a;避开这三个常见动画坑&#xff0c;让你的作品丝滑度提升200% 在Scratch创作中&#xff0c;动画的流畅度往往决定了作品的质感。许多中级学习者常陷入"代码能跑就行"的思维定式&#xff0c;却忽略了用户体验的细腻打磨。本文将解剖三种…...

自监督学习图像分割框架UNSAMV2解析与应用

1. 项目概述 UNSAMV2是一个基于自监督学习的图像分割框架&#xff0c;其核心创新在于突破了传统方法对标注数据的依赖&#xff0c;实现了从像素级到对象级的任意粒度分割。这个项目源自计算机视觉领域长期存在的痛点——高质量标注数据的获取成本过高&#xff0c;而现有的弱监督…...

如何快速清理Windows驱动垃圾:Driver Store Explorer完全指南

如何快速清理Windows驱动垃圾&#xff1a;Driver Store Explorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否发现Windows系统盘空间越来越小&#xff0c;却找不到原因…...

大模型训练全景:从预训练到对齐的技术炼金术

写在前面&#xff1a;如果你曾好奇 ChatGPT、DeepSeek 或 Claude 是如何从一堆代码变成能写诗、写代码、做推理的"智能体"&#xff0c;这篇文章将为你拆解那条从"原始文本"到"对齐模型"的完整流水线。无论你是刚入门的 AI 开发者&#xff0c;还是…...

中兴光猫工厂模式解锁技术深度解析:5步获取完整设备控制权

中兴光猫工厂模式解锁技术深度解析&#xff1a;5步获取完整设备控制权 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 中兴光猫工厂模式解锁技术是网络管理员和技术爱好者必备的专业技…...

Docker构建缓存命中率不足17%?用BuildKit量子哈希算法提升至98.6%(实测数据+脚本)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Docker构建缓存失效的量子困境与破局认知 Docker 构建缓存本应是确定性过程&#xff0c;却常在微小变更后“坍缩”为全量重建——这种看似随机、实则受多维依赖约束的失效现象&#xff0c;恰似量子态的…...

构建AI资源智能索引:从知识图谱到语义检索的工程实践

1. 项目概述&#xff1a;一个AI索引的诞生与价值最近在折腾一个叫lmnr-ai/index的项目&#xff0c;名字听起来有点抽象&#xff0c;但它的内核其实非常直接&#xff1a;为AI时代的信息洪流&#xff0c;构建一个高效、智能的“导航地图”。简单来说&#xff0c;这就是一个专门为…...

告别时间漂移:手把手教你用RX8111CE RTC芯片实现高精度时间戳(附I2C驱动避坑指南)

RX8111CE高精度时间戳实战&#xff1a;从硬件设计到I2C驱动全解析 在工业自动化、电力监测和医疗设备等关键领域&#xff0c;系统事件的精确时间标记往往决定着数据分析的可靠性与事故追溯的有效性。爱普生RX8111CE实时时钟芯片凭借其1/256秒分辨率的时间戳功能&#xff0c;正在…...

AgentGym-RL:基于ScalingInter-RL的LLM智能体强化学习训练框架实战

1. 项目概述&#xff1a;用强化学习教会大模型“走多步棋” 如果你关注过大语言模型&#xff08;LLM&#xff09;智能体的发展&#xff0c;可能会发现一个现象&#xff1a;很多模型在单轮问答、代码生成或数学解题上表现惊艳&#xff0c;但一旦把它们放到一个需要连续决策、与…...