PPTPDFIMAGE

先把文件上传至本地,再去读取文件转变上传。

<dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.1</version>
</dependency>
<dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.1</version>
</dependency>
<dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-mock</artifactId><version>2.0.8</version>
</dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-scratchpad</artifactId><version>3.9</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.9</version>
</dependency>
//文件保存路径,因为需要先把文件保存在本地
@Value("${myapp.path.upload}")
private String uploadPath;

PPT2IMAGE

@ApiOperation(value = "PPT文件转图片上传")
@PostMapping("/ppt2ImageUpload")
public String doPPTtoImage(MultipartFile file) {String fileName = file.getOriginalFilename();String fileSuffix = fileName.substring(fileName.lastIndexOf("."), fileName.length());String localFileName = System.currentTimeMillis() + fileSuffix;String filePath = uploadPath + File.separator + localFileName;File localFile = new File(filePath);File imagePath = new File(uploadPath);if (!imagePath.exists()) {imagePath.mkdirs();}try {file.transferTo(localFile);} catch (IOException e) {e.printStackTrace();}File file1 = new File(filePath);return convertPPTtoImage(file1);
}public String convertPPTtoImage(File file) {List<SysFile> sysList = new ArrayList<>();long start = System.currentTimeMillis();int isppt = checkFile(file);if (isppt < 0) {System.out.println("this file isn't ppt or pptx.");return null;}try {FileInputStream is = new FileInputStream(file);Dimension pgsize = null;Object[] slide = null;if (isppt == 0) {SlideShow ppt = new SlideShow(is);is.close();pgsize = ppt.getPageSize();slide = ppt.getSlides();} else if (isppt == 1) {XMLSlideShow xppt = new XMLSlideShow(is);is.close();pgsize = xppt.getPageSize();slide = xppt.getSlides();}for (int i = 0; i < slide.length; i++) {System.out.println("Processing Page " + (i + 1) + "... ");BufferedImage img = new BufferedImage(pgsize.width,pgsize.height, BufferedImage.TYPE_INT_RGB);Graphics2D graphics = img.createGraphics();graphics.setPaint(Color.white);graphics.fill(new Rectangle2D.Float(0, 0, pgsize.width,pgsize.height));if (isppt == 0) {Slide ss = (Slide) slide[i];ss.draw(graphics);} else {XSLFSlide xss = (XSLFSlide) slide[i];xss.draw(graphics);}ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流ImageIO.write(img, "png", baos);byte[] bytes = baos.toByteArray();//转换成字节BASE64Encoder encoder = new BASE64Encoder();String png_base64 = encoder.encodeBuffer(bytes).trim();//转换成base64串png_base64 = "data:image/jpg;base64," + png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\nSystem.out.println("值为:" + "data:image/jpg;base64," + png_base64);MultipartFile multipartFile = Base64DecodeMultipartFile.base64Convert(png_base64);String result = "";String fKey = renamePic(multipartFile.getOriginalFilename());SysFile f = new SysFile();InputStream inputStream = null;try {inputStream = multipartFile.getInputStream();} catch (IOException e) {e.printStackTrace();}// 上传至第三方云服务或服务器result = fileManageFactory.getFileManage(null).inputStreamUpload(inputStream, fKey, multipartFile);f.setLocation(2);// 保存数据信息至数据库f.setName(i + multipartFile.getOriginalFilename());f.setSize(multipartFile.getSize());f.setType(multipartFile.getContentType());f.setFKey(fKey);f.setUrl(result);fileService.save(f);sysList.add(f);}System.out.println("completed in " + (System.currentTimeMillis() - start) + " ms.");} catch (FileNotFoundException e) {System.out.println(e);} catch (IOException e) {e.printStackTrace();}return JsonUtils.serialize(sysList);
}public static int checkFile(File file) {int isppt = -1;String filename = file.getName();String suffixname = null;if (filename != null && filename.indexOf(".") != -1) {suffixname = filename.substring(filename.indexOf("."));if (suffixname.equals(".ppt")) {isppt = 0;} else if (suffixname.equals(".pptx")) {isppt = 1;}}return isppt;
}

PDF2IMAGE

public String pdf2Image(MultipartFile file) {String fileName = file.getOriginalFilename();String fileSuffix = fileName.substring(fileName.lastIndexOf("."), fileName.length());String localFileName = System.currentTimeMillis() + fileSuffix;String filePath = uploadPath + File.separator + localFileName;File localFile = new File(filePath);try {file.transferTo(localFile);} catch (IOException e) {e.printStackTrace();}List<SysFile> sysList = new ArrayList<>();try {File pdfFile = new File(filePath);uploadPDF(filePath, sysList, pdfFile);} catch (IOException e) {e.printStackTrace();}return JsonUtils.serialize(sysList);
}
private void uploadPDF(String filePath, List<SysFile> sysList, File pdfFile) throws IOException {PDDocument pdDocument;int dot = pdfFile.getName().lastIndexOf('.');String imagePDFName = pdfFile.getName().substring(0, dot); // 获取图片文件名String imgFolderPath = null;pdDocument = PDDocument.load(pdfFile);PDFRenderer renderer = new PDFRenderer(pdDocument);/* dpi越大转换后越清晰,相对转换速度越慢 */PdfReader reader = new PdfReader(filePath);int pages = reader.getNumberOfPages();StringBuffer imgFilePath = null;for (int i = 0; i < pages; i++) {String imgFilePathPrefix = imgFolderPath + pdfFile.separator + imagePDFName;imgFilePath = new StringBuffer();imgFilePath.append(imgFilePathPrefix);imgFilePath.append("_");imgFilePath.append(String.valueOf(i + 1));imgFilePath.append(".png");BufferedImage image = renderer.renderImageWithDPI(i, 300);//最后使用 BufferedImage对象 image去做图片上传即可 SysFile f = getSysFile(i, image);sysList.add(f);}}

PPT2PDF

因为很多虚拟机,他可能没有合适的字体,这样的话就会导致直接由PPT转的图片出现乱码问题,所以如果直接PPT转图片出现乱码,可以尝试先把PPT转成PDF再转图片

环境准备

下载jar包:

链接:https://pan.baidu.com/s/1BIKJuK_g9hJb5nJkBROwmA 提取码:4bge

导入maven

先把jar包导入到项目中:

<dependency><groupId>aspose.slides</groupId><artifactId>slides</artifactId><version>19.3</version><scope>system</scope><systemPath>${basedir}/lib/aspose.slides-19.3.jar</systemPath>
</dependency>

代码

license.xml

<License><Data><Products><Product>Aspose.Total for Java</Product>      </Products><EditionType>Enterprise</EditionType><SubscriptionExpiry>20991231</SubscriptionExpiry><LicenseExpiry>20991231</LicenseExpiry><SerialNumber>8bfe198c-7f0c-4ef8-8ff0-acc3237bf0d7</SerialNumber></Data><Signature>sNLLKGMUdF0r8O1kKilWAGdgfs2BvJb/2Xp8p5iuDVfZXmhppo+d0Ran1P9TKdjV4ABwAgKXxJ3jcQTqE/2IRfqwnPf8itN8aFZlV3TJPYeD3yWE7IT55Gz6EijUpC7aKeoohTb4w2fpox58wWoF3SNp6sK6jDfiAUGEHYJ9pjU=</Signature>
</License>

PdfOperation.java

import com.aspose.slides.License;
import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;
import org.springframework.stereotype.Component;import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;/*** @author 萧一旬* @date Create in 10:41 2020/8/21*/
@Component
public class PdfOperation {private static InputStream license;/*** 获取license** @return*/public boolean getLicense() {boolean result = false;license = PdfOperation.class.getClassLoader().getResourceAsStream("license.xml");if (license != null) {License aposeLic = new License();aposeLic.setLicense(license);result = true;}return result;}/*** @param file       PPT文件* @param uploadPath PDF文件存放地址* @return 转换好的PDF文件地址,后续需要根据这个地址去拿PDF转换成图片*/public String convertPDF(File file, String uploadPath) {// 验证Licenseif (!getLicense()) {return "验证License失败";}try {FileInputStream fileInput = new FileInputStream(file);Presentation pres = new Presentation(fileInput);String path = uploadPath + "\\" + System.currentTimeMillis() + ".pdf";FileOutputStream out = new FileOutputStream(new File(path));pres.save(out, SaveFormat.Pdf);out.close();return path;} catch (Exception e) {e.getMessage();}return null;}
}

PPT转PDF再转图片上传

/*** 前面的部分和PPT2IMAGE的操作一样,变的只有 convertPPTtoImage 方法* @param file* @return*/
public String convertPPTtoImage(File file) {//先将PPT转成PDFString path = pdfOperation.convertPDF(file, uploadPath);if (StringUtils.isNotBlank(path)) {List<SysFile> sysList = new ArrayList<>();try {File pdfFile = new File(path);uploadPDF(path, sysList, pdfFile);} catch (IOException e) {e.printStackTrace();}return JsonUtils.serialize(sysList);}return null;
}

打包注意

使用这种方式引入的依赖,如果没有配置,那么这个jar在你打包的时候就不会被加进去,所以可能你线下行的通,线上就抛异常找不到类。

所以可以把jar包加到本地仓库,然后引用本地仓库的坐标,再打包就可以解决这个问题

安装指定文件到本地仓库命令:mvn install:install-file
-DgroupId=<groupId> : 设置项目代码的包名(一般用组织名)
-DartifactId=<artifactId> : 设置项目名或模块名
-Dversion=1.0.0 : 版本号
-Dpackaging=jar : 什么类型的文件(jar包)
-Dfile=<myfile.jar> : 指定jar文件路径与文件名(同目录只需文件名)

实例

mvn install:install-file -Dfile=C:\Users\16329\Desktop\aspose.slides-19.3.jar -DgroupId=org.apache.thrift -DartifactId=libthrift -Dversion=0.9.2 -Dpackaging=jar

注意

maven的版本也需要注意,我一开始使用的是3.5.4的版本,结果安装失败

后来我换成了3.6.1版本就成功了

个人感觉可能是我3.5.4的maven有什么地方有损坏,所以才导致的不成功。所以如果一直不成功,可以试着换个新的版本

全部代码:

package com.ttxn.modules.oss.controller;import com.lowagie.text.pdf.PdfReader;
import com.ttxn.common.config.DataSourceNames;
import com.ttxn.common.data.DataSource;
import com.ttxn.common.util.Base64DecodeMultipartFile;
import com.ttxn.common.util.JsonUtils;
import com.ttxn.modules.oss.entity.SysFile;
import com.ttxn.modules.oss.manage.FileManageFactory;
import com.ttxn.modules.oss.service.ISysFileService;
import com.ttxn.modules.oss.service.impl.SysFileServiceImpl;
import com.ttxn.modules.oss.vo.OssSetting;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.ibatis.builder.BuilderException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import org.apache.poi.hslf.model.Slide;
import org.apache.poi.hslf.model.TextRun;
import org.apache.poi.hslf.usermodel.RichTextRun;
import org.apache.poi.hslf.usermodel.SlideShow;
import org.apache.poi.xslf.usermodel.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.util.FileCopyUtils;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Encoder;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.*;
import java.nio.charset.Charset;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.List;/*** @author Bigsightx*/
@Slf4j
@RestController
@Api(description = "文件上传接口")
@RequestMapping("/sysFile/upload")public class UploadController {@AutowiredPdfOperation pdfOperation;@Autowiredprivate FileManageFactory fileManageFactory;@Autowiredprivate ISysFileService fileService;@Autowiredprivate OssSetting ossSetting;@Value("${myapp.path.upload}")private String uploadPath;//    @ApiOperation(value = "PPT文件转图片上传")
//    @PostMapping("/ppt2ImageUpload")public String doPPTtoImage(MultipartFile file) {
//        return null
//        filePath = "F:\\PPT.pptx";
//        File file = new File(filePath);String fileName = file.getOriginalFilename();String fileSuffix = fileName.substring(fileName.lastIndexOf("."), fileName.length());String localFileName = System.currentTimeMillis() + fileSuffix;String filePath = uploadPath + File.separator + localFileName;File localFile = new File(filePath);try {file.transferTo(localFile);} catch (IOException e) {e.printStackTrace();}File file1 = new File(filePath);return convertPPTtoImage(file1);}public String convertPPTtoImage(File file) {//先将PPT转成PDFString path = pdfOperation.convertPDF(file, uploadPath);if (StringUtils.isNotBlank(path)) {List<SysFile> sysList = new ArrayList<>();try {File pdfFile = new File(path);uploadPDF(path, sysList, pdfFile);} catch (IOException e) {e.printStackTrace();}return JsonUtils.serialize(sysList);}return null;}public static int checkFile(File file) {int isppt = -1;String filename = file.getName();String suffixname = null;if (filename != null && filename.indexOf(".") != -1) {suffixname = filename.substring(filename.indexOf("."));if (suffixname.equals(".ppt")) {isppt = 0;} else if (suffixname.equals(".pptx")) {isppt = 1;}}return isppt;}@ApiOperation("课件上传")@PostMapping("/uploadCourseware")@DataSource(DataSourceNames.TTXN_SAAS_SYS)public String uploadCourseware(MultipartFile file) {String fileName = file.getOriginalFilename();String suffixname = fileName.substring(fileName.lastIndexOf("."));if (suffixname.endsWith(".ppt") || suffixname.endsWith(".pptx")) {return doPPTtoImage(file);} else if (suffixname.endsWith(".pdf")) {return pdf2Image(file);}return null;}//    @ApiOperation(value = "PDF文件转图片上传")
//    @PostMapping("/pdf2ImageUpload")public String pdf2Image(MultipartFile file) {String fileName = file.getOriginalFilename();String fileSuffix = fileName.substring(fileName.lastIndexOf("."), fileName.length());String localFileName = System.currentTimeMillis() + fileSuffix;String filePath = uploadPath + File.separator + localFileName;File localFile = new File(filePath);try {file.transferTo(localFile);} catch (IOException e) {e.printStackTrace();}List<SysFile> sysList = new ArrayList<>();try {File pdfFile = new File(filePath);uploadPDF(filePath, sysList, pdfFile);} catch (IOException e) {e.printStackTrace();}return JsonUtils.serialize(sysList);}private void uploadPDF(String filePath, List<SysFile> sysList, File pdfFile) throws IOException {PDDocument pdDocument;int dot = pdfFile.getName().lastIndexOf('.');String imagePDFName = pdfFile.getName().substring(0, dot); // 获取图片文件名String imgFolderPath = null;pdDocument = PDDocument.load(pdfFile);PDFRenderer renderer = new PDFRenderer(pdDocument);/* dpi越大转换后越清晰,相对转换速度越慢 */PdfReader reader = new PdfReader(filePath);int pages = reader.getNumberOfPages();StringBuffer imgFilePath = null;for (int i = 0; i < pages; i++) {String imgFilePathPrefix = imgFolderPath + pdfFile.separator + imagePDFName;imgFilePath = new StringBuffer();imgFilePath.append(imgFilePathPrefix);imgFilePath.append("_");imgFilePath.append(String.valueOf(i + 1));imgFilePath.append(".png");BufferedImage image = renderer.renderImageWithDPI(i, 300);SysFile f = getSysFile(i, image);sysList.add(f);}}public SysFile getSysFile(int i, BufferedImage image) throws IOException {ByteArrayOutputStream baos = new ByteArrayOutputStream();//io流ImageIO.write(image, "png", baos);byte[] bytes = baos.toByteArray();//转换成字节BASE64Encoder encoder = new BASE64Encoder();String png_base64 = encoder.encodeBuffer(bytes).trim();//转换成base64串png_base64 = "data:image/jpg;base64," + png_base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\nSystem.out.println("值为:" + "data:image/jpg;base64," + png_base64);MultipartFile multipartFile = Base64DecodeMultipartFile.base64Convert(png_base64);String result = "";String fKey = renamePic(multipartFile.getOriginalFilename());SysFile f = new SysFile();InputStream inputStream = null;try {inputStream = multipartFile.getInputStream();} catch (IOException e) {e.printStackTrace();}// 上传至第三方云服务或服务器result = fileManageFactory.getFileManage(null).inputStreamUpload(inputStream, fKey, multipartFile);f.setLocation(2);// 保存数据信息至数据库f.setName(i + multipartFile.getOriginalFilename());f.setSize(multipartFile.getSize());f.setType(multipartFile.getContentType());f.setFKey(fKey);f.setUrl(result);fileService.save(f);return f;}@ApiOperation(value = "文件上传")@PostMapping(value = "/file")@DataSource(DataSourceNames.TTXN_SAAS_SYS)public SysFile upload(HttpServletRequest request, @RequestParam(required = false) String base64, @RequestParam(required = false) MultipartFile file) throws IOException {if (!ossSetting.getEnabled()) {throw new BuilderException("未开启文件上传");}if (ossSetting.getType().equals("1")) {return localUpload(request, file);} else if (ossSetting.getType().equals("2")) {return aliUpload(request, base64, file);}return null;}@PostMapping("/twoCodeUpload")public SysFile twoCodeUpload(HttpServletRequest request, String filePath) {try {File file = new File(filePath);InputStream inputStream = new FileInputStream(file);MultipartFile multipartFile = new MockMultipartFile(file.getName(), inputStream);return aliUpload(request, null, multipartFile);} catch (Exception e) {e.printStackTrace();}return null;}public SysFile localUpload(HttpServletRequest request, MultipartFile mf) throws IOException {String ctxPath = uploadPath;String fileName = null;String bizPath = "user";if (request.getParameter("basePath") != null) {bizPath = request.getParameter("basePath");}String nowday = new SimpleDateFormat("yyyyMMdd").format(new Date());File file = new File(ctxPath + File.separator + bizPath + File.separator + nowday);if (!file.exists()) {file.mkdirs();// 创建文件根目录}String orgName = mf.getOriginalFilename();// 获取文件名fileName = orgName.substring(0, orgName.lastIndexOf(".")) + "_" + System.currentTimeMillis() + orgName.substring(orgName.indexOf("."));String savePath = file.getPath() + File.separator + fileName;File savefile = new File(savePath);FileCopyUtils.copy(mf.getBytes(), savefile);String dbpath = bizPath + File.separator + nowday + File.separator + fileName;if (dbpath.contains("\\")) {dbpath = dbpath.replace("\\", "/");}SysFile f = new SysFile();f.setLocation(1);// 保存数据信息至数据库f.setName(orgName);f.setSize(savefile.length());f.setType(mf.getContentType());f.setFKey(fileName);f.setUrl(dbpath);fileService.save(f);return f;}public SysFile aliUpload(HttpServletRequest request, String base64, MultipartFile file) throws IOException {String resultUrl = "";if (null != base64 && base64 != "") {// base64上传file = Base64DecodeMultipartFile.base64Convert(base64);}String fKey = null;if (StringUtils.isNotBlank(file.getOriginalFilename())) {fKey = renamePic(file.getOriginalFilename());} else {fKey = renamePic(file.getName());}String bizPath = request.getParameter("basePath");if (bizPath != null) {fKey = bizPath + "/" + fKey;}SysFile f = new SysFile();InputStream inputStream = file.getInputStream();// 上传至第三方云服务或服务器resultUrl = fileManageFactory.getFileManage(null).inputStreamUpload(inputStream, fKey, file);f.setLocation(2);// 保存数据信息至数据库f.setName(file.getOriginalFilename());f.setSize(file.getSize());f.setType(file.getContentType());f.setFKey(fKey);f.setUrl(resultUrl);fileService.save(f);return f;}/*** 以UUID重命名** @param fileName* @return*/public static String renamePic(String fileName) {String extName = fileName.substring(fileName.lastIndexOf("."));return UUID.randomUUID().toString().replace("-", "") + extName;}}

PPTPDF文件转换成图片上传OSS相关推荐

  1. C#将PPT文件转换成图片并轮播展示

    本人小白一个,初次接触C#,各位大神还请多多点出不足,谢谢! 项目需求是:User将PPT文件上传后,公司大厅电视看板内容随即改变为上传PPT文件内容,并进行轮播显示 思路:1,实现将PPT文件打开并 ...

  2. Android自定义相机不存储照片,转换成Bitmap上传

    在最近的开发中,遇到一个需求,使用相机拍照,但是不能存储到本地,并上传到服务器,这边用到的服务器接受上传的是base64的,需要将图片转换成base64上传.接下来我们开始整. CameraPrevi ...

  3. 如何把pdf文件转换成图片?

    怎么把pdf文件转换成图片?在工作中我们经常跟PDF文件打交道,PDF文件的格式稳定,安全,好阅读的优点,给我们提供了极大的便利.但在提供便利的同时也会有所限制,比如在需要编辑PDF文件的时候,就会因 ...

  4. 怎么将pdf文件转换成图片?三种方法

    在实际的工作过程中,PDF是非常常见的文档存储格式,也是很多网站默认的保存格式.对于PDF文件来说,其具备很多其他文件格式没有的优势和特点.例如,在PDF文件中,其排版整齐且固定,浏览直观且方便,为工 ...

  5. C#,pdf文件转换成图片文件。

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

  6. 通过url链接将图片上传oss图片显示不完整问题

    通过url链接将图片上传oss图片显示不完整问题 问题:在之前通过链接上传图片的时候,都是先获取inputStream流,然后通过available()方法获取文件大小.但是通过这种方法获取到的文件大 ...

  7. c#,将pdf文件转换成图片文件。

    本文采用Adobe Acrobat9.0的COM组件,将Pdf文件的每一页转换成对应的图片文件. 开发环境:VS2010,.Net Framework4.0,Adobe Acrobat9.0. 工程中 ...

  8. xml文件转换成图片_如何把pdf文件转换成图片?

    pdf文件怎么转成JPG图片呢?相信有不少人在迷惑,可能还在想着截图等操作来完成转换,但如果是截图成JPG图片后的效果可能很差,并没有之前pdf文件那么清楚.那这样往往打印出来的效果也不怎么理想,那怎 ...

  9. xml文件转换成图片_怎样能把PDF文件转换成图片?

    我们的日常生活工作中时常碰到pdf与Excel.Word.ppt和jpg等文件格式的转换,有时候由于工作的需要,要把PDF文件转换成图片.并且现在网上的很多素材都是PDF文件格式的,如果我们想要里面的 ...

最新文章

  1. linux下压缩并分割稀疏文件
  2. 7:MD5、圆形图片、动态换肤
  3. winscp linux中文文件夹名称乱码,解决windows传送到linux下中文文件名及文件内容乱码问题...
  4. c++学习笔记之指向对象的指针以及对象数组
  5. 查看git当前tag_常用的 Git 命令清单
  6. 【OJ】洛谷红题题解锦集(Java语言描述)
  7. 剖析Caffe源码之Net---Net构造函数
  8. Ubunut14.04安装wps最新方法
  9. 将coco数据集转为voc格式代码
  10. pcie16x能插1x的卡嘛?_关于电脑能正常进系统但是进bios黑屏的解决办法(DP线连接)...
  11. 微信小程序官方开发文档
  12. 三维视觉、SLAM方向全球顶尖实验室汇总
  13. 最好吃的月饼!用Python爬取了某宝1166家月饼进行可视化分析!
  14. GSM和GPRS区别
  15. 世界上最伟大最邪恶的软件发明
  16. 一路(16)有你,一起(17)前行
  17. android bootload漏洞,一加6手机的Bootloader漏洞可让攻击者控制设备
  18. centos下申请阿里云泛域名证书并自动更新
  19. 无人机优化无线传感器网络matlab代码
  20. 【大学生软件测试基础】三角形类型 - 白盒测试 - 语句覆盖 -02

热门文章

  1. 关于作用域和自由变量的理解
  2. session如何设置超时时间
  3. (附源码)计算机毕业设计ssm爱音乐网站
  4. 计算机课程设计局域网广域网,计算机网络课程设计报告组建小区局域网
  5. 【Ubuntu18.04 无法找到终端 ifconfig 命令】
  6. 新手学习【菜鸟教程】Python CGI编程的几个坑(Windows系统)
  7. (数据库存储应用)S2数据库和表的基本操作
  8. python从入门到入魔第八天——turtle库使用(含玫瑰花绘制实例)
  9. 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三
  10. 换手机了,如何将微信聊天记录转移到其他手机上?