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

SpringBoot DevTools:开发工具与热部署机制

在这里插入图片描述

文章目录

    • 引言
    • 一、Spring Boot DevTools概述
    • 二、自动重启机制
      • 2.1 工作原理
      • 2.2 自定义重启触发器
    • 三、LiveReload支持
      • 3.1 浏览器自动刷新
      • 3.2 与前端框架集成
    • 四、属性默认值调整
      • 4.1 缓存配置
      • 4.2 日志配置
    • 五、远程开发支持
      • 5.1 配置远程应用
      • 5.2 使用远程客户端
    • 总结

引言

在Java开发过程中,开发者经常需要频繁修改代码并查看效果,这时传统的重启应用方式会耗费大量时间,严重影响开发效率。Spring Boot DevTools应运而生,它提供了一套强大的开发工具集,其中热部署功能尤为引人注目。本文将深入探讨Spring Boot DevTools的核心功能、配置方法以及最佳实践,帮助开发者显著提升开发效率。

一、Spring Boot DevTools概述

Spring Boot DevTools是Spring Boot提供的一个开发工具模块,专为提高开发者效率而设计。它包含了自动重启、浏览器自动刷新、远程调试等实用功能。DevTools默认禁用了模板缓存,启用了LiveReload服务器,并配置了合理的日志级别,使开发者能够更专注于代码本身而非环境配置。

在Maven项目中引入DevTools非常简单,只需添加以下依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional> <!-- 将依赖标记为可选,避免传递给其他模块 -->
</dependency>

对于Gradle项目,可以这样配置:

developmentOnly 'org.springframework.boot:spring-boot-devtools'

值得注意的是,当应用以生产方式打包时,DevTools会自动禁用,因此不会对生产环境造成任何影响。

二、自动重启机制

2.1 工作原理

Spring Boot DevTools的自动重启功能是其最核心的特性之一。它通过使用两个类加载器来实现快速重启:一个加载不会改变的类(如第三方jar包),另一个加载会频繁变化的类(如项目中的业务代码)。当检测到类路径中的文件发生变化时,DevTools只会重新加载变化的类,而不是整个应用,大大缩短了重启时间。

以下是一个简单的Spring Boot应用示例,展示了DevTools自动重启的基本用法:

package com.example.demo;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
public class DevToolsDemoApplication {public static void main(String[] args) {SpringApplication.run(DevToolsDemoApplication.class, args);}
}@RestController
class HelloController {@GetMapping("/hello")public String hello() {// 修改此方法的返回值并保存,应用将自动重启return "Hello, DevTools!";}
}

2.2 自定义重启触发器

DevTools默认监视classpath资源的变化。然而,在某些场景下,我们可能需要自定义触发重启的文件。通过配置spring.devtools.restart.excludespring.devtools.restart.additional-paths属性,可以精确控制哪些文件的变化会触发重启。

# application.properties
# 排除特定路径,修改这些路径下的文件不会触发重启
spring.devtools.restart.exclude=static/**,public/**# 添加额外的监视路径,这些路径下的文件变化会触发重启
spring.devtools.restart.additional-paths=src/main/resources/templates

如果需要完全禁用自动重启功能,可以设置:

spring.devtools.restart.enabled=false

也可以通过系统属性在启动时控制:

public static void main(String[] args) {// 通过系统属性禁用重启功能System.setProperty("spring.devtools.restart.enabled", "false");SpringApplication.run(DevToolsDemoApplication.class, args);
}

三、LiveReload支持

3.1 浏览器自动刷新

DevTools内置了LiveReload服务器,当应用资源发生变化时,它能够自动触发浏览器刷新。这一功能与自动重启协同工作,使开发者在修改代码后立即看到效果,无需手动刷新浏览器。

要使用LiveReload功能,需要在浏览器中安装相应的扩展插件。主流浏览器如Chrome、Firefox等都有提供LiveReload插件。安装完成后,在访问应用时启用插件,DevTools的LiveReload服务器就会与浏览器建立连接。

默认情况下,LiveReload服务器监听35729端口。如果需要更改端口或禁用此功能,可以通过以下配置:

# 禁用LiveReload功能
spring.devtools.livereload.enabled=false# 修改LiveReload服务器端口
spring.devtools.livereload.port=35730

3.2 与前端框架集成

当Spring Boot应用与现代前端框架(如React、Vue等)结合时,可以实现更强大的开发体验。以下是一个与Vue.js集成的例子:

// 后端Controller示例
@RestController
@RequestMapping("/api")
public class ApiController {@GetMapping("/data")public Map<String, Object> getData() {// 修改此处的返回数据,应用会重启并触发前端刷新Map<String, Object> data = new HashMap<>();data.put("message", "数据已更新");data.put("timestamp", System.currentTimeMillis());return data;}
}

Vue.js前端代码:

// 前端代码示例(假设使用Vue.js)
new Vue({el: '#app',data: {message: '',timestamp: 0},created() {this.fetchData();},methods: {fetchData() {fetch('/api/data').then(response => response.json()).then(data => {this.message = data.message;this.timestamp = data.timestamp;});}}
});

四、属性默认值调整

4.1 缓存配置

DevTools会自动禁用多种缓存选项,以确保开发中能实时看到变更效果。这包括模板引擎缓存、静态资源缓存等。对于Thymeleaf、FreeMarker、Groovy模板等,DevTools都会禁用其缓存功能。

// Thymeleaf模板示例
@Controller
public class ViewController {@GetMapping("/view")public String view(Model model) {// 修改模型数据后,页面会立即反映变化,无需重启model.addAttribute("currentTime", new Date());return "example";}
}

对应的Thymeleaf模板:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head><title>DevTools Demo</title>
</head>
<body><h1>当前时间</h1><p th:text="${currentTime}">时间将显示在这里</p>
</body>
</html>

4.2 日志配置

DevTools为常见的web开发库设置了合理的日志级别,帮助开发者在开发过程中获得恰当的日志输出。可以通过自定义logback.xml来覆盖这些默认设置:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><!-- 引入Spring Boot默认配置 --><include resource="org/springframework/boot/logging/logback/base.xml" /><!-- 自定义日志级别 --><logger name="org.springframework.web" level="DEBUG"/><logger name="com.example.demo" level="TRACE"/><!-- 其他配置 -->
</configuration>

五、远程开发支持

5.1 配置远程应用

DevTools不仅支持本地开发,还提供了远程开发功能。通过远程调试,可以在远程环境中实时更新应用并监控其运行状态。要启用远程支持,需要配置应用和开发工具。

首先,在远程应用的pom.xml中添加DevTools依赖:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional>
</dependency>

并在应用属性中启用远程支持:

# 启用远程开发支持,生产环境务必禁用!
spring.devtools.remote.secret=mysecret

5.2 使用远程客户端

在本地开发环境中,可以使用DevTools客户端连接到远程应用。通常通过Maven或Gradle插件启动客户端:

# 使用Maven启动远程客户端
mvn spring-boot:run -Dspring-boot.run.jvmArguments="-Dspring.devtools.remote.secret=mysecret -Dspring.devtools.remote.address=my-remote-server.com"

以下是一个远程开发的Java配置类示例:

package com.example.demo.config;import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;@Configuration
@Profile("dev") // 仅在开发环境生效
public class DevToolsRemoteConfig {// 远程开发相关的配置// 当此类发生变化时,远程应用将接收更新并重启// 注意:远程开发功能应谨慎使用,并采取适当安全措施// 如使用强密码、限制访问IP等
}

总结

Spring Boot DevTools为Java开发者提供了一套强大的工具,显著提升了开发效率。通过自动重启机制,开发者无需手动重启应用即可查看代码变更效果;借助LiveReload功能,浏览器可以自动刷新,实时展示最新页面;默认的缓存禁用和日志配置为开发环境提供了最佳体验;远程开发支持则扩展了DevTools的应用场景。合理使用DevTools能够构建一个高效、流畅的开发工作流,减少等待时间,使开发者能够更专注于代码逻辑本身。

相关文章:

SpringBoot DevTools:开发工具与热部署机制

文章目录 引言一、Spring Boot DevTools概述二、自动重启机制2.1 工作原理2.2 自定义重启触发器 三、LiveReload支持3.1 浏览器自动刷新3.2 与前端框架集成 四、属性默认值调整4.1 缓存配置4.2 日志配置 五、远程开发支持5.1 配置远程应用5.2 使用远程客户端 总结 引言 在Java…...

PyCharm 开发工具 修改字体大小及使用滚轮没有反应

PyCharm 开发工具 修改字体大小及使用滚轮没有反应 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是有学习/理解关联性&#xff0c;希望对您有用~ PyCharm 开发工具 修改字体大小及…...

小刚说C语言刷题——每日一题东方博宜1000熟悉OJ环境

1.题目描述 2.参考代码(C语言版&#xff09; #include <stdio.h> int main(void) { //定义两个整型变量num1和num2 int num1,num2; int sum;//定义两个数的和sum //下面语句表示输入两个数字 scanf("%d%d",&num1,&num2); sumnum1num…...

Ubuntu安装Docker容器,通过Tomcat部署项目

温馨提示&#xff1a;本教程不是最完美的&#xff0c;只能说是填鸭式教育&#xff0c;仅仅让你快速部署Docker的tomcat项目。 *******命令行需要一行一行操作哟&#xff01;&#xff01;&#xff01;******* 一、检查Ubuntu本地的Tomcat能发正常打开项目 1.1 检查本地tomcat是…...

ubuntu22.04安装zabbix7.0

一、安装repository wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0ubuntu24.04_all.deb dpkg -i zabbix-release_latest_7.0ubuntu24.04_all.deb apt update二、安装Zabbix server&#xff0c;Web前端&#xff0c;ag…...

AIGC工具平台-建筑平面图3D渲染

本模块是一款智能化的建筑设计辅助工具&#xff0c;可将任意房屋平面设计图快速转换为高品质3D渲染效果图&#xff0c;让建筑设计更加直观、高效。用户无需复杂的3D建模操作&#xff0c;仅需上传房屋平面图&#xff0c;系统即可一键生成符合实际尺度的3D渲染效果&#xff0c;精…...

OpenGL学习笔记(立方体贴图、高级数据、高级GLSL)

目录 立方体贴图天空盒环境映射斯涅尔定律&#xff08;Snells Law&#xff09;菲涅尔效应&#xff08;Fresnel Effect&#xff09;动态环境贴图 高级数据分批顶点属性复制缓冲 高级GLSL顶点着色器变量片段着色器变量接口块Uniform缓冲对象Uniform块布局使用Uniform缓冲测试 Git…...

嵌入式进阶:如何选择合适的开发平台?

随着现代工业、物联网以及人工智能技术的迅速发展&#xff0c;嵌入式系统已经由简单的控制器向复杂的高性能系统迈进。从传统家电到智能机器人、从自动驾驶汽车到工业自动化&#xff0c;每一项应用都对嵌入式系统的响应速度、运行稳定性和能耗管理提出了更高要求。在这种背景下…...

CVPR‘25 SOTA——GoalFlow论文精读

1&#xff09;第一遍___粗读 Q: 这篇论文试图解决什么问题&#xff1f; A: 这篇论文提出了一个名为 GoalFlow 的端到端自动驾驶方法&#xff0c;旨在解决自动驾驶场景中高质量多模态轨迹生成的问题。具体而言&#xff0c;它试图解决以下问题&#xff1a; 轨迹选择的复杂性&am…...

vue3 onMounted 使用方法和注意事项

基础用法 / 语法糖写法 <script> import { onMounted } from vue;// 选项式 API 写法 export default {setup() {onMounted(() > {console.log(组件已挂载);});} } </script><script setup> onMounted(() > {console.log(组件已挂载); }); </scrip…...

【ubuntu】linux开机自启动

目录 开机自启动&#xff1a; /etc/rc.loacl system V 使用/etc/rc*.d/系统运行优先级 遇到的问题&#xff1a; 1. Linux 系统启动阶段概述 方法1&#xff1a;/etc/rc5.d/ 脚本延时日志 方法二&#xff1a;使用 udev 规则来触发脚本执行 开机自启动&#xff1a; /etc/…...

OpenCV day2

Matplotlib相关知识 Matplotlib相关操作&#xff1a; import numpy as np from matplotlib import pyplot as pltx np.linspace(0, 2 * np.pi, 100) y1 np.sin(x) y2 np.cos(x)# 使用红色虚线&#xff0c;圆点标记&#xff0c;线宽1.5&#xff0c;标记大小为6绘制sin plt.p…...

OpenCV 图形API(31)图像滤波-----3x3 腐蚀操作函数erode3x3()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用3x3矩形结构元素腐蚀图像。 该函数通过使用中心作为锚点的3x3矩形结构元素来腐蚀源图像。腐蚀操作可以应用多次&#xff08;迭代&#xff0…...

机器学习概述自用笔记(李宏毅)

机器学习概述 机器学习即找一个复杂的人类写不出来的函数&#xff0c;把输入&#xff08;向量&#xff0c;矩阵&#xff0c;序列&#xff09;转换为输出。 regression&#xff1a;输出是一个数值&#xff08;预测PM2.5的数值&#xff09; classification&#xff1a;选择设置…...

大数据面试问答-Spark

1. Spark 1.1 Spark定位 "Apache Spark是一个基于内存的分布式计算框架&#xff0c;旨在解决Hadoop MapReduce在迭代计算和实时处理上的性能瓶颈。 1.2 核心架构 Spark架构中有三个关键角色&#xff1a; Driver&#xff1a;解析代码生成DAG&#xff0c;协调任务调度&a…...

UE5 设置父物体和解除父子关系(移除子物体)

文章目录 设置父物体解除父子关系 Acotor类似于untiy的objecttransfrom&#xff0c;可以用来进行父子操作 设置父物体 Actor attach to Actor节点 解除父子关系 Detach From Actor...

Git - 怎么把当前修改追加到前面某个commit中

怎么把当前修改追加到前面某个commit中 git log commit b7cb11b53388d410d07e3b3084c67274cee4cdad (HEAD -> hotfix/task-108344, origin_dbackup/hotfix/task-108344) Author: aaa <aaammm.com> Date: Thu Mar 27 15:08:32 2025 0800Fix #108344: add bbbcommit …...

【HFP】蓝牙 HFP 协议状态通知机制研究

目录 一、状态通知体系架构 1.1 核心功能矩阵 1.2 三层控制体系 1.3 角色分工 1.4 协议栈层级 二、核心AT命令解析 2.1 ATCMER&#xff1a;指示器状态报告控制 2.2 ATBIA&#xff1a;指示器激活控制 2.3 CIEV&#xff1a;未请求结果码 三、关键功能实现机制 3.1 注册…...

unity100天学习计划

以下是一个为期100天的Unity学习大纲,涵盖从零基础到独立开发完整游戏的全流程,结合理论、实践和项目实战,每天学习2-3小时: 第一阶段:基础奠基(Day 1-20) 目标:掌握Unity引擎基础与C#编程 Day 1-5:引擎入门 安装Unity Hub和Unity Editor(LTS版本)熟悉Unity界面:S…...

STM32电机库 电机控制特性

ST MC FW库提供FOC和六步法两种电机控制方式。这使得它能够驱动永磁同步电机 (PMSM) 和无刷直流电机 (BLDC)。FOC 更适合 PMSM,而六步法更适合 BLDC 电机。该固件可以驱动内嵌式PMSM 和标贴式PMSM。 ST Motor Control 固件库提供以下功能: FOC SVPWM 生成: 可配置的 PW…...

MySQL数据库 - 事务

事务 此笔记参考黑马教程&#xff0c;仅学习使用&#xff0c;如有侵权&#xff0c;联系必删 文章目录 事务1. 事务简介2. 事务操作2.1 事务操作 - 方式一2.2 方式二代码实现 3. 事务四大特性&#xff08;ACID&#xff09;4. 并发事务问题5. 事务隔离级别代码实现 总结 1. 事务…...

火山引擎旗下的产品

用户问的是火山引擎旗下的产品&#xff0c;我需要详细列出各个类别下的产品。首先&#xff0c;我得确认火山引擎有哪些主要业务领域&#xff0c;比如云计算、大数据、人工智能这些。然后&#xff0c;每个领域下具体有哪些产品呢&#xff1f;比如云计算方面可能有云服务器、容器…...

用 Python 从零构建异步回显服务器

简介 让我们从 0 开始&#xff0c;搭建一个异步服务输出服务器。 套接字 套接字&#xff08;socket&#xff09;&#xff0c;是不同计算机中实现通信的一种方式&#xff0c;你可以理解成一个接口&#xff0c;它会在客户端和服务端建立连接&#xff0c;一台发送数据&#xff…...

【3D文件】可爱小鹿3D建模,3D打印文件

【3D文件】可爱小鹿3D建模&#xff0c;3D打印文件 免费下载&#xff0c;下载链接&#xff1a; 3D文件可爱小鹿3D建模&#xff0c;可爱小鹿建模仿真&#xff0c;小鹿仿真设计&#xff0c;3D打印文件&#xff0c;免费下载资源-CSDN文库 资源下载&#xff1a; 3D文件可爱小鹿3D…...

RabbitMQ 优先级队列详解

本文是博主在记录使用 RabbitMQ 在执行业务时遇到的问题和解决办法&#xff0c;因此查阅了相关资料并做了以下记载&#xff0c;记录了优先级队列的机制和使用要点。 本文为长文&#xff0c;详细介绍了相关的知识&#xff0c;可作为学习资料看。 文章目录 一、优先级队列介绍1、…...

串口通信简述

一.串口的特点 1.全双工异步通信 全双工指通信双方可以同时进行数据的发送和接收操作。 异步通信是指通信双方不使用共同的时钟信号来同步数据传输&#xff0c;而是通过特殊的信号或约定来标识数据的开始和结束 2.数据字长度可编程&#xff08;8 位或 9 位&#xff09; 不…...

【2025年五一数学建模竞赛A题】完整思路和代码

1.问题背景与重述 2.解题思路分析 2.1 问题一的分析 问题一假设无人机以平行于水平面的方式飞行并投放物资&#xff0c;可以将物资的运动 类比成平抛运动&#xff0c;由于物资的重量较大&#xff0c;因此不能简单的看成质点&#xff0c;还要考虑物资 的重量。 2.1.1本题要求给…...

为了四季度的盈利,李斌的换人还在继续

李斌对蔚来和乐道人事调整还在继续。 4月10日&#xff0c;蔚来发布内部邮件宣布大量人事变动。 蔚来方面&#xff1a; 原用户关系&#xff08;UR&#xff09;负责人沈泓因个人原因将离开公司。 任命孙明担任用户关系&#xff08;UR&#xff09;负责人&#xff0c;向高级副总…...

Pytest 自动化测试框架详解

Pytest和Unittest测试框架的区别&#xff1f; 如何区分这两者&#xff0c;很简单unittest作为官方的测试框架&#xff0c;在测试方面更加基础&#xff0c;并且可以再次基础上进行二次开发&#xff0c;同时在用法上格式会更加复杂&#xff1b;而pytest框架作为第三方框架&#x…...

sqli-labs靶场 less 9

文章目录 sqli-labs靶场less 9 时间盲注 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…...

奇趣点播系统测试报告

1.项目简介 本项目旨在搭建一个视频共享点播系统&#xff0c;服务器支持用户通过前端浏览器访问服务器&#xff0c;获取展示与观看和操作的界面&#xff0c;最终实现视频的上传以及观看和删改查等基础管理功能。让用户拥有良好的观看体验和分享视频的快捷方式&#xff0c;此外…...

空地机器人在复杂动态环境下,如何高效自主导航?

随着空陆两栖机器人(AGR)在应急救援和城市巡检等领域的应用范围不断扩大&#xff0c;其在复杂动态环境中实现自主导航的挑战也日益凸显。对此香港大学王俊铭基于阿木实验室P600无人机平台自主搭建了一整套空地两栖机器人&#xff0c;使用Prometheus开源框架完成算法的仿真验证与…...

01 - QEMU 初始化概览 - Init()

目录 1.初始化 - qemu_init() 1.1.基本设备 1.2.日志 1.3.模块信息 1.4.子系统 1.5.选项解析 - 阶段一 1.6.选项解析 - 阶段二 1.7.选项配置 1.8.Trace 1.9.主线程 1.10.CPU 时钟 1.11.其他设置 1.12.创建虚拟机 1.13.启动虚拟机 2.主线程 - qemu_main() 2.1.处…...

Vue3 使用ref

<button click"changeMsg">change</button> <div>{{ message }}</div>//接受一个内部值并返回一个响应式且可变的 ref 对象。ref 对象仅有一个 .value property&#xff0c;指向该内部值。 const message ref(hello world) const mum 1 co…...

React中 点击事件写法 的注意(this、箭头函数)

目录 ‌1、错误写法‌&#xff1a;onClick{this.acceptAlls()} ‌2、正确写法‌&#xff1a;onClick{this.acceptAlls}&#xff08;不带括号&#xff09; 总结 方案1&#xff1a;构造函数绑定 方案2&#xff1a;箭头函数包装方法&#xff08;更简洁&#xff09; 方案3&am…...

DeepSeek AI大模型:中国智能时代的“争气机“-AI生成

DeepSeek AI大模型&#xff1a;中国智能时代的"争气机" 当全球科技巨头在万亿参数竞赛中你追我赶时&#xff0c;一家中国公司悄然改写了游戏规则。DeepSeek AI最新发布的"探月"大模型不仅以中英双语能力打破技术壁垒&#xff0c;更用"动态脑区"设…...

Java老鼠迷宫(递归)---案例来自韩顺平老师讲Java

题目&#xff1a; 粉色圈圈是启动&#xff0c;红色方框是阻挡&#xff0c;蓝色五角星是出口&#xff0c;走到出口&#xff0c;老鼠winner 代码&#xff1a; public class test6 {public static void main(String[] args){//创建二维数组int[][] map new int[8][7];// 最外围都…...

Python大数据视频教程

概述 最新整理的Python大数据视频教程已出&#xff0c;需要学习的小伙伴抓紧了。 课程亮点&#xff1a; ❶ 编程基石&#xff1a;从Python基础到高阶函数式编程&#xff0c;用代码驯服数据 ❷ 数据魔法&#xff1a;SQL进阶ETL实战&#xff0c;Pandas玩转百万级数据分析 ❸ 分…...

Java工厂模式解析:灵活对象创建的实践指南

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、模式定义与分类 工厂模式&#xff08;Factory Pattern&#xff09;是创建型设计模式的核心成员之一&#xff0c;主要解决对象创建过程中的灵活性问题。根…...

PDF转换格式失败?原因及解决方法全解析

在日常工作中&#xff0c;我们经常会遇到将PDF转换为Word、Excel、PPT等格式的需求。有时候以为一键转换就能搞掂&#xff0c;没想到却转换失败。到底问题出在哪&#xff1f;别急&#xff0c;我们可以看看是否以下几个问题引起的&#xff0c;找到解决问题的关键&#xff01; 原…...

《轨道力学讲义》——第五讲:摄动理论基础

第五讲&#xff1a;摄动理论基础 引言 在实际的航天任务中&#xff0c;我们很少能够使用理想的二体问题来精确描述航天器的运动。地球的非球形性、大气阻力、太阳辐射压以及第三天体引力等各种因素都会对航天器轨道产生偏离理想轨道的影响。这些额外的力被称为"摄动力&q…...

【NLP】23.小结:选择60题

Question 1: What does the fixed lookup table in traditional NLP represent? A. A table of one‐hot vectors B. A table of pre‐trained dense word embeddings C. A dictionary of word definitions D. A table of n-gram counts Answer (中文): 答案选 B。传统NLP中“…...

C++核心机制-this 指针传递与内存布局分析

示例代码 #include<iostream> using namespace std;class A { public:int a;A() {printf("A:A()的this指针&#xff1a;%p!\n", this);}void funcA() {printf("A:funcA()的this指针&#xff1a;%p!\n", this);} };class B { public:int b;B() {prin…...

python asyncio 的基本使用

1、引言 asyncio 是 Python 标准库中的一个库&#xff0c;提供了对异步 I/O 、事件循环、协程和任务等异步编程模型的支持。 asyncio 文档 2、进程、线程、协程 线程 线程是操作系统调度的基本单位&#xff0c;同一个进程中的多个线程共享相同的内存空间。线程之间的切换由操…...

大模型中提到的分词器是什么

分词器在大模型中的核心解析 1. 分词器的定义与基本作用 分词器(Tokenizer)是自然语言处理(NLP)中的核心组件,负责将原始文本拆分为模型可处理的离散单元(称为Token)。其核心功能包括: 文本离散化:将连续字符序列转化为数字序列,作为模型的输入。语义单元提取:通过…...

Android中使用BuildConfig.DEBUG无法找到的解决方法

BuildConfig是Android构建工具自动生成的一个类&#xff0c;通常位于应用的包名下&#xff0c;包含一些构建相关的常量&#xff0c;比如DEBUG标志、应用ID、版本信息等。 遇到的问题可能有几种情况。首先&#xff0c;可能项目没有正确构建&#xff0c;导致BuildConfig没有被生…...

Python(14)Python内置函数完全指南:从基础使用到高阶技巧

目录 背景介绍一、内置函数全景分类1. 数据类型转换&#xff08;15个&#xff09;2. 数学运算&#xff08;12个&#xff09;3. 迭代处理&#xff08;9个&#xff09;4. 对象操作&#xff08;11个&#xff09;5. 输入输出&#xff08;4个&#xff09; 二、高阶函数应用场景1. en…...

echo命令,tail命令,反引号,重定向符

echo命令&#xff1a; 作用&#xff1a;在命令行中输出指定的内容&#xff0c;相当于print语句 语法&#xff1a;echo 指定的内容&#xff08;当内容包含空格和特殊字符的时候&#xff0c;语句很复杂的时候&#xff0c;最好用双引号括起来&#xff09; tail命令&#xff1a;…...

集成学习介绍

集成学习&#xff08;Ensemble Learning&#xff09;是一种机器学习范式&#xff0c;它通过组合多个模型的预测来提高整体模型的性能。单一模型可能在某些方面表现不佳或具有较高的偏差或方差&#xff0c;而集成方法能够通过结合多个模型的优点来克服这些问题&#xff0c;从而提…...

【CUDA】ubuntu环境下安装cuda

写在前面 软硬件匹配问题 &#xff1a;如老显卡安装ubuntu24, 会发现适合显卡的cuda不适合ubuntu24, 适合ubuntu24的cuda不适合显卡&#xff0c;因此安装ubuntu系统前&#xff0c;务必查明 &#xff1a;当前设备的显卡支持的cuda&#xff0c;支持哪些ubuntu版本 下面的三个问题…...