首先进行maven的配置:导入相关依赖

  1. 1 <dependency>
  2. 2 <groupId>org.apache.poi</groupId>
  3. 3 <artifactId>poi</artifactId>
  4. 4 <version>3.14</version>
  5. 5 </dependency>
  6. 6 <dependency>
  7. 7 <groupId>org.apache.poi</groupId>
  8. 8 <artifactId>poi-ooxml</artifactId>
  9. 9 <version>3.14</version>
  10. 10 </dependency>
  11. 11 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
  12. 12 <dependency>
  13. 13 <groupId>org.apache.poi</groupId>
  14. 14 <artifactId>poi-ooxml-schemas</artifactId>
  15. 15 <version>3.14</version>
  16. 16 </dependency>
  17. 17 <!-- https://mvnrepository.com/artifact/org.apache.xmlbeans/xmlbeans -->
  18. 18 <dependency>
  19. 19 <groupId>org.apache.xmlbeans</groupId>
  20. 20 <artifactId>xmlbeans</artifactId>
  21. 21 <version>3.0.0</version>
  22. 22 </dependency>
  23. 23 <dependency>
  24. 24 <groupId>junit</groupId>
  25. 25 <artifactId>junit</artifactId>
  26. 26 <version>4.12</version>
  27. 27 <scope>test</scope>
  28. 28 </dependency>
  29. 29 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  30. 30 <dependency>
  31. 31 <groupId>mysql</groupId>
  32. 32 <artifactId>mysql-connector-java</artifactId>
  33. 33 <version>5.1.47</version>
  34. 34 </dependency>
  35. 35
  36. 36 <!-- https://mvnrepository.com/artifact/net.sourceforge.javacsv/javacsv -->
  37. 37 <dependency>
  38. 38 <groupId>net.sourceforge.javacsv</groupId>
  39. 39 <artifactId>javacsv</artifactId>
  40. 40 <version>2.0</version>
  41. 41 </dependency>
  42. 42 <dependency>
  43. 43 <groupId>org.jetbrains</groupId>
  44. 44 <artifactId>annotations-java5</artifactId>
  45. 45 <version>RELEASE</version>
  46. 46 <scope>compile</scope>
  47. 47 </dependency>

完整源码:

  1. 1 public interface ReadFile {
  2. 2 //返回值是不包含表头的所有数据
  3. 3 public ArrayList<ArrayList<String>> readExcelFile(String path) throws IOException, SQLException;
  4. 4 //返回值是有错误的数据
  5. 5 public ArrayList<ArrayList<String>> readCsvFile(String path ,String code) throws IOException, SQLException;
  6. 6 }
  1. 1 import com.csvreader.CsvReader;
  2. 2 import com.reliable.dao.ReadFile;
  3. 3 import com.reliable.util.JDBCUtil;
  4. 4 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
  5. 5 import org.apache.poi.ss.usermodel.Cell;
  6. 6 import org.apache.poi.ss.usermodel.Row;
  7. 7 import org.apache.poi.ss.usermodel.Sheet;
  8. 8 import org.apache.poi.ss.usermodel.Workbook;
  9. 9 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  10. 10 import java.io.File;
  11. 11 import java.io.FileInputStream;
  12. 12 import java.io.IOException;
  13. 13 import java.nio.charset.Charset;
  14. 14 import java.sql.Connection;
  15. 15 import java.sql.PreparedStatement;
  16. 16 import java.sql.SQLException;
  17. 17 import java.util.ArrayList;
  18. 18
  19. 19 public class ReadFileImpl implements ReadFile {
  20. 20 //相关变量
  21. 21 private int MAX_CELL_NUM; //excel文件的最大单元格数
  22. 22 private PreparedStatement preparedStatement=null;
  23. 23 private Connection conn =null;
  24. 24 //--------------------------------------------------
  25. 25 public ArrayList<ArrayList<String>> readExcelFile(String path) throws IOException, SQLException {
  26. 26 String DROP_TABLE_1=""; //删除源数据表sql语句
  27. 27 String DROP_TABLE_2=""; //删除备份表sql语句
  28. 28 String CREATE_TABLE_1_SQL=""; //创建源数据表语句
  29. 29 String CREATE_TABLE_2_SQL=""; //创建备份表语句
  30. 30 String tableName_1=""; //源数据表名
  31. 31 String tableName_2=""; //备份表名
  32. 32 ArrayList<String> tableField = new ArrayList<String>(); //数据表字段名
  33. 33 ArrayList<ArrayList<String>> tableValue = new ArrayList<ArrayList<String>>(); //数据表的值
  34. 34 System.out.println(path);
  35. 35 File excel=new File(path);
  36. 36 String[] split = excel.getName().split("\\."); //.是特殊字符,需要转义!
  37. 37 System.out.println(split[0]+" "+split[1]);
  38. 38 tableName_1=split[0]; //给源数据表名赋值
  39. 39 tableName_2=split[0]+split[1]; //给备份表名赋值
  40. 40 System.out.println("源数据表名:" + tableName_1);
  41. 41 System.out.println("备份表名: " + tableName_2);
  42. 42 Workbook wb; //新建文件
  43. 43 FileInputStream fileStream = new FileInputStream(excel); //文件流对象
  44. 44 //根据文件后缀(xls/xlsx)进行判断
  45. 45 if ( "xls".equals(split[1])){
  46. 46 //xls和csv文件
  47. 47 wb = new HSSFWorkbook(fileStream);
  48. 48 }else{
  49. 49 //xlsx文件
  50. 50 wb = new XSSFWorkbook(new FileInputStream(excel));
  51. 51 }
  52. 52 //开始解析
  53. 53 Sheet sheet = wb.getSheetAt(0); //读取sheet 0
  54. 54 MAX_CELL_NUM=getMaxCellNumExcel(sheet);
  55. 55 int firstRowIndex = sheet.getFirstRowNum(); //获取第一行索引
  56. 56 int lastRowIndex = sheet.getLastRowNum(); //获取最后一行索引
  57. 57 for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) { //遍历行
  58. 58 Row row = sheet.getRow(rIndex); //获取行索引
  59. 59 ArrayList<String> tempTableValue = new ArrayList<String>(); //暂存一行的值,之后放到tableValue
  60. 60 if (row != null) {
  61. 61 int lastCellIndex = MAX_CELL_NUM; //行的最后一个单元格
  62. 62 for (int cIndex = 0; cIndex < lastCellIndex; cIndex++) { //遍历列(单元格)
  63. 63 Cell cell = row.getCell(cIndex,Row.RETURN_BLANK_AS_NULL);
  64. 64 cell.setCellType(Cell.CELL_TYPE_STRING);
  65. 65 if ((cell == null)) {
  66. 66 tempTableValue.add("NULL");
  67. 67 }else {
  68. 68 tempTableValue.add(cell.getStringCellValue());
  69. 69 }
  70. 70 }
  71. 71 System.out.println("第"+ String.valueOf(rIndex+1)+"行的值:"+ " "+tempTableValue);
  72. 72 tableValue.add(tempTableValue);
  73. 73 }
  74. 74 // System.out.println(tempTableValue);
  75. 75 System.out.println("-----------------------------");
  76. 76 }
  77. 77 System.out.println(tableValue); //输出表格的所有值
  78. 78 tableField= tableValue.get(0); //把表头信息放到tableFiled
  79. 79 tableValue.remove(0); //之后把所有值的这个list的第一行数据去掉
  80. 80 System.out.println("数据表字段: " + tableField);
  81. 81 wb.close();
  82. 82
  83. 83 //---------------------------------------------------------------------
  84. 84 //下面开始插入数据库:
  85. 85 //获取数据库连接
  86. 86 conn = JDBCUtil.getConnection();
  87. 87 if(conn!=null){
  88. 88 System.out.println("数据库连接成功!");
  89. 89 }else {
  90. 90 System.out.println("数据库连接失败!");
  91. 91 }
  92. 92 //根据表头和表名写SQL建表语句----------源数据表
  93. 93 DROP_TABLE_1="DROP TABLE IF EXISTS "+tableName_1 +";";
  94. 94 DROP_TABLE_2="DROP TABLE IF EXISTS "+tableName_2 +";";
  95. 95 CREATE_TABLE_1_SQL="CREATE TABLE " +"`" +tableName_1+"`"+ "(";
  96. 96 CREATE_TABLE_1_SQL = getExcelSQL(CREATE_TABLE_1_SQL,tableField);
  97. 97 // System.out.println(CREATE_TABLE_1_SQL);
  98. 98 //备份表语句
  99. 99 CREATE_TABLE_2_SQL= "CREATE TABLE " +"`" +tableName_2+"`"+ "(";
  100. 100 CREATE_TABLE_2_SQL = getExcelSQL(CREATE_TABLE_2_SQL,tableField);
  101. 101
  102. 102 System.out.println("源数据表的建表语句: "+"\n" + CREATE_TABLE_1_SQL);
  103. 103 System.out.println("备份表的建表语句: " +"\n" + CREATE_TABLE_2_SQL);
  104. 104 preparedStatement = conn.prepareStatement(DROP_TABLE_1);
  105. 105 preparedStatement.executeUpdate();
  106. 106 preparedStatement= conn.prepareStatement(CREATE_TABLE_1_SQL);
  107. 107 preparedStatement.executeUpdate();
  108. 108 preparedStatement = conn.prepareStatement(DROP_TABLE_2);
  109. 109 preparedStatement.executeUpdate();
  110. 110 preparedStatement= conn.prepareStatement(CREATE_TABLE_2_SQL);
  111. 111 preparedStatement.executeUpdate();
  112. 112 conn.setAutoCommit(false);
  113. 113 conn.commit();
  114. 114 JDBCUtil.release(conn,preparedStatement);
  115. 115 insertExcelTable(tableValue,tableName_1);
  116. 116 insertExcelTable(tableValue,tableName_2);
  117. 117 return tableValue;
  118. 118 }
  119. 119 //读CSV文件
  120. 120 public ArrayList<ArrayList<String>> readCsvFile(String path,String code) throws SQLException {
  121. 121 ArrayList<ArrayList<String>> WrongData=new ArrayList<ArrayList<String>>();
  122. 122 System.out.println(path);
  123. 123 String DROP_TABLE_1=""; //删除源数据表sql语句
  124. 124 String DROP_TABLE_2=""; //删除备份表sql语句
  125. 125 String CREATE_TABLE_1_SQL=""; //创建源数据表语句
  126. 126 String CREATE_TABLE_2_SQL=""; //创建备份表语句
  127. 127 ArrayList<String> tableField = new ArrayList<String>(); //数据表字段名
  128. 128 ArrayList<ArrayList<String>> tableValue = new ArrayList<ArrayList<String>>(); //数据表的值
  129. 129 String tableName_1=""; //源数据表名
  130. 130 String tableName_2=""; //备份表名
  131. 131 try {
  132. 132 // 创建CSV读对象
  133. 133 CsvReader csvReader = new CsvReader(path,',', Charset.forName(code));
  134. 134 String[] split1 = path.split("\\."); //.是特殊字符,需要转义!
  135. 135 // System.out.println(split1[0]+" "+split1[1]);
  136. 136 String[] split2 = split1[0].split("\\\\");
  137. 137 // System.out.println(split2[split2.length-1]);
  138. 138 tableName_1=split2[split2.length-1];
  139. 139 tableName_2=split2[split2.length-1]+split1[1];
  140. 140 System.out.println("输出源表名:"+tableName_1);
  141. 141 System.out.println("输出备份表名:"+tableName_2);
  142. 142 // 跳过表头
  143. 143 // csvReader.readHeaders();
  144. 144 boolean flag=true;
  145. 145 while (csvReader.readRecord()){
  146. 146 // 读一整行
  147. 147 String resString="";
  148. 148 resString = csvReader.getRawRecord();
  149. 149 resString=resString.replace(",",", ");
  150. 150 System.out.println(resString);
  151. 151 if(flag==true){
  152. 152 tableField.add(resString);
  153. 153 flag=false;
  154. 154 }
  155. 155 // System.out.println(resString);
  156. 156 String[] resString_list=resString.split(",");
  157. 157 String[] tableField_list=tableField.get(0).split(",");
  158. 158 ArrayList<String> tempTableValue = new ArrayList<String>(); //暂存一行的值,之后放到tableValue
  159. 159 if(resString_list.length != tableField_list.length){
  160. 160 tempTableValue.add(resString);
  161. 161 WrongData.add(tempTableValue);
  162. 162 }else {
  163. 163 tempTableValue.add(resString);
  164. 164 tableValue.add(tempTableValue);
  165. 165 }
  166. 166 }
  167. 167 } catch (IOException e) {
  168. 168 e.printStackTrace();
  169. 169 }
  170. 170 System.out.println(tableValue);
  171. 171 tableValue.remove(0); //之后把所有值的这个list的第一行数据去掉
  172. 172 System.out.println("数据表字段: " + tableField);
  173. 173 //name1,sex1,age1
  174. 174 // System.out.println(tableValue.get(0).get(0));
  175. 175 DROP_TABLE_1="DROP TABLE IF EXISTS "+tableName_1 +";";
  176. 176 DROP_TABLE_2="DROP TABLE IF EXISTS "+tableName_2 +";";
  177. 177 CREATE_TABLE_1_SQL="CREATE TABLE "+ tableName_1 +"(" ;
  178. 178 CREATE_TABLE_2_SQL="CREATE TABLE "+ tableName_2 +"(" ;
  179. 179 //生成源表建表语句
  180. 180 CREATE_TABLE_1_SQL=getCsvSQL(CREATE_TABLE_1_SQL,tableField);
  181. 181 //生成备份表建表语句
  182. 182 CREATE_TABLE_2_SQL=getCsvSQL(CREATE_TABLE_2_SQL,tableField);
  183. 183 System.out.println(CREATE_TABLE_1_SQL);
  184. 184 System.out.println(CREATE_TABLE_2_SQL);
  185. 185 conn=JDBCUtil.getConnection();
  186. 186 preparedStatement = conn.prepareStatement(DROP_TABLE_1);
  187. 187 preparedStatement.executeUpdate();
  188. 188 preparedStatement= conn.prepareStatement(CREATE_TABLE_1_SQL);
  189. 189 preparedStatement.executeUpdate();
  190. 190 preparedStatement = conn.prepareStatement(DROP_TABLE_2);
  191. 191 preparedStatement.executeUpdate();
  192. 192 preparedStatement= conn.prepareStatement(CREATE_TABLE_2_SQL);
  193. 193 preparedStatement.executeUpdate();
  194. 194 conn.setAutoCommit(false);
  195. 195 conn.commit();
  196. 196 JDBCUtil.release(conn,preparedStatement);
  197. 197 insertCsvTable(tableValue,tableName_1);
  198. 198 insertCsvTable(tableValue,tableName_2);
  199. 199 return WrongData;
  200. 200 }
  201. 201 //--------------------------------------------------
  202. 202 //获取excel文件建表SQL语句的方法
  203. 203 public String getExcelSQL(String SQL,ArrayList<String> tableField) {
  204. 204 for (int i =0 ;i<tableField.size();i++){
  205. 205 String item= tableField.get(i);
  206. 206 if(i!=tableField.size()-1){
  207. 207 SQL=SQL + "`" + item + "`" +" text COLLATE utf8_general_ci,"+"\n";
  208. 208 }else{
  209. 209 SQL=SQL + "`" + item + "`" +" text COLLATE utf8_general_ci "+"\n";
  210. 210 }
  211. 211 }
  212. 212 return SQL+") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;";
  213. 213 }
  214. 214 //获取CSV文件的建表sql语句
  215. 215 public String getCsvSQL(String SQL,ArrayList<String> tableField){
  216. 216 // System.out.println(tableField);
  217. 217 String [] tempField=tableField.get(0).split("\\,");
  218. 218 for (int i =0 ;i<tempField.length;i++)
  219. 219 {
  220. 220 String item= tempField[i];
  221. 221 if(i!=tempField.length-1){
  222. 222 SQL=SQL + "`" + item + "`" +" text COLLATE utf8_general_ci,"+"\n";
  223. 223 }else{
  224. 224 SQL=SQL + "`" + item + "`" +" text COLLATE utf8_general_ci "+"\n";
  225. 225 }
  226. 226 }
  227. 227 return SQL+") ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;";
  228. 228 }
  229. 229 //--------------------------------------------------
  230. 230 //插入数据库 xls和xlsx文件
  231. 231 public void insertExcelTable(ArrayList<ArrayList<String>> tableValue, String tableName){
  232. 232 conn=JDBCUtil.getConnection();
  233. 233 String INSERT_TABLE_SQL="INSERT INTO "+tableName+" VALUES(";
  234. 234 for (ArrayList<String> item1 : tableValue){
  235. 235 String tempString=new String();
  236. 236 for (int i =0 ;i<item1.size();i++){
  237. 237 if(i!=item1.size()-1){
  238. 238 tempString=tempString+"\""+item1.get(i)+"\""+",";
  239. 239 }
  240. 240 else{
  241. 241 tempString=tempString+"\""+item1.get(i)+"\"";
  242. 242 }
  243. 243 }
  244. 244 INSERT_TABLE_SQL=INSERT_TABLE_SQL+tempString+");";
  245. 245 System.out.println(INSERT_TABLE_SQL);
  246. 246 try{
  247. 247 preparedStatement= conn.prepareStatement(INSERT_TABLE_SQL);
  248. 248 preparedStatement.executeUpdate();
  249. 249 conn.setAutoCommit(false);
  250. 250 conn.commit();
  251. 251 System.out.println("\n");
  252. 252 }catch(SQLException e){
  253. 253 e.printStackTrace();
  254. 254 }
  255. 255 INSERT_TABLE_SQL="INSERT INTO "+tableName+" VALUES(";
  256. 256 }
  257. 257 }
  258. 258 public void insertCsvTable(ArrayList<ArrayList<String>> tableValue , String tableName){
  259. 259 conn=JDBCUtil.getConnection();
  260. 260 System.out.println("数据表长度: " + tableValue.size());
  261. 261 for (int i=0 ;i<tableValue.size();i++){
  262. 262 String INSERT_TABLE_SQL="INSERT INTO "+tableName+" VALUES( ";
  263. 263 String tempString=new String();
  264. 264 String[] tempValue={};
  265. 265 tempValue=tableValue.get(i).get(0).split("\\,");
  266. 266 // System.out.println(tempValue[tempValue.length-1]);
  267. 267 for (int k=0 ; k<tempValue.length; k++)
  268. 268 {
  269. 269 if(k!=tempValue.length-1){
  270. 270 tempString=tempString +"\"" +tempValue[k]+"\"" +",";
  271. 271 }
  272. 272 else{
  273. 273 tempString=tempString+"\"" +tempValue[k]+"\"";
  274. 274 }
  275. 275 }
  276. 276 INSERT_TABLE_SQL=INSERT_TABLE_SQL+tempString+");";
  277. 277 System.out.println(INSERT_TABLE_SQL);
  278. 278 try{
  279. 279 preparedStatement= conn.prepareStatement(INSERT_TABLE_SQL);
  280. 280 preparedStatement.executeUpdate();
  281. 281 conn.setAutoCommit(false);
  282. 282 conn.commit();
  283. 283 }catch(SQLException e){
  284. 284 e.printStackTrace();
  285. 285 }finally{
  286. 286 //关闭数据库连接
  287. 287 }
  288. 288 }
  289. 289 }
  290. 290 //--------------------------------------------------
  291. 291 //获取excel表一行最大的单元格数目的方法
  292. 292 public int getMaxCellNumExcel(Sheet sheet){
  293. 293 int resNum=0;
  294. 294 int firstRowIndex = sheet.getFirstRowNum(); //获取第一行索引
  295. 295 int lastRowIndex = sheet.getLastRowNum(); //获取最后一行索引
  296. 296 for(int rIndex = firstRowIndex; rIndex <= lastRowIndex; rIndex++) { //遍历行
  297. 297 Row row = sheet.getRow(rIndex); //获取行索引
  298. 298
  299. 299 if(row.getLastCellNum()>resNum){
  300. 300 resNum=row.getLastCellNum();
  301. 301 }
  302. 302 }
  303. 303 return resNum;
  304. 304 }
  305. 305 //获取csv表一行最大的单元格数目的方法
  306. 306 public int getMaxCellNumCsv(ArrayList<String> tableField){
  307. 307 int resNum=0;
  308. 308 resNum=tableField.size();
  309. 309 return resNum;
  310. 310 }
  311. 311 }

使用POI、JavaCsv工具读取excel文件(*.xls , *.xlsx , *.csv)存入MySQL数据库的更多相关文章

  1. java读取excel文件(.xls,xlsx,csv)

    前提,maven工程通过poi读写excel文件,需要在pom.xml中配置依赖关系: 在<dependencies>中添加如下代码 <dependency> <grou ...

  2. phpexcel读取excel的xls xlsx csv格式

    我之前写过一篇PHP读取csv文件的内容 上代码index.php <?php /** * * @author XC * */ class Excel { public $currentShee ...

  3. (转)如何将 Excel 文件导入到 Navicat for MySQL 数据库

    场景:工作中需要统计一段时间的加班时长,人工统计太过麻烦,就想到使用程序实现来统计 1 如何将 Excel 文件导入到 Navicat for MySQL 数据库 Navicat for MySQL  ...

  4. 使用Apache下poi创建和读取excel文件

    一:使用apache下poi创建excel文档 @Test /* * 使用Apache poi创建excel文件 */ public void testCreateExcel() { // 1:创建一 ...

  5. java使用poi.3.10读取excel 2003 (xls格式)

    最近在做一个Excel导入数据库的案例,整理文档出来供大家参考. 1.下载 最新的 poi http://poi.apache.org/download.html    2.解压 把相关jar包引进项 ...

  6. Java实现POI读取Excel文件,兼容后缀名xls和xlsx

    1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...

  7. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  8. 项目一:第四天 1、快递员的条件分页查询-noSession,条件查询 2、快递员删除(逻辑删除) 3、基于Apache POI实现批量导入区域数据 a)Jquery OCUpload上传文件插件使用 b)Apache POI读取excel文件数据

    1. 快递员的条件分页查询-noSession,条件查询 2. 快递员删除(逻辑删除) 3. 基于Apache POI实现批量导入区域数据 a) Jquery OCUpload上传文件插件使用 b) ...

  9. 使用jxl,poi读取excel文件

    作用:在java后台添加一个方法,读取导入的excel内容,根据需要返回相应的sql语句,以完成对临时表的插入操作. 使用jxl读取excel文件 package com.sixthf.bi.sapp ...

  10. JAVA使用POI读取EXCEL文件的简单model

    一.JAVA使用POI读取EXCEL文件的简单model 1.所需要的jar commons-codec-1.10.jarcommons-logging-1.2.jarjunit-4.12.jarlo ...

随机推荐

  1. 细聊ASP.NET Core WebAPI格式化程序

    前言 我们在使用ASP.NET Core WebApi时它支持使用指定的输入和输出格式来交换数据.输入数据靠模型绑定的机制处理,输出数据则需要用格式化的方式进行处理.ASP.NET Core框架已经内 ...

  2. PrettyTable模块

    # 用来生成美观的ASCII格式的表格 pip install prettytable # 导入 from prettytable import PrettyTable # 使用 tb = pt.Pr ...

  3. 51从零开始用Rust编写nginx,江湖救急,TLS证书快过期了

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...

  4. 【Azure 环境】使用az login登录遇见OSError: [WinError -2146893813] : '' 错误

    问题描述 使用 az login指令登录,遇见 OS Error: [WinError -2146893813] : '', 在指令中添加 --debug后,输出的错误消息为: urllib3.con ...

  5. C++ STL 容器-Vector类型

    C++ STL 容器-Vector类型 std::vector是C++标准库中的一个动态数组容器,它提供了随机访问迭代器,因此你可以像使用普通数组一样使用vector. vector容器可以动态地增长 ...

  6. C++函数模板总结:

    //C++提高编程 模板(泛型编程 STL)//模板不可以直接使用 它只是一个框架//模板的通用并不是万能的//语法//template<typename T>//函数模板两种方式//1. ...

  7. 推进行业生态发展完善,中国信通院第八批RPA评测工作正式启动

    随着人工智能.云计算.大数据等新兴数字技术的高速发展,数字劳动力应用实践步伐加快,以数字生产力.数字创造力为基础的数字经济占比逐年上升. 近年来,机器人流程自动化(Robotic Process Au ...

  8. Java开发者的Python快速进修指南:掌握T检验

    前言 T检验是一种用于比较两个独立样本均值差异的统计方法.它通过计算T值和P值来判断样本之间是否存在显著性差异.通常情况下,我们会有两组数据,例如一组实验组和一组对照组. T检验的原假设是两组样本的均 ...

  9. Java多线程转账

    Java多线程转账 关键词:多线程,Java 以前的一道面试题,要求是使用Java多线程,实现一个转账业务.不考虑数据库,不考虑其他第三方系统.只考虑当前Java程序内各个账户进行转账,保证转账金额正 ...

  10. MySql变量说明

    1 #变量 2 /* 3 系统变量: 4 全局变量 5 会话变量 6 7 自定义变量: 8 用户变量 9 局部变量 10 11 */ 12 #一.系统变量 13 /* 14 说明:变量由系统定义,不是 ...