Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便
我使用后,觉得阿里确实很用心,使用简单,速度还快,这个⭐可以给。 如果以下内容还是看不懂,给他们点个小星星,然后我教你,嘻嘻。
处理 Excel 表格是开发中经常遇到的需求,比如表格合并、筛选表格中的某些行列、修改单元格数据等。
java.io.BufferedReader和java.io.BufferedWriter类各拥有8192字符的缓冲区。 当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区, 而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,
import com.alibaba.excel.annotation.ExcelProperty; import com.fasterxml.jackson.annotation.JsonFormat; import com.hypersmart.datasource.utils.excel.converter.*; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import lombok.ToString; import org.springframework.format.annotation.DateTimeFormat;
大家工作中统计测试用例、测试进度以及各种测试报表,或多或少离不开Excel,我们可以使用Excel公式实现自动化统计,当然也可以使用代码实现Excel数据的统计。
‘w’以写的方式打开,只能写文件,如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件;
可能你已经发现了我的代码和官方给出的不大一样,因为我就是那个用了Swagger3的人。
可重入锁,也叫递归锁。它有两层含义,第一,当一个线程在外层函数得到可重入锁后,能直接递归地调用该函数,第二,同一线程在外层函数获得可重入锁后,内层函数可以直接获取该锁对应其它代码的控制权。之前我们提到的synchronized和ReentrantLock都是可重入锁。
Mycat可不是我的猫,他是基于Java语言编写的一款开源数据库中间件,是一个实现了MySQL协议的服务器。能够实现对主从数据库的读写分离、主从复制、水平或垂直切分表等功能。
在做excel导入导出的时候,发现项目中封装的工具类及其难用,于是去gitHub上找了一些相关的框架,最终选定了EasyExcel。之前早有听闻该框架,但是一直没有去了解,这次借此学习一波,提高以后的工作效率。
ReadWorkbook,ReadSheet 都会有的参数,如果为空,默认使用上级。
我自己总结的Java学习的一些知识点以及面试问题,目前已经开源,会一直完善下去,欢迎建议和指导欢迎Star: https://github.com/Snailclimb/Java_Guide
FileInputStream import java.io.*; public class TestFileInputStream { public static void main(String[] args) { int b = 0; FileInputStream in = null; try { in = new FileInputStream("D:\\test.txt"); }catch(FileN
EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。
Java面试通关手册(Java学习指南,欢迎Star,会一直完善下去,欢迎建议和指导):https://github.com/Snailclimb/Java_Guide
0. 字符流与字节流 📷 1.字节缓冲流 1.1 字节缓冲流构造方法 1. 字节缓冲流介绍 lBufferOutputStream:该类实现缓冲输出流。 通过设置这样的输出流,应用程序可以向底层输出流写入字节,而不必为写入的每个字节导致底层系统的调用 lBufferedInputStream:创建BufferedInputStream将创建一个内部缓冲区数组。 当从流中读取或跳过字节时,内部缓冲区将根据需要从所包含的输入流中重新填充,一次很多字节 2. 构造方法 方法名 说明 BufferedOutputS
GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具
数据库事务 什么是事务:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。,事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。 事务结束有两种,事务中的步骤全部成功执行时,提交事务,如果其中一个失败,那么将发生回滚操作,并且撤销之前的所有操作。 在MySQL中只
对于replica set 中的secondary 节点默认是不可读的。在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。
我们可以在定义集合时设置泛型这样的约束,也可以在定义类和方法时加上泛型,这样能提升类和方法的灵活性。此外我们还可以在定义泛型时加上继承和通配符。在平时的培训中,我曾发现初学者对一些复杂的泛型(其实也不复杂,只不过是较少用)感到困惑。这里就通过一些案例展示泛型在项目里的常见用法。
多版本并发控制技术的英文全称是 Multiversion Concurrency Control,简称 MVCC。
i : 光标所在左侧输入I 光标移动到所在行的最左则 o :光标移动的下一行(新的一行) O:光标移动的上一行(新的一行) a :光标移动到所在行的右则输入A:光标移动到所在行的最右则
img垂直拆分的优点: 可以使得行数据变小,在查询时减少读取的Block数,减少I/O次数。此外,垂直分区可以简化表的结构,易于维护。 垂直拆分的缺点: 主键会出现冗余,需要管理冗余列,并会引起Join操作,可以通过在应用层进行Join来解决。此外,垂直分区会让事务变得更加复杂;
HBase是一个开源的、分布式的、版本化的NoSQL数据库(即非关系型数据库),依托Hadoop分布式文件系统HDFS提供分布式数据存储,利用MapReduce来处理海量数据,用Zookeeper作为其分布式协同服务,一般用于存储海量数据。HDFS和HBase的区别在于,HDFS是文件系统,而HBase是数据库。HBase只是一个NoSQL数据库,把数据存在HDFS上。可以把HBase当做是MySQL,把HDFS当做是硬盘。
public interface TransactionDefinition 定义符合 Spring 的事务属性的接口。基于类似于 EJB CMT 属性的传播行为定义。 注意,除非启动实际的新事务,否则不会应用隔离级别和超时设置。 仅 PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW and PROPAGATION_NESTED 可能导致这种情况,在其他情况下指定这些设置通常没有意义。此外,并非所有事务管理器都支持这些高级功能,因此在给定非默认值时可能会引发相应的异常。
Mysql开发技巧: MySQL开发技巧(一) MySQL开发技巧(二) MySQL开发技巧(三)
Jxl 简单运用 jxl.jar 包简介 下载地址:http://www.andykhan.com/jexcelapi/ 特征: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。 搭建环境 将下载后
官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com)
类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.Class对象,用来封装在方法区内的数据结构。类的加载最终是在堆区内的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。
Aache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。可以指定缓冲区的大小,或者可使用默认的大小。
事务管理用来确保数据的完整性和一致性。事务就是一系列的工作,它们被当做一个单独的工作单元,这些动作要么全部完成,要么全部不起作用。
当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁。你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。使用FileReader读取文件:
详见:[Linux 打印文本部分行内容(前几行,指定行,中间几行,跨行,奇偶行,后几行,最后一行,匹配行)]()
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140679.html原文链接:https://javaforall.cn
Apache POI是Apache软件基金会的免费开源的跨平台的 Java API,POI提供API给Java程序对Microsoft Office格式(Excel、WORD、PowerPoint、Visio等)读和写的功能。.NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。
我们自定义类加载器继承了ClassLoader,new MyClassLoader()的时候会先走类加载器的构造
可以看到CPU是最快的,但是最窄,也就是说它虽然快,但存储量不大。CPU又可以分为三层,从上至下分别为:
Redis作为承担缓存作用的数据库,一般会应用在高并发的场景里,而在这些高并发应用场景的数据库层面还会用到其他数据库的组件或集群以提升性能,比如用MySQL主从集群实现读写分离效果、用MyCAT组件实现分库分表的功能。另外,Redis本身会以集群的形式对外提供缓存服务。
在Java中,所有 实例域、静态域 和 数组元素 都储存在堆内存中,堆内存在线程之前共享。 本文用 共享变量 统一描述 实例域、静态域 和 数组元素 。
原子操作在并发编程中是很重要的概念之一,java中的并发的原子操作和各种锁的实现都少不了CAS的影子,本文从AtomicReferenceFieldUpdater类的使用开始说起,由浅入深,层层深挖,最终挖到硬件来描述并发领域中的最重要的概念:原子操作。 目录: 1、AtomicReferenceFieldUpdater的使用。 2、AtomicReferenceFieldUpdater源码分析。 3、CAS基本介绍。 4、CAS 底层原理。 5、CPU锁的种类。 5、CAS的缺点 使用 AtomicR
实体类对需要导出或者导入的字段增加@ExcelProperty注解,index值为对应excel中的列,value为表头,format为日期格式化
从上图我们可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。
字节流处理原始的二进制数据 I/O。输入输出的是8位字节,相关的类为 InputStream 和 OutputStream.
领取专属 10元无门槛券
手把手带您无忧上云