package com.zuidaima.excel.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; /**
* @描述 负责将数据集(表单数据)导出Excel文件
* @author */
public class ExcelUtil { /**
* 类实例
*/
private static ExcelUtil export; /**
* excel文档
*/
private HSSFWorkbook workbook; /**
* excel sheet
*/
private HSSFSheet sheet; /**
* 字节流
*/
private OutputStream fileOutput; /**
* 声明私有构造方法
*/
private ExcelUtil() { } /**
* 产生一个excel导出工具类实例(单例模式)
*
* @return excel导出工具类对象
*/
public static ExcelUtil newInstance() {
if (export == null)
export = new ExcelUtil();
return export;
} /**
* @功能描述 设置excel文档(单表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @param filePath
* excel文件地址
* @throws Exception
* 异常往上抛出
*/
public void exportExcel(String tName, ArrayList<String> tHeader, ArrayList<ArrayList<Object>> tValue,
Map<String, Short> tHeaderStyle, Map<String, Short> tValueStyle, String filePath) throws Exception { try {
// 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // 单个表单赋值和样式
this.setSheet(tName, tHeader, tValue, tHeaderStyle, tValueStyle);
// 导出excel文件
this.export(workbook, filePath); } catch (Exception e) {
e.printStackTrace(); }
} /**
* @功能描述 设置excel文档(单表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @throws Exception
* 异常往上抛出
*/
public InputStream exportExcelToStream(String tName, ArrayList<String> tHeader,
ArrayList<ArrayList<Object>> tValue, Map<String, Short> tHeaderStyle, Map<String, Short> tValueStyle)
throws Exception { // 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // 单个表单赋值和样式
this.setSheet(tName, tHeader, tValue, tHeaderStyle, tValueStyle); // 导出excel文件
return export(workbook); } /**
* @功能描述 设置excel文档(多表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @param filePath
* excel文件地址
* @throws Exception
* 异常往上抛出
*/
public void exportExcel(ArrayList<String> tName, ArrayList<ArrayList<String>> tHeader,
ArrayList<ArrayList<ArrayList<Object>>> tValue, ArrayList<Map<String, Short>> tHeaderStyle,
ArrayList<Map<String, Short>> tValueStyle, String filePath) throws Exception { try {
// 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // for循环完成文档各个表单的赋值和样式
for (int i = 0; i < tName.size(); i++) {
this.setSheet(tName.get(i), tHeader.get(i), tValue.get(i), tHeaderStyle.get(i), tValueStyle.get(i)); // 单个表单赋值和样式
} // 导出excel文件
this.export(workbook, filePath); } catch (Exception e) {
}
} /**
* @功能描述 设置excel文档(多表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @throws Exception
* 异常往上抛出
*/
public InputStream exportExcelToStream(ArrayList<String> tName, ArrayList<ArrayList<String>> tHeader,
ArrayList<ArrayList<ArrayList<Object>>> tValue, ArrayList<Map<String, Short>> tHeaderStyle,
ArrayList<Map<String, Short>> tValueStyle) throws Exception { // 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // for循环完成文档各个表单的赋值和样式
for (int i = 0; i < tName.size(); i++) {
this.setSheet(tName.get(i), tHeader.get(i), tValue.get(i), tHeaderStyle.get(i), tValueStyle.get(i)); // 单个表单赋值和样式
}
return export(workbook);
} /**
* @功能描述 设置excel表单
* @创建人
* @创建时间 2011-5-27 下午02:23:02
* @param tName
* excel表名
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @throws Exception
* 异常往上抛出
*/
private void setSheet(String tName, ArrayList<String> tHeader, ArrayList<ArrayList<Object>> tValue,
Map<String, Short> tHeaderStyle, Map<String, Short> tValueStyle) throws Exception { try {
// 创建表单并设置其表名
sheet = workbook.createSheet(tName); // 创建表单行
HSSFRow tRow = sheet.createRow(0); // 赋值和样式(此时,为表头行)
tRow = this.setTRow(tRow, tHeader, tHeaderStyle); // for循环完成表单数据的赋值和样式(除表头)
for (int i = 0; i < tValue.size(); i++) {
tRow = sheet.createRow(i + 1); // 获取表单行 tRow = this.setTRow(tRow, tValue.get(i), tValueStyle); // 设置当前行的数据和样式
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* @功能描述 设置excel表单行数据
* @创建人
* @创建时间 2011-5-27 下午02:22:30
* @param row
* excel表单行
* @param tRow
* excel表单行数据
* @param tHeaderStyle
* excel表头样式
* @return 设置后的的表单行
* @throws Exception
* 异常往外抛出
*/
@SuppressWarnings("unchecked")
private HSSFRow setTRow(HSSFRow row, ArrayList tRow, Map<String, Short> tHeaderStyle) throws Exception { try {
// 获取单元格样式
HSSFCellStyle cellStyle = this.setCellStyle(tHeaderStyle);
// 声明单元格
HSSFCell cell = null; // for循环完成该表单某行各个列赋值和样式
for (int i = 0; i < tRow.size(); i++) {
cell = row.createCell(i); // 获取每列单元格
cell.setCellStyle(cellStyle); // 设置样式 sheet.autoSizeColumn((short) i); // 设置单元格自适应
Object obj = tRow.get(i); // 获取当前列的值
// 判断对象所属类型, 并强转
if (obj instanceof Integer) // 当数字时
cell.setCellValue((Integer) obj);
if (obj instanceof String) // 当为字符串时
cell.setCellValue((String) obj);
if (obj instanceof Boolean) // 当为布尔时
cell.setCellValue((Boolean) obj);
if (obj instanceof Date) // 当为时间时
cell.setCellValue((Date) obj);
if (obj instanceof Calendar) // 当为时间时
cell.setCellValue((Calendar) obj);
if (obj instanceof Double) // 当为小数时
cell.setCellValue((Double) obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return row; // 返回
} /**
* @功能描述 设置单元格样式
* @创建人
* @创建时间 2011-5-27 下午02:21:40
* @param fontStyle
* 样式Map集合
* @return 设置后单元格样式
* @throws Exception
* 异常往外抛出
*/
private HSSFCellStyle setCellStyle(Map<String, Short> fontStyle) throws Exception { // 声明单元格样式
HSSFCellStyle cellStyle = null;
try {
// 创建字体
HSSFFont font = workbook.createFont();
// 设置字体样式
// 设置字体颜色(红色为:HSSFFont.COLOR_RED 这里表示short类型 10)
font.setColor(fontStyle.get("color"));
// 设置字体形体(宽体为:HSSFFont.BOLDWEIGHT_BOLD 700) -- 粗体
font.setBoldweight(fontStyle.get("weight")); // 创建单元格样式
cellStyle = workbook.createCellStyle();
// 添加字体样式
cellStyle.setFont(font); } catch (Exception e) {
e.printStackTrace();
}
return cellStyle; // 返回
} /**
* @功能描述 导出Excel
* @创建人
* @创建时间 2011-5-27 下午02:57:37
* @param workbook
* excel文档
* @param filePath
* xls文件地址
* @throws Exception
* 异常往外抛出
*/
private void export(HSSFWorkbook workbook, String filePath) throws Exception { try {
// 根据指定xls文件创建文件字符流
fileOutput = new FileOutputStream(filePath);
// 将文档写入指定文件
workbook.write(fileOutput); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流, 释放资源
fileOutput.close();
} catch (IOException e) {
e.printStackTrace();
;
}
}
} /**
* @功能描述 获取流
* @创建人
* @创建时间 2011-5-27 下午02:57:37
* @param workbook
* excel文档
* @throws Exception
* 异常往外抛出
*/
private InputStream export(HSSFWorkbook workbook) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
try {
workbook.write(baos);
} catch (IOException e) {
e.printStackTrace();
}
byte[] ba = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(ba);
return bais;
} finally {
// 关闭流, 释放资源
baos.close();
}
}
}

package com.zuidaima.excel.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; /**
* @描述 负责将数据集(表单数据)导出Excel文件 */
public class ExcelUtil { /**
* 类实例
*/
private static ExcelUtil export; /**
* excel文档
*/
private HSSFWorkbook workbook; /**
* excel sheet
*/
private HSSFSheet sheet; /**
* 字节流
*/
private OutputStream fileOutput; /**
* 声明私有构造方法
*/
private ExcelUtil() { } /**
* 产生一个excel导出工具类实例(单例模式)
*
* @return excel导出工具类对象
*/
public static ExcelUtil newInstance() {
if (export == null)
export = new ExcelUtil();
return export;
} /**
* @功能描述 设置excel文档(单表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @param filePath
* excel文件地址
* @throws Exception
* 异常往上抛出
*/
public void exportExcel(String tName, ArrayList<String> tHeader, ArrayList<ArrayList<Object>> tValue,
Map<String, Short> tHeaderStyle, Map<String, Short> tValueStyle, String filePath) throws Exception { try {
// 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // 单个表单赋值和样式
this.setSheet(tName, tHeader, tValue, tHeaderStyle, tValueStyle);
// 导出excel文件
this.export(workbook, filePath); } catch (Exception e) {
e.printStackTrace(); }
} /**
* @功能描述 设置excel文档(单表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @throws Exception
* 异常往上抛出
*/
public InputStream exportExcelToStream(String tName, ArrayList<String> tHeader,
ArrayList<ArrayList<Object>> tValue, Map<String, Short> tHeaderStyle, Map<String, Short> tValueStyle)
throws Exception { // 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // 单个表单赋值和样式
this.setSheet(tName, tHeader, tValue, tHeaderStyle, tValueStyle); // 导出excel文件
return export(workbook); } /**
* @功能描述 设置excel文档(多表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @param filePath
* excel文件地址
* @throws Exception
* 异常往上抛出
*/
public void exportExcel(ArrayList<String> tName, ArrayList<ArrayList<String>> tHeader,
ArrayList<ArrayList<ArrayList<Object>>> tValue, ArrayList<Map<String, Short>> tHeaderStyle,
ArrayList<Map<String, Short>> tValueStyle, String filePath) throws Exception { try {
// 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // for循环完成文档各个表单的赋值和样式
for (int i = 0; i < tName.size(); i++) {
this.setSheet(tName.get(i), tHeader.get(i), tValue.get(i), tHeaderStyle.get(i), tValueStyle.get(i)); // 单个表单赋值和样式
} // 导出excel文件
this.export(workbook, filePath); } catch (Exception e) {
}
} /**
* @功能描述 设置excel文档(多表单)
* @创建人
* @创建时间 2011-5-27 下午02:25:58
* @param tName
* excel表名集
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @throws Exception
* 异常往上抛出
*/
public InputStream exportExcelToStream(ArrayList<String> tName, ArrayList<ArrayList<String>> tHeader,
ArrayList<ArrayList<ArrayList<Object>>> tValue, ArrayList<Map<String, Short>> tHeaderStyle,
ArrayList<Map<String, Short>> tValueStyle) throws Exception { // 当excel文档不存在时创建
workbook = new HSSFWorkbook(); // for循环完成文档各个表单的赋值和样式
for (int i = 0; i < tName.size(); i++) {
this.setSheet(tName.get(i), tHeader.get(i), tValue.get(i), tHeaderStyle.get(i), tValueStyle.get(i)); // 单个表单赋值和样式
}
return export(workbook);
} /**
* @功能描述 设置excel表单
* @创建人
* @创建时间 2011-5-27 下午02:23:02
* @param tName
* excel表名
* @param tHeader
* excel表头数据集
* @param tValue
* excel表单数据集(除表头)
* @param tHeaderStyle
* excel表头单元格样式
* @param tValueStyle
* excel表单数据单元格样式(除表头)
* @throws Exception
* 异常往上抛出
*/
private void setSheet(String tName, ArrayList<String> tHeader, ArrayList<ArrayList<Object>> tValue,
Map<String, Short> tHeaderStyle, Map<String, Short> tValueStyle) throws Exception { try {
// 创建表单并设置其表名
sheet = workbook.createSheet(tName); // 创建表单行
HSSFRow tRow = sheet.createRow(0); // 赋值和样式(此时,为表头行)
tRow = this.setTRow(tRow, tHeader, tHeaderStyle); // for循环完成表单数据的赋值和样式(除表头)
for (int i = 0; i < tValue.size(); i++) {
tRow = sheet.createRow(i + 1); // 获取表单行 tRow = this.setTRow(tRow, tValue.get(i), tValueStyle); // 设置当前行的数据和样式
}
} catch (Exception e) {
e.printStackTrace();
}
} /**
* @功能描述 设置excel表单行数据
* @创建人
* @创建时间 2011-5-27 下午02:22:30
* @param row
* excel表单行
* @param tRow
* excel表单行数据
* @param tHeaderStyle
* excel表头样式
* @return 设置后的的表单行
* @throws Exception
* 异常往外抛出
*/
@SuppressWarnings("unchecked")
private HSSFRow setTRow(HSSFRow row, ArrayList tRow, Map<String, Short> tHeaderStyle) throws Exception { try {
// 获取单元格样式
HSSFCellStyle cellStyle = this.setCellStyle(tHeaderStyle);
// 声明单元格
HSSFCell cell = null; // for循环完成该表单某行各个列赋值和样式
for (int i = 0; i < tRow.size(); i++) {
cell = row.createCell(i); // 获取每列单元格
cell.setCellStyle(cellStyle); // 设置样式 sheet.autoSizeColumn((short) i); // 设置单元格自适应
Object obj = tRow.get(i); // 获取当前列的值
// 判断对象所属类型, 并强转
if (obj instanceof Integer) // 当数字时
cell.setCellValue((Integer) obj);
if (obj instanceof String) // 当为字符串时
cell.setCellValue((String) obj);
if (obj instanceof Boolean) // 当为布尔时
cell.setCellValue((Boolean) obj);
if (obj instanceof Date) // 当为时间时
cell.setCellValue((Date) obj);
if (obj instanceof Calendar) // 当为时间时
cell.setCellValue((Calendar) obj);
if (obj instanceof Double) // 当为小数时
cell.setCellValue((Double) obj);
}
} catch (Exception e) {
e.printStackTrace();
}
return row; // 返回
} /**
* @功能描述 设置单元格样式
* @创建人
* @创建时间 2011-5-27 下午02:21:40
* @param fontStyle
* 样式Map集合
* @return 设置后单元格样式
* @throws Exception
* 异常往外抛出
*/
private HSSFCellStyle setCellStyle(Map<String, Short> fontStyle) throws Exception { // 声明单元格样式
HSSFCellStyle cellStyle = null;
try {
// 创建字体
HSSFFont font = workbook.createFont();
// 设置字体样式
// 设置字体颜色(红色为:HSSFFont.COLOR_RED 这里表示short类型 10)
font.setColor(fontStyle.get("color"));
// 设置字体形体(宽体为:HSSFFont.BOLDWEIGHT_BOLD 700) -- 粗体
font.setBoldweight(fontStyle.get("weight")); // 创建单元格样式
cellStyle = workbook.createCellStyle();
// 添加字体样式
cellStyle.setFont(font); } catch (Exception e) {
e.printStackTrace();
}
return cellStyle; // 返回
} /**
* @功能描述 导出Excel
* @创建人
* @创建时间 2011-5-27 下午02:57:37
* @param workbook
* excel文档
* @param filePath
* xls文件地址
* @throws Exception
* 异常往外抛出
*/
private void export(HSSFWorkbook workbook, String filePath) throws Exception { try {
// 根据指定xls文件创建文件字符流
fileOutput = new FileOutputStream(filePath);
// 将文档写入指定文件
workbook.write(fileOutput); } catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
// 关闭流, 释放资源
fileOutput.close();
} catch (IOException e) {
e.printStackTrace();
;
}
}
} /**
* @功能描述 获取流
* @创建人
* @创建时间 2011-5-27 下午02:57:37
* @param workbook
* excel文档
* @throws Exception
* 异常往外抛出
*/
private InputStream export(HSSFWorkbook workbook) throws IOException { ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
try {
workbook.write(baos);
} catch (IOException e) {
e.printStackTrace();
}
byte[] ba = baos.toByteArray();
ByteArrayInputStream bais = new ByteArrayInputStream(ba);
return bais;
} finally {
// 关闭流, 释放资源
baos.close();
}
}
}

java 通过Apache poi导出excel代码demo实例的更多相关文章

  1. 使用Apache POI导出Excel小结--导出XLS格式文档

    使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI ...

  2. java中使用poi导出excel表格数据并且可以手动修改导出路径

    在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下

  3. apache POI 导出excel相关方法

    apache POI 操作excel无比强大.同时有操作word和ppt的接口. 下面讲解poi中常用方法. 1,设置列宽 HSSFSheet sheet = wb.getSheetAt(0); sh ...

  4. Java使用Apache POI进行Excel导入和导出

    Manve依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml --> <dependency> ...

  5. Java中用Apache POI生成excel和word文档

    概述: 近期在做项目的过程中遇到了excel的数据导出和word的图文表报告的导出功能.最后决定用Apache POI来完毕该项功能.本文就项目实现过程中的一些思路与代码与大家共享.同一时候.也作为自 ...

  6. Apache POI导出excel表格

    项目中我们经常用到导出功能,将数据导出以便于审查和统计等.本文主要使用Apache POI实现导出数据. POI中文文档 简介 ApachePOI是Apache软件基金会的开放源码函式库,POI提供A ...

  7. apache poi导出excel报表

    Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能.POI为"P ...

  8. java使用Apache POI操作excel文件

    官方介绍 HSSF is the POI Project's pure Java implementation of the Excel '97(-2007) file format. XSSF is ...

  9. 使用org.apache.poi导出Excel表格

    public HSSFWorkbook MakeExcel(List<TransactionLogVO> logList) { // SimpleDateFormat sdf = new ...

随机推荐

  1. KVC与KVO的不同

    vc 就是一种通过字符串去间接操作对象属性的机制,  访问一个对象属性我们可以 person.age  也可以通过kvc的方式   [person valueForKey:@"age&quo ...

  2. C#正则表达式开源工具

    先交代一下背景,最近工作中经常用到正则表达式,而正则表达式这个东西我个人觉得很鸡肋,不用吧,有些功能实现起来会很麻烦.用吧,又不是说工作中经常用到,只是有时候有些需要求用到而已.但是正则表达式只要一段 ...

  3. nginx+php简单配置环境

    首先我的需求是: 1. 需要有PHP的服务.web目录存放在各处. 2. 需要有多个端口. 步骤: 1. 安装nginx php,我的系统是mac 所以安装使用brew, 一键完成... 2. 开启p ...

  4. Word中插入带公式的Visio注意事项

    有时候发现,有的公式显示的间距特别大,那么在word中右键打开Visio,改好后,保存了,word里还是那样. 因为你需要吧改好的另存为原来的visio文件(名字.位置要一样,就是说替换原来的文件), ...

  5. mysql-connector-java-6日期存储时差的问题解决方法

    在my.ini文件中的[mysqld]下面加入 default-time_zone = '+8:00' 重启mysql 修改driver连接路径 这样日期保存到mysql就是正确的了,但是mysql- ...

  6. 使用ab.exe监测100个并发/100次请求情况下同步/异步访问数据库的性能差异

    ab.exe介绍 ab.exe是apache server的一个组件,用于监测并发请求,并显示监测数据 具体使用及下载地址请参考:http://www.cnblogs.com/gossip/p/439 ...

  7. druid 配置监控界面和开启spring支持

    1.配置监控页面 <!-- JNDI方式配置数据源 --> <!-- <bean id="dataSource" class="org.sprin ...

  8. NDK官方开发指南翻译之 NDK_GDB

    这几天看JNI,没有基础,那真是难受--把看到的相关资料记录一下,也分享给刚開始学习的人. 'ndk-gdb' Overview 重要:假设你要调试线程相关的程序.请阅读以下的'Thread Supp ...

  9. Unity Dynamic Batching

    public class test1 : MonoBehaviour { public GameObject prefab; void Start() { ; i < ; i++) { Game ...

  10. lodash 工具库

    lodash是一套工具库,内部封装了很多字符串.数组.对象等常见数据类型的处理函数. 1.lodash的引用 import _ from 'lodash' 用一个数组遍历来说明为什么要使用lodash ...