java常用技术
文章平均质量分 83
燕少༒江湖
只要努力付出,相信自己,总会有收获,正所谓“天道酬勤”,努力的人是幸运儿!
展开
-
优雅的实现业务数据脱敏
数据在返回给前端之前,遍历数据,对手机号、身份证号、姓名进行脱敏处理,如果有N张报表,我们就需要在N个controller层或者service层去处理,如果脱敏规则改了,就需要改N个controller层或者service层。将脱敏处理规则封装成一个方法,N个controller层或者service层,都使用这个方法,后续改动只改这一个方法,但是这样对controller层或者service层的侵入太强了,不符合高内聚低耦合的设计思想。对于java开发人员,就需要对手机号、身份证号、姓名进行脱敏处理。原创 2022-09-23 18:29:43 · 649 阅读 · 0 评论 -
https协议类型的接口忽略SSL验证
https协议类型的接口忽略SSL验证原创 2022-09-16 21:29:01 · 2093 阅读 · 0 评论 -
no main manifest attribute, in ./XXX.jar,如何解决?
1、no main manifest attribute, in ./XXX.jar,如何解决?2、springboot三种打包方式原创 2022-08-12 18:45:25 · 13066 阅读 · 1 评论 -
Mybatis-BaseTypeHandler实现Dao层数据加解密
Mybatis官方文档需求:数据库保存的数据需要加密,然后查询的时候解密具体方法:继承BaseTypeHandler,然后重写具体的set、get方法 public abstract void setNonNullParameter(PreparedStatement var1, int var2, T var3, JdbcType var4) throws SQLExcept...原创 2020-03-10 11:12:02 · 1586 阅读 · 0 评论 -
log4j 配置日志级别是INFO,但控制台输出的日志却是DEBUG?
log4j 配置日志级别是INFO,但控制台输出的日志却是DEBUG? 如果确定配置文件日志级别是info,又可能jar包有冲突,看一下依赖的jar中是否有logback,直接去掉或者排除logback相关引用,然后查看控制台打印的日志级别是否正常IDEA查看具体引用的方式第一步:第二步:crtl+F搜索具体jar包...原创 2020-03-05 10:49:50 · 6935 阅读 · 1 评论 -
DES与3DES加解密
一、DES和3DES的概念二、需求背景 我们在线上经常使用DES加密用户id,以下简称(encodeId),后端传个前端,前端会使用localStorage保存encodeId,然后调用接口时将encodeId作为入参,后端通过encodeId区分每个用户,返回前端相应数据,但是DES加密有被破解的报道,现在使用3DES对用户id,省份证号等敏感信息进行加解密,暂时没有被攻破的...原创 2018-12-10 15:13:29 · 3220 阅读 · 5 评论 -
springBoot项目中,如何根据不同的环境,打包不同的配置文件(maven)
1、创建springboot项目,然后创建不同的resource2、application.properties加上一个标志,方便测试3、在pom.xml中定义全局配置信息<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...原创 2018-12-20 12:05:13 · 7668 阅读 · 7 评论 -
二、elastic-job 项目打包
上一篇:elastic-job、elastic-job-lite-console使用案例1、pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/...原创 2018-12-06 11:22:09 · 481 阅读 · 0 评论 -
org.apache.commons.commons-lang3工具类(一)
本文只是简单的介绍了commons-lang3中的SystemUtils、StringUtils、ArrayUtils这三个工具类中常用的方法,我已经例举了很多方法。commons-lang3中可以让我们写的代码更加的优雅、提供开发效率,最重要的是我们自己写的工具类有可能出现奇怪的问题。对了,Google的guava也是非常好用的工具包! 代码中的注释我写的很详细了,...原创 2018-12-29 18:26:09 · 3868 阅读 · 1 评论 -
spring-自定义校验注解
java注解编程:https://blog.csdn.net/u014292162/article/details/53001224 1、ValueValidNotNullpackage com.cn.dl.controller;import javax.validation.Constraint;import javax.validation.Payload;impo...原创 2019-01-10 13:44:18 · 3079 阅读 · 1 评论 -
解决elastic-console在项目部署启动之后没有触发按钮
a、elastic-job和elastic-console使用:https://blog.csdn.net/qq_31289187/article/details/84843044b、elastic-job项目打包:https://blog.csdn.net/qq_31289187/article/details/84848975一、问题: elastic-console...原创 2019-01-12 13:20:53 · 2742 阅读 · 4 评论 -
更优雅的解析文档中的字段-CsvToBeanBuilder
1、引入jar <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.4</version>原创 2019-01-08 23:06:06 · 4212 阅读 · 0 评论 -
javaBean校验-Validator、@Valid
参考资料:1、https://www.ibm.com/developerworks/cn/java/j-lo-beanvalid/2、https://blog.csdn.net/neweastsun/article/details/78509977 (这位老哥的博客非常给力)3、Springboot 表单数据校验4、spring-自定义校验注解常见的表单校验触发是下面这种方式...原创 2019-04-11 20:34:05 · 712 阅读 · 0 评论 -
使用@Validated校验请求参数
1、pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </depende...原创 2019-07-01 20:20:37 · 4254 阅读 · 0 评论 -
maven-archetype多模块骨架创建以及使用
一、背景 最近部门的项目进行多模块拆分,一个maven模块里包含多个maven子模块,为了方便创建多模块,部门年轻的架构师(我很佩服他)用maven-archetype来创建多模块骨架,然后创建多模块就方便多了。二、创建多模块骨架1、首先创建父模块 <groupId>com.cn.dl</groupId> <artifact...原创 2019-08-06 21:47:53 · 2759 阅读 · 1 评论 -
一、elastic-job、elastic-job-lite-console使用案例
解决elastic-console在项目部署启动之后没有触发按钮:https://blog.csdn.net/qq_31289187/article/details/86355924关于配置文件每个属性的作用、怎么配置,参考当当网提供的文档就OK了 elastic-job源码 配置cron表达式,如果不了解的,有一个生成cron表达式神器一、elastic-job是当当网开源的分布式框架......原创 2018-12-05 22:11:44 · 8826 阅读 · 14 评论 -
com.alibaba.fastjson常用的SerializerFeature
个人笔记SerializerFeature.WriteNullListAsEmpty , // List字段如果为null,输出为[],而非nullSerializerFeature.WriteNullStringAsEmpty, //字符类型字段如果为null,输出为”“,而非nullSerializerFeature.WriteDateUseDateFormat, //如果时间是da...原创 2018-11-27 10:29:16 · 7253 阅读 · 1 评论 -
Lombok,一个神奇的插件
1、什么是Lombok Lombok是通过注解达到不需要手动给bean添加get、set、toStirng、equals等方法的插件,编译之后就可以在对应的class文件中看到get、set、toStirng、equals等方法。 2、Idea安装Lombok插件:点击File->Settings->plugin->直接搜素lombok插件->点击安装->重启...原创 2018-07-03 15:33:06 · 1113 阅读 · 2 评论 -
springBoot2.0-通过注解实现拦截器
一、目的在web项目中,定义拦截器就是为了防止用户没有登录而可以访问app、网页等,常用的方式就是拦截所有请求,从session中获取用户实例对象,判断是否为空。这种拦截,完全可以通过token和注解实现拦截,在调用action之前,判断是否登录,这种方式更加灵活多变。二、注解小案例1、需求:定义了一个Persion类,四个属性:分别是姓名、年龄、电话号码、性别,分别对应四个get......原创 2018-07-12 19:56:15 · 8224 阅读 · 1 评论 -
通过maven,给没有pom文件的jar包生成pom文件,maven项目引入本地jar包
问题一:经常遇到公司私服或者中央仓库没有的jar包,然后通过各种渠道找到了解决问题的jar包,但是发现没有pom文件,maven项目引入之后,还有maven在本地仓库找不到对应jar包的pom文件,打包的时候会在私服下载对应jar包的pom文件而抛出异常,通过maven就可以解决这个问题。前提是你安装了maven,然后在命令行执行命令就OK了!!![ERROR] Failed to ex......原创 2018-07-19 16:49:16 · 48850 阅读 · 6 评论 -
springboot-mongodb应用
学习mongodb的网址:https://www.mongodb.com/http://www.runoob.com/mongodb/mongodb-tutorial.htmlhttps://www.yiibai.com/mongodb/http://www.mongoing.com/一、mongodb的优缺点: 优点: 1、每一个json不是固定字段、固定字段类型,...原创 2018-07-31 13:16:32 · 480 阅读 · 2 评论 -
mogodb聚合查询
例:统计查询总成绩排名前五的学生信息,学号、姓名、年龄、电话号码、英文成绩、数学成绩,总成绩mysql中进行数据统计select student_id,NAME,age,phoneno,english_score,math_score,sum(ifnull(english_score,0)+ifnull(math_score,0)) as total_score from student...原创 2018-09-25 16:53:22 · 170 阅读 · 3 评论 -
springboot2.0从apollo读取配置
参考:https://github.com/nobodyiam/apollo-build-scripts本篇文章包括两点:Windows环境下apollo单机搭建、springboot2.0从apollo读取配置一、windows环境下aollo单机搭建1、环境:JDK1.8,mysql 5.7.23,git-2.1.9(执行apollo的启动脚本)2、下载apollo安装包......原创 2018-11-16 13:46:40 · 24865 阅读 · 6 评论 -
springboot2.0-统一处理返回结果和异常情况
一、统一处理返回结果和异常处理的原因:1、在springboot项目里我们希望接口返回的数据包含至少三个属性:a、code:请求接口的返回码,成功或者异常等返回编码,例如定义请求成功,code = "0000",查询结果为null,code = "0001";b、msg:请求接口的描述,也就是对返回编码的描述,"0000":就表示请求成功,"0001":表示结果为null;c、da......原创 2018-10-09 13:53:24 · 41561 阅读 · 8 评论 -
mogodb不区分大小写查询
菜鸟教程-mogodb学习一、不区分大小写的正则表达式如果检索需要不区分大小写,我们可以设置 $options 为 $i。以下命令将查找不区分大小写的字符串 runoob:>db.posts.find({post_text:{$regex:"runoob",$options:"$i"}})集合中会返回所有包含字符串 runoob 的数据,且不区分大小写:{ ...原创 2018-10-10 14:08:26 · 3540 阅读 · 0 评论 -
一、springboot中使用拦截器记录日志(日志框架-logback)
一、在分布式项目中,会出现很多跟踪某个用户的每一次请求,定位用户请求过程中出现的问题,统计接口的响应时间、效率等。比如定位用户请求过程中出现的问题,这就需要知道用户请求的是哪个接口,即知道URI、请求参数,在接口中出现了什么问题,如果在日志中没有打印用户的请求参数、没有记录同一次请求相同的id之类的参数、那么定位问题是非常痛苦的。常见的日志框架有:log4j、log4j 2、 slf4j,Comm......原创 2018-10-29 22:01:27 · 6615 阅读 · 8 评论 -
JDK8新特性-Map遍历比较
菜鸟教程,有很多入门教程1、案例package com.cn.dl;import java.util.HashMap;import java.util.Map;import java.util.Set;import java.util.stream.Collectors;/** * JDK8新特性,stream流,Map集合遍历 * Created by Tiger o...原创 2018-11-05 13:11:30 · 15028 阅读 · 2 评论 -
JDK8-lambda表达式以及接口可以定义默认方法
一、Lambda表达式1、Lamdba Lambda 允许把函数作为一个方法的参数,使用Lamdba可以让开发的代码更加简洁,但是易读性差,新人不了解Lamdba表达式或者代码功底有点差,不容易读懂大佬们写的代码了。2、Lamdba语法格式(parameter1,parameter2.....) -> {expression;};参数可以是多个,也可以是1个,...原创 2018-11-19 19:59:35 · 2470 阅读 · 0 评论 -
springboot-监听apollo配置
一、从apollo读取配置:包括apollo本地搭建和从apollo读取配置的基本方法二、监听apollo配置1.1、目的:当我们把一些配置放在apollo中,但是里面有一些可变的配置,由于要测试,或者需求更改,或者其它问题,apollo有的配置总之会修改,如果不加监听apollo配置的方法,我们每次修改配置之后都需要重启服务,非常麻烦。2.1、ApolloDemoTestAppli......原创 2018-11-22 19:15:12 · 7756 阅读 · 4 评论 -
springboot-通过注解和aop实现分布式锁
一、原因1、在分布式项目中,用户触发插入、更新等操作,我们只需要其中一个服务执行,如果不加分布式锁,后果很严重二、方法1、分布锁一般通过redis实现,主要通过setnx函数向redis保存一个key,value等于保存时的时间戳,并设置过期时间,然后返回true;2、当获得锁超过等待时间返回false;3、通过key获取redis保存的时间戳,如果value不为空,并且当前时......原创 2018-11-24 18:52:16 · 2979 阅读 · 0 评论 -
深入理解hash
转自:https://blog.csdn.net/ZBylant原文地址散列(哈希)函数到底是干嘛的?和哈希表是啥关系?其主要作用和应用场景到底在哪里?简单来说 散列函数主要就是:将一个二进制串 通过一定的算法计算以后 得到一个新的二进制串。这个计算的方法就是散列函数。 也叫哈希函数,得到的值就是哈希值那么要设计一个散列函数还需要几个特性:1.通过哈希值不能得到原始的值。 这个很...转载 2018-11-24 19:00:06 · 179 阅读 · 1 评论 -
JDK新特性-LocalDateTime
菜鸟教程一、写代码经常用到时间格式化,时间相加减(想知道前一天和后一天,等等),Java 8通过发布新的Date-Time API (JSR 310)来进一步加强对日期与时间的处理。二、主要内容1、NewDateUtils类JavaDoc开发文档2、NewDateEnum:几种实际开发中用到的时间格式package com.dl.jdk18;import java.tim...原创 2018-12-04 17:19:17 · 757 阅读 · 0 评论 -
mybatis和mysql:java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Integer
在mapper中写以下sql:/** * 获取未读系统消息、邀请消息的分别多少条 * @param user_id * @return * */ @Select("SELECT " + "SUM(CASE WHEN info_status = 0 AND info_type = 0 THEN 1 ELSE 0 END) AS...原创 2018-07-16 13:29:36 · 7502 阅读 · 2 评论