JAVA
蒋固金
天下大事必作于细,天下难事必作于易
展开
-
JAVA加密解密之对称加密
需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。原创 2016-01-18 14:50:52 · 2444 阅读 · 0 评论 -
JAVA加密解密之3DES(TripleDES)
3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。原创 2016-01-18 15:18:08 · 5528 阅读 · 6 评论 -
JAVA加密解密之PBE(Password Based Encryption)算法
(Password Based Encryption,基于口令加密)是一种基于口令的加密算法,其特点是使用口令代替了密钥,而口令由用户自己掌管,采用随机数杂凑多重加密等方法保证数据的安全性。PBE算法在加密过程中并不是直接使用口令来加密,而是加密的密钥由口令生成,这个功能由PBE算法中的KDF函数完成。原创 2016-01-18 15:34:15 · 3839 阅读 · 0 评论 -
JAVA加密解密之RSA算法
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。原创 2016-01-18 15:46:14 · 3424 阅读 · 0 评论 -
JAVA加密解密之DH(Diffie-Hellman)算法
Diffie-Hellman:一种确保共享KEY安全穿越不安全网络的方法,它是OAKLEY的一个组成部分。Whitfield Diffie与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm).这个机制的巧妙在于需要安全通信的双方可以用原创 2016-01-18 15:38:03 · 10275 阅读 · 10 评论 -
JAVA加密解密之DSA(Digital Signature Algorithm)算法
DSA算法简介DSA-Digital Signature Algorithm是Schnorr和ElGamal签名算法的变种,被美国NIST作为DSS(DigitalSignature Standard)。简单的说,这是一种更高级的验证方式,用作数字签名。不单单只有公钥、私钥,还有数字签名。私钥加密生成数字签名,公钥验证数据及签名。原创 2016-12-02 22:45:25 · 15611 阅读 · 0 评论 -
JAVA循环冗余校验(CRC32)
CRC32简介CRC校验实用程序库 在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。在诸多检错手段中,CRC是最著名的一种。CRC的全称是循环冗余校验。原创 2016-12-03 14:23:14 · 11742 阅读 · 0 评论 -
JAVA加密解密之凯撒加密(Caesar cipher)算法
凯撒加密算法简介凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为z,x会被替换为a原创 2016-12-03 19:38:04 · 13654 阅读 · 1 评论 -
JAVA加密解密之数字证书
系统之间在进行交互的时候,我们经常会用到数字证书,数字证书可以帮我们验证身份等。原创 2016-12-06 14:37:46 · 6586 阅读 · 5 评论 -
JAVA自定义日期选择器
用java swing写的一个日期选择器原创 2016-12-09 21:05:11 · 6035 阅读 · 0 评论 -
Java整型缓存(-128 ~ 127)
在开始这篇博文之前,我们先来看一段代码:Integer i1 = 100;Integer i2 = 100;Integer i3 = 200;Integer i4 = 200;System.err.println(i1 == i2);System.err.println(i3 == i4);这段代码的输出结果会是多少呢?结果可能会与我们预计的不太一样,第一个会打印true,第二...原创 2016-12-19 15:02:42 · 1513 阅读 · 0 评论 -
JAVA文件监听
这一片博客将介绍通过JAVA实现监听文件的变更,提供一种解决方案原创 2016-01-16 12:47:15 · 2923 阅读 · 0 评论 -
JAVA静默加载Class
有时候在开发的时候,我们有这样的场景,我们只想得到一个Class的基本信息,但是并不想触发相关的静态代码块,在之前的一篇《JAVA扫描包》博文中就用到了这种方式,我将其称之为静默加载,如果有专业的叫法,欢迎指正。原创 2017-04-28 10:12:39 · 1363 阅读 · 0 评论 -
Java验证身份证号是否合法
身份证作为居民的唯一标识。在很多系统中需要用户输入身份证号信息,今天我们就来编写一个方法验证身份证号的合法性。首先我们来看看身份证号的编码规则: 前1-2位数字表示:所在省(直辖市、自治区)的代码; 第3-4位数字表示:所在地级市(自治州)的代码; 第5-6位数字表示:所在区(县、自治县、县级市)的代码; 第7-14位数字表示:出生年、月、日; 第15-16位数字表示:所在地的派出所...原创 2016-06-22 11:26:16 · 14696 阅读 · 9 评论 -
Java快速查找21位花朵数
以前备赛的时候遇到的算法题,求所有21位花朵数,分享一下,供大家参考,效率已经很高了。原创 2016-12-09 21:57:19 · 2696 阅读 · 0 评论 -
Certificates does not conform to algorithm constraints
Certificates does not conform to algorithm constraints原创 2016-12-02 16:54:17 · 5336 阅读 · 0 评论 -
eclipse通过maven远程发布应用到Tomcat
一般情况下,我们发布应用到服务器需要现将应用导出成war包,然后连接服务器部署更新,这样是很耗时的,而且不方便,作为一名程序员要寻找尽可能简洁的方式去处理类似应用发布的重复的操作。原创 2016-10-09 17:51:04 · 4141 阅读 · 0 评论 -
JAVA获得版本号以及字节码编译版本
公司的开发环境比较老,寻找一些jar包的时候总是会纠结对应的编译版本,感觉很麻烦,所以写了一个工具类用于读取class或jar文件的编译版本,供大家参考。package com.jinggujin.util;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;impor...原创 2017-06-07 14:26:16 · 2329 阅读 · 4 评论 -
Java读取图像metadata信息
最近在做一个项目的时候需要要用的解析图像的拍摄时间,这些信息用图像查看工具基本都可以看到,之前有研究过MP3的文件格式,通过一些Tag来标记文件的一些信息,受此启发,猜测图像应该也有类似的机制。本章介绍两种常用读取Exif信息的包原创 2017-07-29 15:33:13 · 8113 阅读 · 0 评论 -
Spring内置任务调度实现添加、取消、重置
使用Spring的任务调度给我们的开发带来了极大的便利,不过当我们的任务调度配置完成后,很难再对其进行更改,除非停止服务器,修改配置,然后再重启,显然这样是不利于线上操作的,为了实现动态的任务调度修改,我在网上也查阅了一些资料,大部分都是基于quartz实现的,使用Spring内置的任务调度则少之又少,而且效果不理想,需要在下次任务执行后,新的配置才能生效,做不到立即生效。为大家提供一个思路。原创 2017-09-11 20:15:43 · 14425 阅读 · 6 评论 -
Android Studio 3.0集成Butter Knife8.8.1错误
随着双十一的到来,大家都在忙着剁手,而我却忙着填坑,各位看官准备好小板凳,且听小弟慢慢道来。原创 2017-11-11 17:13:12 · 6156 阅读 · 1 评论 -
JAVA多线程机制之线程创建
在Java中创建线程有两种方式,一种是继承Thread,另一种是实现Runnable接口,Thread实际上也实现了Runnable接口。原创 2016-01-04 15:54:39 · 2584 阅读 · 2 评论 -
SpringBoot集成MyBatis、PageHelper和通用Mapper
之前一直用SSM框架,今天尝试了一下将MyBatis、PageHelper和通用Mapper进行整合,所以将整合过程记录作为后续查看之用。原创 2017-12-28 21:42:10 · 1666 阅读 · 0 评论 -
SpringBoot全局异常处理
系统的异常处理一直是我们在开发过程中的一个痛点,今天就为大家介绍一下如何在SpringBoot中进行异常处理,希望对大家有所帮助。方案一:ControllerAdvice 新建一个用于异常处理的类,为其添加ControllerAdvice注解,然后配合ExceptionHandler注解添加异常处理方法。 举个栗子:package com.jianggujin.hr;impor原创 2018-01-30 16:46:02 · 2907 阅读 · 2 评论 -
SpringBoot全局异常处理(续)
在上一篇《SpringBoot全局异常处理》中介绍了两种处理全局异常的方案,今天我们继续来探讨一下如何更好地处理异常,比如:404之类的错误。首先来怀念一下默认的错误页面,默哀三分钟。 哈哈,SpringBoot默认的错误页面就是一个白底页面加了一些错误信息。我们今天要解决的问题就是在之前处理异常的基础上来修改默认的错误页面,即自定义诸如404、500酱紫的错误页面,关于处理这些问题的博...原创 2018-01-31 16:36:24 · 2091 阅读 · 0 评论 -
JAVA添加托盘图标和托盘弹出式菜单
很多程序在运行的过程中会在系统的托盘区域添加托盘图标,方便用户快捷操作,如QQ等,在JDK1.6及其以后的版本中,JAVA也提供了对系统托盘图标的支持。 我们以系统上的网络连接托盘图标为例,首先,我们也准备一张托盘图标,建议分辨率:16*16,支持jpg、gif、png等格式,不支持ico格式的,这是需要注意的。 import java.awt.Image;import java.a原创 2016-01-25 09:44:19 · 8703 阅读 · 9 评论 -
Java网络代理设置
因为工作需要,我们平时的开发都是在云桌面中进行的,云桌面存在网络限制,必须要用代理才能够访问网络,之前针对这种情况在我们自己封装的网络请求包中添加了相关代理的配置,但是最近开发中需要依赖第三方的包,在该包中会用自己实现的网络请求工具请求数据,这样的话,之前的配置就无效了,所以在测试这部分功能的时候,需要使用全局代理配置,下面简单介绍下几种配置方式。浏览器配置1、进入Internet选项...原创 2018-03-27 11:30:00 · 4139 阅读 · 0 评论 -
JAVA使用easyexcel操作Excel
之前写过一篇《JAVA操作Excel》,介绍了jxl和poi读写Excel的实现,今天为大家介绍一下使用easyexcel对Excel进行读写,项目主页地址:https://github.com/alibaba/easyexcel作者对easyexcel的介绍是: Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,po...原创 2018-05-04 22:40:48 · 157687 阅读 · 67 评论 -
JAVA压缩JS或CSS文件
平时开发过程中使用的js或css文件基本都是未经压缩的方便调试,在真正上线后一般都会使用压缩后的文件,我们可以使用一些工具进行压缩,我们也可以通过JAVA代码自己实现文件的压缩,今天为大家介绍的是使用YUI Compressor实现的方式。首先在maven中添加pom坐标<dependency> <groupId>com.yahoo.platform.yui&...原创 2018-05-05 09:17:05 · 3181 阅读 · 0 评论 -
Java判断图像相似性
判断图像的相似性主要用于图像的去重,一种验证相似性的思路是先将图像进行缩放至指定尺寸,然后进行灰度处理,去掉颜色特征,最后对处理后的图像计算哈希值,通过比对不同图像的哈希值的汉明距离来判断图像是否相似,下面我们直接上代码:package com.jianggujin.image;import java.awt.Graphics2D;import java.awt.color.Colo...原创 2018-05-05 14:20:36 · 2350 阅读 · 0 评论 -
Java操作注册表
从JDK 1.4开始,Java在java.util下加入了一个专门处理用户和系统配置信息的java.util.prefs包,其中一个类Preferences是一种比较“高级”的玩意。从本质上讲,Preferences本身是一个与平台无关的东西,但不同的OS对它的SPI(Service Provider Interface)的实现却是与平台相关的,因此,在不同的系统中你可能看到首选项保存为本地文件、...原创 2018-05-16 16:29:01 · 5065 阅读 · 11 评论 -
Druid Spring Boot Starter配置aop无效
Druid Spring Boot Starter 用于帮助你在Spring Boot项目中轻松集成Druid数据库连接池和监控。具体配置请参考这里,但是在使用aop-patterns配置的时候发现Spring监控无效,下面介绍一下解决方法,我用的版本是:1.1.10。 如果SpringBoot的配置使用的是properties文件,该配置正常。如果使用yml作为配置文件,则该配置无效,看一下相...原创 2018-06-20 21:11:30 · 5965 阅读 · 3 评论 -
JAVA动态加载或卸载JAR包
在模块化开发的时候,我们经常会把一个模块的内容打包成一个FAT JAR,然后加载,实现模块的热加载,对于热加载的实现并不复杂,我们只需要定义自己的加载器,然后继承URLClassLoader就可以了,但是我们会发现一个问题,加载后的JAR 会被JAVA占用无法删除,所以如果我们的程序里面希望在不停机的情况下完全卸载模块就需要稍微处理一下,幸好,在JDK1.7中的URLClassLoader提供了c...原创 2018-06-01 12:23:05 · 17933 阅读 · 2 评论 -
JHttp使用文档
简介JHttp是用java 编写的用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,基于原生的HttpUrlConnection实现,支持:GET、POST、PUT、DELETE、PATCH,HEAD、OPTIONS、TRACE请求,可以适应绝大部分业务场景,并提供了丰富的请求操作的API,使开发者更加方便快捷的完成HTTP的请求工作。可以从Github或码云获取代码。...原创 2018-07-16 11:17:31 · 2013 阅读 · 3 评论 -
记一次发布项目到Maven
用了这么久的maven,第一次向中央仓库贡献代码,本编博客作为一次记录。 首先我们需要访问:https://issues.sonatype.org/secure/Signup!default.jspa注册一个帐号,后面与工作人员沟通都需要在这里完成。 注册的用户名密钥要记住,注册的邮箱一定是常用的有效邮箱,后面会通过该邮箱进行沟通注册完成后登录系统,我们需要创建一个Issue ...原创 2018-07-23 21:01:45 · 299 阅读 · 2 评论 -
JAVA使用ServiceLoader加载服务
ServiceLoader是SPI的是一种实现,所谓SPI,即Service Provider Interface,用于一些服务提供给第三方实现或者扩展,可以增强框架的扩展或者替换一些组件。 其实关于ServiceLoader,我们平时虽然很少用到,但是却在背后为我们做了很多事情,最常见的就是JDBC的操作了,相信大家对DriverManager类并不陌生,我们可以通过该类加载驱动并获得数据库连...原创 2018-07-13 14:35:01 · 10919 阅读 · 0 评论 -
Cipher输入输出流
在java中提供了CipherInputStream和CipherOutputStream用于加解密的流处理,但是我在实际使用中发现会有一些莫名其妙的问题,数据丢失等,所以重写了两个流处理类。package com.jianggujin.codec.util;public interface JCipherStream { /** * 长度为0的字节数组, 在编码解码时需...原创 2018-08-04 12:35:14 · 1288 阅读 · 1 评论 -
JAVA字节数组转十六进制字符串
常见的MD5等摘要运算的结果都是字节数组,通常我们见到的是转换后的十六进制字符串,今天就分享一下转换的代码。package com.jianggujin.codec;public class JHex { private static final char[] DIGITS_UPPER = { '0', '1', '2', '3', '4', '5', '6', '7', '8...原创 2018-08-04 13:03:38 · 3868 阅读 · 2 评论 -
JCodec用法
JCodec包含了常用的编码、加解密的JAVA实现。Maven:&amp;lt;!-- https://mvnrepository.com/artifact/com.jianggujin/JCodec --&amp;gt;&amp;lt;dependency&amp;gt; &amp;lt;groupId&amp;gt;com.jianggujin&amp;l原创 2018-08-11 13:00:29 · 3717 阅读 · 1 评论 -
JAVA代码添加License
在开源代码的时候,我们经常会在代码顶部添加License信息,每个文件复制粘贴显然是比较麻烦的,所以写了一个工具类方便为源码添加License部分,供大家参考,可以按照实际情况进行修改。import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.ByteArrayOutputStream;imp...原创 2018-08-07 16:39:01 · 14392 阅读 · 2 评论