java
文章平均质量分 69
笑不语
亲爱的自己,请逼自己变得优秀,然后骄傲地生活
展开
-
EasyExcel实现Excel文件多sheet导入导出
一、概述最近公司需要做一个需求,通过excel上传病例信息,并将病例信息进行归档和整理;该需求可以简化为excel模板下载和excel上传并解析归档。既然知道需求了,找excel的操作工具jar包吧,发现以前常用的poi需要写的代码太多,但是时间紧急,没办法只能找新的工具。easypoi 在读写数据的时候,优先是先将数据写入内存,优点是读写性能非常高,但是当数据量很大的时候,会出现oom,当然它也提供了 sax 模式的读写方式,需要调用特定的方法实现。病例的信息量可能会很大,很有可能会造成内存溢出,没办法原创 2022-05-03 00:52:47 · 6124 阅读 · 0 评论 -
quartz(三)任务持久化-jdbc篇(一看就会)
一、背景如果任务执行到一半突然宕机怎么办?能否重新执行任务?任务执行的数据能够以恢复吗?带着这些问题,我发现了几种持久化策略,先讲最简单,也是我们最为喜闻乐见的mysql吧!说干就干,我们来写一个最简单的吧。二、代码实现其实实现起来也很简单,主要步骤如下:在数据库控制台执行如下sql脚本## Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar## PLEASE consider using mysql with原创 2021-10-24 21:26:47 · 684 阅读 · 0 评论 -
quartz(四)如何在job中使用spring自动注入
跨年篇:祝愿大家万事随心,吃饭吃得饱,睡觉睡得好,没有烦扰。一、背景我在Job实现类中使用@Resource和@Autowired注入mapper类时,出现了如下的错误:2020-12-31 20:41:07.311 ERROR 22456 --- [eduler_Worker-5] org.quartz.core.ErrorLogger : Job (repeat.test2 threw an exception.org.quartz.SchedulerExceptio原创 2021-03-29 19:54:43 · 358 阅读 · 0 评论 -
quartz(三)任务持久化-jdbc篇(一看就会)
一、背景如果任务执行到一半突然宕机怎么办?能否重新执行任务?任务执行的数据能够以恢复吗?带着这些问题,我发现了几种持久化策略,先讲最简单,也是我们最为喜闻乐见的mysql吧!说干就干,我们来写一个最简单的吧。二、代码实现其实实现起来也很简单,主要步骤如下:在数据库控制台执行如下sql脚本## Quartz seems to work best with the driver mm.mysql-2.0.7-bin.jar## PLEASE consider using mysql with原创 2021-03-28 23:01:35 · 444 阅读 · 0 评论 -
quartz(四)如何在job中使用spring自动注入
跨年篇:祝愿大家万事随心,吃饭吃得饱,睡觉睡得好,没有烦扰。一、背景我在Job实现类中使用@Resource和@Autowired注入mapper类时,出现了如下的错误:2020-12-31 20:41:07.311 ERROR 22456 --- [eduler_Worker-5] org.quartz.core.ErrorLogger : Job (repeat.test2 threw an exception.org.quartz.SchedulerExceptio原创 2020-12-31 22:58:58 · 1150 阅读 · 0 评论 -
quartz(二)动态增删改查停止启用job
一、背景最近公司有一个业务场景,需要手动推送消息给客服,但是这个执行时间可以是立即执行、未来执行一次或者重复执行推送任务。还有一个就是,如果未来执行一次和重复执行的开始时间晚于当前时间,这个任务是可以修改的。还有就是随时停止和启用任务。于是和这个quartz不谋而合。预研一下,以后实现真正的业务时候轻松一点。二、代码实现配置文件沿用quartz(一)基础篇,是最简单的配置,以后会逐步加深的。公共部分代码如下:任务jobimport com.example.docker_images.enti原创 2020-12-27 22:07:55 · 656 阅读 · 6 评论 -
springboot日志详解
一. 主流日志框架市场上存在非常多的日志框架。 JUL(java.util.logging),JCL(ApacheCommons Logging),Log4j,Log4j2,Logback、 SLF4j、 jboss-logging等。Spring Boot在框架内容部使用JCL,spring-boot-starter-logging采用了slf4j+logback的形式,Spring Boot也能自动适配(jul、 log4j2、 logback) 并简化配置。在写log4j的两种配置方式(x原创 2020-09-25 21:58:10 · 5688 阅读 · 0 评论 -
一看就会的IDEA远程debug教程(tomcat)
一、引言最近自己负责的项目上线了,部署到测试环境的时候就碰到了bug。为了定位问题,就需要使用到远程调试的。idea的远程调试tomcat功能非常给力,就和本地debug一样,很实用和方便,所以分享出来方便大家定位bug。二、实现方法给tomcat添加远程debug支持在catalina.sh文件首行添加CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n",注意address原创 2020-06-10 14:03:04 · 1085 阅读 · 0 评论 -
java基础--内部类
1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。创建内部类对象的时刻并不依赖于外围类对象的创建。内部类并没有令人迷惑的“i原创 2020-06-03 15:35:51 · 173 阅读 · 0 评论 -
zip压缩文件转换为可传输byte[]流和不解压下读取指定zip包中文件
一、背景最近做了一个项目,里面有这么一个需求:将zip文件存放到json字符串中。然后封装成报文发送给终端,终端在得到报文之后发送给终端,终端在获取到json字符串后读取内容并还原成zip文件包,而且要对zip文件中的某些特定文件内容进行入库保存。要达到上面的要求,无非是要将zip文件转化成byte[],然后转化成Base64字符串存放到json字符串中和一个zip在未解压的情况下的指定文件读...原创 2020-04-30 10:17:26 · 4827 阅读 · 0 评论 -
Java编程:按照指定的字段顺序,将 Bean 转换为 Json
一、背景最近在做项目的时候,我碰到了一个问题,使用json传递报文的时候怎么保存报文的顺序?比如下面一段报文:{ "ec": { "request": { "header": { "actiontype": "00", "currenttime": "1586003427105" }, "body": { "uuid": "dsasdadada"...原创 2020-04-04 22:17:14 · 2163 阅读 · 0 评论 -
一看就会的java8通用Builder
一、前言最近回顾了一下java8语法,其中发现了一个很有意思的一对逆运算接口:Supplier:这个接口是用来创建对象的,最大的特点是懒加载。Supplier接口源码@FunctionalInterfacepublic interface Supplier<T> { /** * Gets a result. * * @ret...原创 2020-03-21 09:14:10 · 7241 阅读 · 7 评论 -
java基础--内部类
1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。在单个外围类中,可以让多个内部类以不同的方式...原创 2019-12-31 16:09:39 · 121 阅读 · 0 评论 -
zip操作工具类
一、背景最近在做一个项目,里面有一个一次性下载多张证书的接口,我需要将多张证书返回给前端,然后我就想到是否可以把证书文件压缩到一个zip文件,讨论之后就采用了我的想法。之后就想着怎么才能方便的写入呢?实现如下:二、代码实现import java.io.*;import java.util.Arrays;import java.util.List;import java.util.con...原创 2019-12-18 21:52:14 · 270 阅读 · 0 评论 -
java中获取环境变量和工作目录
System.out.println("Java运行时环境版本:"+System.getProperty("java.version"));System.out.println("Java 运行时环境供应商:"+System.getProperty("java.vendor"));System.out.println("Java 供应商的URL:"+System.getProperty("ja...原创 2019-12-10 17:39:41 · 347 阅读 · 0 评论 -
linux使用shutdown.sh命令关闭tomcat进程不完全的原因及处理方法
一、出现原因前些天测试部提出了一个bug,大概意思是说:每次调用tomcat的shutdown.sh时,tomcat都没有关闭完全,留有好多的tomcat程序。tomcat调用shutdown.sh只能关闭tomcat的线程,不能关闭应用程序里面启动的线程。二、解决办法1.将调用的应用线程改为守护线程,tomcat容器关闭时,线程自动关闭//在创建的线程的时候将线程转化为守护线程th...原创 2019-11-13 17:14:41 · 1617 阅读 · 0 评论 -
swagger2的跨域配置
Swagger的配置手写api的痛点实例演示个人总结手写api的痛点手写Api文档的几个痛点:1.文档更新的时候,需要再次更新文档一份给前端,不能及时的和前端进行交流。2.接口返回结果不明确3.不能直接在线测试接口,需要借助第三方工具,比如:postman4.如果接口文档太多,不方便管理Swagger也就是为了解决这些问题而设计的,当然也不能说Swagger就一定是完美的,也有缺点,...原创 2019-02-11 17:21:28 · 6908 阅读 · 0 评论 -
插件报错:SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder“.解决方案
报错内容:SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".SLF4J: Defaulting to no-operation (NOP) logger implementationSLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for f...原创 2019-04-18 14:26:50 · 24597 阅读 · 12 评论 -
Hexo+Github实现相册功能
最终效果请看这里:https://javacfox.github.io/photos/本文参考了Lawlite大神的实现方法,如果想看具体原理,请访问:http://lawlite.me/一、具体实现流程1、github操作在github上新建一个仓库,用于存储相册github的相关命令操作,请参考:https://blog.csdn.net/weixin_43935907/art...原创 2019-04-23 15:18:29 · 1091 阅读 · 12 评论 -
安装虚拟机时趟过的坑
1、Intel VT-x禁用重启电脑,在开机动画之前,连续按F2进入bios界面,点击上方菜单栏处的【Advanced】进入advanced界面,点击列表中的【CPU Configuration】或者CPU-Setup找到【Intel Virtualization Technology】选项,点击回车选项该选项默认的是Disabled关闭状态,进入设置栏将Enabled勾选此时点击键...原创 2019-04-18 16:45:14 · 332 阅读 · 0 评论 -
三个简化开发的小技巧
lombok在接触lombok之前,需要我们使用快捷键生成get/set方法,有参无参构造和toString方法,一个简单的entity类看起来代码量却很多。package com.infosec.netsafess.entity;import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstr...原创 2019-05-17 16:41:18 · 885 阅读 · 0 评论 -
java使用ini4j读写和修改ini配置文件(支持section)
定义:ini文件主要由三部分构成,paramaters、section和comment组成,其中paramaters由键值对构成,用来存储数据,section是一个区块,每个区块下有所属的键值对,comment是注释,对paramaters和section进行标注和解释。使用工具类ini4j引入依赖jar包<dependency> <groupId>org...原创 2019-06-06 14:39:35 · 12218 阅读 · 2 评论 -
多数据源mongodb的使用
jar包引入<!--可以在编译源码的时候生成对应的方法--><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.6</version>...原创 2019-06-08 22:27:03 · 1895 阅读 · 0 评论 -
mongodb多条件分页查询的三种方法
一、使用limit和skip进行分页查询public List<User> pageList(int pageNum ,int pageSize){ List<User> userList = new ArrayList<>(); Mongo mg = new Mongo(); DB db = mg.getDB("data"); ...原创 2019-06-09 17:07:27 · 18203 阅读 · 6 评论 -
高等数据加密--非对称加密算法
非对称加密算法与对称加密算法的主要区别在于非对称加密算法用于加密和解密的密钥不同,一个公开,称为公钥;一个保密,称为私钥。因此,非对称密码算法也称为双钥和公钥加密算法。非对称加密算法解决了对称加密算法密钥分配问题,并极大的提高了算法的安全性。多种B2C或B2B应用均使用非对称加密算法作为数据加密的核心算法。解决了对称加密算法的密钥存储问题。分类非对称加密算法源于DH算法,其后主要分为两类:...原创 2019-04-17 17:03:38 · 606 阅读 · 0 评论 -
Hexo博客yilia主题添加Gitment评论系统
gitment是imsun利用github上的issues做的评论系统,我这里大力推荐,原因有三:注册简单,只要填写APP名和主页地址实现方便,只要简单的配置没有广告,这个很重要注册OAuth Application注册网址: https://github.com/settings/applications/newApplication name:博客名字Homepage UR...原创 2019-04-16 15:48:58 · 3341 阅读 · 4 评论 -
Hexo yilia主题的使用方法
时隔两年,终于使用Hexo搭建完毕,我选择了yilia这个主题,一来干净简洁,二来能够满足我对博客平台的要求。接下来就是开始定制化自己的技术博客平台了。1.设置主页标题和个性签名//在全局配置文件_config.yml中进行如下的修改title: 胖胖 //站点标题subtitle: 笑不语 //站点副标题description: 个人技术博客 //站点描述keywords: 前...原创 2019-04-16 14:41:11 · 4190 阅读 · 8 评论 -
对称密钥和非对称密钥
Key接口介绍: Key接口是所有密钥接口的顶层接口,一切与加密有关的操作都离不开Key接口,其中SecrectKey、PublicKey()和PrivateKey()均继承自Key接口,定义了对称密钥和非对称密钥接口。Key方法详述//算法getAlgorithm()//编码形式getEncoded()//格式getFormat()SecrectKey接口详述: 该接口是对称...原创 2019-04-03 23:47:06 · 2381 阅读 · 0 评论 -
maven的下载、安装与配置
maven的下载、安装与配置maven下载maven安装maven安装成功,输入命令 mvn -version可测试是否安装成功maven下载下载地址: http://maven.apache.org/download.cgi下载完,解压得到bin文件夹:含有mvn运行的脚本boot文件夹:含有plexus-classworlds类加载器框架conf文件夹:含有settings.x...原创 2019-03-12 21:05:32 · 2052 阅读 · 0 评论 -
Java使用tss4j行图片文字识别(中文)
Java使用Tess4J进行图片文字识别tess4j中文材料准备tess4j基本使用方法tess4j中文材料准备tess4j下载: https://sourceforge.net/projects/tess4j/中文解读包: https://github.com/tesseract-ocr/tessdata/blob/master/chi_sim.traineddatatess4j基本使用...原创 2019-03-14 21:12:58 · 1600 阅读 · 0 评论 -
idea打包可执行jar包
idea打包可执行jar包打包步骤代替的解决方法打包步骤最近在练习微服务项目,需要对项目进行打包运行部署,所以对常用的打包方法稍微总结了一下。1、在项目上鼠标右键 --> Open Module Settings 或者 (file --> project structure)上图为点击后出现的窗口(另外可以通过快捷键打开ctrl-shift-alt-s)2, Artifac...原创 2019-03-13 22:33:59 · 677 阅读 · 1 评论 -
SpringBoot通过注解的方式实现定时任务
springboot通过注解的方式实现定时任务实现步骤代码实现个人总结实现步骤1.搭建springBoot的启动类上添加注解@EnableScheduling2.在注解类中添加线程池3.在服务类中添加定时任务代码实现 //启动类 @SpringBootApplication @EnableScheduling public class Application { public...原创 2019-02-12 19:41:52 · 1998 阅读 · 0 评论 -
springboot多环境(devlop、test、product)配置
springboot的多环境的配置多环境的配置实例演示通用的多环境配置方式个人总结和使用场景多环境的配置定义一个获取配置文件的方法,让环境变量决定调用哪个配置文件 :核心思想: 定义一个私有方法,读取环境变量里的一个自定义属性,让这个属性决定服务器调用哪个配置文件,从而达到无需修改代码和配置文件就可以实现调用不同配置文件的目的;基本组成:环境变量、tomcat启动入口、命令和jar包运行...原创 2019-01-30 21:20:20 · 2435 阅读 · 1 评论 -
SpringBoot 中使用 MongoDB 基于 MongoRepository增删改查(基础篇)
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2019-01-23 00:03:46 · 21468 阅读 · 14 评论 -
适配器模式
sfajj欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入&amp;amp;lt;?xml ve...原创 2019-01-21 03:19:32 · 935 阅读 · 1 评论 -
SpringBoot返回类型封装
SpringBoot返回类型封装返回类型封装的工具类工具类的调用总结返回类型封装的工具类//把返回值封装成工具类,方便调用public class ResultMapUtils { //常量,代表后台调用的结果:成功、失败和异常 public static final String SUCCESS = "success"; public static final String FAIL...原创 2019-02-01 21:50:12 · 4429 阅读 · 1 评论 -
Fork/Join框架的浅析
Fork/Join框架的学习和浅析Fork/Join框架的主要功能Fork/Join框架的实现原理实例演示Fork/Join框架的异常处理Fork/Join框架的主要功能Fork/Join框架主要完成了两件事情:任务分割:首先把大的任务分割成足够小的子任务;执行任务并合并结果:分割的子任务分别存放到双端队列中,然后几个启动线程风别从双端队列中获取任务执行,子任务执行完成的结果都存放在另一...原创 2019-01-31 21:54:46 · 993 阅读 · 6 评论 -
java8新特性之时间API
java8新特性之时间API为什么需要在Java8中引入新的日期和时间库?LocalDate:提供简单的日期,不包含时间信息LocalTime:提供简单的时间,不包含日期信息LocalDateTime:整合了LocalDate和LocalTimeDuration:用于计算两个LocalTime或两个LocalDateTime之间的时间差; Peroid用于计算两个LocalDate之间的差值时间戳...原创 2019-03-30 22:28:47 · 249 阅读 · 0 评论 -
设计模式之策略模式
设计模式之策略模式策略模式策略模式核心思想 :代表了解决一类算法的通用解决方案,让你在运行时选择使用哪种方案(定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换)组成:Context(应用场景)、Strategy(抽象策略类)客户Strategy...原创 2019-03-31 15:12:12 · 183 阅读 · 0 评论 -
JCE加密和解密(基础篇)
CipherCipher类为加密和解密提供密码功能。它构成了JCE框架的核心(引擎类)。NullCiper是用来验证程序的有效性,并不提供具体的加密和解密实现。方法详解//实例化getInstance(String transformation)getInstance(String transformation,Provider provider)getInstance(String...原创 2019-04-09 17:21:22 · 9207 阅读 · 0 评论