Java
文章平均质量分 86
浅醉樱花雨
热爱生活,热爱技术,喜欢造轮子,追求极简的编码体验!
联系方式:
QQ:1749498702
微信:q1749498702
邮箱:1749498702@qq.com
展开
-
Java优雅停止应用程序
import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicBoolean;/**优雅停止应用测试/public class ShutdownHookTest {/*是否停止应用标识*/p...原创 2020-04-14 19:23:39 · 417 阅读 · 0 评论 -
Java创建GIF图,带透明背景
需求使用Java将序列图转换为GIF动图,如果序列图本身包含alpha透明通道,生成的GIF图也要保留透明通道。对于序列图转换为GIF动图的需求,如果数量比较大,对性能要求较高,建议直接使用对应的处理工具,比如ImageMagick, GraphicsMagick ,FFmpeg 等,不仅可以转换成GIF,还可以转换出压缩率更高的webp动图。但是吧,有时候只需要一个很小的功能,引入一个大块...原创 2019-10-19 17:54:37 · 1792 阅读 · 2 评论 -
gson序列化抛出StackOverflowError异常
问题描述使用gson库将实体对象序列化为json字符串时,出现StackOverflowError异常。如图:经过排查,发现问题出在循环依赖上。简化版示例代码如下public class A { private String name; private B b; public A(String name) { this.b = new B(this); this.name ...原创 2019-10-16 15:16:49 · 4964 阅读 · 0 评论 -
Java 解析url,获取参数
一个简单的解析url,获取参数的Java工具类import java.util.HashMap;import java.util.Map;/** * @author lixk * @description url工具类 * @date 2018/9/26 9:58 */public class UrlUtil { public static class UrlEntity {...原创 2018-09-26 11:55:28 · 48371 阅读 · 4 评论 -
Java常用消息摘要算法-SHA
SHA是比较常用的消息摘要算法之一,其中比较常见的有SHA-1,SHA-256,SHA-512。这里用Java代码实现一个简单的工具类,可以提取字符串或者文件的SHA值。import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.security.MessageDigest...原创 2018-05-15 16:38:03 · 927 阅读 · 0 评论 -
Java常用消息摘要算法-MD5
本工具类可实现对字符串或者文件提取MD5值(MD5加密)import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.security.MessageDigest;/** * MD5 消息摘要工具类 * * @author lixk */public cl...原创 2018-05-15 16:28:41 · 966 阅读 · 0 评论 -
Java常用非对称加密算法-RSA
RSA作为常用的非对称加密算法,用法基本就是首先生成公钥和私钥密钥对,然后用公钥加密私钥解密或者用私钥加密公钥解密。这里只写代码实现。import javax.crypto.Cipher;import java.security.*;import java.security.spec.PKCS8EncodedKeySpec;import java.security.spec.X509Enco...原创 2018-05-15 16:20:07 · 4468 阅读 · 0 评论 -
Java常用对称加密算法-AES
import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import java.security.SecureRandom;import java.util.Base64;/** * AES 加解密工具类 * * @author lixk */publi...原创 2018-05-15 16:08:51 · 257 阅读 · 0 评论 -
Java常用对称加密算法-DES
直接上代码import javax.crypto.Cipher;import javax.crypto.KeyGenerator;import javax.crypto.SecretKey;import java.security.SecureRandom;import java.util.Base64;/** * DES 加解密工具类 * * @author lixk */...原创 2018-05-15 16:02:38 · 238 阅读 · 0 评论 -
spring boot 拦截器使用示例
使用 spring boot 拦截器只需要两个类,一个拦截器类,一个拦截器注册类,示例代码如下:创建用户登录校验拦截器LoginInterceptor:package com.example.demo.intercepter;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.we原创 2018-01-15 14:12:30 · 3497 阅读 · 0 评论 -
Java 动态定时器
最近项目里需要添加定时任务,定时任务要求可以动态控制,虽然quartz和spring Schedule Task可以实现,但是感觉不够灵活,简单。于是,索性自己实现一个。本Java 动态定时器基于Java的定时器线程池,阻塞队列实现,定时调度时间采用cron表达式配置的方式,其中cron表达式解析工具类提取自spring。 用法极其简单,只需要将ScheduleUtils工具类复制到项目里原创 2017-08-30 18:57:10 · 4696 阅读 · 3 评论 -
自己实现简单Java缓存类
需求分析项目中经常会遇到这种场景:一个变量需要在多处共享,有些变量还有时效性,过期自动失效,比如手机验证码,发送之后需要缓存起来,然后处于安全性考虑,一般还要设置有效期,到期自动失效。我们怎么实现这样的功能呢?解决方案使用现有的缓存技术框架,比如redis,ehcache。优点:成熟,稳定,功能强大;缺点,项目需要引入对应的框架,不够轻量。如果不考虑分布式,只是在单线程或者多线程间...原创 2018-06-11 23:42:01 · 16825 阅读 · 12 评论 -
Spring Boot 分离资源文件打包
Spring Boot项目默认的会打包成单一的jar文件,但是有时候我们并不想让配置文件、依赖包都跟可执行文件打包到一起。这时候可以在pom.xml文件中进行配置,从而使资源文件、依赖包和可执行文件分离。pom.xml配置如下: <build> <plugins> <!--**********分离资源文件及依赖包打...原创 2018-07-19 18:00:16 · 18588 阅读 · 19 评论 -
Spring Boot 打包分离配置文件
如果只是想在打成jar包的时候单独把配置文件分离出来,这个其实简单。按照规定,Spring Boot 的配置文件加载优先级如下:当前目录下的config子目录当前目录classpath下的config目录classpath根路径优先级自上而下递减。所以,要实现配置文件分离,只需要在可运行的jar文件的同级目录创建一个config目录,然后把配置文件复制到该目录即可。...原创 2018-07-19 20:47:20 · 25069 阅读 · 6 评论 -
Spring Boot添加自定义yml文件配置
背景项目当中有大量配置,统一放在application.yml中管理不太方便,所以需要将配置拆分,放在几个不同的yml文件中。解决方案解决方案很简单,只需要如下几步操作即可。在application.yml文件同目录创建其他配置文件,比如:application-user-config.yml, application-order-config.yml…内容示例:user: c...原创 2019-02-27 15:35:20 · 6960 阅读 · 6 评论 -
Spring MVC 自定义返回异常
项目微服务接口决定全部返回固定格式的数据,包括异常在内,该怎么处理?默认的,Spring MVC在抛出异常后会返回给调用方一段异常信息,那么怎么让接口调用异常的时候返回自定义的信息呢?其实很简单,直接上代码。首先创建一个异常处理器:import org.springframework.web.bind.annotation.ExceptionHandler;import org.spri...原创 2019-02-13 11:08:40 · 772 阅读 · 0 评论 -
Spring Boot集成Log4j2+颜色设置+按时间拆分
前言Log4j 2是Log4j的升级版属于新一代日志框架,它基于LMAX公司开发的Disruptor(一个开源的无锁并发框架),改善了Log4j和Logback在架构设计方面的缺陷,具有超高的吞吐量和低延迟,性能比Log4j1.x和Logback高10倍以上。 另外,它还支持自定义日志的输出方式,比如,将文件以json格式输出,支持输出到socket或者kafka等。这么好的东西,当然要赶紧用...原创 2019-04-13 12:09:09 · 6300 阅读 · 4 评论 -
Spring Boot打包跳过单元测试
在Spring Boot中打包时跳过单元测试其实很简单,只要在pom文件的properties标签中配置<skipTests>true</skipTests>即可,示例: <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> ...原创 2019-04-23 09:51:35 · 2729 阅读 · 2 评论 -
java.lang.NoSuchMethodError: org.json.JSONArray.iterator()Ljava/util/Iterator
背景使用阿里云服务出现这个异常:java.lang.NoSuchMethodError: org.json.JSONArray.iterator()Ljava/util/Iterator...解决方案pom依赖中,去除jsonassert,示例: <dependency> <groupId>org.springframework.boot</group...原创 2019-04-19 19:49:11 · 3388 阅读 · 2 评论 -
Java 执行系统命令
有时候我们需要调用系统命令做一些事情,比如,执行cmd/shell命令,调用其他第三方程序等,Java已经提供了这样的功能,但是感觉不是太好用,没有python的subprocess简洁。最近要用Java调用 ffmpeg 做一些音视频处理,封装个简单的进程工具类,这里记录下。import java.io.Closeable;import java.io.IOException;impor...原创 2019-05-05 19:11:58 · 2438 阅读 · 2 评论 -
Java获取文件的真实类型(通过文件魔数判断文件类型)
背景通常情况下,我们取文件的后缀名作为文件的类型即可,但有时为了防止用户随便修改后缀名,就需要获取文件的真实类型。这时候可以通过文件的魔数来判别。魔数就是文件开头的那几个字节的数据。代码实现工具类代码import java.util.HashMap;import java.util.Map;/** * @author lixk * @description 魔数工具类 */p...原创 2019-06-20 17:48:21 · 10238 阅读 · 0 评论 -
Java 发送 get, post 请求
花了一天时间,基于Java 的 HttpURLConnection 和JDK 1.8的Base64写了个发送get 和post请求的工具类。本工具类有get和post两个方法,使用时只需String result = HttpUtils.get(url, args);String result = HttpUtils.post(url, args);即可获取返回结果。参数说原创 2017-04-01 19:06:16 · 735 阅读 · 0 评论 -
Cause: java.sql.SQLException: 无法转换为内部表示
框架spring jdbc 查询数据时抛出 Cause: java.sql.SQLException: 无法转换为内部表示的异常原因,数据库字段是数值类型,但实体bean对应的类型是String,类型不匹配原创 2016-05-05 11:49:07 · 6540 阅读 · 0 评论 -
Java之美[从菜鸟到高手演变]之设计模式二
在阅读过程中有任何问题,请及时联系:egg。邮箱:xtfggef@gmail.com 微博:http://weibo.com/xtfggef如有转载,请说明出处:http://blog.csdn.net/zhangerqing我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、转载 2015-11-03 12:24:18 · 466 阅读 · 0 评论 -
editor does not contain a main type 解决方法
在 eclipse 左侧的package explorer中鼠标右击这个类所在包的上一级目录,——>build path——>use as source folder。这样就解决问题了。原创 2015-08-21 18:17:10 · 2258 阅读 · 0 评论 -
Java 操作 SQLite 数据库
SQLite JDBC is a library for accessing SQLite databases through the JDBC API. For the general usage of JDBC, see JDBC Tutorial or Oracle JDBC Documentation.Download sqlite-jdbc-(VERSION).jar fro转载 2015-07-15 23:40:35 · 1015 阅读 · 0 评论 -
JDBC中PreparedStatement接口提供的execute、executeQuery和executeUpdate之间的区别及用法
PreparedStatement接口提供了三种执行 SQL 语句的方法:executeQuery、executeUpdate 和 execute。使用哪一个方法由 SQL 语句所产生的内容决定。1、方法executeQuery 用于产生单个结果集的语句,例如 SELECT 语句。 被使用最多的执行 SQL 语句的方法是 executeQuery。这个方法被用来执行 SELECT 语句,转载 2015-06-12 22:29:23 · 651 阅读 · 0 评论 -
Jetty实战之 嵌入式Jetty运行Servlet
本文链接:http://blog.csdn.net/kongxx/article/details/7230080在嵌入式Jetty中,有时候我们想运行一些的Servlet,此时就需要创建创建Context,然后让自己的Servlet运行在这些ServletContext中。1. 首先创建一个ServletContextServer类,用来初始化web应用程序的Context,并转载 2015-06-10 22:11:41 · 440 阅读 · 0 评论 -
Jetty 的工作原理以及与 Tomcat 的比较
Jetty 的基本架构Jetty 目前的是一个比较被看好的 Servlet 引擎,它的架构比较简单,也是一个可扩展性和非常灵活的应用服务器,它有一个基本数据模型,这个数据模型就是 Handler,所有可以被扩展的组件都可以作为一个 Handler,添加到 Server 中,Jetty 就是帮你管理这些 Handler。Jetty 的基本架构下图是 Jetty 的基本架构图,转载 2015-06-10 13:14:14 · 496 阅读 · 0 评论 -
Java使用Jetty实现嵌入式Web服务器及Servlet容器
Jetty是一个Java实现的开源的servlet容器,它既可以像Tomcat一样作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序中,在Java程序中调用Jetty。下面介绍如何在Java应用程序中嵌入Jetty。Jetty下载地址,本文写作时的最新版本是9.1.2,下载jetty-distribution-9.1.2.v20140210.zip转载 2015-06-10 13:07:06 · 796 阅读 · 0 评论 -
Spring @MVC configuration without XML
XML is no longer hip. Actually, there is nothing as unhip as last year’s hip. That is until it becomes hip again 30 years later in failed irony.Honestly, if you’ve been programming Java EE since t转载 2015-06-06 00:00:34 · 1262 阅读 · 0 评论 -
java 反射通过get方法获得属性值
java 反射通过get方法获得属性值 来源:http://zgc168.iteye.com/blog/16331311、根据对象获得所有字段的值Java代码 public static void method(Object obj) { try { Class clazz = obj.getClass();转载 2015-04-28 17:50:23 · 7748 阅读 · 0 评论 -
Java之美[从菜鸟到高手演变]之设计模式三
本章是关于设计模式的最后一讲,会讲到第三种设计模式——行为型模式,共11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。这段时间一直在写关于设计模式的东西,终于写到一半了,写博文是个很费时间的东西,因为我得为读者负责,不论是图还是代码还是表述,都希望能尽量写清楚,以便读者理解,我想不论是我还是读者,都希望看到高质量转载 2015-11-03 12:26:56 · 384 阅读 · 0 评论 -
Java中的static关键字解析
static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一。下面就先讲述一下static关键字的用法和平常容易误解的地方,最后列举了一些面试笔试中常见的关于static的考题。以下是本文的目录大纲: 一.static关键字的用途 二.static关键字的误区 三.常见的笔试面试题 若有不正之处,希望谅解转载 2015-11-03 11:56:13 · 347 阅读 · 0 评论 -
Java 获取数据库表名
java获取数据库表名的原理就是通过connection获取数据库元数据DatabaseMetaData,然后通过元数据的getTables()方法查出表信息Connection conn = ConnectionPool.getConnection();try { DatabaseMetaData dbm = conn.getMetaData(); ResultSet rs = dbm原创 2016-03-11 17:25:14 · 3517 阅读 · 0 评论 -
WebSocket 聊天室
初学WebSocket,写了个聊天程序,感觉现在的推送比以前轮询好多了。本Demo页面就是个简单的html文件,服务器用的Java 1.7+tomcat 7页面截图:有兴趣的同学可以一起交流,欢迎批评指正^_^源码地址:http://download.csdn.net/detail/u013314786/9469178原创 2016-03-22 14:20:39 · 407 阅读 · 0 评论 -
java的static块执行时机
一、误区:简单认为JAVA静态代码块在类被加载时就会自动执行。证错如下: [java] view plaincopyclass MyClass1 { static {//静态块 System.out.println("static block "); } } public cla转载 2015-11-03 10:19:12 · 381 阅读 · 0 评论 -
Eclipse中maven项目没法自动编译、编译失败、WEB-INF/classes目录中没有Class文件
Eclipse中maven项目无法自动编译、编译失败、WEB-INF/classes目录中没有Class文件 我们都知道,在一个典型的Maven项目中,编译后的class文件默认是放在targert/classes目录下的。但是我今天碰到一个比较奇怪的问 题,在Eclipse中我通过import exsiting maven projects的方法,导入了2个maven的proj转载 2015-10-27 10:56:23 · 27625 阅读 · 2 评论 -
java web 一行代码实现文件上传下载
每当要实现文件上传下载的功能时,都要复制粘贴拼凑代码。如果用了不同的框架,代码还不一样,配置啥的一堆,甚是繁琐,不喜欢。科学家们喜欢把纷繁复杂的自然现象总结为一个个简洁的公式,我们也来试试,把上传下载整成一行代码~ 花了一天时间,整了个通用的工具类FileUtils,这个类里实际只包含两个静态方法,一个上传upload(),一个下载download()。只依赖apache的comm原创 2015-11-08 20:22:10 · 5300 阅读 · 2 评论 -
深入理解Java:注解(Annotation)--注解处理器
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了。使用注解的过程中,很重要的一部分就是创建于使用注解处理器。Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement): Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotati转载 2015-10-06 21:09:01 · 406 阅读 · 0 评论