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

在Java项目中集成Deepseek大语言模型实践指南

1. 引言

        随着人工智能技术的发展,大语言模型在各领域应用日益广泛。本文将详细介绍如何在Java项目中集成Deepseek大模型,实现智能文本生成、对话等功能。

2. 前期准备

  1. 准备Java Spring Boot项目环境
  2. 确保Maven已配置
  3. 注册Deepseek账号并获取API密钥

 获取api key

这里我简单演示一下怎么申请获取key 

点击    deepseek API开放平台

申请创建好key后,请注意保存并保密好你的key

然后再需要充点米按照我下面的步骤就能调用了

3. 添加必要依赖

下面以我的一个项目为例,在pom.xml中添加以下依赖:

<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.kmbeast</groupId><artifactId>personal-health-api</artifactId><version>1.0-SNAPSHOT</version><name>personal-health-api</name><!--springboot父依赖--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.13</version><relativePath/></parent><!--编译配置与版本管理--><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><!-- 依赖版本管理 --><commons-lang3.version>3.12.0</commons-lang3.version><mybatis-spring-boot-starter.version>2.1.2</mybatis-spring-boot-starter.version><mybatis-plus.version>3.5.3.1</mybatis-plus.version><druid-spring-boot-starter.version>1.2.8</druid-spring-boot-starter.version><easyexcel.version>3.2.1</easyexcel.version><poi.version>4.1.2</poi.version><java-jwt.version>3.4.0</java-jwt.version><jjwt.version>0.9.0</jjwt.version><itext-asian.version>5.2.0</itext-asian.version><fastjson2.version>2.0.33</fastjson2.version><weka.version>3.8.5</weka.version><commons-math3.version>3.6.1</commons-math3.version><drools.version>7.59.0.Final</drools.version><opennlp.version>1.9.3</opennlp.version><jfreechart.version>1.5.3</jfreechart.version><ehcache.version>2.10.6</ehcache.version><knife4j.version>4.4.0</knife4j.version></properties><!--依赖--><dependencies><!--工具类依赖--><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency><!--SpringBoot 启动包--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><!--SpringBoot Web--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--SpringBoot Aop--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!--Lombok 简化实体类开发--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--数据库链接--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>${druid-spring-boot-starter.version}</version></dependency><!-- mybatis依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>${mybatis-spring-boot-starter.version}</version></dependency><!--MybatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency><!--excel处理--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>${easyexcel.version}</version></dependency><!--excel处理--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>${poi.version}</version></dependency><!-- JWT相关 --><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>${java-jwt.version}</version></dependency><!-- JWT相关 --><dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>${jjwt.version}</version></dependency><!-- JWT相关 --><dependency><groupId>com.itextpdf</groupId><artifactId>itext-asian</artifactId><version>${itext-asian.version}</version></dependency><!-- JSON解析 --><dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>${fastjson2.version}</version></dependency><!-- WebSocket依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><!-- 机器学习库 --><dependency><groupId>nz.ac.waikato.cms.weka</groupId><artifactId>weka-stable</artifactId><version>${weka.version}</version></dependency><!-- 数学计算库 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-math3</artifactId><version>${commons-math3.version}</version></dependency><!-- 规则引擎 --><dependency><groupId>org.drools</groupId><artifactId>drools-core</artifactId><version>${drools.version}</version></dependency><dependency><groupId>org.drools</groupId><artifactId>drools-compiler</artifactId><version>${drools.version}</version></dependency><!-- OpenNLP --><dependency><groupId>org.apache.opennlp</groupId><artifactId>opennlp-tools</artifactId><version>${opennlp.version}</version></dependency><!-- 图表生成 --><dependency><groupId>org.jfree</groupId><artifactId>jfreechart</artifactId><version>${jfreechart.version}</version></dependency><!-- 开启缓存支持 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><!-- 添加 Ehcache 支持 --><dependency><groupId>net.sf.ehcache</groupId><artifactId>ehcache</artifactId><version>${ehcache.version}</version></dependency><!-- Knife4j API文档 --><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi2-spring-boot-starter</artifactId><version>${knife4j.version}</version></dependency></dependencies><build><defaultGoal>compile</defaultGoal><!--定义资源路径--><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory><includes><include>*/*.*</include><include>*.*</include></includes><filtering>false</filtering></resource></resources></build><repositories><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public/</url><releases><enabled>true</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories>
</project>

        上面是我一个项目的全部依赖,,因为我调用deepseekapi后,还用了保存日志持久化的操作,必须要有以下依赖。

<dependencies><!-- Spring Boot Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- Lombok简化代码 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!-- MyBatis数据库操作 --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency><!--MybatisPlus依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency>
</dependencies>

4. 配置Deepseek参数

在application.yml中添加Deepseek配置:

# 大模型配置
llm:provider: deepseekconnect-timeout: 30000  # 连接超时时间(ms)read-timeout: 90000     # 读取超时时间(ms)# Deepseek配置  
deepseek:api-key: your-api-key-heremodel: deepseek-chatapi-url: https://api.deepseek.com/v1/chat/completionsmax-retries: 2  # 请求失败后最大重试次数

以我的项目作为示例:

# 服务配置
server:port: 9999servlet:context-path: /api/personal-heath/v1.0
# API地址前缀,用于接口拦截放行
my-server:api-context-path: /api/personal-heath/v1.0
#MySQL与文件上传限制配置
spring:servlet:multipart:max-file-size: 10MBmax-request-size: 10MBdatasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/personal_health?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=trueusername: rootpassword: 123456# SpringBoot 2.6+解决与Swagger兼容性问题mvc:pathmatch:matching-strategy: ANT_PATH_MATCHER
# 让 Mybatis 在 Mapper目录下找到 XML 映射文件
mybatis:mapper-locations: classpath:mapper/*.xml# 大模型配置
llm:# 使用deepseek,可选值:openai/deepseekprovider: deepseekconnect-timeout: 30000  # 连接超时时间(ms)read-timeout: 90000     # 读取超时时间(ms),对于大模型需要更长时间# Deepseek配置  
deepseek:api-key:   #注意这里配置你的真实的keymodel: deepseek-chatapi-url: https://api.deepseek.com/v1/chat/completionsmax-retries: 2  # 请求失败后最大重试次数# 健康分析服务配置
health:analysis:provider: llm# Knife4j配置
knife4j:enable: truebasic:enable: falsesetting:language: zh-CNenableSwaggerModels: trueenableDocumentManage: trueswaggerModelName: 实体类列表enableOpenApi: false

这里不方便展示我的真实的key

5. 创建数据传输对象

这里的传输对象不固定,可根据需求修改

LLMRequest.java

@Data
@Builder
public class LLMRequest {private String userPrompt;private String systemPrompt;private String modelName;private Float temperature;private Integer maxTokens;
}

LLMResponse.java

@Data
@Builder
public class LLMResponse {private String content;private Integer usedTokens;private String requestId;private boolean success;private String errorMessage;
}

6. 实现大模型服务接口

public interface ILLMService {LLMResponse generateResponse(LLMRequest request);LLMResponse generateChatResponse(LLMRequest request);List<LLMResponse> batchProcess(List<LLMRequest> requests);
}

7. RestTemplate配置

@Configuration
public class RestTemplateConfig {@Value("${llm.connect-timeout:30000}")private int connectTimeout;@Value("${llm.read-timeout:90000}")private int readTimeout;@Bean("llmRestTemplate")public RestTemplate llmRestTemplate() {HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();factory.setConnectTimeout(connectTimeout);factory.setReadTimeout(readTimeout);return new RestTemplate(factory);}
}

8. 实现Deepseek服务

@Slf4j
@Service("deepseekService")
@ConditionalOnProperty(name = "llm.provider", havingValue = "deepseek")
public class DeepseekServiceImpl implements ILLMService {@Value("${deepseek.api-key}")private String apiKey;@Value("${deepseek.model:deepseek-chat}")private String model;@Value("${deepseek.api-url}")private String apiUrl;@Value("${deepseek.max-retries:2}")private int maxRetries;@Autowired@Qualifier("llmRestTemplate")private RestTemplate restTemplate;@Autowiredprivate AIModelLogMapper aiModelLogMapper;@Overridepublic LLMResponse generateResponse(LLMRequest request) {long startTime = System.currentTimeMillis();AIModelLog logRecord = createLogRecord("Deepseek", apiUrl);// 重试机制int retryCount = 0;Exception lastException = null;while (retryCount <= maxRetries) {try {// 构建请求体Map<String, Object> requestBody = new HashMap<>();requestBody.put("model", StringUtils.hasText(request.getModelName()) ? request.getModelName() : model);List<Map<String, String>> messages = new ArrayList<>();// 添加系统提示词if (StringUtils.hasText(request.getSystemPrompt())) {Map<String, String> systemMessage = new HashMap<>();systemMessage.put("role", "system");systemMessage.put("content", request.getSystemPrompt());messages.add(systemMessage);}// 添加用户提示词Map<String, String> userMessage = new HashMap<>();userMessage.put("role", "user");userMessage.put("content", request.getUserPrompt());messages.add(userMessage);requestBody.put("messages", messages);// 设置温度参数if (request.getTemperature() != null) {requestBody.put("temperature", request.getTemperature());}// 设置最大令牌数if (request.getMaxTokens() != null) {requestBody.put("max_tokens", request.getMaxTokens());}// 设置请求头HttpHeaders headers = new HttpHeaders();headers.setContentType(MediaType.APPLICATION_JSON);headers.set("Authorization", "Bearer " + apiKey);// 发送请求HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestBody, headers);ResponseEntity<Map> response = restTemplate.exchange(apiUrl, HttpMethod.POST, entity, Map.class);// 解析响应Map responseBody = response.getBody();if (responseBody != null && responseBody.containsKey("choices")) {List<Map> choices = (List<Map>) responseBody.get("choices");if (!choices.isEmpty()) {Map choice = choices.get(0);Map message = (Map) choice.get("message");String content = (String) message.get("content");// 记录成功日志logRecord.setStatus((byte) 1);logRecord.setResponseTime((int)(System.currentTimeMillis() - startTime));saveLog(logRecord);return LLMResponse.builder().content(content).usedTokens(responseBody.containsKey("usage") ? (Integer)((Map)responseBody.get("usage")).get("total_tokens") : null).requestId(responseBody.containsKey("id") ? (String)responseBody.get("id") : null).success(true).build();}}// 失败处理...} catch (ResourceAccessException e) {// 网络错误重试逻辑...retryCount++;}}// 所有重试失败后返回错误响应return LLMResponse.builder().success(false).errorMessage("Deepseek API调用失败").build();}// 其他方法实现...
}

9. 使用示例

@RestController
@RequestMapping("/api/llm")
public class LLMController {@Autowired@Qualifier("deepseekService")private ILLMService llmService;@PostMapping("/generate")public ResponseEntity<LLMResponse> generateResponse(@RequestBody LLMRequest request) {LLMResponse response = llmService.generateResponse(request);return ResponseEntity.ok(response);}
}

用swagger测试后你就会看到

10.注意事项

API密钥安全:永远不要在代码中硬编码API密钥,使用配置文件或环境变量

错误处理:实现合理的重试机制和错误处理策略

性能优化:对大模型响应进行缓存,避免重复请求

成本控制:监控Token使用量,设置合理的最大Token限制

超时设置:大模型请求可能需要较长时间,合理设置超时参数

 11. 总结

        通过以上步骤,我们成功在Java项目中集成了Deepseek大模型,实现了智能文本生成功能。该方案具有良好的可扩展性,可以根据业务需求进一步优化和扩展。

        采用这种方式集成大模型,不仅能够为应用提供强大的AI能力,还能保持代码的解耦和灵活性,为未来集成更多AI模型奠定基础。

相关文章:

在Java项目中集成Deepseek大语言模型实践指南

1. 引言 随着人工智能技术的发展&#xff0c;大语言模型在各领域应用日益广泛。本文将详细介绍如何在Java项目中集成Deepseek大模型&#xff0c;实现智能文本生成、对话等功能。 2. 前期准备 准备Java Spring Boot项目环境确保Maven已配置注册Deepseek账号并获取API密钥 获取a…...

医疗影像中,DICOM点云、三角面片实体混合渲染(VR)

此文章&#xff0c;涉及到专业性比较强&#xff0c;所以&#xff0c;大部分的内容&#xff0c;基本上都是示例代码的形式出现。以下的技术路径&#xff0c;完全经过实践验证&#xff0c;并且效果很好&#xff0c;可以放心使用。 1 概述 在医学影像中&#xff0c;对DICOM的渲染…...

程序运行报错分析文档

zryhuawei:~/src/modules/Connect$ ./newbuild/OpConnectAidTool \WARNING: MYSQL_OPT_RECONNECT is deprecated and will be removed in a future version. replace into process_tracking (step_id,date,status,context_data,start_time,end_time,error_log) values(?,?,?…...

C++数据结构——红黑树

文章目录 一、背景二、关键操作1. 旋转2. 变色3. 查找4. 插入5. 删除 三、面试考点 一、背景 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff08;BST&#xff09;&#xff0c;通过颜色标记和旋转操作保证树的高度平衡&#xff0c;从而确保插入…...

【Java实战】线程池 并发 并行 生命周期(详细解释)

线程池&#xff1a; 一种复用线程的技术 不使用线程池的问题&#xff1a; 用户每提出一个需求&#xff0c;都要创建一个新的线程。 创建线程池的方法&#xff1a; JDK 5.0起提供了一个代表线程池的接口&#xff1a;ExecutorService。 方式一&#xff1a; 使用ExecutorServic…...

Qwen3多方位评测

一、Qwen3核心优势 结论&#xff0c;针对这些场景&#xff1a;上下文理解、任务编排、工具调用、数据要素抽取等环节&#xff0c;Qwen3-32B已接近DeepSeek-R1。 二、关键测试环节 1、上下文改写 Qwen3-32B对绝对时间语境理解优于Qwen2.5-72B。 其余改写方面&#xff0c;三…...

银行反欺诈理论、方法与实践总结(下):解决方案

一、金融反欺诈防控体系 反欺诈防控体系是金融机构应对欺诈风险的重要工具&#xff0c;它通常包括事前识别、事中决策和事后处置三个关键阶段。 事前识别阶段&#xff1a;此阶段涉及欺诈情报的收集和账户安全的保护&#xff0c;通过名单和画像的构建来识别潜在风险。例如&…...

自回归图像编辑 EditAR: Unified Conditional Generation with Autoregressive Models

Paperhttps://arxiv.org/pdf/2501.04699 Code (coming soon) 目录 方法 实验 EditAR是一个统一的自回归框架&#xff0c;用于各种条件图像生成任务——图像编辑、深度到图像、边缘到图像、分割到图像。 next-token预测的功效尚未被证明用于图像编辑。 EditAR主要构建在Ll…...

Java中的集合详解

下面是文章详细介绍了 Java 集合框架的基本思路、主要接口与实现、各类集合之间的区别与各自的适用场景&#xff0c;以及一些常见的使用技巧和最佳实践&#xff0c;供你参考。 Java中的集合详解 在 Java 开发中&#xff0c;集合&#xff08;Collection&#xff09;作为存储和操…...

前端mjs和js文件区别,mjs和cjs区别---.es.js和.mjs的区别

https://www.cnblogs.com/jocongmin/p/18432236 同一份配置如下,一般打包出来的结果时是一样的,只不过扩展名不一样 export default defineConfig({build: {rollupOptions: {output: [// 同一份配置&#xff0c;仅扩展名不同{ format: es, entryFileNames: [name].mjs },{ fo…...

【深度学习】Transformer 的应用

目录 一、自然语言处理领域 1、自然语言处理领域的应用 2、BART模型 3、BERTSum模型与自动文本摘要 4、SG-Net与机器阅读理解 5、SG-Net的应用 6、总结 二、计算机视觉领域 1、图像分类 &#xff08;1&#xff09;背景与挑战 &#xff08;2&#xff09;Transformer的…...

C#学习10——泛型

一、什么是泛型&#xff1f; 官方理解&#xff1a;允许开发者在定义类、接口、方法或委托时使用类型参数 个人理解&#xff1a; 类型模具&#xff08;类似Object变色龙&#xff09; 二、泛型有什么用&#xff1f; 通过参数化类型实现代码复用&#xff0c;提升类型安全性并…...

Spring Validation校验

使用 JSR 303 (Bean Validation) 校验接口参数 JSR 303&#xff0c;也称为Bean Validation规范&#xff0c;提供了一种在Java应用程序中执行验证的标准化方式。它允许你通过注解直接在领域或者DTO&#xff08;数据传输对象&#xff09;类上定义校验规则。 1. 添加依赖 首先需…...

精益数据分析(72/126):MVP的核心法则——消除阻碍与聚焦关键指标

精益数据分析&#xff08;72/126&#xff09;&#xff1a;MVP的核心法则——消除阻碍与聚焦关键指标 在创业领域&#xff0c;许多失败案例源于对产品开发的认知偏差——过度追求功能完善或盲目跟风增长&#xff0c;却忽略了用户核心需求的最直接满足。今天&#xff0c;我们结合…...

从头实现react native expo本地生成APK

根据github上老外的经验制作了一个react native expo项目起始模版,准备放到资源下载里(已经免积分放置好),这个起始模版带有个人非常喜欢的tailwindcss,由于raact native使用sheetstyle这种风格的样式,不太喜欢.当然,我们使用react native paper组件库时,就要对组件库里的组件使…...

打卡第二十三天

仔细回顾一下之前21天的内容&#xff0c;没跟上进度的同学补一下进度。 作业&#xff1a; 自行学习参考如何使用kaggle平台&#xff0c;写下使用注意点&#xff0c;并对下述比赛提交代码。 使用Kaggle平台的注意点 Kaggle是一个数据科学竞赛平台&#xff0c;提供了丰富的数据…...

关于汇编语言与接口技术——单片机串行口的学习心得

学习目标&#xff1a; 1.了解AT89S51单片机片内串行口的基本工作原理 2.掌握与串行口有关的特殊功能寄存器以及四种工作方式 一、串行口内部结构 单片机串行口有两个独立的接收、发送缓冲器SBUF&#xff0c;属于特殊功能寄存器&#xff0c;可以同时发送、接收数据&#xff1b…...

汇川PLC通过Profinet转ModbusTCP网关读取西门子PLC数据案例

Modbus TCP主站即Modbus TCP客户端&#xff0c;Modbus TCP主站最多支持同时与31个Modbus TCP从站 。&#xff08;Modbus TCP服务器&#xff09;进行通信。 第一步设置PLC IP地址&#xff1b; 默认PLC IP地址为192.168.1.88。根据需要判断是否需要修改。 第二步添加Modbus TCP…...

2025-05-20 模型下载--文本向量化--Faiss检索

模型下载 使用Python脚本进行下载 from huggingface_hub import snapshot_download # import os# os.environ["HF_ENDPOINT"] "https://hf-mirror.com" # 自定义下载目录&#xff08;Windows 路径建议用 raw string 或 pathlib&#xff09; download_di…...

idea本地debug断点小技巧

idea本地debug断点小技巧 简单的设置断点条件 断点后&#xff0c;右键这个断点&#xff0c;可以在 condition 中填写能得出布尔的表达式 a 1 你如果写如下&#xff0c;表示先给他赋值&#xff0c;然后断住 a 2; true 断点后设置某个变量的值 在 debug 区域可以设置变量…...

Mybatis面向接口编程

添加与Mapper接口的映射 <!--UserMapper.xml--> <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> …...

谈谈对《加密算法》的理解

文章目录 一、什么是加密算法&#xff1f;二、常见的加密算法有哪些&#xff1f;2.1 对称加密2.2 非对称加密2.3 哈希算法 三、加密算法代码展示3.1 MD5加密3.2 秘钥加密3.3 AES加密解密 四、加密算法的使用场景 一、什么是加密算法&#xff1f; 加密算法是一种通过数学方法将…...

代码随想录算法训练营第60期第四十二天打卡

大家好&#xff0c;今天还是继续我们的动态规划里面的背包问题&#xff0c;前面我们主要接触的是0-1背包和完全背包&#xff0c;其实这两个背包问题主要就是看看每一件物品我们是否有多件&#xff0c;如果每一件物品我们只能取一次的话那这样我们就是0-1背包&#xff0c;如果每…...

Java并发进阶系列:深度讨论官方关于jdk1.8ConcurrentHashMap的computeIfAbsent源代码修复逻辑

在文章中《深度解析官方关于jdk1.8的resizeStamp的bug处理过程》&#xff0c;我们讨论关于CHM的核心设计——resizeStam需要修复的处理过程&#xff0c;本文再次基于openJDK的bugs讨论组提出的CHM源代码另外一个会造成死循环的bug&#xff0c;默认读者已经掌握CHM的核心源代码实…...

npm vs npx 终极指南:从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异,助你精准选择工具

npm vs npx 终极指南&#xff1a;从原理到实战的深度对比 全面解析包管理器与包执行器的核心差异&#xff0c;助你精准选择工具 一、核心定位差异 #mermaid-svg-xM2GZt0lejj6hYk6 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…...

RK3588 IREE+Vulkan ResNet50推理测试

RK3588 IREE+Vulkan ResNet50推理测试 背景一.性能数据【暂不考虑该框架】二.操作步骤2.1 搭建NFS服务,解决IREE编译时,空间不足的问题2.2 编译、安装`IREE`2.2.1 挂载NFS2.2.2 安装依赖2.2.3 编译`IREE`2.2.4 获取驱动及设备信息2.2.5 下载推理图片2.2.6 生成`onnx`模型转换脚…...

Blaster - Multiplayer P77-P89: 武器瞄准机制

P78_ Blaster HUD And Player Controller P78_1 创建PC和HUD P78_2 Tick Component > SetHUDCrosshairs() P79_ Drawing the Crosshairs DrawHUD() Call Every Tick. #include "HUD/BlasterHUD.h"void ABlasterHUD::DrawHUD() {Super::DrawHUD();FVector2D View…...

【每天一个MCP】【记录向】:准备工作,创建github项目

记录一下&#xff1a; 新建一个仓库 各种填写项目信息 点击创建 &#x1f446;不错&#xff0c;开张了~ 尝试一下这个桌面版的github 登录 果然方便 太高级了。~...

元宇宙中的虚拟经济:机遇与挑战

随着元宇宙概念的兴起&#xff0c;虚拟经济逐渐成为全球科技和经济领域关注的焦点。元宇宙不仅是一个虚拟的社交和娱乐空间&#xff0c;更是一个充满经济活动的全新生态系统。从虚拟货币到数字资产&#xff0c;从虚拟商品交易到去中心化金融&#xff08;DeFi&#xff09;&#…...

多环境回测模拟不同市场条件下的策略表现

Backtrader库的核心组件包括数据源、策略、执行引擎和结果分析器。通过组合这些组件,可以构建一个完整的交易系统。 在进行回测之前,需要准备历史市场数据。Backtrader支持多种数据格式,如CSV文件、Pandas数据框等。 加载数据 可以使用Backtrader提供的bt.feeds.YahooFina…...

nRF Connect SDK开发之(1)环境搭建

目录 一、安装 nRF Connect SDK 开发环境 1)git 2)python 3) J-Link ​编辑 4)nrfutil 1.将nrfutil应用程序所在目录添加到系统路径PATH 2.在命令行中输入nrfutil检测是否可以正常运行 3.运行命令以列出可用命令:nrfutil search 4.安装 device 、toolchain-man…...

武汉火影数字|数字展厅展馆制作:沉浸式体验,全方位互动

在科技飞速发展的当下&#xff0c;数字技术正以前所未有的速度渗透到各个领域&#xff0c;展厅展馆行业也不例外。数字展厅展馆作为传统展厅展馆的创新升级&#xff0c;正逐渐成为展示领域的新宠&#xff0c;为观众带来前所未有的沉浸式体验。 与传统展厅相比&#xff0c;数字展…...

MinIO集群故障,其中一块driver-4异常

现象 driver-4 Offline,驱动状态为未知。 处理过程 建议每个驱动下面新建个文件&#xff0c;便于根据目录里面的drive-x文件区分驱动 rootpve:/mnt/drive-4# df -h Filesystem Size Used Avail Use% Mounted on /dev/sdb 3.7T 695G 3.0T 19% …...

整型数相加的溢出

当正溢出时&#xff0c;返回TMax&#xff0c;负溢出时&#xff0c;返回TMin。这种运算常用在执行数字信号处理的程序中。 程序代码 int saturating_add(int x,int y);void main() {static int x,y;static int i1,sum;x(i<<15)-1;y(i<<15)-1;sumsaturating_add(x,…...

科目一知识点快速回顾与总结

科目一知识点笔记 扣12分的情况 高速上倒掉逆12&#xff1b;普通路上倒掉1逆3 使用伪造&#xff0c;变造的驾驶证&#xff08;行驶证&#xff09;一次记12 饮酒驾驶12 代替实际机动车驾驶人接受交通违法行为处罚和记分牟取经济利益的&#xff0c;一次记12 驾驶校车&#x…...

大模型高效微调技术全面解析:从PEFT原理到实战应用

目录 1. 大语言模型与微调概述 1.1 大语言模型(LLM)简介 1.2 微调的必要性与挑战 2. 参数高效微调(PEFT)技术原理 2.1 PEFT概述 2.2 主要PEFT方法 2.2.1 适配器(Adapters) 2.2.2 LoRA(低秩自适应) 2.2.3 QLoRA(量化LoRA) 2.2.4 IA3(通过抑制和放大内部激活注入适配器)…...

51单片机编程学习笔记——无源蜂鸣器演奏《祝你生日快乐》

大纲 蜂鸣器分类有源蜂鸣器无源蜂鸣器 电路图发声演奏《祝你生日快乐》模拟88键钢琴发声音符时值&#xff08;Note Value&#xff09;演奏完整代码 蜂鸣器是一种常用的电子发声器件&#xff0c;有源蜂鸣器和无源蜂鸣器在工作原理和特性上有明显区别。 蜂鸣器分类 有源蜂鸣器 …...

大语言模型的评估指标

介绍 语言模型的 BLEU、ROUGE 和 困惑度&#xff08;Perplexity&#xff09; 三种常用的语言模型评估指标&#xff0c;帮助你快速理解它们的含义、计算方法及优缺点。 概览 这些指标都是为了解决&#xff1a;「我们自动生成的句子到底有多好&#xff1f;」这个问题&#xff1…...

绿色免安装 批量重命名软件 标签管理,文件整理提升效率

各位文件整理小能手们&#xff0c;今天给大家介绍一款超牛的工具——拖把更名器&#xff01;它是专门搞批量文件重命名的实用家伙&#xff0c;能对文件名、扩展名还有音乐文件标签进行高效管理。 咱先说说它的核心功能。首先是基础重命名操作&#xff0c;它能添加、删除、替换…...

python-leetcode 68.有效的括号

题目&#xff1a; 给定一个只包括“&#xff08;”)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a;左括号必须用相同类型的右括号闭合&#xff1b;左括号必须以正确的顺序闭合&#xff0c…...

ES(Elasticsearch) 基本概念(一)

Elasticsearch作为当前最流行的开源搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、业务智能等领域。Elasticsearch是一个基于 Apache Lucene 构建的分布式搜索和分析引擎、可扩展数据存储和矢量数据库。它针对生产级工作负载的速度和相关性进行了优化。使用 Elasti…...

软考软件评测师—— 操作系统综合知识

目录 嵌入式操作系统 三态模型 操作系统概念 其他操作系统 绝对路径与相对路径 段页式管理 嵌入式操作系统 嵌入式操作系统&#xff08;EOS&#xff09;具有以下特点&#xff1a; 可裁剪性&#xff1a;支持开发性和可伸缩性的体系结构&#xff0c;能够根据需求进行功能…...

简单的re(零基础AI做题)

签到题一般简单&#xff0c;上来就是IDA&#xff08;不管了&#xff0c;IDA&#xff01;&#xff01;&#xff01;&#xff09; 找主函数&#xff0c;这个题类似的做过好几个了 int __fastcall main(int argc, const char **argv, const char **envp) {__int64 v3; // rdx__i…...

一文掌握 LoRA 常见变体

上文主要是对于 LoRA 的原理和一些常见问题进行了讲解&#xff0c;该篇主要是讲解一些常见的 LoRA 变体。本笔记供个人学习总结使用。 QLoRA QLoRA 是在 LoRA 的基础上进行的改进&#xff0c;旨在进一步减少微调大语言模型时的内存占用&#xff0c;同时保持或仅轻微牺牲性能。主…...

QT高DPI支持

核心函数&#xff1a; qputenv("QT_SCREEN_SCALE_FACTORS", envVar); 如: qputenv("QT_SCREEN_SCALE_FACTORS", "1.2"); 这是我个人目前用的效果最好的&#xff0c;可惜数值不能小于1&#xff0c;小于1的时候&#xff0c;会出问题。 需要程序…...

数据仓库是什么?常见问题解答

在当今数字化时代&#xff0c;企业每天都会产生和收集大量数据。如何有效地存储、管理和分析这些数据&#xff0c;从而为企业决策提供支持&#xff0c;成为了一个关键问题。数据仓库作为一种专门设计的数据存储和管理系统&#xff0c;正是为解决这一问题而生。 数据仓库的定义…...

Java 02入门,封装继承多态

static关键字 1.介绍 静态的意思&#xff0c;可以修饰变量以及函数2.特点 1.被类的所有对象所共享 2.多了一种调用方式&#xff0c;可以通过类名进行调用 3.随着类的加载而加载&#xff0c;优先于对象存在*****3.作用 1.在一个对象里面的一个变量改为static&#xff0c;那么…...

企业级 Hosts 自动化管理实战:基于 HTTP 检测的高可用域名解析方案

摘要 本文针对企业级域名解析稳定性需求&#xff0c;提供一套从IP 检测到Hosts 更新的完整自动化解决方案。通过 HTTP 状态码检测、权威 DNS 解析、原子化文件操作等核心技术&#xff0c;结合多行业真实案例&#xff0c;详细阐述方案设计、脚本实现与生产部署&#xff0c;帮助…...

HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析

目录 引言 一、协议特性深度对比 1.1 协议工作模型差异 1.2 隧道代理适配难点 二、兼容性架构设计 2.1 双协议接入层设计 2.2 统一隧道内核 三、关键技术实现 3.1 协议转换引擎 3.1.1 HTTP→SOCKS5转换 3.1.2 SOCKS5→HTTP转换 3.2 连接管理策略 3.2.1 智能连接池 …...

AGI大模型(29):LangChain Model模型

1 LangChain支持的模型有三大类 大语言模型(LLM) ,也叫Text Model,这些模型将文本字符串作为输入,并返回文本字符串作为输出。聊天模型(Chat Model),主要代表Open AI的ChatGPT系列模型。这些模型通常由语言模型支持,但它们的API更加结构化。具体来说,这些模型将聊天消…...