因为Oracle数据的in 最大允许1000 ,超过就会报错, 所以需要将集合拆分为多个集合进行处理. /** * 拆分集合 * @param <T> * @param resList 要拆分的集合 * @param count 每个集合的元素个数 * @return 返回拆分后的各个集合 */ public static <T> List<List<T>> split(List<T> resList,int count){ if(resList…
上代码: import java.util.ArrayList; import java.util.List; public class JayCommonUtil { /** * 按指定大小,分隔集合,将集合按规定个数分为n个部分 * * @param list * @param len * @return */ public static List<List<String>> splitList(List<String> list, int len) { if (l…
java大文件拆分工具(过滤掉表头) import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class SplitTools { public static void main(String[] args) throws IOException { /…
using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Web; namespace Book_Painting.Common{ /// <summary> /// 图片压缩 /// </summary> public class ThumbnailImage { /// <s…
引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借鉴. 本文将尝试由浅入深的方式表述大文件拆分的问题及不同解决方案,给出的方案不一定是最优解,也并非线上环境论证过的靠谱方式,目的只是在于通过该问题融会贯通io.多线程等基础知识理论.生产环境请慎用. 本文不会逐行讲解代码实现,而注重在方案设计及思路探讨上,但会在文末附上源码demo git地址. 问…
引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借鉴. 本文将尝试由浅入深的方式表述大文件拆分的问题及不同解决方案,给出的方案不一定是最优解,也并非线上环境论证过的靠谱方式,目的只是在于通过该问题融会贯通io.多线程等基础知识理论.生产环境请慎用. 本文不会逐行讲解代码实现,而注重在方案设计及思路探讨上,但会在文末附上源码demo git地址. 问…
Java快速创建指定大小的文件,最多的解决办法就是循环向文件里面入固定大小的空字节,但是这种方式构建大文件性能比较低下,因此有这样两种方式可供参考: Java有一个类:FileChannel,查阅API发现通过这个类来实现复制文件比简单的循环读取写入可能会高效得多,很多操作系统可将字节直接从文件系统缓存传输到目标通道,而无需实际复制各字节.构建大的文件10GB,20GB,150GB,所用时间都是100毫秒左右. /** * 创建固定大小的文件 * @param file * @param len…
今天遇到一个大集合里面的数据删除问题, 因为是一个大集合,如果同时传递到数据库,那么就会造成数据库压力 所以分批次的进行批量操作 其实 也可以采用多线程来处理或者多批次加多线程来处理都是可以的 下面的案例 主要讲述是大集合拆分成小集合的代码 避免下次用到忘记了! 啥也不说,直接上代码,避免下次会用到,先记着 public static void main(String[] args) { List<String> list=new ArrayList<String>(); for…
/** * 将byte数组按照指定大小分割成多个数组 * @param bytes 要分割的byte数组 * @param subSize 分割的块大小 单位:字节 * @return 指定大小的byte数组 */ public static Object[] splitByteArr(byte[] bytes, int subSize) { int count = bytes.length % subSize == 0 ? bytes.length / subSize : bytes.leng…
对于集合框架,是非常重要的知识,是程序员必须要知道的知识点. 但是我们为什么要引入集合框架呢? 我们之前用过数组存储数据,但是采用数组存储存在了很多的缺陷.而现在我们引用了集合框架,可以完全弥补了数组的缺陷.它灵活,使用,提高软件的开发效率.并且不同的集合适用于不同的场合. 集合框架的好处: 1.容量自增长: 2. 提供有用的数据结构和算法,从而减少编程工作: 3. 提高了程序速度和质量,因为它提供了高性能的数据结构和算法: 4. 允许不同 API 之间的互操作,API之间可以来回传递集合: 5…
一.前言                                                                                       几个月前的看书笔记,内容全部都是摘自书中比较精辟的句子.笔记都是一段一段的句子,故没有文章的篇幅概念,仅供温习之用,更多详细内容请看原书!!! <代码整洁之道>里面有很多前人编写简洁.漂亮代码的经验.当然书中作者的经验并不100%适合每个人,但大部分都是可借鉴的! <java与模式>这本书内容太多了,我…
下载原版阿里JAVA开发手册  [阿里巴巴Java开发手册v1.2.0] 本文主要是对照阿里开发手册,注释自己在工作中运用情况. 本文难度系数为三星(★★★) 本文为第二篇 第一篇 点评阿里JAVA手册之编程规约(命名风格.常量定义.代码风格.控制语句.注释规约) 码出高效.码出质量. 代码的字里行间流淌的是软件生命中的血液,质量的提升是尽可能少踩坑,杜绝踩重复的坑,切实提升质量意识.另外,现代软件架构都需要协同开发完成,高效协作即降低协同成本,提升沟通效率,所谓无规矩不成方圆,无规范不能协作.…
结合最近Disruptor的学习,和之前一直思考解决的大文件拆分问题,想到是否可以使用Disruptor作为生产者/消费者传递数据的通道呢?借助其高效的传递,理论上应当可以提升性能.此文便是此想法的落地实现. 问题描述 将大文件按照指定大小拆分为若干小文件.具体可参考:大文件拆分方案的java实践(附源码). 方案设计 设计简图 如下: 核心组件 FileReadTask —— Disruptor的生产者线程,负责读取源文件,: Disruptor —— FileReadTask和FileLin…
原文链接: https://docs.oracle.com/javase/8/docs/technotes/guides/collections/overview.html 原文内容也一并附加在本文最后. 简介: Java平台包含一个集合框架. 集合是表示一组对象的对象(如经典的Vector类). 集合框架是用于表示和操作集合的统一体系结构,使集合可以独立于实现细节而被操纵. 集合框架的主要有点在于: 通过提供数据结构和算法减少编程工作量,因此您不必亲自编写它们. 通过提供数据结构和算法的高性能…
背景 最近发生了一起 Java 大对象引起的 FullGC 事件.记录一下. 有一位商家刷单,每单内有 50+ 商品.然后进行订单导出.订单导出每次会从订单详情服务取100条订单数据.由于 100 条订单数据对象很大,导致详情 FullGC ,影响了服务的稳定性. 本文借此来梳理下 Java 垃圾回收算法及分析 JVM 垃圾回收运行的方法. 案例分析 如果对GC不太熟悉,可以先看看"GC姿势"部分,对 JVM 垃圾回收有一个比较清晰的理解. 测定大小 回头看这个案例,显然它很可能触犯了…
本文章,列出了一些程序员需要学习的技术和知识点,有些技术和知识点没有写道,欢迎大家进行修改和补充,有些技术公司用到,大家需要先学习,有些技术和知识点过时,大家可以了解.本人笔记连接[[http://2863c718.wiz03.com/wapp/pages/view/share/s/0EoYso1Xqk4m2eAV4Y385xVk2vODbZ2BZ46Z2ChvzO2jhAyq|学习体系]].======一.前端===========1.前端基础=========1.1.html4=======…
一.数组与集合比较 数组: 1)长度开始时必须指定,而且一旦指定,不能更改 2)保存的必须为同一类型的元素 3)使用数组进行增加/删除元素-比较麻烦 集合: 1)可以动态保存任意多个对象,使用比较方便 2)提供了一系列方便的操作对象的方法: add.remove.set. get等 3)使用集合添加,删除新元素-更加简洁 二.常见集合体系图 (1)常见单列集合 List: 有序可重复.支持索引.可根据索引值取数据.可以存入多个null值 Set: 无序不可重复.无索引.最多只包含一个null值…
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 -----------------------------------------------------------------------------------------------------------------…
今天碰到一个需求,定时任务,批量从表里取数据并做一些其他操作然后再存表,每次取1000条,由于计算过程比较耗时所以要起多个线程同时跑,需要将List按照指定大小等分,如每100条数据起一个线程,若最后剩余一份不到100,也放到一个线程里,网络上的实现方法有很多,我测试之后理出三种相对比较好的实现方法,如下: /*第一种方法 思路比较简单,遍历list,将元素添加到subList, *每当i到pageSize的时候,将subList添加到listArray并新建,subList */ public…
从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问.高并发请求方面,基本的解决方案集中在这样几个环节:1.首先需要解决网络带宽和Web请求的高并发,需要合理的加大服务器和带宽的投入,并且需要充分的利用系统中软件.硬件的缓存机制,将能缓存的内容都进行缓存存储,减少计算层和存储层的压力. 2.其次需要对业务服务器和业务支撑服务器进行合理的分层,并且采用并行计算和分布式算法对大量计算进行处理,并且在开发的过程中需要采用Java SDK中并发包(Concurrency)进行编码实现. 3.存储…
转载请注明出处:Java集合中List,Set以及Map等集合体系详解(史上最全) 概述: List , Set, Map都是接口,前两个继承至collection接口,Map为独立接口 Set下有HashSet,LinkedHashSet,TreeSet List下有ArrayList,Vector,LinkedList Map下有Hashtable,LinkedHashMap,HashMap,TreeMap collection接口下还有个Queue接口,有PriorityQueue类 注意…
[ 简单总结: 随便一个java项目,引入jar包: lucene-core-4.0.0.jar 如果是 maven项目,直接用如下依赖: <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>4.0.0</version> </dependency> 然后直接java代码即…
码云: https://gitee.com/forxiaoming/JavaBaseCode/blob/master/EasyCoding/src/collection/index.md 6.1 数据结构 1. 数据结构定义: 数据结构是指逻辑意义上的数据组织方式及其相应的处理方式; 1.1. 数据组织方式: 树: 二叉树, 三叉树, B+ 树等; 图: 有向图, 无向图; 队列: 先进先出的线性结构; 哈希: 根据某种算法直接定位的数据组织方式; 1.2. 数据处理方式: 在既定的数据组织方式…
Java 8 新特性之--Stream 一. 简单介绍 Stream是Java 8提出了的一种新的对集合对象功能的增强.它集合Lambda表达式,对集合提供了一些非常便利,高效的操作,使得代码具有非常高的可读性,优雅性!!举个例子来说,它就像一个流水线操作,对输入流水线的东西(水果)进行一系列加工处理,最后获取到我们需要的某种特殊的水果(没有洗过的苹果). Stream提供了对集合的便捷化处理方式 声明式编程的思想 代码更加优雅,简洁,不信往下看→_→ 来个例子来看看Stream风格 上海从今年…
< JAVA - 大作业(2)仿qq即时通讯软件 > 背景 JAVA上机大作业:设计一个仿qq即时通讯软件 任务简要叙述:设计一款仿QQ的个人用户即时通讯软件,能够实现注册,登陆,与好友聊天等功能.要求使用GUI界面设计,网络通信,数据库连接,泛型容器等技术. 注意: 参考该代码时注意修改Config.java中的IP地址为自己(服务器工程)的IP地址 参考该代码时注意修改DBManage.java中的数据库连接内容为自己的数据库连接 客户端运行Login.java启动客户端:服务器运行Sta…
程序不过是几行代码的集合.就像下面这样: public class Test { public static void main(String[] args) { System.out.println("hello world"); } } 对于初学编程的人来说,"hello world"总是绕不开的:学习 Java 编程自然不能例外.说实在话,我在大学一年级学习这寥寥几行代码时可费了老大的劲--几乎用了将近一个月的时间才消化掉这段程序(这可一点不假). 记得老师非…
前言 计划开一个新的系列,来讲一讲在工作中经常用到的性能优化手段.思路和如何发现性能瓶颈,后续有时间的话应该会整理一系列的博文出来. 今天要谈的一个性能优化的Tips是一个老生常谈的点,但是也是很多人没有注意的一个点.在使用集合类型是,你应该设置一个预估的初始大小,那么为什么需要这样做?我们一起来从源码的角度说一说. 集合类型 我们先来聊一聊.NET BCL库中提供的集合类型,对于这个大家肯定都不陌生,比如List.HashSet.Dictionary.Queue.Stack等等,这些都是大家每…
对于数据排序大家肯定见过不少,选择排序或者冒泡排序等等,今天我们要做的是快速排序 + 直接插入排序来对大数据(1000万以上)进行排序,下面我们分别来看看这两种排序规则 1, 直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 也是排好顺序的.如此反复循环,直到全部排好顺序.直接插入排序这块儿是有技巧的,网上很多文章是当前元素和前面已经排序好的元素进行挨个对比,找到位置然后进行数组移位,这样在…
d命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 会生成一个1000M的test文件,文件内容为全0(因从/dev/zero中读取,/dev/zero为0源). 但是这样为实际写入硬盘,文件产生速度取决于硬盘读写速度,如果欲产生超大文件,速度很慢. 在某种场景下,我们只想让文件系统认为存在一个超大文件在此,但是并不实际写入硬盘. 则可以 dd if=/dev/zero of=test bs=1M count=0 seek=…
linux dd命令参数及用法详解---用指定大小的块拷贝一个文件 日期:2010-06-14 点击:3830 来源: 未知 分享至:            linux dd命令使用详解 dd 的主要选项: 指定数字的地方若以下列字符结尾乘以相应的数字: b=512, c=1, k=1024, w=2, xm=number m if=file 输入文件名,缺省为标准输入. of=file 输出文件名,缺省为标准输出. ibs=bytes 一次读入 bytes 个字节(即一个块大小为 bytes…