【Spring Boot 20】Spring Boot_spring boot 2,大龄程序员面试

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

import org.springframework.web.bind.annotation.*;

import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@RestController

@RequestMapping(“/eduvod/video”)

@CrossOrigin

public class VodController {

@Autowired

private VodService vodService;

//上传视频到阿里云

@PostMapping(“uploadAlyiVideo”)

public R uploadAlyiVideo(MultipartFile file) {

//返回上传视频id

String videoId = vodService.uploadVideoAly(file);

return R.Ok().data(“videoId”,videoId);

}

//根据视频id删除阿里云视频

@DeleteMapping(“removeAlyVideo/{id}”)

public R removeAlyVideo(@PathVariable String id) {

try {

//初始化对象

DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);

//创建删除视频request对象

DeleteVideoRequest request = new DeleteVideoRequest();

//向request设置视频id

request.setVideoIds(id);

//调用初始化对象的方法实现删除

client.getAcsResponse(request);

return R.Ok();

}catch(Exception e) {

e.printStackTrace();

throw new GuliException(20001,“删除视频失败”);

}

}

//删除多个阿里云视频的方法

//参数多个视频id List videoIdList

@DeleteMapping(“delete-batch”)

public R deleteBatch(@RequestParam(“videoIdList”) List videoIdList) {

vodService.removeMoreAlyVideo(videoIdList);

return R.Ok();

}

}

3、service

package com.atguigu.vod.service;

import org.springframework.web.multipart.MultipartFile;

import java.util.List;

public interface VodService {

//上传视频到阿里云

String uploadVideoAly(MultipartFile file);

void removeMoreAlyVideo(List videoIdList);

}

package com.atguigu.vod.service.impl;

import com.aliyun.vod.upload.impl.UploadVideoImpl;

import com.aliyun.vod.upload.req.UploadStreamRequest;

import com.aliyun.vod.upload.resp.UploadStreamResponse;

import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest;

import com.atguigu.commonutils.R;

import com.atguigu.commonutils.exceptionhandler.GuliException;

import com.atguigu.vod.Utils.ConstantVodUtils;

import com.atguigu.vod.Utils.InitVodCilent;

import com.atguigu.vod.service.VodService;

import org.apache.commons.lang3.StringUtils;

import org.springframework.stereotype.Service;

import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

@Service

public class VodServiceImpl implements VodService {

@Override

public String uploadVideoAly(MultipartFile file) {

try {

//accessKeyId, accessKeySecret

//fileName:上传文件原始名称

// 01.03.09.mp4

String fileName = file.getOriginalFilename();

//title:上传之后显示名称

String title = fileName.substring(0, fileName.lastIndexOf(“.”));

//inputStream:上传文件输入流

InputStream inputStream = file.getInputStream();

UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);

UploadVideoImpl uploader = new UploadVideoImpl();

UploadStreamResponse response = uploader.uploadStream(request);

String videoId = null;

if (response.isSuccess()) {

videoId = response.getVideoId();

} else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因

videoId = response.getVideoId();

}

return videoId;

}catch(Exception e) {

e.printStackTrace();

return null;

}

}

@Override

public void removeMoreAlyVideo(List videoIdList) {

try {

//初始化对象

DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);

//创建删除视频request对象

DeleteVideoRequest request = new DeleteVideoRequest();

//videoIdList值转换成 1,2,3

String videoIds = StringUtils.join(videoIdList.toArray(), “,”);

//向request设置视频id

request.setVideoIds(videoIds);

//调用初始化对象的方法实现删除

client.getAcsResponse(request);

}catch(Exception e) {

e.printStackTrace();

throw new GuliException(20001,“删除视频失败”);

}

}

}

4、utils

package com.atguigu.vod.Utils;

import com.aliyun.oss.ClientException;

import com.aliyuncs.DefaultAcsClient;

import com.aliyuncs.profile.DefaultProfile;

public class InitVodCilent {

public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {

String regionId = “cn-shanghai”; // 点播服务接入区域

DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);

DefaultAcsClient client = new DefaultAcsClient(profile);

return client;

}

}

package com.atguigu.vod.Utils;

import org.springframework.beans.factory.InitializingBean;

import org.springframework.beans.factory.annotation.Value;

import org.springframework.stereotype.Component;

@Component

public class ConstantVodUtils implements InitializingBean {

@Value(“${aliyun.vod.file.keyid}”)

private String keyid;

@Value(“${aliyun.vod.file.keysecret}”)

private String keysecret;

public static String ACCESS_KEY_SECRET;

public static String ACCESS_KEY_ID;

@Override

public void afterPropertiesSet() throws Exception {

ACCESS_KEY_ID = keyid;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

SS_KEY_SECRET;

public static String ACCESS_KEY_ID;

@Override

public void afterPropertiesSet() throws Exception {

ACCESS_KEY_ID = keyid;

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-hTCA0qik-1713351343631)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您介绍一些常见的Spring Boot面试题。以下是一些常见的问题和答案: 1. 什么是Spring BootSpring Boot是一个用于创建独立的、基于Spring的应用程序的框架。它简化了Spring应用程序的配置和部署过程,并提供了一套开箱即用的功能,如自动配置、嵌入式服务器等。 2. Spring Boot的主要特点有哪些? - 简化配置:Spring Boot通过自动配置和约定大于配置的原则,减少了繁琐的配置。 - 内嵌服务器:Spring Boot可以使用内嵌的Tomcat、Jetty或Undertow服务器,无需外部容器。 - 自动配置:Spring Boot根据项目的依赖自动配置应用程序。 - 简化依赖管理:Spring Boot使用起步依赖(Starter)来管理依赖关系,简化了依赖管理。 - Actuator:Spring Boot提供了Actuator模块,可以监控和管理应用程序。 3. Spring Boot如何实现自动配置? Spring Boot通过条件注解和自动配置类实现自动配置。条件注解根据条件判断是否需要进行自动配置,自动配置类提供了默认的配置。 4. 如何在Spring Boot中配置数据源? 在Spring Boot中,可以通过在application.properties或application.yml文件中配置数据源相关属性来配置数据源。例如,可以配置数据库的URL、用户名、密码等。 5. 如何启用Spring Boot的日志输出? Spring Boot使用了Commons Logging作为日志抽象层,默认使用Logback作为日志实现。可以通过在application.properties或application.yml文件中配置相关属性来控制日志输出。 6. 如何在Spring Boot中实现跨域请求? 可以通过在控制器类或方法上添加@CrossOrigin注解来实现跨域请求。也可以通过配置WebMvcConfigurer来全局配置跨域请求。 7. 如何在Spring Boot中实现缓存? Spring Boot提供了对多种缓存技术的支持,如Ehcache、Redis等。可以通过在pom.xml文件中添加相应的依赖,并在配置文件中配置相关属性来启用缓存。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值