文件存储解决方案-阿里云OSS

文章目录

    • 1.菜单分级显示问题
        • 1.问题引出
          • 1.苹果灯,放到节能灯下面也就是id大于127
          • 2.查看菜单,并没有出现苹果灯
          • 3.放到灯具下面id=42,就可以显示
        • 2.问题分析和解决
          • 1.判断可能出现问题的位置
          • 2.找到递归返回树形菜单数据的位置
          • 3.这里出现问题的原因是,使用等号来比较了包装类的数值,修改为equals即可
          • 4.关于Long类型的机制
            • 1.编写测试用例
            • 2.结果
            • 3.debug 分析
          • 5.测试
            • 1.此时将苹果灯的id设置成652
            • 2.成功显示
    • 2.文件存储解决方案
        • 1.文件存储方案分析
        • 2.OSS在微服务架构位置
        • 3.上传方式
          • 1.普通上传方式
          • 2.服务端签名后直传
        • 4.创建Bucket
          • 1.进入对象存储控制台
          • 2.创建Bucket
          • 3.填写配置信息
          • 4.查看Bucket
            • 1.文件列表查看文件
            • 2.如果想要访问文件就使用url
        • 5.使用原生SDK上传文件到Bucket
          • 1.找到OSS的SDK参考文档
          • 2.sunliving-commodity 导入依赖这里选择3.5.0版本
          • 3.编写一个TestConroller
          • 4.找到上传文件代码并粘贴到TestConroller,然后引包,抛出异常
          • 5.回到控制台找到指定信息
            • 1.Endpoint
            • 2.找到AccessKey管理
            • 3.选择开始使用子用户的AccessKey
            • 4.创建用户
            • 5.填写信息
            • 6.验证一下
            • 7.复制一份并保留,AccessKey Secret 以后不会再出现
            • 8.选择授权 -> 新增授权
            • 9.为刚才的子用户授予权限
            • 10.查看子用户信息
          • 6.将上一步找到的三个信息填到代码中并指定其余信息
            • 1.Endpoint(前面需要加https://)
            • 2.设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET
            • 3.bucketName
            • 4.填写两个文件路径
          • 7.测试
            • 1.启动 sunliving-commodity 模块
            • 2.浏览器访问 http://localhost:9091/test 发现500了,是环境变量未读取成功
            • 3.第一次配置需要重启电脑后再次访问
            • 4.查看阿里云,上传成功了!
          • 8.注意事项
        • 6.使用SpringCloudAlibabaOSS上传文件到Bucket
          • 1.进入官网
          • 2.选择OSS的demo
          • 3.引入依赖(跟官网不一样)
          • 4.application.yml 配置信息
          • 5.编写代码
          • 6.测试
            • 1.浏览器访问 http://localhost:9091/test2
            • 2.上传成功
        • 7.服务端签名后直传(正片开始)
          • 1.官方文档
          • 2.创建sunliving-service模块
            • 1.创建maven模块
            • 2.查看父子pom.xml
          • 3.参考sunliving-commodity来配置pom.xml
          • 4.配置application.yml 填写对象存储所需信息
          • 5.编写启动类com/sun/sunliving/service/OssServiceApplication.java 启动测试
          • 6.目前文件目录
          • 7.参考官方文档编写 com/sun/sunliving/service/controller/OssServiceController.java
            • 1.官方文档
            • 2.OssServiceController 签名直传服务,返回一个签名
            • 3.测试
        • 8.通过前端上传图片到OSS
          • 1.将上传文件工具类放到 src/components下
          • 2.policy.js 向签名直传服务发送请求,获取签名(部署的时候注意修改)
          • 3.singleUpload.vue 就是一个上传文件的组件,修改action
          • 4.启动前后端项目测试
          • 5.src/views/modules/commodity/brand-add-or-update.vue 整合上传文件的控件
            • 1.引入导出上传文件的控件
            • 2.使用控件
            • 3.查看效果
            • 4.上传出现跨域问题
          • 6.上传文件跨域解决
            • 1.上传文件之前**通过浏览器**向后端发送请求,获取签名
            • 2.从renren-fast模块找到io/renren/config/CorsConfig.java的配置文件,放到后端项目即可解决第一个跨域
            • 3.重启后端,再次测试,还是有跨域问题
            • 4.第二个跨域问题分析
            • 5.在阿里云OSS解决跨域
            • 6.再次测试,成功!
          • 7.使用前端工具类进行文件上传步骤梳理
            • 1.保证后端传递的签名json对象使用data命名
            • 2.修改 policy.js 的url为后端返回签名的接口
            • 3.修改 el-upload 标签的action为 http:// + bucket + endpoint
            • 4.两个跨域问题
        • 9.品牌管理列表显示logo图片
          • 1.目前插入数据,显示的是url
            • 1.示意图
            • 2.通过访问这个url可以下载图片
          • 2.使用插槽机制显示图片
          • 3.结果展示

1.菜单分级显示问题

1.问题引出
1.苹果灯,放到节能灯下面也就是id大于127

image-20240413125405130

2.查看菜单,并没有出现苹果灯

image-20240413125613174

3.放到灯具下面id=42,就可以显示

image-20240413125847868

2.问题分析和解决
1.判断可能出现问题的位置

由于前端是直接调用了树形控件,展示了一下数据,所以应该是后端返回的数据的问题,则出现问题的位置应该是递归返回树形菜单数据的时候

2.找到递归返回树形菜单数据的位置

image-20240413131218590

3.这里出现问题的原因是,使用等号来比较了包装类的数值,修改为equals即可

image-20240413131434396

4.关于Long类型的机制
1.编写测试用例
package io.renren;/*** Description:** @Author sun* @Create 2024/4/13 13:16* @Version 1.0*/
public class T1 {public static void main(String[] args) {Long num1 = 128l;Long num2 = 128l;System.out.println(num2 == num1);}
}
2.结果

image-20240413131802993

3.debug 分析
  • 如果包装类的值在-128 到 127之间,直接返回int类型,但是如果不在这个范围内就会返回一个Long类型
  • 此时使用等号比较的就是两个引用的地址了,由于都是new的,所以肯定不同

image-20240413131853332

5.测试
1.此时将苹果灯的id设置成652

image-20240413132446091

2.成功显示

image-20240413132513908

2.文件存储解决方案

1.文件存储方案分析

image-20240413134000624

2.OSS在微服务架构位置

image-20240413134458528

3.上传方式
1.普通上传方式

image-20240413135958474

2.服务端签名后直传

image-20240413140253228

4.创建Bucket
1.进入对象存储控制台

https://oss.console.aliyun.com/overview

image-20240413141743449

2.创建Bucket

image-20240413142031291

3.填写配置信息

image-20240413142619872

4.查看Bucket
1.文件列表查看文件

image-20240413142836396

2.如果想要访问文件就使用url

image-20240413142929341

5.使用原生SDK上传文件到Bucket
1.找到OSS的SDK参考文档

https://help.aliyun.com/zh/oss/developer-reference/java/?spm=a2c4g.11186623.0.0.35d25b0fLIE7J7

image-20240413143638506

2.sunliving-commodity 导入依赖这里选择3.5.0版本
        <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.5.0</version></dependency>

image-20240413143926785

3.编写一个TestConroller
package com.sun.sunliving.commodity.controller;import com.sun.common.utils.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Description:** @Author sun* @Create 2024/4/13 14:40* @Version 1.0*/
@RestController
@Slf4j
public class TestConroller {// 测试 aliyun-sdk-oss的使用// 编写方法上传文件到bucket@RequestMapping("/test")public R test() {return null;}
}
4.找到上传文件代码并粘贴到TestConroller,然后引包,抛出异常

image-20240413151722312

image-20240413144750030

5.回到控制台找到指定信息
1.Endpoint

image-20240413145600239

2.找到AccessKey管理

image-20240413145733962

3.选择开始使用子用户的AccessKey

image-20240413145857890

4.创建用户

image-20240413150031036

5.填写信息

image-20240413150134355

6.验证一下

image-20240413150154620

7.复制一份并保留,AccessKey Secret 以后不会再出现

image-20240413150408127

8.选择授权 -> 新增授权

image-20240413150757775

9.为刚才的子用户授予权限

image-20240413151022624

10.查看子用户信息

https://ram.console.aliyun.com/permissions

image-20240413151135565

6.将上一步找到的三个信息填到代码中并指定其余信息
1.Endpoint(前面需要加https://)
https://oss-cn-beijing.aliyuncs.com

image-20240413152448342

2.设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET

image-20240413152118752

echo %OSS_ACCESS_KEY_ID%
echo %OSS_ACCESS_KEY_SECRET%
可以查看win环境变量是否生效
3.bucketName

image-20240413152342933

image-20240413152507887

4.填写两个文件路径

image-20240413153002835

7.测试
1.启动 sunliving-commodity 模块

image-20240413153149593

2.浏览器访问 http://localhost:9091/test 发现500了,是环境变量未读取成功

image-20240413153628294

image-20240413153647357

3.第一次配置需要重启电脑后再次访问

image-20240413155656859

4.查看阿里云,上传成功了!

image-20240413155800339

8.注意事项

文件名可能会重复,可以根据时间来生成目录和文件名,之前写过

6.使用SpringCloudAlibabaOSS上传文件到Bucket
1.进入官网

https://github.com/alibaba/spring-cloud-alibaba/blob/2022.x/README-zh.md

2.选择OSS的demo

image-20240413160504696

image-20240413160604366

3.引入依赖(跟官网不一样)
        <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alicloud-oss</artifactId><version>2.1.0.RELEASE</version></dependency>
4.application.yml 配置信息

image-20240413161438839

5.编写代码
@RestController
@Slf4j
public class TestConroller {// 第二个测试@Resourceprivate OSS ossClient;@RequestMapping("/test2")public R test2() {// 上传文件// 填写Bucket名称,例如examplebucket。String bucketName = "sunliving";// 填写Object完整路径,完整路径中不能包含Bucket名称,例如exampledir/exampleobject.txt。String objectName = "testdir/test2.jpg";// 填写本地文件的完整路径,例如D:\\localpath\\examplefile.txt。String filePath= "C:\\Users\\86156\\Desktop\\images\\3.25.png";PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, objectName, new File(filePath));ossClient.putObject(putObjectRequest);ossClient.shutdown();return R.ok();}
}
6.测试
1.浏览器访问 http://localhost:9091/test2

image-20240413162251054

2.上传成功

image-20240413162306041

7.服务端签名后直传(正片开始)
1.官方文档

https://help.aliyun.com/zh/oss/use-cases/obtain-signature-information-from-the-server-and-upload-data-to-oss?spm=a2c4g.11186623.0.0.518d5d03pHGK3i

https://help.aliyun.com/zh/oss/use-cases/java-1?spm=a2c4g.11186623.0.0.c14f5d03xW8RIq

image-20240413162845855

image-20240414102059697

2.创建sunliving-service模块
1.创建maven模块

image-20240413163820934

2.查看父子pom.xml

image-20240413163900598

image-20240413163925710

3.参考sunliving-commodity来配置pom.xml
    <!-- 添加描述信息 --><description>sun(家居生活)-OSS服务</description><!-- 导入SpringBoot父工程 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.8.RELEASE</version><relativePath/> <!-- 当parent的groupId没有指向父工程时就需要加 --></parent><properties><java.version>1.8</java.version><!-- SpringCloud版本 2020.0.5--><spring-cloud.version>2020.0.5</spring-cloud.version><!-- 解决java: -source 1.5 中不支持 diamond 运算符 问题 --><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><dependencies><!-- 阿里云对象存储依赖 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alicloud-oss</artifactId><version>2.1.0.RELEASE</version></dependency><!-- SpringBoot web模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- SpringBoot test模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- 公共模块 --><dependency><groupId>com.sun.sunliving</groupId><artifactId>sunliving-common</artifactId><version>1.0-SNAPSHOT</version><!-- 排除mybatis-plus-boot-starter, 因为不使用,就不会配置application.yml的mybatis-plus的部分,不排除会报错 --><exclusions><exclusion><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></exclusion></exclusions></dependency></dependencies><!-- maven打包常规配置 --><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>
4.配置application.yml 填写对象存储所需信息
server:port: 7070
spring:cloud:alicloud:oss:endpoint: oss-cn-beijing.aliyuncs.combucket: sunlivingaccess-key: *******secret-key: *******
5.编写启动类com/sun/sunliving/service/OssServiceApplication.java 启动测试
package com.sun.sunliving.service;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** Description:** @Author sun* @Create 2024/4/14 10:40* @Version 1.0*/
@SpringBootApplication
public class OssServiceApplication {public static void main(String[] args) {SpringApplication.run(OssServiceApplication.class, args);}
}

image-20240414104340796

6.目前文件目录

image-20240414104456226

7.参考官方文档编写 com/sun/sunliving/service/controller/OssServiceController.java
1.官方文档

image-20240414104754482

2.OssServiceController 签名直传服务,返回一个签名
package com.sun.sunliving.service.controller;import com.aliyun.oss.OSS;
import com.aliyun.oss.common.utils.BinaryUtil;
import com.aliyun.oss.model.MatchMode;
import com.aliyun.oss.model.PolicyConditions;
import com.sun.common.utils.R;
import org.codehaus.jettison.json.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;/*** Description: 签名直传服务** @Author sun* @Create 2024/4/14 10:45* @Version 1.0*/
@RestController
public class OssServiceController {// 注入OSS对象@Resourceprivate OSS ossClient;// 从配置文件中获取accessId@Value("${spring.cloud.alicloud.access-key}")private String accessId;// 从配置文件中获取endpoint@Value("${spring.cloud.alicloud.oss.endpoint}")private String endpoint;// 从配置文件中获取bucket@Value("${spring.cloud.alicloud.oss.bucket}")private String bucket;@RequestMapping("/oss/policy")public R policy() {try {// host的格式为 http:// + bucket + . + endpointString host = "https://" + bucket + "." + endpoint;// 根据当前日期来存放文件String dir = new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + "/";long expireTime = 30; // 默认30秒过期long expireEndTime = System.currentTimeMillis() + expireTime * 1000;Date expiration = new Date(expireEndTime);// PostObject请求最大可支持的文件大小为5 GB,即CONTENT_LENGTH_RANGE为5*1024*1024*1024。PolicyConditions policyConds = new PolicyConditions();policyConds.addConditionItem(PolicyConditions.COND_CONTENT_LENGTH_RANGE, 0, 1048576000);policyConds.addConditionItem(MatchMode.StartWith, PolicyConditions.COND_KEY, dir);String postPolicy = ossClient.generatePostPolicy(expiration, policyConds);byte[] binaryData = postPolicy.getBytes("utf-8");String encodedPolicy = BinaryUtil.toBase64String(binaryData);String postSignature = ossClient.calculatePostSignature(postPolicy);// 返回的信息Map<String, String> respMap = new LinkedHashMap<String, String>();respMap.put("accessid", accessId);respMap.put("policy", encodedPolicy);respMap.put("signature", postSignature); // 签名respMap.put("dir", dir);respMap.put("host", host);respMap.put("expire", String.valueOf(expireEndTime / 1000));JSONObject jasonCallback = new JSONObject();// jasonCallback.put("callbackUrl", callbackUrl);jasonCallback.put("callbackBody","filename=${object}&size=${size}&mimeType=${mimeType}&height=${imageInfo.height}&width=${imageInfo.width}");jasonCallback.put("callbackBodyType", "application/x-www-form-urlencoded");String base64CallbackBody = BinaryUtil.toBase64String(jasonCallback.toString().getBytes());respMap.put("callback", base64CallbackBody);return R.ok().put("data", respMap);} catch (Exception e) {System.out.println(e.getMessage());return R.error();} finally {ossClient.shutdown();}}
}
3.测试

image-20240414112556827

8.通过前端上传图片到OSS
1.将上传文件工具类放到 src/components下

image-20240414113130659

2.policy.js 向签名直传服务发送请求,获取签名(部署的时候注意修改)

image-20240414113456945

3.singleUpload.vue 就是一个上传文件的组件,修改action

image-20240414113958137

4.启动前后端项目测试

image-20240414114456217

5.src/views/modules/commodity/brand-add-or-update.vue 整合上传文件的控件
1.引入导出上传文件的控件

image-20240414115513519

2.使用控件

image-20240414115839061

3.查看效果

image-20240414115859829

4.上传出现跨域问题

image-20240414120134558

6.上传文件跨域解决
1.上传文件之前通过浏览器向后端发送请求,获取签名
  • 首先调用beforeUpload方法

  • 然后调用policy方法,就是policy.js的方法

image-20240414133848724

  • policy.js的方法通过浏览器向后端发送请求获取签名,此时出现跨域

image-20240414134148637

2.从renren-fast模块找到io/renren/config/CorsConfig.java的配置文件,放到后端项目即可解决第一个跨域

image-20240414121549866

3.重启后端,再次测试,还是有跨域问题

image-20240414130555641

4.第二个跨域问题分析

从浏览器报错中可以看到这次是向oos发送请求,进行保存文件的,也是满足跨域条件

5.在阿里云OSS解决跨域

网址:https://oss.console.aliyun.com/bucket/oss-cn-beijing/sunliving/data-security/cors

image-20240414135739013

image-20240414135907502

6.再次测试,成功!

image-20240414135948647

image-20240414140246723

7.使用前端工具类进行文件上传步骤梳理
1.保证后端传递的签名json对象使用data命名

image-20240414141202639

2.修改 policy.js 的url为后端返回签名的接口

image-20240414141430133

3.修改 el-upload 标签的action为 http:// + bucket + endpoint

image-20240414141613112

4.两个跨域问题
  1. 前端向后端签名接口发送请求
  2. 前端向OSS发送请求存储图片
9.品牌管理列表显示logo图片
1.目前插入数据,显示的是url
1.示意图

image-20240414142356141

2.通过访问这个url可以下载图片

image-20240414142457068

2.使用插槽机制显示图片
        <!-- 使用插槽机制来显示图片 --><template slot-scope="scope"><img:src="scope.row.logo"style="width: 80px;"></template>

image-20240414144846826

3.结果展示

image-20240414144903146

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/13070.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang 的 unmarshal 踩坑指南

文章目录 1. 写在最前面2. 字段区分出空字段还是未设置字段2.1 问题描述2.2 解决 3. 字段支持多种类型 & 按需做不同类型处理3.1 问题描述3.2 解决 4. 碎碎念5. 参考资料 1. 写在最前面 笔者最近在实现将内部通知系统的数据定义转化为产品定义的对外提供的数据结构。 举例…

算法学习笔记(5.0)-基于比较的高效排序算法-归并排序

##时间复杂度O(nlogn) 目录 ##时间复杂度O(nlogn) ##递归实现归并排序 ##原理 ##图例 ##代码实现 ##非递归实现归并排序 ##释 #代码实现 ##递归实现归并排序 ##原理 是一种基于分治策略的基础排序算法。 1.划分阶段&#xff1a;通过不断递归地将数组从中点处分开&…

Java 开发 框架安全:Spring 命令执行漏洞.(CVE-2022-22965)

什么叫 Spring 框架. Spring 框架是一个用于构建企业级应用程序的开源框架。它提供了一种全面的编程和配置模型&#xff0c;可以简化应用程序的开发过程。Spring 框架的核心特性包括依赖注入&#xff08;Dependency Injection&#xff09;、面向切面编程&#xff08;Aspect-Or…

【SpringBoot笔记43】SpringBoot应用程序集成spring-boot-admin监控工具

这篇文章,主要介绍SpringBoot应用程序如何集成spring-boot-admin监控工具。 目录 一、spring-boot-admin监控工具 1.1、创建admin-client客户端 (1)引入依赖

DeepSpeed

文章目录 一、关于 DeepSpeed1、DeepSpeed 是什么2、深度学习训练和推理的极致速度和规模3、DeepSpeed 的四大创新支柱1&#xff09;DeepSpeed 训练2&#xff09;DeepSpeed 推理3&#xff09;DeepSpeed 压缩4&#xff09;DeepSpeed4Science 4、DeepSpeed 软件套件DeepSpeed 库推…

React 第二十七章 Hook useCallback

useCallback 是 React 提供的一个 Hook 函数&#xff0c;用于优化性能。它的作用是返回一个记忆化的函数&#xff0c;当依赖发生变化时&#xff0c;才会重新创建并返回新的函数。 在 React 中&#xff0c;当一个组件重新渲染时&#xff0c;所有的函数都会被重新创建。这可能会…

青少年软件编程(Python)等级考试试卷(五级)2024年3月

2024.03 电子学会 青少年软件编程&#xff08;Python&#xff09;等级考试试卷&#xff08;五级&#xff09; 一、单选题 1.以下代码的输出结果是? ) nums list(range(100, 201)) print(nums[::10]) A.[100,110,120,130,140,150,160,170,180,190,200] B.[100,101,1…

QML笔记八

QML与C交互 QML中调用C功能、使用QML或者Quick中的C接口、使用C实现自定义的QML对象 注&#xff1a; 只有QObject的派生类才能与QML交互 QML引擎集成Qt元对象系统&#xff0c;QObject的派生子类的属性、方法、信号都可以在QML中访问 C类可以被注册为一个QML实例 C类可以被注册为…

【Web后端】请求头

1、简介 请求头&#xff08;Request Headers&#xff09;是在HTTP协议中&#xff0c;客户端&#xff08;如浏览器或应用程序&#xff09;向服务器发送请求时附带的元数据。包含了关于请求的额外信息&#xff0c;有助于客户端与服务器之间的有效通信。请求头中的信息可以让服务…

.[sqlback@memeware.net].2700勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 随着信息技术的飞速发展&#xff0c;网络安全问题愈发严峻&#xff0c;其中勒索病毒成为了企业和个人用户面临的重要威胁之一。.[sqlbackmemeware.net].2700勒索病毒作为其中的佼佼者&#xff0c;以其独特的攻击方式和强大的破坏力&#xff0c;引起了广泛关注…

【Go语言入门学习笔记】Part1.梦开始的地方

一、前言 经过一系列的学习&#xff0c;终于有时间来学习一些新的语言&#xff0c;Go语言在现在还是比较时髦的&#xff0c;多一个技能总比不多的好&#xff0c;故有时间来学一下。 二、配置环境 按照网络中已有的配置方法配置好&#xff0c;本人采用了Jetbrain的Goland&#…

DTC 2024回顾丨zData X 多元数据库一体机:开创多元数据库时代部署新范式

导语 在2024“数据技术嘉年华”上&#xff0c;云和恩墨数据库一体机产品总经理刘宇在“数据库极致特性”专题论坛发表了题为《打造多元数据库部署新范式&#xff0c;引领一体化资源池创新之路》的演讲。他深入分析了国产数据库面临的挑战&#xff0c;并详细介绍了云和恩墨如何利…

5.10.1 Pre-Trained Image Processing Transformer

研究了低级计算机视觉任务&#xff08;例如去噪、超分辨率和去雨&#xff09;并开发了一种新的预训练模型&#xff0c;即图像处理变压器&#xff08;IPT&#xff09;。利用著名的 ImageNet 基准来生成大量损坏的图像对。 IPT 模型是在这些具有多头和多尾的图像上进行训练的。此…

Megatron-lm、DeepSpeed

1、为了训练更多的数据、更大的模型&#xff0c;提出了并行训练框架。 2、并行的方式&#xff1a;数据并行、模型并行&#xff08;张量并行、流水线并行&#xff09;。 3、Megatron-LM 综合应用了数据并行&#xff08;Data Parallelism&#xff09;&#xff0c;张量并行&…

内网安全工具之ADExplorer的使用

ADExplorer是域内一款信息查询工具&#xff0c;它是独立的可执行文件&#xff0c;无需安装。它能够列出域组织架构、用户账号、计算机账号登&#xff0c;可以帮助寻找特权用户和数据库服务器等敏感目标。 下载地址&#xff1a;http://live.sysinternals.com/ 连接 下载了ADE…

第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组 拼数字

//bfs只能过40%。 #include<bits/stdc.h> using namespace std; #define int long long int a,b,c,dp[2028]; struct s {int x,y,z;string m; }; map<vector<int>,int>k; signed main() {ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);cin>>a…

Java入门基础学习笔记24——While循环和do-while循环

1、While循环&#xff1a; 例1&#xff1a; package cn.ensource.loop;public class WhileDemo3 {public static void main(String[] args) {// 目标&#xff1a;掌握while循环的书写格式&#xff0c;以及理解其执行流程// 需求&#xff1a;打印多行Hello Worldint i 0;while…

EFCore_创建项目

添加依赖 Microsoft.EntityFrameworkCore Microsoft.EntityFrameworkCore.Tools(Migration工具) 根据使用的DB添加对应依赖&#xff1a; SQL Server&#xff1a;Microsoft.EntityFrameworkCore.SqlServer 添加该依赖时可不添加Microsoft.EntityFrameworkCore&#xff0c;该依…

电工能混到这份上

最近看到某电工师傅发了一篇帖子&#xff0c;大致内容是他在处理一个简单故障的时候居然花了很长的时间。我们一起来看看他遇到的是什么故障吧! plc 控制的一台设备&#xff0c;行走部分靠 2 个脚踏开关控制&#xff08;内部开关量控制方向&#xff0c;电位器控制速度&#xff…

Java:使用BigDecimal、NumberFormat和DecimalFormat保留小数

一、代码和调试结果 1.1 BigDecimal ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/fa36749de8124266a730817710fdf737.png) 1.2 DecimalFormat 1.3 NumberFormat 二、原代码 BigDecimalUtil.java 代码 package utils;import java.math.BigDecimal; import jav…