一、 第一种方式

  1. 1.首先从中央仓库中导入架包Poi3.14以及Poi-ooxml3.14.
  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>3.17</version>
  5. </dependency>

2.编写工具类
编写用于导出Excel的工具类ExportExcelUtils,工具类可以直接使用,不需要更改。

  1. package com.roncoo.education.web.common;
  2.  
  3. import org.apache.poi.hssf.usermodel.*;
  4.  
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.IOException;
  7. import java.util.List;
  8.  
  9. /**
  10. * @author ZhangRF
  11. */
  12. public class ExcelUtil {
  13. /**
  14. * Excel表格导出
  15. *
  16. * @param response HttpServletResponse对象
  17. * @param excelData Excel表格的数据,封装为List<List<String>>
  18. * @param sheetName sheet的名字
  19. * @param fileName 导出Excel的文件名
  20. * @param columnWidth Excel表格的宽度,建议为15
  21. * @throws IOException 抛IO异常
  22. */
  23. public static void exportExcel(HttpServletResponse response,
  24. List<List<String>> excelData,
  25. String sheetName,
  26. String fileName,
  27. int columnWidth) throws IOException {
  28.  
  29. //声明一个工作簿
  30. HSSFWorkbook workbook = new HSSFWorkbook();
  31.  
  32. //生成一个表格,设置表格名称
  33. HSSFSheet sheet = workbook.createSheet(sheetName);
  34.  
  35. //设置表格列宽度
  36. sheet.setDefaultColumnWidth(columnWidth);
  37.  
  38. //写入List<List<String>>中的数据
  39. int rowIndex = 0;
  40. for (List<String> data : excelData) {
  41. //创建一个row行,然后自增1
  42. HSSFRow row = sheet.createRow(rowIndex++);
  43.  
  44. //遍历添加本行数据
  45. for (int i = 0; i < data.size(); i++) {
  46. //创建一个单元格
  47. HSSFCell cell = row.createCell(i);
  48.  
  49. //创建一个内容对象
  50. HSSFRichTextString text = new HSSFRichTextString(data.get(i));
  51.  
  52. //将内容对象的文字内容写入到单元格中
  53. cell.setCellValue(text);
  54. }
  55. }
  56.  
  57. //准备将Excel的输出流通过response输出到页面下载
  58. //八进制输出流
  59. response.setContentType("application/octet-stream");
  60.  
  61. //设置导出Excel的名称
  62. response.setHeader("Content-disposition", "attachment;filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));
  63.  
  64. //刷新缓冲
  65. response.flushBuffer();
  66.  
  67. //workbook将Excel写入到response的输出流中,供页面下载该Excel文件
  68. workbook.write(response.getOutputStream());
  69.  
  70. //关闭workbook
  71. workbook.close();
  72. }
  73.  
  74. }

3.service导出实现

  1. public void orderExport(OrderInfoQO orderInfoQO, HttpServletResponse response) {
  2. orderInfoQO.setPageCurrent(1);
  3. orderInfoQO.setPageSize(1000);
  4. Integer courseFlag = orderInfoQO.getCourseFlag();
  5. CourseFlagEnum courseFlagEnum = CourseFlagEnum.values(courseFlag);
  6. boolean isGet = true;
  7. List<List<String>> excelData = new ArrayList<>();
  8. List<String> head = new ArrayList<>();
  9. head.add("订单编号");
  10. head.add("讲师信息");
  11. head.add("用户手机号");
  12. head.add("用户姓名");
  13. if (courseFlagEnum == CourseFlagEnum.YUNXIAOHUI) {
  14. head.add("机构名称");
  15. }
  16. head.add("课程顾问");
  17. head.add("课程名称");
  18. head.add("课程原价");
  19. head.add("课程实付");
  20. head.add("齿币");
  21. head.add("交易类型");
  22. head.add("支付方式");
  23. head.add("购买渠道");
  24. head.add("支付时间");
  25. head.add("客户备注");
  26. excelData.add(head);
  27. do {
  28. Page<OrderInfoVO> page = feignOrderInfo.listForPage(orderInfoQO);
  29. if (page.getPageCurrent() == page.getTotalPage()) {
  30. isGet = false;
  31. } else {
  32. orderInfoQO.setPageCurrent(page.getPageCurrent() + 1);
  33. }
  34. page.getList().stream().map(m -> {
  35. UserExtVO userExtVO = feignUserExt.getByUserNo(m.getUserNo());
  36. List<String> data = new ArrayList<>();
  37. data.add(String.valueOf(m.getOrderNo()));
  38. data.add(m.getLecturerName());
  39. data.add(m.getMobile());
  40. if (userExtVO != null && userExtVO.getId() != null) {
  41. data.add(userExtVO.getRealName());
  42. if (courseFlagEnum == CourseFlagEnum.YUNXIAOHUI) {
  43. data.add(userExtVO.getOrgName());
  44. }
  45. data.add(userExtVO.getKefuName());
  46. } else {
  47. data.add("");
  48. if (courseFlagEnum == CourseFlagEnum.YUNXIAOHUI) {
  49. data.add("");
  50. }
  51. data.add("");
  52. }
  53. data.add(m.getCourseName());
  54. data.add(String.valueOf(m.getPricePayable()));
  55. data.add(String.valueOf(m.getPricePaid()));
  56. data.add(String.valueOf(m.getUsePoint()));
  57. TradeTypeEnum tradeTypeEnum = TradeTypeEnum.values(m.getTradeType());
  58. if (tradeTypeEnum == null) {
  59. data.add("");
  60. } else {
  61. data.add(tradeTypeEnum.getDesc());
  62. }
  63. PayTypeEnum payTypeEnum = PayTypeEnum.values(m.getPayType());
  64. if (payTypeEnum == null) {
  65. data.add("");
  66. } else {
  67. data.add(payTypeEnum.getDesc());
  68. }
  69. ChannelTypeEnum channelTypeEnum = ChannelTypeEnum.values(m.getChannelType());
  70. if (channelTypeEnum == null) {
  71. data.add("");
  72. } else {
  73. data.add(channelTypeEnum.getDesc());
  74. }
  75. data.add(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(m.getPayTime()));
  76. data.add(m.getRemarkCus());
  77. excelData.add(data);
  78. return m;
  79. }).collect(Collectors.toList());
  80. } while (isGet);
  81.  
  82. String sheetName = "课程订单";
  83. String fileName = "订单报表-";
  84. if (courseFlagEnum == CourseFlagEnum.YUNXIAOHUI) {
  85. fileName = "云校汇订单报表";
  86. }
  87. fileName = fileName + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xls";
  88.  
  89. try {
  90. ExcelUtil.exportExcel(response, excelData, sheetName, fileName, 15);
  91. } catch (IOException e) {
  92. e.printStackTrace();
  93. }
  94. }

4.接口调用

  1. /**
  2. * 报表导出
  3. *
  4. * @param response
  5. * @throws IOException
  6. */
  7. @RequestMapping(value = "/export", method = RequestMethod.GET)
  8. public void orderExport(@ModelAttribute OrderInfoQO orderInfoQO, HttpServletResponse response) throws IOException {
  9. biz.orderExport(orderInfoQO, response);
  10. }

二、第二种方式

1.首先从中央仓库中导入架包Poi3.14以及Poi-ooxml3.14.

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>3.14</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi-ooxml</artifactId>
  9. <version>3.14</version>
  10. </dependency>

2.编写工具类
编写用于导出Excel的工具类ExportExcelUtils,工具类可以直接使用,不需要更改。

  1. package org.emall.website.util;
  2.  
  3. import org.apache.poi.hssf.usermodel.*;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6.  
  7. import javax.servlet.http.HttpServletResponse;
  8. import java.io.OutputStream;
  9. import java.io.UnsupportedEncodingException;
  10. import java.lang.reflect.Field;
  11. import java.util.Date;
  12. import java.text.SimpleDateFormat;
  13. import java.util.LinkedHashMap;
  14. import java.util.List;
  15. import java.util.Map;
  16.  
  17. /**
  18. * @version v.0.1
  19. * @Description TODO
  20. * @date 2020/6/1
  21. * @备注
  22. **/
  23. public class ExportExcelUtils {
  24. private static final Logger logger = LoggerFactory.getLogger(ExportExcelUtils.class);
  25.  
  26. /**
  27. * 导出Excel
  28. *
  29. * @param excelName 要导出的excel名称
  30. * @param list 要导出的数据集合
  31. * @param fieldMap 中英文字段对应Map,即要导出的excel表头
  32. * @param response 使用response可以导出到浏览器
  33. * @param <T>
  34. */
  35. public static <T> void export(String excelName, List<T> list, LinkedHashMap<String, String> fieldMap, HttpServletResponse response) {
  36.  
  37. // 设置默认文件名为当前时间:年月日时分秒
  38. if (excelName == null || excelName == "") {
  39. excelName = new SimpleDateFormat("yyyyMMddhhmmss").format(
  40. new Date()).toString();
  41. }
  42. // 设置response头信息
  43. response.reset();
  44. response.setContentType("application/vnd.ms-excel"); // 改成输出excel文件
  45. try {
  46. response.setHeader("Content-disposition", "attachment; filename="
  47. + new String(excelName.getBytes("gb2312"), "ISO-8859-1") + ".xls");
  48. } catch (UnsupportedEncodingException e1) {
  49. logger.info(e1.getMessage());
  50. }
  51.  
  52. try {
  53. //创建一个WorkBook,对应一个Excel文件
  54. HSSFWorkbook wb = new HSSFWorkbook();
  55. //在Workbook中,创建一个sheet,对应Excel中的工作薄(sheet)
  56. HSSFSheet sheet = wb.createSheet(excelName);
  57. //创建单元格,并设置值表头 设置表头居中
  58. HSSFCellStyle style = wb.createCellStyle();
  59. //创建一个居中格式
  60. style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
  61. // 填充工作表
  62. fillSheet(sheet, list, fieldMap, style);
  63.  
  64. //将文件输出
  65. OutputStream ouputStream = response.getOutputStream();
  66. wb.write(ouputStream);
  67. ouputStream.flush();
  68. ouputStream.close();
  69. } catch (Exception e) {
  70. logger.info("导出Excel失败!");
  71. logger.error(e.getMessage());
  72. }
  73. }
  74.  
  75. /**
  76. * 根据字段名获取字段对象
  77. *
  78. * @param fieldName 字段名
  79. * @param clazz 包含该字段的类
  80. * @return 字段
  81. */
  82. public static Field getFieldByName(String fieldName, Class<?> clazz) {
  83. logger.info("根据字段名获取字段对象:getFieldByName()");
  84. // 拿到本类的所有字段
  85. Field[] selfFields = clazz.getDeclaredFields();
  86.  
  87. // 如果本类中存在该字段,则返回
  88. for (Field field : selfFields) {
  89. //如果本类中存在该字段,则返回
  90. if (field.getName().equals(fieldName)) {
  91. return field;
  92. }
  93. }
  94.  
  95. // 否则,查看父类中是否存在此字段,如果有则返回
  96. Class<?> superClazz = clazz.getSuperclass();
  97. if (superClazz != null && superClazz != Object.class) {
  98. //递归
  99. return getFieldByName(fieldName, superClazz);
  100. }
  101.  
  102. // 如果本类和父类都没有,则返回空
  103. return null;
  104. }
  105.  
  106. /**
  107. * 根据字段名获取字段值
  108. *
  109. * @param fieldName 字段名
  110. * @param o 对象
  111. * @return 字段值
  112. * @throws Exception 异常
  113. */
  114. public static Object getFieldValueByName(String fieldName, Object o)
  115. throws Exception {
  116.  
  117. logger.info("根据字段名获取字段值:getFieldValueByName()");
  118. Object value = null;
  119. //根据字段名得到字段对象
  120. Field field = getFieldByName(fieldName, o.getClass());
  121.  
  122. //如果该字段存在,则取出该字段的值
  123. if (field != null) {
  124. field.setAccessible(true);//类中的成员变量为private,在类外边使用属性值,故必须进行此操作
  125. value = field.get(o);//获取当前对象中当前Field的value
  126. } else {
  127. throw new Exception(o.getClass().getSimpleName() + "类不存在字段名 "
  128. + fieldName);
  129. }
  130.  
  131. return value;
  132. }
  133.  
  134. /**
  135. * 根据带路径或不带路径的属性名获取属性值,即接受简单属性名,
  136. * 如userName等,又接受带路径的属性名,如student.department.name等
  137. *
  138. * @param fieldNameSequence 带路径的属性名或简单属性名
  139. * @param o 对象
  140. * @return 属性值
  141. * @throws Exception 异常
  142. */
  143. public static Object getFieldValueByNameSequence(String fieldNameSequence,
  144. Object o) throws Exception {
  145. logger.info("根据带路径或不带路径的属性名获取属性值,即接受简单属性名:getFieldValueByNameSequence()");
  146. Object value = null;
  147.  
  148. // 将fieldNameSequence进行拆分
  149. String[] attributes = fieldNameSequence.split("\\.");
  150. if (attributes.length == 1) {
  151. value = getFieldValueByName(fieldNameSequence, o);
  152. } else {
  153. // 根据数组中第一个连接属性名获取连接属性对象,如student.department.name
  154. Object fieldObj = getFieldValueByName(attributes[0], o);
  155. //截取除第一个属性名之后的路径
  156. String subFieldNameSequence = fieldNameSequence
  157. .substring(fieldNameSequence.indexOf(".") + 1);
  158. //递归得到最终的属性对象的值
  159. value = getFieldValueByNameSequence(subFieldNameSequence, fieldObj);
  160. }
  161. return value;
  162.  
  163. }
  164.  
  165. /**
  166. * 向工作表中填充数据
  167. *
  168. * @param sheet excel的工作表名称
  169. * @param list 数据源
  170. * @param fieldMap 中英文字段对应关系的Map
  171. * @param style 表格中的格式
  172. * @throws Exception 异常
  173. */
  174. public static <T> void fillSheet(HSSFSheet sheet, List<T> list,
  175. LinkedHashMap<String, String> fieldMap, HSSFCellStyle style) throws Exception {
  176. logger.info("向工作表中填充数据:fillSheet()");
  177. // 定义存放英文字段名和中文字段名的数组
  178. String[] enFields = new String[fieldMap.size()];
  179. String[] cnFields = new String[fieldMap.size()];
  180.  
  181. // 填充数组
  182. int count = 0;
  183. for (Map.Entry<String, String> entry : fieldMap.entrySet()) {
  184. enFields[count] = entry.getKey();
  185. cnFields[count] = entry.getValue();
  186. count++;
  187. }
  188.  
  189. //在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
  190. HSSFRow row = sheet.createRow((int) 0);
  191.  
  192. // 填充表头
  193. for (int i = 0; i < cnFields.length; i++) {
  194. HSSFCell cell = row.createCell(i);
  195. cell.setCellValue(cnFields[i]);
  196. cell.setCellStyle(style);
  197. sheet.autoSizeColumn(i);
  198. }
  199.  
  200. // 填充内容
  201. for (int index = 0; index < list.size(); index++) {
  202. row = sheet.createRow(index + 1);
  203. // 获取单个对象
  204. T item = list.get(index);
  205. for (int i = 0; i < enFields.length; i++) {
  206. Object objValue = getFieldValueByNameSequence(enFields[i], item);
  207. String fieldValue = objValue == null ? "" : objValue.toString();
  208.  
  209. row.createCell(i).setCellValue(fieldValue);
  210. }
  211. }
  212. }
  213.  
  214. }

3.编写实体类
需要输出到Excel的实体表。

  1. package org.emall.website.entity;
  2.  
  3. import java.math.BigInteger;
  4.  
  5. /**
  6. * @version v.0.1
  7. * @Description TODO
  8. * @date 2020/6/1
  9. * @备注
  10. **/
  11. public class Excel {
  12. private BigInteger id;
  13. private String order_number;
  14. private String amount_real;
  15. private String date_add;
  16. private String status_str;
  17. private String link_man;
  18. private String mobie;
  19. private String address;
  20. private String detailValue;
  21.  
  22. public Excel() {
  23.  
  24. }
  25.  
  26. public Excel(BigInteger id, String order_number, String amount_real, String date_add, String status_str, String link_man, String mobie, String address, String detailValue) {
  27. this.id = id;
  28. this.order_number = order_number;
  29. this.amount_real = amount_real;
  30. this.date_add = date_add;
  31. this.status_str = status_str;
  32. this.link_man = link_man;
  33. this.mobie = mobie;
  34. this.address = address;
  35. this.detailValue = detailValue;
  36. }
  37.  
  38. public BigInteger getId() {
  39. return id;
  40. }
  41.  
  42. public void setId(BigInteger id) {
  43. this.id = id;
  44. }
  45.  
  46. public String getOrder_number() {
  47. return order_number;
  48. }
  49.  
  50. public void setOrder_number(String order_number) {
  51. this.order_number = order_number;
  52. }
  53.  
  54. public String getAmount_real() {
  55. return amount_real;
  56. }
  57.  
  58. public void setAmount_real(String amount_real) {
  59. this.amount_real = amount_real;
  60. }
  61.  
  62. public String getDate_add() {
  63. return date_add;
  64. }
  65.  
  66. public void setDate_add(String date_add) {
  67. this.date_add = date_add;
  68. }
  69.  
  70. public String getStatus_str() {
  71. return status_str;
  72. }
  73.  
  74. public void setStatus_str(String status_str) {
  75. this.status_str = status_str;
  76. }
  77.  
  78. public String getLink_man() {
  79. return link_man;
  80. }
  81.  
  82. public void setLink_man(String link_man) {
  83. this.link_man = link_man;
  84. }
  85.  
  86. public String getMobie() {
  87. return mobie;
  88. }
  89.  
  90. public void setMobie(String mobie) {
  91. this.mobie = mobie;
  92. }
  93.  
  94. public String getAddress() {
  95. return address;
  96. }
  97.  
  98. public void setAddress(String address) {
  99. this.address = address;
  100. }
  101.  
  102. public String getDetailValue() {
  103. return detailValue;
  104. }
  105.  
  106. public void setDetailValue(String detailValue) {
  107. this.detailValue = detailValue;
  108. }
  109. }

4.编写控制层即得到Json数据
编写控制层ExcelController,注意fieldMap.put(“实体类属性名”,“Excel中显示的属性名”); 设置实体属性名和数据库中对应。如果得不到数据对应不上,请采用ResultMap设置或者用Select XX(数据库名)As 实体属性名。

  1. package org.emall.website.controller;
  2.  
  3. import org.emall.website.entity.Excel;
  4. import org.emall.website.entity.Order;
  5. import org.emall.website.service.OrderService;
  6. import org.emall.website.util.ExportExcelUtils;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Controller;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11.  
  12. import javax.servlet.http.HttpServletRequest;
  13. import javax.servlet.http.HttpServletResponse;
  14. import java.util.LinkedHashMap;
  15. import java.util.List;
  16.  
  17. /**
  18. * @version v.0.1
  19. * @Description TODO
  20. * @date 2020/6/1
  21. * @备注
  22. **/
  23. @Controller
  24. public class ExcelController {
  25.  
  26. @Autowired
  27. private HttpServletRequest request;
  28. @Autowired
  29. private OrderService orderService;
  30.  
  31. @RequestMapping(value = "/excel/exportBankCheckInfo",method = RequestMethod.GET)
  32. public void ExportBankCkeckInfo(HttpServletResponse response, HttpServletRequest request){
  33. //这里是笔者实际业务需求中需要得到时间间隔。可忽略
  34. String start=request.getParameter("start");
  35. String end=request.getParameter("end");
  36. System.out.println("打印的起始日期为:"+start+",打印的结束日期为:"+end);
  37. //得到所有要导出的数据
  38. List<Excel> orderlist =orderService.listexcel(start,end);
  39. //定义导出的excel名字
  40. String excelName = "订单详情表";
  41.  
  42. //获取需要转出的excel表头的map字段
  43. LinkedHashMap<String, String> fieldMap = new LinkedHashMap<>();
  44. fieldMap.put("id","编号");
  45. fieldMap.put("link_man","姓名");
  46. fieldMap.put("amount_real","价格");
  47. fieldMap.put("date_add","日期");
  48. fieldMap.put("status_str","订单状态");
  49. fieldMap.put("mobie","收货电话");
  50. fieldMap.put("address","地址");
  51. fieldMap.put("detailValue","订单详情");
  52.  
  53. //导出用户相关信息
  54. new ExportExcelUtils().export(excelName,orderlist,fieldMap,response);
  55. }
  56.  
  57. }

  

5.验证
在导出工具类中,通过HttpServletResponse response设置输出为Excel。所以通过Controller层的Url可以直接得到URL。保存位置是保存在浏览器的默认保存位置,因为是下载请求。

spring boot 整合 poi 导出excel的更多相关文章

  1. Spring Boot利用poi导出Excel

    至于poi的用法就不多说了,网上多得很,但是发现spring boot结合poi的就不多了,而且大多也有各种各样的问题. public class ExcelData implements Seria ...

  2. spring boot:使用poi导出excel电子表格文件(spring boot 2.3.1)

    一,什么是poi? 1,poi poi是用来兼容微软文档格式的java api, 它是apache的顶级项目之一, 也是我们在生产环境中导出excel时使用最多的库 2,poi官方网站: http:/ ...

  3. spring boot 使用POI导出数据到Excel表格

    在spring boot 的项目经常碰到将数据导出到Excel表格的需求,而POI技术则对于java操作Excel表格提供了API,POI中对于多种类型的文档都提供了操作的接口,但是其对于Excel表 ...

  4. spring boot使用AbstractXlsView导出excel

    一.maven依赖jar包 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi ...

  5. spring boot 使用 POI 读取Excel文件

    内容简介 本文主要介绍使用POI进行Excel文件的相关操作,涉及读取文件,获取sheet表格,对单元格内容进行读写操作,以及合并单元格的操作. Excel文件目录 Excel模板文件存了resour ...

  6. Spring Boot:添加导出Excel表格功能

    1.添加POI依赖 2.创建EXCEL实体类 3.创建表格工具类 4.创建ExcelConstant 5.创建ExcelController 1.添加POI依赖 <dependency> ...

  7. (ssh整合web导出excel)在ssh框架中使用poi正确导出具有比较高级固定格式的excel 整体过程,查询导出前后台下载

    (一) 接需求  :   需求相关   (贴图 ) 生成三核对文件 1.新增三核对菜单页面中,增加生成三核对文件功能按钮,弹窗可根据变电站.电压等级查询定值单. 2.定值单信息以表格形式展示,根据选择 ...

  8. poi导出excel

    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能, ...

  9. POI导出excel的简单demo

    目前使用过两种导出excel的方式,一种是如题所示的使用POI的方式进行数据的导出,这种方式一般只有在处理比较多的数据或者说需要导出的excel表格中有图片之类的需要特殊处理的文件的时候使用:还有一种 ...

随机推荐

  1. jenkins 安装成功之后配置

    一.基础配置介绍 jenkins安装成功之后如果某些东西配置的话,可能部署的时候一堆的问题,所以单独总结一下,让大家少走弯路 二.准备工作 1.需要准备一台服务器,大家可以在网上买,个人学习的话还是建 ...

  2. springdata jpa基本注解

    Springdata jpa的基本注解 1:@Entity @Entity注解用在实体类声明语句前,说明该Java类为实体类,将映射到指定的数据库表. 2:@Table @Table注解用在当实体类与 ...

  3. 练习//编写函数norepeat(arr) 将数组的重复元素去掉,并返回新的数组

    function norepeat(n){         for(var i=0;i<arr.length;i++){             for(var j=i+1;j<arr.l ...

  4. LoadRunner安装时提示缺少C++ 2005 SP1(x86)插件

    把安装文件里的所有中文文件重命名为英 文 名就ok!!! 把安装文件里的所有中文文件重命名为英 文 名就ok!!! 把安装文件里的所有中文文件重命名为英 文 名就ok!!! 重要的事情说三遍! 不插图 ...

  5. 简单搜索 kuangbin C D

    C - Catch That Cow POJ - 3278 我心态崩了,现在来回顾很早之前写的简单搜索,好难啊,我怎么写不出来. 我开始把这个写成了dfs,还写搓了... 慢慢来吧. 这个题目很明显是 ...

  6. 【Linux基础总结】Linux系统管理

    Linux系统管理 Linux磁盘管理命令.内存查看命令讲解 系统信息 查看系统 $ uname 查看系统版本号 $ uname -r 查看cpu信息 $ cat /proc/cpuinfo 查看内存 ...

  7. Linux dts 设备树详解(二) 动手编写设备树dts

    Linux dts 设备树详解(一) 基础知识 Linux dts 设备树详解(二) 动手编写设备树dts 文章目录 前言 硬件结构 设备树dts文件 前言 在简单了解概念之后,我们可以开始尝试写一个 ...

  8. OpenCV 经纬法将鱼眼图像展开

    文章目录 前言 理论部分 鱼眼展开流程 鱼眼标准坐标计算 标准坐标系与球坐标的转换 代码实现 测试效果如下图 总结 this demo on github 前言 鱼眼镜头相比传统的镜头,视角更广,采集 ...

  9. 【hdu1007】最近点对

    http://acm.hdu.edu.cn/showproblem.php?pid=1007 分治法的经典应用,复杂度可以证明为nlognlogn #include <iostream> ...

  10. sqli-labs之Page-3

    第三十八关:堆叠注入 $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1"; /* execute multi query */ ...