day06--讲师管理模块前端开发
谷粒学院功能简介及系统架构 https://www.cnblogs.com/coderD/p/14506161.html
day01--MybatisPlus的使用 https://www.cnblogs.com/coderD/p/14506180.html
day02--环境搭建与讲师管理接口开发 https://www.cnblogs.com/coderD/p/14506295.html
day03--项目前端相关基础知识 https://www.cnblogs.com/coderD/p/14506446.html
day04--项目前端相关基础知识(二) https://www.cnblogs.com/coderD/p/14506481.html
day05--讲师管理模块前端开发 https://www.cnblogs.com/coderD/p/14506505.html
day06--讲师管理模块前端开发 https://www.cnblogs.com/coderD/p/14506540.html
day07--课程发布-添加课程信息 https://www.cnblogs.com/coderD/p/14506574.html
day08--课程发布-添加课程信息 https://www.cnblogs.com/coderD/p/14506609.html
day09--课程列表和整合阿里云视频点播 https://www.cnblogs.com/coderD/p/14506636.html
day10--微服务调用 https://www.cnblogs.com/coderD/p/14506649.html
day11--首页数据显示和添加Redis缓冲 https://www.cnblogs.com/coderD/p/14506655.html
day12--首页登录和注册 https://www.cnblogs.com/coderD/p/14506657.html
day13--微信扫码登陆 https://www.cnblogs.com/coderD/p/14506670.html
day14--首页课程和名师功能 https://www.cnblogs.com/coderD/p/14506677.html
day15--统计分析 https://www.cnblogs.com/coderD/p/14506685.html
day16--权限管理 https://www.cnblogs.com/coderD/p/14506689.html
day17--权限管理和配置服务 https://www.cnblogs.com/coderD/p/14506701.html
1、阿里云存储OSS
1.1、对象存储OSS
为了解决海量数据存储与弹性扩容,项目中我们采用云存储的解决方案- 阿里云OSS。
1.1.1、开通“对象存储OSS”服务
(1)申请阿里云账号
(2)实名认证
(3)开通“对象存储OSS”服务
(4)进入管理控制台
1.1.2、创建Bucket
选择:标准存储、公共读、不开通
1.1.3、使用SDK
官方地址:https://help.aliyun.com/document_detail/32008.html?spm=5176.87240.400427.45.79f84614r9EHOu
2、Excel
2.1、POI读写Excel的基本使用
2.1.1、Excel导入导出的应用场景
1、数据导入:减轻录入工作量
2、数据导出:统计信息归档
3、数据传输:异构系统之间数据传输
2.1.2、EasyExcel的简介
特点:
- Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。
- EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
- EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)。
2.2、Excel写
2.2.1、创建项目,实现EasyExcel对Excel写操作
-
创建一个普通项目
-
pom中引入xml相关依赖
<dependencies> <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.1.1</version> </dependency> </dependencies>
-
实现最终的添加操作(写法一)
public static void main(String[] args) throws Exception {
// 写法1
String fileName = "F:\11.xlsx";
// 这里 需要指定写用哪个class去写,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 如果这里想使用03 则 传入excelType参数即可
EasyExcel.write(fileName, DemoData.class).sheet("写入方法一").doWrite(data());
}
(写法二)
public static void main(String[] args) throws Exception {
// 写法2,方法二需要手动关闭流
String fileName = "F:\112.xlsx";
// 这里 需要指定写用哪个class去写
ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build();
WriteSheet writeSheet = EasyExcel.writerSheet("写入方法二").build();
excelWriter.write(data(), writeSheet);
/// 千万别忘记finish 会帮忙关闭流
excelWriter.finish();
}
2.3、Excel读
-
添加读取操作的监听器
//创建读取excel监听器 public class ExcelListener extends AnalysisEventListener<ReadData> { //创建list集合封装最终的数据 List<ReadData> list = new ArrayList<ReadData>(); //一行一行去读取excle内容 @Override public void invoke(ReadData user, AnalysisContext analysisContext) { System.out.println("***"+user); list.add(user); } //读取excel表头信息 @Override public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) { System.out.println("表头信息:"+headMap); } //读取完成后执行 @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { } }
-
调用实现最终的读取
public static void main(String[] args) throws Exception { // 写法1: String fileName = "F:\01.xlsx"; // 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭 EasyExcel.read(fileName, ReadData.class, new ExcelListener()).sheet().doRead(); // 写法2: InputStream in = new BufferedInputStream(new FileInputStream("F:\01.xlsx")); ExcelReader excelReader = EasyExcel.read(in, ReadData.class, new ExcelListener()).build(); ReadSheet readSheet = EasyExcel.readSheet(0).build(); excelReader.read(readSheet); // 这里千万别忘记关闭,读的时候会创建临时文件,到时磁盘会崩的 excelReader.finish(); }