springboot中Controller内文件上传到本地以及阿里云
上传文件的基本操作
<form action="/upload" method="post" enctype="multipart/form-data"> <h1>登录</h1> 姓名:<input type="text" name="username" required><br> 年龄:<input type="text" name="age" required><br> 头像:<input type="file" name="file" required><br> <input type="submit" value="提交">
</form>
// Java接收前端发来的文件@RestController
public class UploadController {private static final ch.qos.logback.classic.Logger log = (Logger) LoggerFactory.getLogger(UploadController.class);@PostMapping(path = "/upload")public Result upload(String username, Integer age, MultipartFile file){log.info("接收参数:" + username + age + file);return Result.success();}
}
注意:springboot项目启动后,打开这个index.html的页面要输入:localhost:8080/index.html
接下来通过断点调试获取查看前端发送过来的文件
文件的”到此一游“:该文件所在的路径的文件夹是个临时文件夹,运行完毕后这个文件夹里的内容清空
前端上传文件本地存储
@PostMapping("/upload")public Result upload(String name, Integer age, MultipartFile file) throws IOException {// 记录接收到的参数,包括姓名、年龄和文件log.info("接收参数: {}, {}, {}", name, age, file);// 获取上传文件的原始文件名String originalFilename = file.getOriginalFilename();// 将文件保存到指定路径(D:/images/)并命名为原始文件名file.transferTo(new File( "D:/idea/javacode/web/Getdata/" + originalFilename));// 返回成功结果return Result.success();}
文件上传还存在一个要考虑的问题:如果两次提交的是不一样的文件,但是文件名称一样,那么第二次提交的图片会把第一次提交的文件给替换(覆盖)因此可以使用UUID命名来解决。
生成UUID
import java.util.UUID; public class UUIDExample { public static void main(String[] args) { // 生成一个随机UUID UUID uuid = UUID.randomUUID(); // 输出UUID System.out.println("生成的UUID: " + uuid.toString()); }
}
使用UUID解决以上问题
@PostMapping("/upload")
public Result upload(String name, Integer age, MultipartFile file) throws IOException { // 记录接收到的参数,包括姓名、年龄和文件 log.info("接收参数: {}, {}, {}", name, age, file); // 获取上传文件的原始文件名,例如 "1.jpg" 或 "22.2.2.2.png" String originalFilename = file.getOriginalFilename(); // 获取文件扩展名,从最后一个点后开始截取 String extension = originalFilename.substring(originalFilename.lastIndexOf(".")); // 生成新的文件名,使用UUID并加上文件扩展名 String newFileName = UUID.randomUUID().toString() + extension; // 将文件保存到指定路径(D:/images/)并命名为新的文件名 file.transferTo(new File("D:/images/" + newFileName)); // 返回成功结果 return Result.success();
}
file.transferTo(new File("D:/idea/javacode/web/Getdata/" + newFileName));
这个代码的路径最后一定要写个“/”,使得文件保存在那个文件夹下。
上传文件大小限制
默认上传文件的最大大小为1MB,超过该大小需要在配置文件配置
servlet: multipart:
# 最大单个文件大小 max-file-size: 10MB
# 最大请求大小(包括所有文件和表单数据) max-request-size: 100MB
阿里云OSS
阿里云对象存储oss(object Storage Service),是一款海量、安全、低成本、高可靠的云存储服务。使用oss
您可以通过网络随时存储和调用包括文本、图片、音频和视频等在内的各种文件。
具体怎么配看:视频https://www.bilibili.com/video/BV1yGydYEE3H?spm_id_from=333.788.videopod.episodes&vd_source=3c46a0d84476a55380be0c2ddd012af1&p=106
配置好相关密钥等配置后,创建bucket。接下来可以通过Java代码将自己电脑本地的文件上传到阿里云。
添加好下面的依赖
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version>
</dependency><dependency><groupId>javax.xml.bind</groupId><artifactId>jaxb-api</artifactId><version>2.3.1</version>
</dependency>
<dependency><groupId>javax.activation</groupId><artifactId>activation</artifactId><version>1.1.1</version>
</dependency>
<!-- no more than 2.3.3-->
<dependency><groupId>org.glassfish.jaxb</groupId><artifactId>jaxb-runtime</artifactId><version>2.3.3</version>
</dependency>
具体的上传文件的代码
public static void main(String[] args) throws com.aliyuncs.exceptions.ClientException {/*** 基础配置:连接服务并验证个人身份*/// Endpoint以华东1(杭州)为例,其它Region请按实际情况填写。String endpoint = "https://oss-cn-shenzhen.aliyuncs.com";// 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();// 填写Bucket名称,例如examplebucket。String bucketName = "q-buckets";/*** 配置具体文件上传信息*/// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。String objectName = "ph.webp"; // 可以修改名字// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。// 如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。String filePath= "D:\\Mycode\\webcode\\imag\\nu.webp";// 创建OSSClient实例。OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);try {// 创建PutObjectRequest对象。PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));// 如果需要上传时设置存储类型和访问权限,请参考以下示例代码。// ObjectMetadata metadata = new ObjectMetadata();// metadata.setHeader(OSSHeaders.OSS_STORAGE_CLASS, StorageClass.Standard.toString());// metadata.setObjectAcl(CannedAccessControlList.Private);// putObjectRequest.setMetadata(metadata);// 上传文件。PutObjectResult result = ossClient.putObject(putObjectRequest);} catch (OSSException oe) {System.out.println("Caught an OSSException, which means your request made it to OSS, "+ "but was rejected with an error response for some reason.");System.out.println("Error Message:" + oe.getErrorMessage());System.out.println("Error Code:" + oe.getErrorCode());System.out.println("Request ID:" + oe.getRequestId());System.out.println("Host ID:" + oe.getHostId());} catch (ClientException ce) {System.out.println("Caught an ClientException, which means the client encountered "+ "a serious internal problem while trying to communicate with OSS, "+ "such as not being able to access the network.");System.out.println("Error Message:" + ce.getMessage());} finally {if (ossClient != null) {ossClient.shutdown();}}}
这样就可以在自己阿里云的bucket里面看到上传的文件
参考:后端之路
文件上传操作整合为工具类并在Controller中使用
具体代码如下
@Component // 方便依赖注入
public class AliyunOSSOperation { // 指定阿里云OSS的服务地址,这里是深圳区域的地址 private String endpoint = "https://oss-cn-shenzhen.aliyuncs.com"; // 指定要上传到的存储桶名称 private String bucketName = "lwq-buckets"; // 指定阿里云的区域,这里是深圳区域 private String region = "cn-shenzhen"; /** * 上传文件到阿里云OSS * @param content 文件的字节数组内容 * @param originalFilename 原始文件名,用于生成新的文件名 * @return 上传后文件的访问路径 * @throws Exception 可能抛出的异常 */ public String upload(byte[] content, String originalFilename) throws Exception { // 从环境变量中获取访问密钥,确保在运行代码前设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider(); // 获取object对象路径,例如2024/06/21.png。Object类型中不能包含Bucket名称 String dir = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy/MM")); // 生成一个新的文件名,使用UUID确保唯一性,并保留原始文件的扩展名 String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf(".")); String objectName = dir + "/" + newFileName; // 生成完整的对象名称 // 创建OSSClient实例 ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration(); clientBuilderConfiguration.setSignatureVersion(SignVersion.V4); // 设置签名版本为V4 // 使用OSSClientBuilder创建OSS客户端实例,配置包括端点、凭证提供者、客户端配置和区域 OSS ossClient = OSSClientBuilder.create() .endpoint(endpoint) .credentialsProvider(credentialsProvider) .clientConfiguration(clientBuilderConfiguration) .region(region) .build(); try { // 上传文件内容到指定的存储桶和对象路径 ossClient.putObject(bucketName, objectName, new ByteArrayInputStream(content)); } finally { // 确保无论上传是否成功,都会关闭OSS客户端 ossClient.shutdown(); } // 生成并返回文件的完整访问路径 return endpoint.split("//")[0] + "//" + bucketName + "." + endpoint.split("//")[1] + "/" + objectName; }
}
使用该类
@Autowired // 自动注入AliyunOSSOperator实例
private AliyunOSSOperator aliyunOSSOperator; @PostMapping("/upload") // 定义一个POST请求处理方法,映射到/upload路径
public Result upload(MultipartFile file) throws Exception { // 记录上传文件的原始文件名到日志 log.info("文件上传: {}", file.getOriginalFilename()); // 调用aliyunOSSOperator的upload方法,将文件字节和文件名上传到OSS String url = aliyunOSSOperator.upload(file.getBytes(), file.getOriginalFilename()); // 记录文件上传后返回的URL到日志 log.info("文件上传OSS, url: {}", url); // 返回上传结果,包含文件的访问URL return Result.success(url);
}
这样上传到阿里云的文件以年月划分了文件夹
参数配置进一步优化
- 指将一些需要灵活变化的参数,配置在配置文件中,然后通过 @Value 注解来注入外部配置的属性。
-
aliyun: oss: endpoint: https://oss-cn-beijing.aliyuncs.com bucketName: java-ai region: cn-beijing
以上配置信息配置在yml文件中
-
@Value("${aliyun.oss.endpoint}") private String endpoint; @Value("${aliyun.oss.bucketName}") private String bucketName; @Value("${aliyun.oss.region}") private String region;
相关文章:
springboot中Controller内文件上传到本地以及阿里云
上传文件的基本操作 <form action"/upload" method"post" enctype"multipart/form-data"> <h1>登录</h1> 姓名:<input type"text" name"username" required><br> 年龄…...
【MFC】多工具栏如何保存状态
MFC中的工具栏本来只有一个,如果想增加几个工具栏是比较简单,但现在一个重要的问题是,状态无法保存,导致每次打开,工具栏就会出现问题,要么偏移位置要么显示不出。 经过研究,发现是MFC框架中的…...
IDEA搭建SpringBoot,MyBatis,Mysql工程项目
目录 一、前言 二、项目结构 三、初始化项目 四、SpringBoot项目集成Mybatis编写接口 五、代码仓库 一、前言 构建一个基于Spring Boot框架的现代化Web应用程序,以满足[公司/组织名称]对于[业务需求描述]的需求。通过利用Spring Boot简化企业级应用开发的优势&…...
鸿蒙心路旅程:HarmonyOS NEXT 心路旅程:技术、成长与未来
HarmonyOS NEXT 心路旅程:技术、成长与未来 技术的浪潮中,总有一些瞬间让人感到心潮澎湃。作为一名HarmonyOS NEXT开发者,我有幸成为这个时代科技创新的一部分。从最初的接触到深入学习、开发,以及如今规划未来的职业方向&#x…...
【漫话机器学习系列】010.Bagging算法(Bootstrap Aggregating)
Bagging算法(Bootstrap Aggregating) Bagging(Bootstrap Aggregating 的缩写)是一种集成学习方法,通过构建多个弱学习器(例如决策树)并将它们的结果进行平均(回归)或投票…...
【信息系统项目管理师】高分论文:论信息系统项目的进度管理(人力资源管理系统)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 论文1、规划进度管理3、排列活动顺序4、估算活动持续时间5、制订进度计划6、控制进度论文 2022年2月,我作为项目经理参与了XX电网公司人力资源管理系统建设项目,该项目是2022年XX电网公司“十三五”信息化规…...
Go web 开发框架 Iris
背景 掌握了 Go 语言的基础后就该开始实践了,编写Web应用首先需要一个 web 开发框架。做框架选型时,处理web请求是基本功能,至于MVC是更进一步需要。现在比较流行的web架构是前后端分离,后端响应RESTful的请求,Iris 能…...
模具生产过程中的标签使用流程图
①NFC芯片嵌入周转筐,通过读卡器读取CK_Label_v3的数据,并将这些信息上传至服务器进行存储; ②服务器随后与客户的WMS(仓库管理系统)进行交互,记录和同步注塑机的原始数据; ③当周转筐内的模具…...
精准提升:从94.5%到99.4%——目标检测调优全纪录
🚀 目标检测模型调优过程记录 在进行目标检测模型的训练过程中,我们面对了许多挑战与迭代。从初始模型的训练结果到最终的调优优化,每一步的实验和调整都有其独特的思路和收获。本文记录了我在优化目标检测模型的过程中进行的几次尝试&#…...
【LC】100. 相同的树
题目描述: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p [1,2,3], q [1,2,3] 输出&…...
Midjourney参数大全
基本参数 纵横比,宽高比 --aspect,或--ar更改生成的纵横比。 混乱 --chaos <number 0–100>改变结果的变化程度。更高的数值会产生更多不寻常和意想不到的结果。 图像权重 --iw <0–2>设置相对于原始图像相识度。默认值为 1&a…...
【达梦数据库】获取对象DDL
目录 背景获取表的DDL其他 背景 在排查问题时总会遇到获取对象DDL的问题,因此做以下总结。 获取表的DDL 设置disql工具中显示LONG类型数据的最大长度,避免截断: SET LONG 9999获取DDL SELECT DBMS_METADATA.GET_DDL(TABLE,表名,模式名) …...
51c视觉~合集34
我自己的原文哦~ https://blog.51cto.com/whaosoft/12207162 #图像数据增强库综述 10个强大图像增强工具对比与分析 在深度学习和计算机视觉领域,数据增强已成为提高模型性能和泛化能力的关键技术。本文旨在全面介绍当前广泛使用的图像数据增强库,…...
机动车油耗计算API集成指南
机动车油耗计算API集成指南 引言 在当今社会,随着机动车数量的持续增长和环保意识的不断增强,如何有效管理和降低车辆油耗成为了车主、车队管理者以及交通政策制定者共同关注的问题。为了帮助这些群体更好地理解和优化燃油消耗情况,本接口能…...
正也科技荣获“金石奖2024医药健康互联网优秀服务商奖”
近日,上海正也信息科技有限公司在赛柏蓝第五届医药金石奖颁奖典礼上荣获“金石奖2024医药健康互联网优秀服务商奖”。这一殊荣不仅体现了业内对正也科技在医药信息化领域卓越贡献的高度认可,更是对其持续创新与专业服务的充分肯定。 01 作为深耕医药行…...
Ubuntu搭建ES8集群+加密通讯+https访问
目录 写在前面 一、前期准备 1. 创建用户和用户组 2. 修改limits.conf文件 3. 关闭操作系统swap功能 4. 调整mmap上限 二、安装ES 1.下载ES 2.配置集群间安全访问证书密钥 3.配置elasticsearch.yml 4.修改jvm.options 5.启动ES服务 6.修改密码 7.启用外部ht…...
【2024/12最新】CF罗技鼠标宏分享教程与源码
使用效果: 支持的功能 M4 7发一个点HK417 连点瞬狙炼狱加特林一个圈 下载链接 点击下载...
jmeter 接口性能测试 学习笔记
目录 说明工具准备工具配置jmeter 界面汉化配置汉化步骤汉化结果图 案例1:测试接口接口准备线程组添加线程组配置线程组值线程数(Number of Threads)Ramp-Up 时间(Ramp-Up Period)循环次数(Loop Count&…...
SpringBoot3整合Knife4j
文章目录 1. 引入依赖2. yml配置文件3. 常用注解3.1 类级别注解3.2 方法级别注解3.3 参数级别注解3.4 模型类注解 4. 访问界面 1. 引入依赖 <!--swagger--> <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-openapi3-j…...
Dhatim FastExcel 读写 Excel 文件
Dhatim FastExcel 读写 Excel 文件 一、说明1、主要特点2、应用场景 二、使用方法1、引入依赖2、Sheet 数据3、读取 Excel4、写入 Excel 一、说明 Github 地址:Dhatim FastExcel Dhatim FastExcel是一个高性能、轻量级的Java库,专门用于读取和写入Exce…...
精读 84页华为BLM战略规划方法论
这篇文档主要介绍了华为的BLM战略规划方法论,该方法论旨在帮助企业制定战略规划,并确保战略规划的可执行性和有效性。以下是该文档的核心知识点和重点需要关注的内容: 战略规划的定义:战略规划是企业依据企业外部环境和企业自身的…...
如何评估并持续优化AI呼入机器人的使用效果
如何评估并持续优化AI呼入机器人的使用效果 作者:开源呼叫中心FreeIPCC 随着人工智能技术的快速发展,AI呼入机器人在客户服务、技术支持等多个领域得到了广泛应用。这些智能系统不仅提高了工作效率,降低了运营成本,还显著改善了…...
基于.NetCore 的 AI 识别系统的设计与实现
目录 项目背景与概述 技术架构与选型 后端技术 前端技术 系统功能模块 登录注册 数据大屏 练题系统 AI模块 工具箱 个人中心 项目背景与概述 在当今数字化快速发展的时代,人工智能(AI)技术正逐渐渗透到各个领域,展现出…...
java list 和数组互相转换的一些方法
在Java中,List 和 数组(Array) 之间的转换是一个常见的操作。由于它们是不同的数据结构,Java提供了一些方法来在它们之间进行转换。我们会从List到数组和数组到List两种情况分别讨论。 1. List 转 数组 假设你有一个 List 类型的…...
【WiFi】WiFi6 5G 802.11ax 最大速率对应表
5GHz 频段 1x1 MIMO 速率 20MHz 信道宽度 MCS 0: 8.6 MbpsMCS 1: 17.2 MbpsMCS 2: 25.8 MbpsMCS 3: 34.4 MbpsMCS 4: 51.6 MbpsMCS 5: 68.8 MbpsMCS 6: 77.4 MbpsMCS 7: 86.0 MbpsMCS 8: 103.2 MbpsMCS 9: 114.7 MbpsMCS 10: 129.0 MbpsMCS 11: 143.4 Mbps 40MHz 信道宽度 …...
智能座舱进阶-应用框架层-Handler分析
首先明确, handler是为了解决单进程内的线程之间的通信问题的。我也需要理解Android系统中进程和线程的概念, APP启动后,会有三四个线程启动起来,其中,有一条mainUITread的线程,专门用来处理UI事件…...
颜色空间之RGB和HSV互转
参考文档: https://blog.csdn.net/shandianfengfan/article/details/120600453 定点化实现: #define FRAC_BIT 10 // 小数精度 #define MIN3(x,y,z)int min3(int a, int b, int c) {int ret_val a < b ? (a < c ? a : c) : (b < c ? b :…...
程序员之路:编程语言面向过程的特征
以下是面向过程编程语言所具有的一些典型特征: 一、以过程(函数、子程序)为核心组织代码 强调函数的作用: 在面向过程编程中,函数(或子程序等不同语言中的类似概念)是代码组织的关键单元。程序…...
matlab的一些时间函数【转】
看到就记下来,感觉挺好玩的。 原文:MATLAB-一些时间函数 - 简书 (jianshu.com) 注明出处了,原文是公开的,应该不算侵权。若有侵权请告知删除谢谢。...
OpenGL —— 2.6.1、绘制一个正方体并贴图渲染颜色(附源码,glfw+glad)
源码效果 C++源码 纹理图片 需下载stb_image.h这个解码图片的库,该库只有一个头文件。 具体代码: vertexShader.glsl #version...
【ETCD】【源码阅读】深入解析 EtcdServer.applyEntries方法
applyEntries方法的主要作用是接收待应用的 Raft 日志条目,并按顺序将其应用到系统中;确保条目的索引连续,避免丢失或重复应用条目。 一、函数完整代码 func (s *EtcdServer) applyEntries(ep *etcdProgress, apply *apply) {if len(apply.…...
【数据分析】数据分析流程优化:从数据采集到可视化的全面指南
目录 引言一、数据采集:高质量数据的起点1.1 数据采集的目标1.2 数据采集的常用方法1.3 数据采集的注意事项 二、数据清洗:确保数据质量2.1 数据清洗的重要性2.2 常见的数据清洗步骤 三、数据分析:从数据中挖掘有价值的洞察3.1 数据分析的目的…...
【华为OD-E卷-字符串重新排序 字符串重新排列 100分(python、java、c++、js、c)】
【华为OD-E卷-字符串重新排序 字符串重新排列 100分(python、java、c、js、c)】 题目 给定一个字符串s,s包括以空格分隔的若干个单词,请对s进行如下处理后输出: 1、单词内部调整:对每个单词字母重新按字典…...
Mybatis二级缓存
一、二级缓存的概念 MyBatis 的二级缓存是基于命名空间(namespace)的缓存,它可以被多个 SqlSession 共享。当开启二级缓存后,在一个 SqlSession 中执行的查询结果会被缓存起来,其他 SqlSession 在查询相同的语句&…...
C语言中的宏定义:无参宏与带参宏的详细解析
C语言中的宏定义:无参宏与带参宏的详细解析 在C语言中,宏定义是一种非常强大的预处理功能,通过#define指令可以定义一些常量或者代码片段,用来减少代码重复,提高可读性。本文将详细讲解无参宏与带参宏的使用方法&…...
unity 最小后监听键盘输入
当Untiy最小化后,游戏窗口不会立刻失去焦点,此时依然可以使用Input来获取按键,但是点击其他窗口后,就会失去焦点,此时系统会把按键输入分配到其他窗口里,此时要用windowsAPI获取按键输入,应对两…...
python使用Flask框架创建一个简单的动态日历
0. 运行效果 运行代码,然后在浏览器中访问 http://127.0.0.1:5000/,将看到一个动态日历,能够通过点击按钮切换月份。 1. 安装 Flask 首先,确保你已经安装了Flask。如果没有,可以使用以下命令安装: pip i…...
力扣438-找到字符串中所有字母异位词
力扣438-找到字符串中所有字母异位词 力扣438-找到字符串中所有字母异位词原题地址:https://leetcode.cn/problems/find-all-anagrams-in-a-string/description/ 题目描述: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词的子串&#x…...
七、网络安全-企业数据脱敏
文章目录 前言一、数据脱敏方法二、企业脱敏方案1. 数据库脱敏方案2. 历史数据脱敏3. 具体实现 三、日志脱敏方案四、输出脱敏 前言 数据脱敏 随着用户对个人隐私数据的重视和法律法规的完善,数据安全显得愈发重要。一方面可以加强权限管理,减少能够接…...
电子应用设计方案-62:智能鞋柜系统方案设计
智能鞋柜系统方案设计 一、引言 随着人们生活水平的提高,对家居用品的智能化需求也日益增加。智能鞋柜作为一种创新的家居产品,能够有效地解决鞋子的收纳、消毒、除臭和保养等问题,为用户提供更加便捷和健康的生活体验。 二、系统概述 1. 系…...
C++ 引用的基本用法
通过使用引用,可以创建该对象的另一个名字,而不会引入额外的内存开销。引用在函数参数传递、返回值以及避免拷贝大型对象时特别有用。 引用的基本用法 创建引用: 引用必须在创建时被初始化,且一旦被绑定到一个对象后࿰…...
全面解析 Golang Gin 框架
1. 引言 在现代 Web 开发中,随着需求日益增加,开发者需要选择合适的工具来高效地构建应用程序。对于 Go 语言(Golang)开发者来说,Gin 是一个备受青睐的 Web 框架。它轻量、性能高、易于使用,并且具备丰富的…...
element plus的table组件,点击table的数据是,会出现一个黑色边框
在使用 Element Plus 的 Table 组件时,如果你点击表格数据后出现了一个黑色边框,这通常是因为浏览器默认的焦点样式(outline)被触发了。如图: 你可以通过自定义 CSS 来隐藏这个黑色边框,代码如下࿱…...
三种国产大语言模型Python免费调用
基础三大模型,需要先去官方注册获得key;后续可以使用下列代码调用 1.腾讯 安装: pip install -i https://mirrors.tencent.com/pypi/simple/ --upgrade tencentcloud-sdk-python 实例: import jsonimport typesfrom tencentcl…...
Ansible playbook 详解与实战操作
一、概述 playbook 与 ad-hoc 相比,是一种完全不同的运用 ansible 的方式,类似与 saltstack 的 state 状态文件。ad-hoc 无法持久使用,playbook 可以持久使用。 playbook 是由一个或多个 play 组成的列表,play 的主要功能在于将事先归并为一…...
linux普通用户使用sudo不需要输密码
1.root用户如果没有密码,先给root用户设置密码 sudo passwd root #设置密码 2.修改visudo配置 su #切换到root用户下 sudo visudo #修改visudo配置文件 用户名 ALL(ALL) NOPASSWD: ALL #下图所示处新增一行配置 用户名需要输入自己当前主机的用户名...
linux-----数据库
Linux下数据库概述 数据库类型: 关系型数据库(RDBMS):如MySQL、PostgreSQL、Oracle等。这些数据库以表格的形式存储数据,表格之间通过关系(如主键 - 外键关系)相互关联。关系型数据库支持复杂的…...
【Linux进程】进程间的通信
目录 1. 进程间通信 1.1 进程间通信的目的 2. 管道 2.1 什么是管道 2.2. 匿名管道 匿名管道的特性 管道的4种情况 联系shell中的管道 2.3. 命名管道 代码级建立命名管道 2.4. 小结 总结 1. 进程间通信 进程间通信(Inter-Process Communication,IPC&…...
面试题整理4----lvs,nginx,haproxy区别和使用场景
LVS、Nginx、HAProxy:区别与使用场景 1. LVS(Linux Virtual Server)1.1 介绍1.2 特点1.3 使用场景 2. Nginx2.1 介绍2.2 特点2.3 使用场景 3. HAProxy3.1 介绍3.2 特点3.3 使用场景 4. 总结对比 在构建高可用、高性能的网络服务时,…...
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)综述
定义 开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)是一种目标检测任务,旨在检测和识别那些未在训练集中明确标注的物体类别。传统的目标检测模型通常只能识别有限数量的预定义类别,而OVOD模型则具有识别“开放词汇…...