stringutils

如果你热爱编码,就应该少写代码

筅森魡賤 提交于 2020-01-19 14:25:26
“如果你喜欢一个人,就应该尽量少说那些甜言蜜语。”不知道大家是否听过某些恋爱专家的肺腑之言。对于程序员来说,如果你热爱编码,那么我也劝你:“能少写一行代码就尽量少写一行。” 可能有些同学觉得这话听起来有点玄乎:“代码写得少,不就意味着缺乏实战经验吗?那我何年何月才能进一线大厂,成为真正的大神呢?” 如果你要这么理解的话,我就必须要纠正你一下。我表达的意思是这样的,来通过两行简短的代码表情达意吧。 if (str == null || "" .equals(str)) {} if (StringUtils.isEmpty()) {} 就上面这两行代码来说,我的第一选择是使用第二行代码来进行判空操作,因为它的代码量更少——简洁明了,也更不容易出错。 如果我们程序员没有这种(写更少代码的)追求的话,那我们的编程技艺就只会原地踏步,长此以往的后果就是各种避免重复造轮子的第三方类库就不会出现。 就判空操作来说, str == null || "".equals(str) 已经干得非常漂亮了(null 和空字符串都考虑在内了),但性能仍然有待优化,可以使用更高效的 str == null || str.length() == 0 来替代。为什么这么说呢? 因为 Sting 类的 equals() 方法本身是很沉重的,其源码如下所示。 public boolean equals (Object

commons常用工具包的使用

感情迁移 提交于 2020-01-19 13:42:51
===========commons-lang包======    这个包中的很多工具类可以简化我们的操作,在这里简单的研究其中的几个工具类的使用。 1.StringUtils工具类   可以判断是否是空串,是否为null,默认值设置等操作: /** * StringUtils */ public static void test1() { System.out.println(StringUtils.isBlank(" "));// true----可以验证null, ""," "等 System.out.println(StringUtils.isBlank("null"));// false System.out.println(StringUtils.isAllLowerCase("null"));// t System.out.println(StringUtils.isAllUpperCase("XXXXXX"));// t System.out.println(StringUtils.isEmpty(" "));// f---为null或者""返回true System.out.println(StringUtils.defaultIfEmpty(null, "default"));// 第二个参数是第一个为null或者""的时候的取值 System.out

如果你热爱编码,就应该少写代码

断了今生、忘了曾经 提交于 2020-01-19 09:09:02
“如果你喜欢一个人,就应该尽量少说那些甜言蜜语。”不知道大家是否听过某些恋爱专家的肺腑之言。对于程序员来说,如果你热爱编码,那么我也劝你:“能少写一行代码就尽量少写一行。” 可能有些同学觉得这话听起来有点玄乎:“代码写得少,不就意味着缺乏实战经验吗?那我何年何月才能进一线大厂,成为真正的大神呢?” 如果你要这么理解的话,我就必须要纠正你一下。我表达的意思是这样的,来通过两行简短的代码表情达意吧。 if (str == null || "".equals(str)) {}if (StringUtils.isEmpty()) {} 就上面这两行代码来说,我的第一选择是使用第二行代码来进行判空操作,因为它的代码量更少——简洁明了,也更不容易出错。 如果我们程序员没有这种(写更少代码的)追求的话,那我们的编程技艺就只会原地踏步,长此以往的后果就是各种避免重复造轮子的第三方类库就不会出现。 就判空操作来说, str == null || "".equals(str) 已经干得非常漂亮了(null 和空字符串都考虑在内了),但性能仍然有待优化,可以使用更高效的 str == null || str.length() == 0 来替代。为什么这么说呢? 因为 Sting 类的 equals() 方法 本身是很沉重的,其源码如下所示。 public boolean equals(Object

JAVA 判断字符串是否可转化为JSONObject、JSONArray

假如想象 提交于 2020-01-01 15:48:09
有时,我们需要判断字符串在转化为JSON对象或者JSONArray时,我们可以使用JSONObject.parseObject和JSONArray.parseArray,但是有时候我们需要在转化之前判断该字符串是否能够被转化为JSON对象或者数组。由于没有找到较好的方法,只能暂时用以下方法了。 1 /** 2 * 判断字符串是否可以转化为json对象 3 * @param content 4 * @return 5 */ 6 public static boolean isJsonObject(String content) { 7 // 此处应该注意,不要使用StringUtils.isEmpty(),因为当content为" "空格字符串时,JSONObject.parseObject可以解析成功, 8 // 实际上,这是没有什么意义的。所以content应该是非空白字符串且不为空,判断是否是JSON数组也是相同的情况。 9 if(StringUtils.isBlank(content)) 10 return false; 11 try { 12 JSONObject jsonStr = JSONObject.parseObject(content); 13 return true; 14 } catch (Exception e) { 15 return false; 16

StringUtils.isBlank和StringUtils.isEmpty区别以及所需依赖

北慕城南 提交于 2019-12-19 21:49:40
StringUtils.isEmpty(" ")= false StringUtils.isEmpty("")= true StringUtils.isBlank(" ")= true StringUtils.isBlank("")= true StringUtils.isBlank和StringUtils.isEmpty主要区别就是,StringUtils.isBlank会认为全是空格的字符串为空,而StringUtils.isEmpty则将空格字符串认为不是空 所需依赖 maven <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang --> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> gradle // https://mvnrepository.com/artifact/commons-lang/commons-lang compile group: 'commons-lang', name: 'commons-lang', version: '2.6' 来源: CSDN 作者: 啥都不晓得的菜鸡 链接:

Java 数据脱敏

不问归期 提交于 2019-12-18 18:29:33
数据脱敏 数据脱敏又称数据去隐私化或数据变形,是在给定的规则、策略下对敏感数据进行变换、修改的技术机制,能够在很大程度上解决敏感数据在非可信环境中使用的问题。根据数据保护规范和脱敏策略.对业务数据中的敏感信息实施自动变形.实现对敏感信息的隐藏。 脱敏方法 项目是在controller层进行脱敏,查阅google和github有两种较为方便的方法 一种是基于注解 desensitized基于注解的形式进行脱敏 GitHub 一种是基于框架本质上还是注解,但是已经封装好了,当然还提供fastjson的方式进行脱敏 sensitive框架进行脱敏 GitHub 由于项目原因不想引入框架,所以使用基于注解的方式 实现 新建枚举类型,标明是何种脱敏方式 package com.blgroup.vision.common.enums; /** * @program: blgroup-scloud-web * @description: 脱敏枚举 * @author: ingxx * @create: 2019-12-17 14:32 **/ public enum SensitiveTypeEnum { /** * 中文名 */ CHINESE_NAME, /** * 身份证号 */ ID_CARD, /** * 座机号 */ FIXED_PHONE, /** * 手机号 */ MOBILE

分布式ID生成 - 雪花算法

廉价感情. 提交于 2019-12-16 13:20:25
雪花算法是一种生成分布式全局唯一ID的经典算法,关于雪花算法的解读网上多如牛毛,大多抄来抄去,这里请参考耕耘的小象大神的博客ID生成器,Twitter的雪花算法(Java) 网上的教程一般存在两个问题: 1. 机器ID(5位)和数据中心ID(5位)配置没有解决,分布式部署的时候会使用相同的配置,任然有ID重复的风险。 2. 使用的时候需要实例化对象,没有形成开箱即用的工具类。 本文针对上面两个问题进行解决,笔者的解决方案是,workId使用服务器hostName生成,dataCenterId使用IP生成,这样可以最大限度防止10位机器码重复,但是由于两个ID都不能超过32,只能取余数,还是难免产生重复,但是实际使用中,hostName和IP的配置一般连续或相近,只要不是刚好相隔32位,就不会有问题,况且,hostName和IP同时相隔32的情况更加是几乎不可能的事,平时做的分布式部署,一般也不会超过10台容器。 使用上面的方法可以零配置使用雪花算法,雪花算法10位机器码的设定理论上可以有1024个节点,生产上使用docker配置一般是一次编译,然后分布式部署到不同容器,不会有不同的配置,这里不知道其他公司是如何解决的,即使有方法使用一套配置,然后运行时根据不同容器读取不同的配置,但是给每个容器编配ID,1024个(大部分情况下没有这么多),似乎也不太可能

StringUtils中 isNotEmpty 和isNotBlank的区别

这一生的挚爱 提交于 2019-12-13 06:02:35
isNotEmpty : 判断某字符串是否非空 StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty("") = false StringUtils.isNotEmpty(" ") = true StringUtils.isNotEmpty(“bob”) = true isNotBlank: 判断某字符串是否不为空且长度不为0且不由空白符(whitespace)构成, 下面是示例: StringUtils.isNotBlank(null) = false StringUtils.isNotBlank("") = false StringUtils.isNotBlank(" “) = false StringUtils.isNotBlank(”\t \n \f \r") = false 来源: CSDN 作者: he_lei 链接: https://blog.csdn.net/he_lei/article/details/103462402

java使用WebUploader做大文件的分块和断点续传

杀马特。学长 韩版系。学妹 提交于 2019-12-12 04:26:09
需求: 支持大文件批量上传(20G)和下载,同时需要保证上传期间用户电脑不出现卡死等体验; 内网百兆网络上传速度为12MB/S 服务器内存占用低 支持文件夹上传,文件夹中的文件数量达到1万个以上,且包含层级结构。 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传。刷新页面后继续传输。关闭浏览器后保留进度信息。 支持文件夹批量上传下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同。 支持断点续传,关闭浏览器或刷新浏览器后仍然能够保留进度。 支持文件夹结构管理,支持新建文件夹,支持文件夹目录导航 交互友好,能够及时反馈上传的进度; 服务端的安全性,不因上传文件功能导致JVM内存溢出影响其他功能使用; 最大限度利用网络上行带宽,提高上传速度; 分析: 对于大文件的处理,无论是用户端还是服务端,如果一次性进行读取发送、接收都是不可取,很容易导致内存问题。所以对于大文件上传,采用切块分段上传 从上传的效率来看,利用多线程并发上传能够达到最大效率。 解决方案: 文件上传页面的前端可以选择使用一些比较好用的上传组件,例如百度的开源组件WebUploader,泽优软件的up6,这些组件基本能满足文件上传的一些日常所需功能,如异步上传文件,文件夹,拖拽式上传,黏贴上传,上传进度监控,文件缩略图,甚至是大文件断点续传,大文件秒传。

StringUtils.join()方法与String.join()方法的使用

痴心易碎 提交于 2019-12-11 05:38:20
2018-07-12 11:33:07 YuanMxy 阅读数 37750 收藏 文章标签: StringUtils.join String.join 更多 分类专栏: java 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/YuanMxy/article/details/81012697 StringUtils.join()和String.join()用途:将数组或集合以某拼接符拼接到一起形成新的字符串。 1.StringUtils.join()方法: (1)使用前需先引入common-lang3的jar包,可去官网下载: apache官网下载页面 (2)方法如下图: (3)基本上此方法需传入2个参数,第一个参数是传入一个任意类型数组或集合,第二个参数是拼接符。 List<String> list = new ArrayList<>(); list.add("Mxy"); list.add("StringUtils"); list.add("join"); String join = StringUtils.join(list,"-");//传入String类型的List集合,使用"-"号拼接 System.out.println(join); String[] s