当前位置: 首页 > news >正文

Excel文件解析---超大Excel文件读写

1.使用POI写入
当我们想在Excel文件中写入100w条数据时,使用XSSFWorkbook进行写入时会发现,只有将100w条数据全部加载到内存后才会用write()方法统一写入,效率很低,所以我们引入了SXXFWorkbook进行超大Excel文件读写。

通过设置 SXXFWorkbook 的构造参数,可以设置每次在内存中保持的行数,当达到这个值的时候,那么会把这些数据flush 到磁盘上,这样就不会出现内存不够的情况。

package com.ztt.Demo02;import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
import java.util.UUID;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;public class demo07 {public static void main(String[] args) {try (SXSSFWorkbook workbook = new SXSSFWorkbook(100);FileOutputStream fos = new FileOutputStream("D:\\test\\tt\\temp.xlsx")){Sheet sheet1 = workbook.createSheet();for (int i = 0; i <= 1000000; i++) {Row row = sheet1.createRow(i);Cell cell0 = row.createCell(0);cell0.setCellValue(UUID.randomUUID().toString());Cell cell1 = row.createCell(1);cell1.setCellValue( new Date());}workbook.write(fos );}catch (IOException e) {e.printStackTrace();}}
}

2.使用EasyExcel写入

        使用EasyExcel,我们首先要导入相关jar包

准备一个普通的Order类:

public class Order {private String orderId;private Double payment;public Order() {this.orderId=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+UUID.randomUUID().toString().substring(0,5);this.payment=Math.random()*1000;}public String getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}public Double getPayment() {return payment;}public void setPayment(Double payment) {this.payment = payment;}@Overridepublic String toString() {return "Order [orderId=" + orderId + ", payment=" + payment + "]";}
}

  我们发现,Order类中的成员变量名就是我们生成的Excel文件中的列头。那么如果我们想自定义列头时,我们可以用:@ExcelProperty("列头名") 

然后我们来通过EasyExcel来将100w条数据写入excel文件:

package com.ztt.demo01;import java.util.ArrayList;
import java.util.List;
import java.util.Map;import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;public class Test1 {public static void main(String[] args) {//将100w条订单数据写入Excel文件
//		EasyExcel.write("D:\\test\\poi\\alibaba\\0421-a.xlsx",Order.class)
//		.sheet("订单数据")
//		.doWrite(createOrderData());//读取Excel文件中的数据//参数1:文件的的路径//参数2:文件中每条数据对应的Class类型//参数3:如何解析EasyExcel.read("D:\\test\\poi\\alibaba\\0421-a.xlsx",Order.class,new AnalysisEventListener<Order>() {//读取列头@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("Excel文件的列头:"+headMap);}//处理每行数据@Overridepublic void invoke(Order order, AnalysisContext arg1) {System.out.println("读取到一条订单数据:"+order);}@Overridepublic void doAfterAllAnalysed(AnalysisContext arg0) {System.out.println("读取完毕");}}).sheet().doRead();}//生成100w条订单数据private static List<Order> createOrderData() {List<Order> orderList=new ArrayList<Order>();for(int i=0;i<1000;i++) {orderList.add(new Order());}return orderList;}
}

当我们想加入一列日期数据时:

public class Order {@ExcelProperty("订单编号")private String orderId;@ExcelProperty("支付金额")private Double payment;@ExcelProperty("创建时间")private LocalDateTime  creatTime;public Order() {this.orderId=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))+UUID.randomUUID().toString().substring(0,5);this.payment=Math.random()*1000;this.creatTime=LocalDateTime.now();}public String getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}public Double getPayment() {return payment;}public void setPayment(Double payment) {this.payment = payment;}public LocalDateTime getCreatTime() {return creatTime;}public void setCreatTime(LocalDateTime creatTime) {this.creatTime = creatTime;}@Overridepublic String toString() {return "Order [orderId=" + orderId + ", payment=" + payment+ ", creatTime=" + creatTime + "]";}
}

运行结果: 

通过阅读报错提示(Can not find 'Converter' support class LocalDateTime.) ,我们大概可以知道,是因为找不到一个支持LocalDateTime类的转换器,所以为了解决这个问题,我们可以自己写一个比较器类:

package com.ztt.demo01;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.CellData;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.property.ExcelContentProperty;public class LocalDateTimeConverter implements Converter<LocalDateTime>{//Excel文件中的类型@Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}//程序中的类型@Overridepublic Class supportJavaTypeKey() {return LocalDateTime.class;}//将LocalDateTime类型的数据转换成String类型的数据//并封装至一个Excel文件中的ellData@Overridepublic CellData convertToExcelData(LocalDateTime value, ExcelContentProperty arg1, GlobalConfiguration arg2)throws Exception {return new CellData<>(value.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss")));}//从ce1lData中获取一个String类型的致据//并转换成LocalDateTime类型@Overridepublic LocalDateTime convertToJavaData(CellData cellData ,ExcelContentProperty arg1, GlobalConfiguration arg2)throws Exception {return LocalDateTime.parse(cellData.getStringValue(),DateTimeFormatter.ofPattern( "yyyy年MM月dd日 HH:mm:ss"));}}

当我们写好这个比较器后,就需要给成员变量creatTime显示的设置好比较器:

package com.ztt.demo01;import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.UUID;import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.NumberFormat;public class Order {@ExcelProperty("订单编号")private String orderId;//订单编号@ExcelProperty("支付金额")@NumberFormat("¥#,###")private Double payment;//支付金额//设置LocalDateTime对应转换器@ExcelProperty(value="创建时间",converter=LocalDateTimeConverter.class)private LocalDateTime createionTime;//创建日期public Order() {this.orderId=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHss"))+UUID.randomUUID().toString().substring(0,5);this.payment=Math.random()*10000;this.createionTime=LocalDateTime.now();}public String getOrderId() {return orderId;}public void setOrderId(String orderId) {this.orderId = orderId;}public Double getPayment() {return payment;}public void setPayment(Double payment) {this.payment = payment;}public LocalDateTime getCreateionTime() {return createionTime;}public void setCreateionTime(LocalDateTime createionTime) {this.createionTime = createionTime;}@Overridepublic String toString() {return "Order [orderId=" + orderId + ", payment=" + payment + ", createionTime=" + createionTime + "]";}}

运行结果:

练习:检查Excel文件 

1.序号是否连续

2.检查性别是否为男或女

3.身份证号

        3.1 身份证号码格式(必须为18位)

        3.2 身份证号码不能重复

        3.3 身份证号码开头两位是否与籍贯符合

                北京 11 天津12 河北 13 山西14 内蒙古 15

                陕西61 甘肃62 青海 63

4.学历只能填写:大专、本科、硕士、其它

5.体重在40-120之间

package com.ztt.Demo02;import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;public class demo05 {public static void main(String[] args) {List<String> errorMsgList = validateDataExcel("D:\\test\\tt\\demo-data.xlsx");if (errorMsgList.size() == 0) {System.out.println("文件检查无误!");} else {// 显示所有错误信息for (String err : errorMsgList) {System.out.println(err);}}}public static List<String> validateDataExcel(String excelDataFilePath) {// 1.序号是否连续// 2.检查性别是否为男或女// 3.身份证号// 3.1 身份证号码格式(必须为18位)// 3.2 身份证号码不能重复// 3.3 身份证号码开头两位是否与籍贯符合// 北京 11 天津12 河北 13 山西14 内蒙古 15// 陕西61 甘肃62 青海 63// 4.学历只能填写:大专、本科、硕士、其它// 5.体重在40-120之间//创建用于保存错误提示信息的集合ArrayList<String> errorList=new ArrayList<String>();//创建用于检查身份证号码是否重复的set集合HashSet<String> idCardNoSet = new HashSet<String>();//创建用于检查身份证号码前2位与籍贯省份之间的映射关系的Map集合//北京11天津12河北13山西14内蒙古15//陕西61甘肃62青海63HashMap<String,String> provinceMap = new HashMap<String,String>() {//构造代码块{put("11","北京");put("12","天津");put( "13","河北");put("14","山西");put("15","内蒙古");put("61","陕西");put("62","甘肃");put("63","青海");}};//创建一个用于检查学历的List集合List<String> eduList = Arrays.asList("大专", "本科" , "硕士","其它");try(Workbook workbook=new XSSFWorkbook(excelDataFilePath)){Sheet sheet=workbook.getSheetAt(0);for(int i=1;i<sheet.getLastRowNum();i++) {Row row =sheet.getRow(i);//1.序号是否连续Cell cellId=row.getCell(0);int rowNum=row.getRowNum();int id=(int)cellId.getNumericCellValue();if(rowNum!=id) {errorList.add(String.format("%d行的编号不连续!", rowNum));}//2.检查性别是否为男或女String gender=row.getCell(2).getStringCellValue();if(!gender.equals("男") && !gender.equals("女")) {errorList.add(String.format("%d行的性别有误!", rowNum));}//3.身份证号String idCardNo = row.getCell(3).getStringCellValue();//3.1身份证号码格式(必须为18位)if(idCardNo.length() != 18) {errorList.add(String.format("%d行的身份证号码长度有误! ",rowNum));}//3.2身份证号码不能重复if(!idCardNoSet.add(idCardNo)) {errorList.add(String.format("%d行的身份证号码重复存在! ",rowNum));}//3.3身份证号码开头两位是否与籍贯符合//北京11天津12河北13山西14内蒙古15//陕西61甘肃62青海63String idCardNoHomeCode = idCardNo.substring(0,2);String homeValue = provinceMap.get(idCardNoHomeCode); //根据身份证号码前两位获取正确的籍贯省份名称String home = row.getCell(6).getStringCellValue();//获取表格中当前行的籍贯信息if(!homeValue.equals( home)) { errorList.add(String.format("%d行的身份证籍贯信息不一致! ",rowNum));}//4.学历只能填写:大专、本科、硕士、其它String eduValue=row.getCell(7).getStringCellValue();if(!eduList.contains(eduValue)) {errorList.add(String.format("%d行的学历信息不符合规范! ",rowNum));}}} catch (IOException e) {e.printStackTrace();}return errorList;}}

运行结果:

1行的学历信息不符合规范! 
3行的身份证籍贯信息不一致! 
4行的编号不连续!
5行的学历信息不符合规范! 
7行的身份证号码长度有误! 
9行的身份证号码长度有误! 
9行的学历信息不符合规范! 
10行的身份证籍贯信息不一致! 
11行的身份证号码长度有误! 
12行的编号不连续!
13行的身份证号码长度有误! 
14行的学历信息不符合规范! 
15行的学历信息不符合规范! 
16行的性别有误!
18行的编号不连续!
22行的身份证籍贯信息不一致! 
24行的身份证号码重复存在! 
25行的性别有误!
33行的身份证号码重复存在! 
36行的身份证号码长度有误! 
39行的身份证籍贯信息不一致! 
41行的身份证籍贯信息不一致! 
43行的身份证籍贯信息不一致! 
44行的身份证籍贯信息不一致! 
46行的身份证籍贯信息不一致! 


 

相关文章:

Excel文件解析---超大Excel文件读写

1.使用POI写入 当我们想在Excel文件中写入100w条数据时&#xff0c;使用XSSFWorkbook进行写入时会发现&#xff0c;只有将100w条数据全部加载到内存后才会用write()方法统一写入&#xff0c;效率很低&#xff0c;所以我们引入了SXXFWorkbook进行超大Excel文件读写。 通过设置 …...

TypeScript基础:类型系统介绍

TypeScript基础&#xff1a;类型系统介绍 引言 TypeScript&#xff0c;作为JavaScript的一个超集&#xff0c;引入了类型系统&#xff0c;这为开发大型应用程序带来了诸多好处。本文将介绍TypeScript类型系统的基础知识&#xff0c;帮助初学者理解其概念和用法。 基础知识 …...

【Unity】Unity项目转抖音小游戏(一) 项目转换

UnityWEBGL转抖音小游戏流程 业务需求&#xff0c;开始接触一下抖音小游戏相关的内容&#xff0c;开发过程中记录一下流程。 相关参考&#xff1a; 抖音文档&#xff1a;https://developer.open-douyin.com/docs/resource/zh-CN/mini-game/develop/guide/game-engine/rd-to-SC…...

element-ui 中修改loading加载样式

element-ui 中的 loading 加载功能&#xff0c;默认是全屏加载效果 设置局部&#xff0c;需要自定义样式或者修改样式&#xff0c;方法如下&#xff1a; import { Loading } from element-uiVue.prototype.$baseLoading (text) > {let loadingloading Loading.service({…...

QT登录界面,(页面的切换)

以登陆界面为例&#xff0c;&#xff08;QDialog&#xff09; 1.主界面先构造login 的对话框类 int main(int argc, char *argv[]) {QApplication a(argc, argv);//先显示Login的界面Study_Login_Dialog login;............ }2.Login的类&#xff0c;可以用自定义的信号&#…...

计算机毕业设计 | vue+springboot汽车销售管理系统(附源码)

1&#xff0c;项目介绍 本项目基于spring boot以及Vue开发&#xff0c;前端实现基于PanJiaChen所提供的开源后台项目vue-element-admin改造。 针对汽车销售提供客户信息、车辆信息、订单信息、销售人员管理、财务报表等功能&#xff0c;提供经理和销售两种角色进行管理。 2&…...

一款开源的原神工具箱,专为现代化 Windows 平台设计,旨在改善桌面端玩家的游戏体验

Snap.Hutao 胡桃工具箱是一款以 MIT 协议开源的原神工具箱&#xff0c;专为现代化 Windows 平台设计&#xff0c;旨在改善桌面端玩家的游戏体验。通过将既有的官方资源与开发团队设计的全新功能相结合&#xff0c;提供了一套完整且实用的工具集&#xff0c;且无需依赖任何移动设…...

python日常消费数据占比分析总结年消费方向

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 整体消费情况 消费趋势 特定领域消费数据...

MySQL变量的浮点数问题处理

schooldb库——utf8字符集——utf8_general_ci排序规则 先创建库&#xff0c;点击查询再去使用下列DQL。 DQL SET dx3.14,dy3.25; SELECT dxdy; #mysql浮点数计算显示异常&#xff0c;会有很多00000的提示 SET resultdxdy;select result;...

MWeb Pro for Mac:功能强大的Markdown博客编辑器

MWeb Pro for Mac是一款功能强大的Markdown博客编辑器&#xff0c;专为Mac用户设计&#xff0c;提供了一站式的博客写作和发布体验。这款软件不仅支持Markdown语法&#xff0c;还提供了丰富的编辑和排版功能&#xff0c;让用户能够轻松创建出精美的博客内容。 MWeb Pro的即时预…...

基于FPGA实现的HDMI TO MIPI扩展显示器方案

FPGA方案&#xff0c;HDMI IN接收原始HDMI 信号&#xff0c;输出显示到LCD 屏上 客户应用&#xff1a;扩展显示器 主要特性&#xff1a; 1.支持2K以下任意分辨率显示 2.支持OSD 叠加多个图层 3.支持MIPI/EDP/LVDS/RGB屏 4.支持放大缩小匹配屏分辨率 5.零延时&#xff0c;输…...

2024年美国市场亚太游戏品牌数字广告洞察报告

来源&#xff1a;Sensor Tower 美国是全球最大的游戏市场之一&#xff0c;也是亚太游戏品牌出海的重要市场。2023年Q2至2024年Q1&#xff0c;美国市​场广告投放额排名前10的亚太游戏品牌&#xff0c;合计支出 超过7.5亿美元&#xff0c;环比上涨23%。 排名第一的米哈游(miHoY…...

DDD面试题:DDD聚合和表的对应关系是什么 ?(来自蚂蚁面试)

尼恩说在前面&#xff1a; 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如字节、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; DDD 的外部接口调用&#xff0c;应该放在…...

【华为】路由策略小实验

【华为】软考中级-路由策略实验 实验需求拓扑配置AR1AR2需求1需求2 AR3 检验 实验需求 1、让 R3 可以学到R1的 192.168.10.0/24和192.168.20.0/24的 路由&#xff0c;不能学到192.168.30.0/24。 2、让 R1可以学到 R3 的 172.16.20.0/24和172.16.30.0/24的路由&#xff0c;不能…...

docker安装elasticsearch:7.17.21

docker安装elasticsearch:7.17.21 下载对应版本的docker镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:7.17.21启动容器 docker run --name elasticsearch-test -p 9200:9200 -p 9300:9300 -e "discovery.typesingle-node" -t docker.elastic.…...

10.Java对象内置结构

文章目录 Java对象内置结构1.Java对象的三个部分1.1.对象头1.2.对象体1.3.对齐字节 2.对象结构中核心字段的作用2.1.MarkWord(标记字)2.2.Class Pointer(类对象指针)2.3.Array Length(数组长度)2.4.对象体2.5.对齐字节 3.Mark Word的结构信息3.1.不同锁状态下的Mark Word字段结…...

【ITK配准】第十五期 基于运动算法的可变形配准样例

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享ITK配准中的基于运动算法的可变形配准,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 基于运…...

CSP-j 计算机硬件

计算机系统 计算机系统由计算机硬件和软件两部分组成。硬件包括中央处理器、存储器和外部设备等&#xff1b;软件是计算机的运行程序和相应的文档。计算机系统具有接收和存储信息、按程序快速计算和判断并输出处理结果等功能。 主要技术指标 字长&#xff1a;字长是指CPU能够同…...

Java中使用RediSearch进行高效数据检索

RediSearch是一款构建在Redis上的搜索引擎&#xff0c;它为Redis数据库提供了全文搜索、排序、过滤和聚合等高级查询功能。通过RediSearch&#xff0c;开发者能够在Redis中实现复杂的数据搜索需求&#xff0c;而无需依赖外部搜索引擎。本文将介绍如何在Java应用中集成并使用Red…...

NASA数据集——全球土壤顶部 1 厘米土壤湿度的网格估算值25km分辨率

AMSR-E/Aqua L2B Surface Soil Moisture, Ancillary Parms, & QC EASE-Grids V003 简介 该数据集包含土壤顶部 1 厘米土壤湿度的网格估算值&#xff0c;是 AMSR-E 检索足迹的平均值。土壤湿度是通过 AMSR-E/Aqua L2A亮度温度&#xff08;Tb&#xff09;测量值估算的&…...

翼支付——风控场景中图模型的范式变迁

目录 风控图深度学习模型 风控图大模型...

Edge视频增强功能

edge://flags/#edge-video-super-resolution 搜索Video查找 Microsoft Video Super Resolution 设置为Enabled...

C++ 概览并发

并发 资源管理 资源 程序中符合先获取后释放&#xff08;显式或隐式&#xff09;规律的东西&#xff0c;比如内存、锁、套接字、线程句柄和文件句柄等。RAII&#xff1a; (Resource Acquisition Is Initialization),也称为“资源获取就是初始化”&#xff0c;是C语言的一种管…...

04-19 周四 GitHub CI 方案设计

04-19 周四 GitHub CI 方案设计 时间版本修改人描述2024年4月19日14:44:23V0.1宋全恒新建文档2024年4月19日17:22:57V1.0宋全恒完成部署拓扑结构的绘制和文档撰写 简介 需求 由于团队最近把代码托管在GitHub上&#xff0c;为解决推理、应用的自动化CI的需要&#xff0c;调研了…...

java日常选择题

题目来自牛客网 1.以下哪个接口的定义是正确的?() A interface B { void print() {} ;} B interface B { static void print();} C.abstract interface B extends A1, A2 //A1、A2为已定义的接口 {abstract void print(){};} D.interface B { void print(); 选D&#xff0c;因…...

安卓串口通訊三

核心代碼如下&#xff1a; package com.example.comandroid;import static android.content.ContentValues.TAG;import android.graphics.Color; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView;import…...

嵌入式交叉编译:Unable to find arm_neon.h

找到文件 搜索了一下&#xff0c;具体目录是&#xff1a; /opt/linux/x86-arm/aarch64-mix210-linux/lib/gcc/aarch64-linux-gnu/7.3.0/include/arm_neon.h 解决办法 INC_ARM/opt/linux/x86-arm/aarch64-mix210-linux/lib/gcc/aarch64-linux-gnu/7.3.0/include./configure …...

Linux下工具tc详细讲解及限制IP和端口实例

首先纠正某一篇博客&#xff0c;TC并不是只管发包不管收包&#xff0c;之前我也很纳闷 知道最后看到了14年前一位大佬的帖子。是ingress! 这里有个非常重要的点就是ingress&#xff0c;如果父类不是他的话是完不成限制源IP的&#xff0c;这个关键词表明你正在添加一个入口队列规…...

Java | Leetcode Java题解之第73题矩阵置零

题目&#xff1a; 题解&#xff1a; class Solution {public void setZeroes(int[][] matrix) {int m matrix.length, n matrix[0].length;boolean flagCol0 false;for (int i 0; i < m; i) {if (matrix[i][0] 0) {flagCol0 true;}for (int j 1; j < n; j) {if (…...

MySQL#MySql表的操作

目录 一、创建表 二、查看表结构 三、修改表 1.修改表的名字 2.新增一个列 3.修改列 4.删除列 5.修改列的名称 四、删除表 一、创建表 语法&#xff1a; CREATE TABLE table_name (field1 datatype,field2 datatype,field3 datatype ) character set 字符集 collate 校…...

window7 iis建立网站/学电脑培训班

ice internal compiler error...

付费文章 wordpress/怎么给产品找关键词

先给一个连接&#xff0c;我觉得总结的特别好&#xff1a;https://blog.csdn.net/tsfkurry/article/details/42027407指针最重要理解下面几句话&#xff1a;1.编译器总是要为函数的每一个参数制作临时副本&#xff0c;指针参数p的副本是_p,编译器使_pp.如果函数体内的程序修改了…...

wordpress 最大上传文件大小 8m/网络推广项目计划书

使用 Go 中的 SQL database 是容易的&#xff0c;只需下列这三步&#xff1a;// 步骤 1&#xff1a;导入主要的 SQL 包 import "database/sql"// 步骤 2&#xff1a;导入一个驱动包来明确要使用的 SQL 数据库 import _ "github.com/mattn/go-sqlite3"// 步…...

wordpress会员发布文章/上海公司排名

设置定时任务很简单&#xff0c;用Timer类就搞定了。一、延时执行首先&#xff0c;我们定义一个类&#xff0c;给它取个名字叫TimeTask&#xff0c;我们的定时任务&#xff0c;就在这个类的main函数里执行。代码如下&#xff1a;package test;import java.util.Timer;public cl…...

南充网站建设略奥网络/落实20条优化措施

Description 给出一个长度为N的非负整数序列A[i]&#xff0c;对于所有1 ≤ k ≤ (N 1) / 2&#xff0c;输出A[1], A[2], …, A[2k - 1]的中位数。即前1&#xff0c;3&#xff0c;5&#xff0c;……个数的中位数。 N ≤ 100000 Solution 这题方法很多&#xff0c;这里介绍splay…...

24小时学会网站建设/沈阳专业seo排名优化公司

游戏音乐外包公司作为第三方&#xff0c;这其中的市场有多么残酷、谁有多深、竞争有多激烈是不为人知的。游戏音乐制作人在背后默默工作付出的辛苦汗水&#xff0c;也是我们不曾了解的&#xff0c;不少人认为游戏过剩已经成为现实&#xff0c;曾经有一段时间&#xff0c;只要有…...