
Java
文章平均质量分 52
染的人
A person who knows why to live can bear any how to live.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java 将base64编码字符串转换为图片工具类
在一些前后端分离项目中,接口方需要前端把图片转换成base64编码字符串,和表单信息一起通过json接口提交。故在后端中,需要对前端传过来的bas64编码字符串转换成图片文件进行存储。原创 2024-01-03 10:19:34 · 1170 阅读 · 0 评论 -
Java 获取两个日期之间的工作日工具类
一个简单的工具类,用于获取两个日期之间的工作日,由此可知工作日的天数和工作日的月号。原创 2024-01-02 10:32:11 · 604 阅读 · 0 评论 -
Shiro 拓展Session写入Http请求头
Shiro是一个业界常用的java安全框,它默认的管理session的方式,是在客户端请求登录成功后,写入到cookie里面存储起来。笔者在维护一个前后端不分离的老系统,遇到这样的一个需求,在保留老系统原有的登录功能情况下,拓展PDA终端的登录方式,支持自定义请求头token来登录。那么着手拓展吧。shiro默认的Session管理,是通过DefaultWebSessionManager来实现的。原创 2023-01-16 17:33:10 · 528 阅读 · 0 评论 -
关于数据库存在数据记录,而Mybatis查询对象为NULL的问题记录
在JavaWeb系统中,开发者查询某表的行数据时,会根据其业务逻辑需要和提高SQL查询效率,不会全部字段数据都查询出来,而是有选择的只查询某些字段数据。本人最近常用的持久层框架是Mybaits,在使用过程中发现一个问题:数据库存在数据记录时,而我们查询的某几个字段为NULL时,其中定义的Mapper方法接收是一个对象的话,其对象不会实例化,是NULL值。 即是,当查询的字段有值时,Mybatis才会实例化对象,并进行set值。原创 2022-06-02 09:04:30 · 1204 阅读 · 0 评论 -
Java 策略模式与模板方法模式设计公用导入数据功能
前言在很多JavaWeb系统中,不同的业务模块都要求有Excel数据导入功能。由于不同的业务表的关系,对应Excel导入功能处理数据业务逻辑不一样,很多同学都是针对各自不同的业务表写不同的导入功能接口,导致多了一些例如下载Excel模板和导入Excel模板等重复性的工作。Java是面对对象的编程语言,在此,在下针对Excel数据导入的功能,剥离其共性与个性,封装了一个公用导入数据模块,让开发者根据专注于业务要点开发。...原创 2022-05-07 11:40:45 · 779 阅读 · 2 评论 -
Java BigDecimal工具类
前言由于在一些业务中,经常使用BigDecimal来做一些计算和百分比计算,为了减少每次手工做非空或者非零处理,故整理一个简单的工具类来使用,特此记录。代码import java.math.BigDecimal;import java.util.Arrays;/** * bigDecial 运算工具 * @author rocky * @date 2022/4/15 09:52 */public class BigDecimalUtils { private BigDecim原创 2022-04-15 09:53:38 · 959 阅读 · 0 评论 -
SpringBoot项目线程一直累加,没有进行回收的问题分析记录
通过jvm自带的jconsole观察到,该项目自从启动后,线程数量一直出于不断增加的趋势,没有线程回收的迹象。原创 2022-03-30 20:58:52 · 4421 阅读 · 0 评论 -
Spring 封装操作日志记录功能
另一种基于AOP的方式来进行记录操作日志的方案。这种方案可以做到对controller层的方法**零侵入性**,以及对需要进行操作日志记录的接口进行集中管理。原创 2021-12-18 23:57:00 · 571 阅读 · 0 评论 -
Java排序算法(一)——归并排序
介绍归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。其排序的速度仅次于快速排序,时间复杂度O(n log n)。Java代码实现/** * 归并排序 * @author rocky * @date 2021/9/10 10:34 */public cl原创 2021-09-10 13:52:53 · 5417 阅读 · 6 评论 -
BarcodeUtils条形码生成/解析工具类
介绍BarcodeUtils是基于Google提供的zxing二维码生成库而整合的一个生成或者解析条形码的工具类。BarcodeUtils采用遵循COC原则,在调用者未声明生成配置时,默认生成编码为UTF-8,尺寸为180*70的条形码,默认图片格式为png。引入依赖 <!--> google zxing <--> <dependency> <groupId>com.google.zxing</group原创 2021-06-03 15:42:45 · 1180 阅读 · 0 评论 -
SpringBoot 国际化配置
前言前天来个新需求,由于客户群体分中国内地、香港和国外,产品那边需要根据客户地区语言来决定系统里面的文案表现。于是给这个SpringBoot项目做上国际化配置。实例代码第一步,在resources资源目录下,创建i18n目录,然后分别创建四个文件:messages.properties、messages_zh_CN.properties、messages_zh_TW.properties和messages_en_US.properties。第二步,在application.yml配置文件里面配置i原创 2021-04-13 23:15:33 · 765 阅读 · 2 评论 -
Java实例化对象过程
实例顺序父类静态对象,静态代码块子类静态对象,静态代码块父类非静态对象,非静态代码块父类构造函数子类非静态对象,非静态代码块子类构造函数实例代码/** * C 类 * @author rocky * @date 2021/3/31 22:11 */public class TestC { public TestC() { System.out.println("The class C constructor"); }}/** * D原创 2021-03-31 22:26:06 · 159 阅读 · 0 评论 -
Spring应用Api版本访问限制实现方案
需求场景Spring服务中,由于业务调整,部分API只针对高版本移动APP开放,低版本APP不允许访问,并提示用户升级应用。不排除在某些场景,部分API只在某个时间段开放,之后进行关闭。实现方案利用Spring AOP特性,自定义注解,作用于controller类或者类名下的请求方法,进行请求拦截,使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。实施过程第一步,自定义注解。package org.oriboy.mock.annotation;import jav原创 2021-03-18 23:03:55 · 381 阅读 · 2 评论 -
链式写法下,net.sf.cglib.beans.BeanCopier.copy NullPointerException的问题
前言由于MVC分层设计的理念,Java后端开发中,会经常面临各种DTO、DO、PO、VO的对象之间的转换。其中,pojo对象大部分字段名与字段类型一致,为了提供开发效率,避免过多收到set,一般开发者会封装属性拷贝工具类。 而我这边用的就是基于net.sf.cglib.beans.BeanCopier封装的工具类。在最近的使用过程中,发现net.sf.cglib.beans.BeanCopier存在一个问题:如果某类set方法采用了链式写法或者有返回值时,属性拷贝不能正常使用,而且还会发生NullPoin原创 2021-02-19 23:18:43 · 1078 阅读 · 4 评论 -
SpringBoot 自定义切面只在controller生效的问题
前几天在一个SpringBoot项目中,封装一个基于注解的切面功能,在测试过程中,发现这个切面逻辑在Service层使用,无论如何都进入不了其中的业务逻辑,但是在Controller层是正常使用。在几番确认Aop配置无误的情况下,通过各种查找资料,最后找到了解决方法。这个项目的权限框架采用Shiro,在自定义实现AuthorizingRealm的UserRelam类中,给注入的Sevice类加上 @Lazy注解后,自定义切面在Service层也正常使用了。@Componentpublic class原创 2021-02-04 00:18:04 · 2276 阅读 · 5 评论 -
Java 优雅地分离验证代码与业务核心代码,减少过多的if-else(优化版)
在过去的一篇文章写过《Java 优雅地分离验证代码与业务核心代码,减少过多的if-else》,利用文章中提及的方式做业务验证,在后续的开发中,慢慢演化诞生了优化版。这个优化版方式,在原来的基础上,结合对Spring IOC容器托管的对象实例处理,达到一个业务验证代码多次复用,而且拓展更好的目的。废话不多说,看Demo。验证接口类:Condition.java/** * 业务验证接口 * @author rocky */public interface Condition<T> {原创 2021-02-03 01:37:10 · 704 阅读 · 3 评论 -
SpringBoot配置MybatisPlus主动填充功能
前段时间,接手一个SpringBoot+MybatisPlus的项目,发现其中的实体类的创建时间和更新时间,都需要开发人员手动写入,十分不方便。之前浏览MybatisPlus的官方文档,MybatisPlus有提供关于主动填充的功能。但接手的项目的情况比较特殊,由于经过多批程序员接手的原因,有的实体类定义创建时间和修改时间为Date类型,有的则是LocalDateTime类型,于是经过研究,采用以下的方案来来进行兼容不同类型的时间类型,并达到主动填充的功能。首先,定义了两个基类:@Datapublic原创 2020-08-12 09:38:42 · 671 阅读 · 0 评论 -
JavaWeb开发走过的坑之一
JavaWeb开发总会碰到几个坑,记录下来,供各位参考。原创 2016-11-11 10:43:23 · 1115 阅读 · 1 评论 -
String、StringBuffer与StringBuilder之间区别
最近学习到StringBuffer,心中有好些疑问,搜索了一些关于String,StringBuffer,StringBuilder的东西,现在整理一下。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下。转载 2017-02-11 12:11:20 · 316 阅读 · 0 评论 -
QRCodeUtils使用文档
介绍QRCodeUtils是基于Google提供的zxing二维码生成库而整合的一个生成或者解析二维码的工具类。QRCodeUtils采用遵循COC原则,在调用者未声明生成配置时,默认生成编码为UTF-8,尺寸为300*300的二维码。当然,如果调用者调用了带有Logo的二维码生成方法,其中LOGO的尺寸为90*90。差点忘了说,生成的图片格式默认为PNG。使用方法将qrcode-...原创 2018-07-28 17:44:00 · 3899 阅读 · 15 评论 -
Java zip打包工具类
先了解一下知识点:java.util.zipZipOutputStream:继承DeflaterOutputStream,该类实现了以ZIP文件格式写入文件的输出流过滤器。 包括对压缩和未压缩条目的支持。ZipEntry:此类用于表示ZIP文件条目。APIpublic void putNextEntry(ZipEntry e) :开始编写新的ZIP文件条目,并将流定位到条目数据的开...原创 2018-10-09 20:57:11 · 1395 阅读 · 3 评论 -
Java 优雅地分离验证代码与业务核心代码,减少过多的if-else
在平常项目开发中,不知道你们有没有遇上这么一个现象:业务模块在进行某个业务运算前, 都要先通过一些验证。随着业务扩展,这些验证越来越多,if-else的写法越来越显得麻烦,而且很多部分不能实现复用。基于为解决以上痛点,我用采用这样的写法,效果还不错。废话不多说,看Demo。验证接口类:Condition.java/** * 验证接口 * @param &lt;T&gt; */publ...原创 2018-11-16 14:24:22 · 1949 阅读 · 6 评论 -
Java设计模式之单例模式
Java设计模式之单例模式原创 2018-12-17 11:59:58 · 254 阅读 · 0 评论 -
java 获取客户端真实IP工具类
随着nginx等工具兴起,单纯采用 HttpServletRequest.getRemoteHost()已经不能获取客户端的真实IP。以下是一个Java获取客户端真实IP工具类。import javax.servlet.http.HttpServletRequest;public class RequestUtil { public static String getRealIp(...原创 2019-06-19 17:08:54 · 1130 阅读 · 0 评论 -
jfinal emoji 表情存储失败解决方案
在阅读本文之前,先去了解下《在MySQL中,“utf8编码”并不是真正意义上的utf8》。看完上述文章后,有的同学开始有疑问了:明明看到表的编码已经设置为了utf8mb4,为什么还是保存不了emoji表情呢?让我们先了解下MySQL字符集方面的内容:MySQL字符集范围服务器层(server) > 数据库成(database) > 数据表(table) > 字段(colu...原创 2019-06-11 16:02:09 · 562 阅读 · 0 评论 -
java 求多个集合的交集工具类
交集,顾名思义,就是在两个以上的集合都出现过的元素组成的集合。以下代码就是在多个字符串的List集合中,获取都出现过的元素。/** * 获取在多个集合出现过的元素 * @param strArrayList 多个集合 * @return List<String> */ public static List<String> f...原创 2019-09-09 10:37:39 · 2631 阅读 · 0 评论 -
jfinal4.1 集成Quartz
第一步,下载Quartz。(http://www.quartz-scheduler.org/)quartz-2.3.0是最新的文档版本。第二步,解压文件,找到对应项目数据库的SQL脚本。SQL脚本位于 /src/org/quartz/impl/jdbcjobstore文件夹下,找到对应的脚本在数据库里面跑一下,会创建以quartz为开头的共7个数据库表。第三步,jfinal项目导入q...原创 2019-09-09 14:31:37 · 579 阅读 · 0 评论 -
java corn表达式生成工具类
/** * corn表达式工具类 * @author rocky * @date 2019/9/16 0:30 */public class CronExpressionUtils { /** * 时间点转换成corn表达式 * 如:2019-04-28 00:30:30,表示定时任务会在2019-04-28 00:30:30执行 * @para...原创 2019-09-17 23:07:03 · 1726 阅读 · 0 评论 -
SSH与Quartz定时器集成
相信接触过微信开发的朋友都会有一种赶脚的感觉。在调用微信JJSSDK时,要做大量的工作,其中一个是每隔两个小时向微信那边请求一个access_token。这个就涉及定时任务的方面。对于这个定时任务,由于项目是采用SSH框架,所以我选择Quartz定时器来调动定时任务。原创 2016-11-14 15:37:52 · 2130 阅读 · 3 评论