自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(517)
  • 资源 (13)
  • 收藏
  • 关注

原创 Excel转PDF工具(支持多sheet)

Excel转PDF工具(支持多sheet),源文件是一个有两个sheet的Excel。使用组件itextpdf和poi。源码比较多,需要的直接下载源代码。

2022-12-25 21:00:29 395 1

原创 mysql正则表达式中文匹配问题

背景:匹配财产描述是否包含日期范围示例:重药控股吉林省天华医药有限公司在编号为XSHT-03-2021-612的项下,基于/在 2022年04月27日至2022年05月24日因履行合同义务而对辽源市妇婴医院产生的应收账款,金额 为人民币854,625.34元, 其他信息可详见附件。正常正则表达式写法:[0-9]{4}[\-/年][0-9]{2}[\-/月][0-9]{2}[日]?(\-至到)[0-9]{4}[\-/年][0-9]{2}[\-/月][0-9]{2}匹配结果:不匹配 原因分析...

2022-06-29 14:57:10 1859

原创 itextpdf获取PDF签名证书信息

pom.xml<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.13</version> </dependency>SignatureUtilTestimport com.i

2022-02-24 13:52:50 2126

原创 RabbitMq进阶——优先队列使用

使用场景在实际业务中,消息有时也要区分优先级,比如定时任务产生的消息和业务请求产生的消息,定时任务的消息可以延迟消费,但是业务消息需要优先处理,避免影响流程。实现方案本人讲述spring boot框架下的实现方案AmqpTemplateHelper.javaimport com.rabbitmq.client.AMQP;import com.rabbitmq.client.Channel;import org.springframework.amqp.core.AmqpTempla

2022-01-22 16:30:22 1933

原创 RabbitMq进阶——延迟队列使用

使用场景1、定时任务,比如订单超过30分钟自动取消2、监听任务,比如每隔10秒,监听多个子任务是否已经完成实现方案本人讲述spring boot框架下的实现方案延迟队列绑定import org.springframework.amqp.core.*; /** * 延时队列设置 * 设置延时队列的过期时间为2秒钟 * 2秒之后,延时队列将消息发送给消费队列 */ @Bean public Queue testDelay

2022-01-22 16:10:12 2005

原创 ElasticSearch SocketTimeoutException解决

ES用了目前最新的版本,测试环境一直没有发现问题,一到生产就出现了SocketTimeoutException异常,而且很诡异,不是一直报,而是隔一段时间就报一下,谷歌了很久没有找到原因,最后加了一个配置后,就没有再报了ES版本如下<dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-elasticsearch</arti

2022-01-22 15:36:37 7170

原创 spring-boot-starter-validation自定义枚举类型参数校验

话不多说,直接上代码pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId></dependency><dependency> <groupId>javax.validation</gr

2021-09-04 21:34:56 1042

原创 ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata

异常详情如下Caused by: java.lang.IllegalStateException: Failed to introspect Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] from ClassLoader [sun.misc.Launcher$AppClassLoader@18b4aac2] at org.springframework.util.Reflection

2021-08-15 17:40:19 9985

转载 PDFBox加密和解密PDF文件

PDF常用的三种加密方式:口令加密 证书加密 Adobe LiveCycle Rights Management口令加密:作为第一代PDF安全加密方式,到现在也一直广泛应用。口令加密分为:用户密码(user password)、所有者密码(owner password)。用户密码:要求用户在打开文件时,需要输入密码 所有者密码:打开PDF文件并进行阅读,并不需要所有者密码,只有更改权限设置或进行受限制操作时(打印,编辑和复制PDF中的内容),才需要输入所有者密码。如果使用两种类型的密码保.

2021-06-21 11:55:30 1942

原创 根据文件名获取contentType

场景:实际项目中,经常需要获取文件的contentType。上传文件时,服务器需要知道文件类型,做文件格式校验和格式转换;下载文件时,需要返回浏览器content_type,告诉浏览器文件类型,以便浏览器能够解析文件内容。springframework提供的MediaTypeFactory工具类可以很方便的获取contentType值,代码如下import org.springframework.http.MediaType;import org.springframework.http

2021-02-10 11:21:21 2829

原创 事务下发送MQ问题,改成事务提交后发送MQ

实际项目中,我们会经常用到MQ,比如RabbitMQ。通常会遇到一个问题:当在一个开启事务的方法里面发送MQ,经常会遇到事务还没提交,但是消息却已经消费完了。而如果消费者需要用到提交后的数据,则会报错或出现问题。解决方案事务提交后再发送MQ,代码如下AmqpTemplateHelper.java@Componentpublic class AmqpTemplateHelper { @Autowired private AmqpTemplate amqpTemplat

2021-02-09 17:30:03 2088 1

原创 接口重试和返回值处理通用编程模型

利用java8的Function函数实现接口重试和返回值处理场景:实际项目中,我们会经常调用第三方接口,而第三方接口一般会QPS限制,也就是每秒钟的请求次数限制。这样很容易导致服务因为请求过快而报错,为了避免这个问题,我们通常需要休眠一定时间,再进行重试。下面代码将演示用一行代码实现接口的重试和返回值处理。import com.alibaba.fastjson.JSON;import com.alibaba.fastjson.JSONObject;import com.shengye

2021-02-09 16:52:44 203

原创 Java编程GOTO语句妙用

GOTO语句的使用小语法,大妙用场景:当参数1执行失败,报出特定异常的时候,需要调整相应参数,再重新执行public class MainTest { public static void main(String[] args) throws Exception { int param = 1; boolean isFinish = false; looper: while (!isFinish) {

2021-02-09 15:08:25 201

原创 Pdf常用工具类及签章异常常见问题

import lombok.extern.slf4j.Slf4j;import org.apache.pdfbox.io.MemoryUsageSetting;import org.apache.pdfbox.pdmodel.PDDocument;import org.apache.pdfbox.pdmodel.PDPage;import org.apache.pdfbox.pdmodel.PDPageContentStream;import org.apache.pdfbox.pdmodel..

2021-02-09 14:24:22 4965 1

原创 elasticsearch学习笔记-操作篇

常用Rest Api查询APIPOST /twitter/_search{ "query": { "bool" : { "must" : { "query_string" : { "query" : "some query string here" ...

2020-03-22 13:53:42 199

原创 elasticsearch学习笔记-实战篇-spring-boot整合

pom.xml<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>applicatio...

2020-03-22 12:56:54 522

原创 RabbitMq学习笔记-实战篇-spring boot整合

1、JSON序列化与反序列化要实现消息跨平台,需要配置消息JSON序列化(配置见代码实现),就可以实现不同语言之间互相发送/接收消息,还可以直接用RabbitMQ控制台发送消息。从RabbitMQ控制台发送消息,指定properties content_type=application/jsonpom.xml<dependency> <groupI......

2020-03-09 14:49:28 682

原创 RabbitMq学习笔记-基础知识点

生产者发送消息的过程(1)生产者连接到RabbitMQ Broker建立一个连接(Connection),开启一个信道(Channel)(2)生产者声明一个交换器,并设置相关属性,比如交换机类型、是否持久化等(3)生产者声明一个队列并设置相关属性,比如是否排他、是否持久化、是否自动删除等(4)生产者通过路由键将交换器和队列绑定起来(5)生产者发送消息至RabbitMQ Brok......

2020-03-09 14:23:00 534 1

原创 IDEA使用笔记

常用命令自动补全返回值Eclipse对应Ctrl+2 + L,Idea对应Ctrl+Alt + V,为了方便我改成Ctrl+LCtrl+F9 手动编译只是修改方法内的代码,不需要重启应用,只需要ctrl+f9手动编译一下即可生效Ctrl+Alt+L 一键格式化代码 Ctrl + F12 显示当前类所有方法 Ctrl+Shift+U 大小写切换,为了方便我改成Ctrl+Shift...

2019-03-25 20:08:22 255

转载 MySQL索引优化分析(好文分享)

为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。还在等啥子?撸起袖子就是干!案例分析我们先简单了解一下非关系型数据库和关系型数据库的区别。MongoDB是NoSQL中的一种。NoSQL的全...

2019-02-19 15:14:21 195

转载 MySQL 表锁和行锁机制(很详细)

MySQL 表锁和行锁机制行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。通过本章内容,带你学习MySQL的行锁,表锁,两种锁的优缺点,行锁变表锁的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿!MySQL的存储引擎是从MyISAM到InnoDB,锁从表锁到行锁。后者的出现从某种程度上是弥补前者的...

2019-02-19 15:08:30 12938 5

原创 LiquiBase数据库版本管理组件使用(带示例)

简介LiquiBase是一个用于数据库重构和迁移的开源工具,通过日志文件的形式记录数据库的变更,然后执行日志文件中的修改,将数据库更新或回滚到一致的状态。LiquiBase的主要特点有:支持几乎所有主流的数据库,如MySQL, PostgreSQL, Oracle, Sql Server, DB2等;支持多开发者的协作维护;日志文件支持多种格式,如XML, YAML, JSON...

2019-01-31 15:48:08 1432 1

原创 mybatis-generator生成代码(可生成注释)完整示例

说明:在java项目开发中一般都用到mybatis框架,就会涉及到实体和表的映射,mapper的生成,mybatis-generator插件可以根据表结构自动生成实体和mapper,大大简化了开发的工作量目前这个插件生成的原始实体没有字段注释,查找了一些资料找到了解决方法,通过实现mybatis-generator提供的PluginAdapter接口,从而自定义实体生成的规则,可以在实体类字段中...

2019-01-31 15:29:36 7144 1

原创 遇到过的坑之tomcat bug——An invalid domain [cart.suzixxa.com] was specified for this cookie

报错信息,一套代码,部署在tomcat上,其他域名都没有问题,就这个域名有问题,一脸懵逼网上查也没查到什么资料,然后只能自己翻tomcat 报错中Rfc6265CookieProcessor的源码,一看报错行跟我源码对不上,于是看了一下服务器上的tomcat版本:tomcat8.0.26版本Rfc6265CookieProcessor源码tomcat8.5.23版本Rfc6...

2018-10-25 22:01:55 992 1

原创 根据IP获取国家代码

pom.xml&lt;dependency&gt; &lt;groupId&gt;com.maxmind.geoip2&lt;/groupId&gt; &lt;artifactId&gt;geoip2&lt;/artifactId&gt; &lt;version&gt;2.9.0&lt;/version&gt;&lt;/dependency&gt;示例Sys

2018-10-25 21:35:52 5321 2

原创 SpringBoot 集成Redis Cluster和RedisTemplate

先看示例:// 将验证码放入缓存,并设置自动过期时间CacheUtils.put(CacheKey.PHONE_VERIFY_CODE.key(phone), code, 1, TimeUnit.HOURS);// 从缓存中获取验证码String code = CacheUtils.get(CacheKey.PHONE_VERIFY_CODE.key(phone));// 删除缓...

2018-10-25 21:11:51 5115

原创 BeanUtils对象复制(深度拷贝)终极工具类

对象复制工具类,实现方法如下:复制对象(深度拷贝)复制集合(深度拷贝)复制对象到指定类(深度拷贝)复制集合到指定类(深度拷贝)POM<!-- 对象拷贝 --><dependency> <groupId>uk.com.robust-it</groupId> <artifactId>cloning<...

2018-10-03 21:45:48 13133

原创 Gzip压缩工具类

import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.util.zip.GZIPInputStream;import java.util.zip.GZIPOutp...

2018-10-03 21:28:25 1199

原创 大文件导出优化

在项目开发中,我们经常会遇到需要从数据库导出大量数据的情况,经常会因为数据量太大而难以导出。下面介绍下我是怎么处理的:1、用CSV代替POI导出,因为CSV格式比Eexcel同样数据量的情况下节省很多存储空间2、分配导出,每次查询5万或者10万条,生成一个CSV文件3、多文件打包,用ZipOutputStream将多个文件打包zip压缩包4、打包完后,再用GZIP压缩输出,减...

2018-10-03 21:25:39 2505

原创 Java多态机制在实际中的应用

在实际开发工作中,常常遇到一个功能有多种实现方式,比如支付方式,有分微信支付、京东支付、支付宝、银联等支付方式,不同支付方式的大概流程大抵相似,实现细节有所区别。这个时候就可以用到java的多态机制,先定义一个公共接口,接口定义支付流程的各个方法,具体的支付方式实现该接口的方法。在控制层,利用spring的注入获取支付类型和支付方式实现类的引用映射,根据请求需要的支付类型就可以调用对应支付方式的方...

2018-04-23 14:35:14 7112 7

转载 too many open files(打开的文件过多)解决方法

一、产生原因too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。 引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数,通...

2018-04-23 14:25:06 12177

原创 Java继承机制在实际中的应用

系统开发过程,最初只是实现基础功能,后面随着业务拓展,会增加了一些新功能,新功能和原来的功能有着一定相似的地方,但又有不同的逻辑,如果直接在原来的代码上修改,可能会影响原来的功能,重复写一套,代码的复用性和可维护性又很低。这个时候用java的继承机制来实现可以恰到好处,使得业务的升级和拓展非常方便,代码的复用性和可维护性也有很大的提高。如下面的示例1、BService继承了AService所有方法...

2018-04-12 12:22:56 1673

原创 导出CSV文件工具类

 CSVUtils.javaimport java.io.BufferedWriter;import java.io.IOException;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.util.List;import org.apache.commons.beanutils...

2018-04-12 11:31:51 1326

转载 java生成随机校验码图片

RandomValidateCode.javaimport java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.FileOutputStream;import j...

2018-04-12 11:25:28 252

原创 LRU算法集合简单实现

场景:本地缓存实现LRU算法,即最新使用的数据排在前面,不常使用的数据自动踢出LRULinkedHashMap.javaimport java.util.Iterator;import java.util.LinkedHashMap;import java.util.Map;/** * 固定长度map,实现LRU算法 * 如果map里面的元素个数大于了缓存最大容量,则删除链表的顶端元素...

2018-04-12 11:13:21 807

原创 固定长度List,超长自动删除队尾数据

FixSizeLinkedList.javaimport java.util.LinkedList;import com.alibaba.fastjson.JSON;/** * 固定长度List * 如果List里面的元素个数大于了缓存最大容量,则删除链表的顶端元素 * @author lixiangjing * @param &lt;K&gt; * @param &lt;V&g...

2018-04-12 11:04:45 12070 3

原创 Java自动过期本地缓存简单实现

实际项目中常常需要用到本地缓存,特别是一些固定不变的数据,不想频繁调接口,因为http请求本身需要耗时,下面几个类对本地缓存作了简单实现,支持自动过期功能LocalCache.javainterface LocalCache { public void refresh();}LocalCacheItem.java/** * 缓存项 * @author: * @date: 2018年...

2018-04-12 10:59:20 11809

原创 临时邮箱

http://24mail.chacuo.net/该网站可以提供有效期为24小时的临时邮箱,在开发测试中,非常实用,可以用临时邮箱进行网站注册,接收邮件拓展:其他临时邮箱地址:三十三个免费匿名临时邮箱服务申请临时手机号接收短信:www.pinger.com、textnow.com...

2018-04-12 10:25:31 35038

原创 谷歌网页性能分析

https://developers.google.com/speed/pagespeed/insights/输入网址,谷歌可以对网站性能进行分析,得出综合评分,还会给出优化建议,可以参考建议对网站进行优化

2018-04-12 10:18:01 2991

转载 延迟队列DelayQueue

原文链接:http://www.cnblogs.com/jobs/archive/2007/04/27/730255.html我们谈一下实际的场景吧。我们在开发中,有如下场景a) 关闭空闲连接。服务器中,有很多客户端的连接,空闲一段时间之后需要关闭之。b) 缓存。缓存中的对象,超过了空闲时间,需要从缓存中移出。c) 任务超时处理。在网络协议滑动窗口请求应答式交互时,处理超时未响

2016-11-17 11:29:07 3026

Excel2Pdf源码

spring boot 版本demo,解压可以直接用运行

2022-12-25

LiquiBase数据库版本管理组件使用示例

LiquiBase数据库版本管理组件使用示例和详细介绍 1、语法简单,开箱即用 2、功能强大,满足日常数据库脚本变更需求 3、版本管理方便,每次修改都有记录 4、与项目集成,项目启动执行数据库变更,发布省去手动初始化脚本

2021-02-10

spring-boot-elasticseach-demo.zip

本demo实现功能如下: 1、保存索引数据 2、根据ID获取索引数据 3、分页查询所有索引数据:精确匹配、时间范围查询、分词查询、高亮结果 4、利用滚动查询所有数据

2020-03-21

spring-boot-rabbitmq-demo.zip

spring boot和rabbitMQ最佳实践 1、JSON序列化与反序列化 要实现消息跨平台,需要配置消息JSON序列化(配置见代码实现),就可以实现不同语言之间互相发送/接收消息,还可以直接用RabbitMQ控制台发送消息。 2、消息重试机制 见application.yml配置文件,手动模式下,当消费端消费抛异常时,消息会进行重试。消息等待重试时,会阻塞,直到重试都失败后,才会消费下一条消息。

2020-03-09

mybatis-generator生成代码完整示例

在java项目开发中一般都用到mybatis框架,就会涉及到实体和表的映射,mapper的生成,mybatis-generator插件可以根据表结构自动生成实体和mapper,大大简化了开发的工作量 目前这个插件生成的原始实体没有字段注释,查找了一些资料找到了解决方法,通过实现mybatis-generator提供的PluginAdapter接口,从而自定义实体生成的规则,可以在实体类字段中自动添加表结构定义的注释

2019-01-31

导入导出报表开发模板

此套导入和导出开发模板简单易用,可读性强,维护方便,让程序员避开复杂的代码操作,专注业务。

2015-09-05

SVN的详细使用说明

SVN与Myeclipse整合

2013-05-12

flashPaper2+注册码+win7安装方法

flashPaper2+注册码+win7安装方法 本人刚搞定 于是分享给大家

2012-04-29

win7去除快捷箭头工具

win7去除快捷箭头工具,只要点击启动,不用安装,既能一次性去除快捷箭头,方便,快捷

2011-12-12

金山打字通

一款用于练习打字的软件,非常实用,可用于矫正你的打字习惯,帮助你提高打字速度

2011-12-12

iread阅读器

它是一个很好用的阅读器,它结合现实中人的看书习惯,模拟书的形式,给你真实的阅读体验,看起来就像看着真实的书一样

2011-12-12

无忧辩论赛计时器

无忧辩论赛计时器(软件)采用Visual Basic 6.0编写,运行稳定。可以满足于中小型辩论赛中计时等需要,软件体积小且无需安装。软件最大程度上让用户自主设置各个功能,如背景图片,音效等。是一款使用方便的绿色软件。

2011-12-12

java 常用事件及对应的监听器和方法

java 常用事件及对应的监听器和方法,本人自己整理,希望给初学者提供参考

2011-12-03

eclipse常用快捷键

eclipse常用快捷键,全,详细,标红为常用,希望能够帮助到初学者

2011-12-03

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除