谷粒学院day06笔记
1. 阿里云OSS
1.1 OSS介绍
对象存储服务(Object Storage Service,简称OSS),是阿里云对外提供的海量、安全、低成本、高可靠的云存储服务。用户可以通过简单的REST接口,在任何时间、任何地点、任何互联网设备上进行上传和下载数据,也可以使用WEB页面对数据进行管理。OSS适合存放任意文件类型,适合各种网站、开发企业及开发者使用。
内容存储服务(Content Delivery Network,简称CDN),是一种基于互联网的分布式存储服务,它通过将用户的内容发布到全球范围内的边缘节点,提供了一种高可靠、高可用、低延迟的内容分发服务。
1.2 oss管理控制台使用
1.2.1 创建bucket 类似于文件夹,包
区域:相同区域内的产品内网可以互通
读写权限:私有读写,公共读私有写,公共读写
一般公共读就足够使用了
1.2.2 上传文件
2. java代码操作oss
公司一般不会给控制台权限
2.1 获取oss的key
控制台获取
2.2 根据阿里云官方文档搭建项目环境并使用
学习路径 -> 开发者资源
2.3 具体操作
2.3.1 创建子模块
2.3.1 pom.xml引入依赖
oss的依赖
日期工具类
2.3.2 配置文件
aliyun.oss.file.endpoint=oss-cn-beijing.aliyuncs.com
aliyun.oss.file.keyid=LTAI4G7Q1j8j8j8j8j8j8j8j
aliyun.oss.file.keysecret=
aliyun.oss.file.bucketname=online-education
2.3.3 启动报错解决
-
解决方案:
-
添加上数据库配置
-
启动类添加属性,默认不去加载数据库配置
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
-
-
注解:
@Component:注入spring容器,可以被扫描到
@Value:读取配置文件 (属性注入注解)
@ConfigurationProperties:读取配置文件 (属性注入注解)
-
创建常量工具类
当项目已启动,spring接口,spring加载之后,执行接口一个方法
创建常量工具类,读取配置文件内容,将配置文件内容赋值给工具类的属性
@Component public class xxxUtils implements InitializingBean { @Value("${aliyun.oss.file.endpoint}") private String endpoint; @Value("${aliyun.oss.file.keyid}") private String keyid; @Value("${aliyun.oss.file.keysecret}") private String keysecret; @Value("${aliyun.oss.file.bucketname}") private String bucketname; // 定义OSSClient实例 private OSS ossClient; @Override public void afterPropertiesSet() throws Exception { // 创建OSSClient实例 ossClient = new OSSClientBuilder().build(endpoint, keyid, keysecret); } // 关闭OSSClient public void destory() { ossClient.shutdown(); } // 上传文件 public String upload(InputStream inputStream, String module, String fileName) { // 上传文件流 ossClient.putObject(bucketname, module + "/" + fileName, inputStream); // 关闭OSSClient ossClient.shutdown(); // 返回上传之后文件的路径 return "https://" + bucketname + "." + endpoint + "/" + module + "/" + fileName; } }
-
存在问题
- 多次上传同名文件会造成最后一次上传会把之前的文件覆盖,所以一般会在文件名后面加上时间戳或者UUID。
- 文件分类,不同的文件放在不同的文件夹下,方便管理。可以按用户,日期,文件类型等分类。
- 代码操作。用joda工具类
3. nginx回顾
3.1 nginx介绍
-
nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。
-
常见功能:负载均衡,反向代理(请求转发),静态资源服务器,动静分离,缓存,防火墙,安全防护,压缩,日志,SSL加密,视频点播,直播等。
-
什么是请求转发(根据路径匹配不同的服务器)
-
负载均衡 算法 (轮询,权重,ip_hash)
-
动静分离(java代码和普通静态(图片等)资源分开进行部署)
3.2 nginx安装
-
cmd启动nginx, 关闭窗口无法停止,通过命令进行关闭
nginx.exe -s stop
-
配置
# 配置文件路径 nginx/conf/nginx.conf # http块作用 在 nginx.conf 文件中,http 块是定义 HTTP 服务器的配置块。在 http 块内部,可以定义多个 server 块,每个 server 块定义了一个虚拟主机。 在一个 server 块内部,可以定义该虚拟主机的监听地址和端口、服务器名称、SSL/TLS 配置、反向代理规则等等。每个 server 块可以使用不同的监听地址和端口,因此可以配置多个虚拟主机。 不同的 server 块可以根据不同的域名或者不同的 IP 地址进行匹配,从而为不同的客户端提供不同的服务。例如,可以配置一个 server 块用于处理 example.com 域名的请求,另一个 server 块用于处理 api.example.com 域名的请求,以此实现虚拟主机的功能。 总之,http.server 就是 nginx 中定义 HTTP 服务器的配置块,其中每个 server 块代表一个虚拟主机,用于处理客户端的请求。 # nginx配置示例
4. 上传头像前端开发
4.1 上传头像组件
4.2 修复重新上传的bug
5. 多级分类表设计
parent_id 实现
6. 实现easyexcel导入excel数据到数据库
6.1 easyexcel介绍
6.2 easyexcel写操作
文件路径 文件名 sheet 列名 行记录
6.3 easyexcel读操作
-
监听器(每次读取都是执行监听器中的方法)
一行一行读取,每读取一行就会执行一次监听器中的方法
-
实现监听器(读取表头,分行读取excel内容,读取完成之后)
6.4 实现用户上传excel文件,导入数据库
二级分类需要用到一级分类的id,所以需要先导入一级分类,再导入二级分类;