list 分批导入db, 每1000条数据一批 , 从字符串中获取数字,小数, 版本号比较
//这个有个弊端: 分组后分批导入, 是阻塞的,我没有导入完成,别人就不能导入, 这里可以优化成异步,线程池
public static void main(String[] args) {
Random random = new Random();
ArrayList phoneList = new ArrayList<>();
for (int i = 0; i < 30; i++) {
phoneList.add(i);
}
for (int i = 0; i < phoneList.size(); i+=50) {
//每50条数据一批
List<Integer> collect = phoneList.stream().skip(i).limit(50).collect(Collectors.toList());
System.out.println(collect.size());
//执行入库操作
}
}
版本号比较
public static boolean isHigherTargetVersion(String sourceVersion, String targetVersion){
if("".equals(sourceVersion.trim()) || null == sourceVersion){
return Boolean.FALSE;
}
if("".equals(targetVersion.trim()) || null == targetVersion){
return Boolean.TRUE;
}
String[] sourceVersionSplit = sourceVersion.split("\\.");
String[] targetVersionSplit = targetVersion.split("\\.");
int minlenhgt = sourceVersionSplit.length > targetVersionSplit.length ? targetVersionSplit.length : sourceVersionSplit.length;
for(int i = 0;i < minlenhgt; i++){
Integer sourceTempVersion = Integer.parseInt(sourceVersionSplit[i]);
Integer targetTempVersion = Integer.parseInt(targetVersionSplit[i]);
if(sourceTempVersion.intValue() == targetTempVersion.intValue()){
continue;
}
return sourceTempVersion > targetTempVersion;
}
return sourceVersionSplit.length >= targetVersionSplit.length;
}
// 从字符串中获取数字
public static String stringFormatNumber(String str){
String regEx="[^0-9]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.replaceAll("").trim();
}
public static String getNumber(String str){
// 控制正则表达式的匹配行为的参数(小数)
Pattern p = Pattern.compile("(\\d+\\.\\d+)");
//Matcher类的构造方法也是私有的,不能随意创建,只能通过Pattern.matcher(CharSequence input)方法得到该类的实例.
Matcher m = p.matcher(str);
//m.find用来判断该字符串中是否含有与"(\\d+\\.\\d+)"相匹配的子串
if (m.find()) {
//如果有相匹配的,则判断是否为null操作
//group()中的参数:0表示匹配整个正则,1表示匹配第一个括号的正则,2表示匹配第二个正则,在这只有一个括号,即1和0是一样的
str = m.group(1) == null ? "" : m.group(1);
} else {
//如果匹配不到小数,就进行整数匹配
p = Pattern.compile("(\\d+)");
m = p.matcher(str);
if (m.find()) {
//如果有整数相匹配
str = m.group(1) == null ? "" : m.group(1);
} else {
//如果没有小数和整数相匹配,即字符串中没有整数和小数,就设为空
str = "";
}
}
return str;
}
/**
* 版本号比较
*
* @param v1
* @param v2
* @return 0代表相等,1代表左边大,-1代表右边大
* Utils.compareVersion("1.0.358_20180820090554","1.0.358_20180820090553")=1
*/
public static int compareVersion(String v1, String v2) {
if (v1.equals(v2)) {
return 0;
}
String[] version1Array = v1.split("[._]");
String[] version2Array = v2.split("[._]");
int index = 0;
int minLen = Math.min(version1Array.length, version2Array.length);
long diff = 0;
while (index < minLen
&& (diff = Long.parseLong(version1Array[index])
- Long.parseLong(version2Array[index])) == 0) {
index++;
}
if (diff == 0) {
for (int i = index; i < version1Array.length; i++) {
if (Long.parseLong(version1Array[i]) > 0) {
return 1;
}
}
for (int i = index; i < version2Array.length; i++) {
if (Long.parseLong(version2Array[i]) > 0) {
return -1;
}
}
return 0;
} else {
return diff > 0 ? 1 : -1;
}
}
list 分批导入db, 每1000条数据一批 , 从字符串中获取数字,小数, 版本号比较的更多相关文章
- 从字符串中获取XML节点数据
从字符串中获取XML节点数据,前一篇<字符串创建XML文档> http://www.cnblogs.com/insus/p/3298579.html 是储存为一个XML文档.现在,Insu ...
- 通过Excel导入Mysql 超过65535条数据的办法
1.截取 65534条数据,进行分sheet,然后1个sheet导入一张表,最后进行整合! 2.采用TXT导入方式,TXT的导入暂时没发现限制的数据条数,下午用TXT导入74万条数据成功 3.如果遇到 ...
- 在UPDATE中更新TOP条数据以及UPDATE更新中使用ORDER BY
正常查询语句中TOP的运用: SELECT TOP 1000 * FROM MP_MemberGrade 随意更新一张表中满足条件的前N条数据: UPDATE TOP (1) MP_Member ...
- 将Excel上千条数据写入到数据库中
简要说明:因工作需要,需要一张Excel表格中的所有数据导入到数据库中.如下表,当然这只是一部分,一共一千多条. 前期处理: 首先要保证上图中的Excel表格中的数据不能为空,如果有为空的数据,可以稍 ...
- mongoose+koa2 按照_id更新多条数据,删除数组中的字段,然后添加新的字段,$pull和$or结合使用
await model.photo.update({ _id: { $in: photoIdsParam } }, { $pull: { customerIds: { code: custCode, ...
- QTreeView处理大量数据(使用1000万条数据,每次都只是部分刷新)
如何使QTreeView快速显示1000万条数据,并且内存占用量少呢?这个问题困扰我很久,在网上找了好多相关资料,都没有找到合理的解决方案,今天在这里把我的解决方案提供给朋友们,供大家相互学习. 我开 ...
- PHP导出3w条数据成表格
亲测有效,三万条数据秒秒钟导出 先进行数据表插入数据 ini_set('memory_limit','1024M'); //设置程序运行的内存 ini_set('max_execution_time' ...
- mysql随机取出n条数据
SELECT * FROM tableName ORDER BY RAND() LIMIT n 数据量小的话还可以, 数据量大起来了, 就影响性能了. $rubbish = (new ...
- mysql中造3千条数据(3种方法)
方法一:存储过程 1.存储过程如下: delimiter $$ DROP PROCEDURE IF EXISTS data CREATE PROCEDURE data(in i int) BEGIN ...
随机推荐
- 【python】Leetcode每日一题-矩阵置零
[python]Leetcode每日一题-矩阵置零 [题目描述] 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 .请使用 原地 算法. 进阶: 一个直观的解 ...
- idea中注释变成繁体字
原因:idea中快捷键与输入法快捷键冲突:crtl+shift+f 解决方法:修改输入法的简繁切换快捷键的设置,crtl+shift+f切换回简体输入方式 注意:如果调出全局搜索用crtl+shift ...
- 5分钟,教你用Python每天跟女朋友说1000遍土味情话!
- 去了字节跳动,才知道年薪40W的测试有这么多?
最近脉脉职言区有一条讨论火了: 哪家互联网公司薪资最'厉害'? 下面的评论多为字节跳动,还炸出了很多年薪40W的测试工程师 我只想问一句,现在的测试都这么有钱了吗? 前几天还有朋友说,从腾讯跳槽去 ...
- MySQL角色(role)功能介绍
前言: 上篇文章,我们介绍了 MySQL 权限管理相关知识.当数据库实例中存在大量的库或用户时,权限管理将会变得越来越繁琐,可能要频繁进行权限变更.MySQL 8.0 新增了 role 功能,使得权限 ...
- MySQL备份脚本,应该这么写
前言: 数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果.所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库.在 MySQL 中,比较常用的逻辑备份工具是 ...
- [2021BUAA软工助教]个人第一次阅读作业小结
BUAA个人阅读作业小结 一.作业要求 https://edu.cnblogs.com/campus/buaa/BUAA_SE_2021_LR/homework/11776 二.评分规则 言之有物,按 ...
- 项目展示$\beta$
项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求 Beta阶段项目展示 我们在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作业在哪个具体方面帮助我们实现目 ...
- VS·卸载进程卡死"正在配置您的系统,这可能需要一些时间"
阅文时长 | 0.34分钟 字数统计 | 596.8字符 主要内容 | 1.引言&背景 2.声明与参考资料 『VS·卸载进程卡死"正在配置您的系统,这可能需要一些时间"』 ...
- Elastic Stack(ElasticSearch 、 Kibana 和 Logstash) 实现日志的自动采集、搜索和分析
Elastic Stack 包括 Elasticsearch.Kibana.Beats 和 Logstash(也称为 ELK Stack).能够安全可靠地获取任何来源.任何格式的数据,然后实时地对数据 ...