分享随机数和唯一ID的工具类

随机数一般也是会被常使用到的,比如在造一些模拟测试数据的场景,或者说是非高端应用的场景会被使用。而全局唯一ID的使用则相反,应用场景更广,更专业,更科学,比如在批量保存数据时,需要提前生成ID等(请注意随机数与UUID两者是不同的东西)。本次就分享一下个人这些年所涉及到的一些实现方式,基本上是罗列呈现一下,至于实现原理和更科学的应用就需要读者自行深入了,所以,参考如下。 随机数 Java里面提供的随机数产生方式列举了其中的4种,大多数也可以随机出Integer、Long、Float、Double、Boolean,或指定范围内大小的随机数,参考代码如下。 @Test publicvoidmath(){ System.out.println("随机数0-1之间:"+Math.random()); System.out.println("随机数0-1000之间:"+(int)(Math.rand...

文章分类:工作中积累

小技巧

分享BigDecimal金额计算的4种方式

基本介绍 金额计算这块通常都是基于2位小数的四舍五入,如果是自己的系统内部功能金额位数一般都是固定的,在正常的加减乘除运算逻辑都是保留同样位数的,但是乘法和除法相对比较特殊,在计算小数的部分可能会计算出更多位数的小数点,如若需要将计算后的金额数据与某个值进行对比时,就需要考虑数据部分的完全相等了,在应对此种情况的数据逻辑时常见的有两种,第一种是两个数值相见,取绝对值的误差阈值,若在允许的阈值范围内(比如两个数值都是最多2位小数,阈值设置为0.0001),则认为它们是相等的;第二种则是需要知晓该金额在计算过程中所使用的计算方式,采用统一的计算方式计算得出同样的结果即可。 去年实现的一个功能中正好就使用到了多种小数位数的计算方式,大概是4种:四舍五入、截位法、四舍六入五成双、正舍负入(实际还有更多种),这些数据的计算都可以有相关的代码计算方式得出,本次主要分享Math和BigDecimal,参...

文章分类:工作中积累

小技巧
封面图片

h2database的集成和使用

1.基本介绍 记得在学习研究Spring Session JDBC部分的知识时,从官网的示例中看到了引用了com.h2database坐标,当时的主要目的在于Spring Session JDBC部分,只是略微的注意到了有个在线操作数据库的组件,当时也只是在线登录访问了一下而已。本次则是浅浅的来整合一下该组件,将其整合在Spring Boot的项目环境的示例程序中(在查看该组件的源码时发现是面向JSP程序编写的,索性它并没有使用JPS模板引擎来渲染页面,否则就只能使用外部的Tomcat来运行了,因为Spring Boot默认不支持渲染JPS,打包方式需要为war,不能直接使用jar类型的应用程序访问JSP),在Java Servlet和Spring MVC类型的项目中也同样支持,可参见《摸索Spring Session之基于XML配置版的JDBC介绍》。 网上许多的Spring Boot整...

文章分类:工作中积累

封面图片

去除zxing生成二维码的白色边距

1.背景介绍 最近在做一些期刊类的素材时使用到了生成二维码的功能,实际在8-9年以前就实践过二维码的生成,当时还做了一个在线生成的示例,可以自定义宽度、高度、内容、logo小图标(小图标有多种位置可选),本次拿来使用时发现以前的二维码确实还有一个白边问题存在,时隔多年发现这种问题搜索起来一大片,实际能起到作用的却是非常少,所以本次记录一下解决的方式,采用修改源码的方式,将源代码拷贝至项目中(保持包路径名称与jar中一致),利用IDE优先加载项目中的class的特点来覆盖jar中class文件的特性,起到更改源码生效的目的。(PS:若使用启动脚本来运行的程序,比如java -cp时指定的classpath同样是支持优先加载顺序的,详见本站提供的Spring Boot应用程序打包篇) 回归主题,本篇文章主要是解决使用zxing组件生成二维码时的白边问题,所谓白边则是指生成的二维码图片的大小并不...

文章分类:工作中积累

二维码

Java压缩和解压缩(六)总结二

前面一篇总结《Java压缩和解压缩(五)总结一》算是对压缩和解压缩的组件进行了一次介绍,本次将对于使用它们在实际项目中的应用层面的总结,针对于我个人所遇到的实际需求场景,也许这些总结也就只适合我这边,读者仍需站在自己的需求场景进行自身评估。 1. 需求场景 (1)每天需被动解析成百上千个压缩包文件,以解压缩文件为主,文件名称不限制; (2)解压缩的文件各种各样,可以是用户自己生成的压缩包,也可以是用代码生成的压缩包,比如可以是Windows、Linux、Mac等多平台生成的; (3)解压缩的文件格式支持多种常见格式,比如zip、7z、rar(rar还区分4和5的版本); (4)解压缩的文件需要支持密码解压,解密文件时区分加密文件名(打开压缩包文件时无法获取文件的列表,不知道压缩的源文件是什么名字)和普通的密码加密(不知道密码时可以知晓源文件的文件名称); 2. 技术选型 在编码之初,本着多...

文章分类:工作中积累

Java压缩和解压缩

Java压缩和解压缩(五)总结一

1.基本介绍 本文将是对前面4篇Java压缩和解压缩的实现总结,包括个人的经验总结。总的来说更多的还是建立在运用的层面,对于更多的理论知识和底层实现原理层面的还需要看个人自己的掌握程度,如果有兴趣还是建议自行去各个官网上查阅资料,或者使用其它自己熟练掌握的学习方式进行深度研究。 使用Java压缩和解压缩文件的实现,目前掌握的有JDK内置的java.util.zip包、开源项目zip4j、开源项目Apache Commons Compress、开源项目7-Zip-Jbinding,实际还有一种就是使用Java的Runtime类,来调用系统本地安装的压缩软件,通过cmd的命令行来执行文件的压缩和解压缩,但这种方式一半还是不特别建议使用,也算是不得已时的一种实现方案。本文将介绍前面4种实现方式,详细参考如下文所示。 2.JDK内置 Java内置的java.util.zip包,无需其它第三方依赖,...

文章分类:工作中积累

Java压缩和解压缩
封面图片

Java压缩和解压缩(四)7-Zip-Jbinding实践

1.基本介绍 7-Zip-jbinding是一个免费的跨平台java绑定7-Zip免费压缩/解压缩库,7z archiver引擎的Java包装器,内置了多个动态链接库文件来适配不同的操作系统,支持Linux、Windows、Mac,以及32/64位系统的支持,可实现应用的跨平台,支持多种压缩格式的文件,如:7zip、zip、gzip、rar(rar4和rar5)、tar、iso 等多种常见格式;支持压缩包文件的提取、分割卷的提、支持密码的压缩和解压缩、多线程等,对于程序的自动适配和兼容支持的比较友好。 7-Zip-JBinding 是一个c++版7-Zip的封装,由两部分组成:java部分和本机部分。java部分介绍了7-Zip库的跨平台java接口,7-Zip-jbinding的本机部分通过java jni接口与java部分通信,并使用相应的本机7-Zip接口进行操作,所以它的性能要比j...

文章分类:工作中积累

Java压缩和解压缩

Java压缩和解压缩(三)Apache Commons Compress实践

1.基本介绍 Apache Commons Compress库定义了一系列操作文件压缩和解压缩的API,用于处理多种格式的文件(zip、gzip、tar、7z、jar等等),最新版本为1.2.2,JDK最低版本限制为1.8版本,这个项目组件中的代码有许多不同的起源,根据解压文件格式的不同区分,有不同的几个实现来源。对于最基本的zip格式文件提供的功能超越了java.util.zip中的实现。 本次研究Apache Commons Compress项目组件的实现主要是针对7z格式的压缩和解压缩,但是在进行源码分析实现和官网资料的了解后发现该项目支持读取7z格式的加密文件,但不支持写入加密文件,也就是说它的API不支持创建7z格式的加密实现,参考官网地址:“https://commons.apache.org”,源码地址:“https://gitbox.apache.org/repos/asf...

文章分类:工作中积累

Java压缩和解压缩

Java压缩和解压缩(二)Zip4j实践

1.基本介绍 Zip4j-用于zip文件/流的Java库,作用于zip文件或流的最全面的Java库,它还支持zip加密和解密,使得处理zip文件/流的代码实现更加容易,甚至可以是一行代码【项目作者非常谦虚的认为没有冒犯到Java的内置zip实现】,这个库的主要目标是为所有人提供一个简单的API zip文件或流,常见操作是在库中执行繁重的操作,而不需要开发人员担心除了可用性之外,这个库的另一个重要目标是为尽可能多的zip功能,有以下几个特征(翻译于Github上的项目主页https://github.com/srikanth-lingala/zip4j): (1)创建、添加、提取、更新、从zip文件中删除文件; (2)支持流(ZipInputStream和ZipOutputStreat); (3)读/写受密码保护的zip文件和流; (4)支持AES和zip标准加密方法; (5)支持Zip64...

文章分类:工作中积累

Java压缩和解压缩

Java压缩和解压缩(一)JDK内置zip操作

1.基本介绍 操作压缩包文件也是经常会被使用到的技术点,比如在导出多个文件至浏览器下载时需要将多个文件添加至压缩文件,一方面可以一次性下载多个文件,另一方面也可以减小下载文件的大小。然而JDK内置的操作压缩文件只提供有zip格式(rar格式为受版权保护,7z格式应该是在JDK早期版本时还未出世),比较鸡肋,回首当年工作之初也算有体验到使用Java解压文件,后面的一些工作中多多少少的也都有涉及,但是不够全面,也不够深入,更不够专业,去年下半年有批量解压缩文件的需求,借着这个时机就专业了一把,把Java相关的压缩和解压缩的开源实现给实践了一下,围绕工作日常的应用展开,常见的压缩文件格式有:zip、7z、rar,所以响应的给出这些格式的多种实现,本文先以JDK内置的压缩和解压缩zip格式展开,详细如下。 2.压缩实现 2.1 压缩工具类 packagecn.chendd.compress; i...

文章分类:工作中积累

Java压缩和解压缩
本站信息

 运营时间: 天

 用户数量: 人

 文章数量: 篇

 评论数量: 条

 点赞个数: 个

 最后更新:

标签云