最近生产环境有个老项目一直内存报警,不时的还出现内存泄漏,导致需要重启服务器,已经严重影响正常服务了.获取生成dump文件后,使用MAT工具进行分析,发现是其中有个Excel文件上传功能时,经常会导致内存溢出.原因是:POI在加载Excel引发了内存泄漏,中间创建了大量的对象,占用了大量的内存.查看代码POI读取Excel的方式发现使用的是用户模式. POI提供了2中读取Excel的模式,分别是:用户模式:也就是poi下的usermodel有关包,它对用户友好,有统一的接口在ss包下,但是它是把…
工作中,我们时常会遇到一些操作文件的操作,比如在线生成合同模板,上传/下载/解析Excel,doc文档转为pdf等操作.本文就已工作中遇到的在线生成合同为例,简要地介绍一种文档替换写法. 本文目的:给出源文件模板,通过程序操作后,替换模板中的指定内容,从而生成固定模板的文件. 使用场景:生成固定格式的合同信息. 原理:给一个文档模板,需要替换的内容以 $$包含,然后,在代码中给需要替换的字段赋值,生成新的文档. 工具包:poi-ooxml-3.10.jar   自己网上下载 代码: packag…
在过去的几年工作中,曾经多次需要把文件上传到单独的服务器,而程序是在单独的服务器上部署的,在进行文件操作的时候就需要跨服务器进行操作包括:文件上传.文件下载.文件删除等.跨服务器文件操作一般是需要FTP协议和SFTP协议两种,现在就通过Java实现FTP协议的文件上传.要实现FTP操作文件需要引入jar包: commons-net-1.4.1.jar 具体代码如下: import java.io.*; import java.net.MalformedURLException; import o…
第69节:Java中数据库的多表操作 前言 学习数据库的多表操作,去电商行业做项目吧!!! 达叔,理工男,简书作者&全栈工程师,感性理性兼备的写作者,个人独立开发者,我相信你也可以!阅读他的文章,会上瘾!,帮你成为更好的自己. 感谢!承蒙关照! 数据库的创建: create database 数据库名 character set 字符集 collate 校对规则 数据库的删除: drop database 数据库名 修改 alter database 数据库 character set 字符集…
ansible笔记():常用模块之文件操作(二) 文件操作类模块 find模块 find模块可以帮助我们在远程主机中查找符合条件的文件,就像find命令一样. 此处我们介绍一些find模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例. paths参数 :必须参数,指定在哪个目录中查找文件,可以指定多个路径,路径间用逗号隔开,此参数有别名,使用别名path或者别名name可以代替paths. recurse参数 : 默认情况下,只会在指定的目录中查找文件,也就是说,如果目录中还包含…
在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在返回User 如果不存在则返回Null */ public User findUserById(String userId){ //sql语句 String sql="select user_id,user_name,password,contact_tel,email,create_date fr…
/// <para> FilesUpload:工具方法:ASP.NET上传文件的方法</para> /// <para> FileExists:返回文件是否存在</para> /// <para> IsImgFilename:判断文件名是否为浏览器可以直接显示的图片文件名</para> /// <para> CopyFiles:复制指定目录的所有文件</para> /// <para> MoveFi…
利用aspose-words  实现 java中word转pdf文件 首先下载aspose-words-15.8.0-jdk16.jar包 引入jar包,编写Java代码 package test; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import org.aspectj.weaver.ast.Test; import com.aspose.words.Document…
java中调用kettle转换文件 通过命令行也能够调用,然后java中调用命令行代码也能够.这样没有和java代码逻辑无缝集成.本文说明kettle5.1中假设通过其它API和java代码无缝集成:网上大多数资料都是低版本号的.在kettle5.x中已经不能执行. 1.       须要哪些jar文件 以kettle开头的是必须,上图最以下三个也要:红色框中的两个是我測试转换用到的.各自是生成UUID和文件. 要是少了jar文件,执行程序一定报错.大家依据错误到kettle安装文件夹LIB中找…
昨天妹子让我帮她解决个问题,本以为可以轻松搞定,但是打开他们项目的一瞬间,我头皮发麻.本身功能不多的一个小项目,解决方案里竟然有几十个类库.仅仅搞明白各个类库的作用,代码层次之间的引用关系就花了一个多小时. 显然可能他们项目结构的代码模型出了问题,设计混乱,不容易上手. 项目中一个好的的代码模型一定是简单.清晰.明了.易于上手的.它总是会让人用起来很舒服,它可以让项目团队成员更好地理解代码,根据代码规范实现团队协作:它可以让各层的逻辑互不干扰.分工协作.各据其位.各司其职,避免不必要的代码混淆.…