Commons-lang

springboot 2.0.8 整合swager

混江龙づ霸主 提交于 2020-03-17 12:45:40
某厂面试归来,发现自己落伍了!>>> 1、引入swager pom依賴 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> </dependency> <!-- swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.26.0-GA</version> </dependency> 其中 commons-lang3

简单实用的对象转换复制工具(续)

时光怂恿深爱的人放手 提交于 2020-03-04 12:03:10
前文链接: https://my.oschina.net/jack90john/blog/3052715 接前文,有朋友提到说这个工具只实现了浅拷贝,在很多条件下不适合使用,这篇文章我们就来解决这个浅拷贝问题。 一、概念 首先我们得先要弄清楚什么是浅拷贝,什么是深拷贝。这里我们就不铺开说了,大致了解一下概念。 所谓浅拷贝就是指复制了原对象的引用,拷贝后的对象和原对象依然是指向同一地址和同一实例,这会导致一个问题就是,我在修改拷贝后的对象时原对象会同时发生变化。而深拷贝就不会存在上述问题,深拷贝是拷贝了原对象的值,拷贝后的对象和原对象完全独立开互不影响,所以我们修改拷贝后的对象时原对象不会发生任何变化。 二、思路 实现深拷贝有好几种方法,最常用的有: 序列化与反序列化, 重写克隆方法, 使用三方类库提供的方法。 我们一项一项的来看, 第一种方法又有几种方式,典型两种,一种是通过IO流来实现,另一种只通过Gson,FastJson,Jackson等将对象序列化成json后在反序列化成对象来实现。这里我想减少三方类库等使用所以排除第二种方式。使用IO流实现的方式待定。 第二种方法需要对每个对象重写克隆方法,在易用性上不如第一种方法,所以排除。 第三种方法使用第三方类库,Apache Commons Lang库提供了SerializationUtils中提供了对象的深拷贝方法

分享Java 中如何运行字符串表达式?

醉酒当歌 提交于 2020-03-02 06:52:56
在日常的开发中,偶尔会遇到运行字符串表达式的情况,通常这样的需求会对需求进行进一步分析,然后进行进一步 “特殊化”,最后直接写到硬代码中,这样做的话,就不太好扩展了;也有另外的处理方式是采用 Java 内置的 JavaScript 引擎等运行字符串表达式,但是内置引擎也有弊端,比如频繁运行片段式的字符串的效率非常低,并且与 Java 之间的数据交互比较麻烦,于是,便产生了写一个“字符串表达式计算引擎”的想法... 写的过程其实没想象中那么麻烦,最初版大概在今年 5 月底写好,但是结构比较混乱,写的时候基本上是一边写一边修,最后 if...else...这样的条件以及嵌套太多,以至于自己也无法完全理解,好在逻辑基本完善,运行也没出现意料之外的情况(也许出现了,只是没发现),并且是自己用,所以就没太在意。 前两个星期,又抽空重新整理了一遍,重新梳理了一下结构,扩展了一些功能,重新定义了一下各种符号的 “语义边界”,尽可能保证运算符与 Java 本身运算符一致,逻辑结构也更清晰,不会产生意外情况等。 RunnerUtil 在语法上很大程度参考了 JavaScript 的语法,比如用花括号表示一个键值对“对象”(实际上会被解析成 HashMap),键名不必用单引号或双引号包裹,单引号双引号均表示普通字符串,通过点号(.)和方括号链式取值等。这对于从事 JavaWeb 开发的同学来说

如何使用任何空白字符分隔字符串来分隔符?

我是研究僧i 提交于 2020-02-26 03:41:21
我需要哪种正则表达式模式传递给 java.lang.String.split() 方法,以使用所有空格字符('','\\ t','\\ n'等)将字符串拆分为子字符串数组作为分隔符? #1楼 Apache Commons Lang有一种使用空格字符作为分隔符的字符串分割方法: StringUtils.split("abc def") http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html#split(java.lang.String) 这可能比正则表达式模式更易于使用。 #2楼 “ \\\\ s +”应该可以解决问题 #3楼 在大多数regex方言中,可以使用一组方便的字符摘要来进行此类操作-这些是值得记住的好方法: \\w 匹配任何单词字符。 \\W 匹配任何非单词字符。 \\s 匹配任何空格字符。 \\S 匹配除空格字符以外的任何字符。 \\d 匹配任何数字。 \\D 匹配除数字以外的任何内容。 搜索“ Regex备忘单”应该为您提供很多有用的摘要。 #4楼 某些东西 myString.split("\\s+"); 这会将所有空白分组为分隔符。 因此,如果我有字符串: "Hello[space][tab]World" 这将产生字符串

检查字符串是否不为空且不为空

做~自己de王妃 提交于 2020-02-25 23:15:34
如何检查字符串是否不为null也不为空? public void doStuff(String str) { if (str != null && str != "**here I want to check the 'str' is empty or not**") { /* handle empty string */ } /* ... */ } #1楼 添加到@BJorn和@SeanPatrickFloyd Guava的方法是: Strings.nullToEmpty(str).isEmpty(); // or Strings.isNullOrEmpty(str); Commons Lang有时更具可读性,但我一直在慢慢地更多地依赖Guava,有时在谈到 isBlank() 时,Commons Lang有时会造成混乱(例如是否有空格)。 Guava的Commons Lang isBlank 版本为: Strings.nullToEmpty(str).trim().isEmpty() 我会说不允许使用 "" (空) 和 null 是可疑的,并且有潜在的bug,因为它可能无法处理不允许使用 null 所有情况(尽管对于SQL,我可以理解为SQL / HQL对 '' )很奇怪。 #2楼 只需在此处添加Android: import android.text.TextUtils;

强制行家更新

拈花ヽ惹草 提交于 2019-12-28 19:05:03
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 我将工作项目导入其他计算机,因此它开始下载依赖项。 显然与此同时,我的互联网连接崩溃了。 现在我得到: 建立漫画错误; org.apache.maven.lifecycle.LifecycleExecutionException:无法在项目comics上执行目标Test:无法解决项目comics的依赖项Test:comicsTest:war:0.0.1-SNAPSHOT:无法解决以下工件:org.springframework:spring- context:jar:3.0.5.RELEASE,org.hibernate:hibernate-entitymanager:jar:3.6.0.Final,org.hibernate:hibernate-core:jar:3.6.0.Final,org.hibernate:hibernate-commons-批注:jar:3.2.0.Final,org.aspectj:aspectjweaver:jar:1.6.8,commons-lang:commons-lang:jar:2.5, mysql:mysql-connector-java:jar:5.1.13:无法从本地存储库中缓存来自 http://repo1.maven.org/maven2的 org

commons-lang3:ArrayUtils

心已入冬 提交于 2019-12-25 21:25:15
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> add(boolean[] array, boolean element) 将给定的数据添加到指定的数组中,返回一个新的数组 ArrayUtils.add(null, true) = [true] ArrayUtils.add([true], false) = [true, false] ArrayUtils.add([true, false], true) = [true, false, true] add(boolean[] array, int index, boolean element) 将给定的数据添加到指定的数组下标中,返回一个新的数组。 ArrayUtils.add(null, 0, true) = [true] ArrayUtils.add([true], 0, false) = [false, true] ArrayUtils.add([false], 1, true) = [false, true] ArrayUtils.add([true, false], 1, true) = [true, true, false] byte, int, char, double, float, int, long ,short, T[] 同理 addAll(boolean[] array1,

逗号拼接的字符串、数组、List、Set、Map之间的相互转换

大憨熊 提交于 2019-12-22 18:37:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 【逗号拼接的字符串------->数组】 String str = "a,b,c,1,2,3"; String[] strArray = str.split(","); 【数组------->逗号拼接的字符串】 String str = org.apache.commons.lang.StringUtils.join(strArray , ","); 需要引入Apache Commons组件中的个commons-lang.jar包 【Array------->List】 String[] strArray = {"a","b","c","1","2","3"}; List<String> strList = java.util.Arrays.asList(strArray); 【List-------> Array】 String strArray = strList.toArray(new String[0]); //new String[0]是指定返回数组的类型); 【List------->Set】 Set<String> strSet = new HashSet<>(strList); 【Set------->List】 List<String> strList = new ArrayList<>

Java中支持深浅拷贝的第三方库

孤街醉人 提交于 2019-12-09 19:59:52
深拷贝 Apache旗下的Commons-Lang3包有一个序列化的工具 SerializationUtils ,可以做深拷贝。 当然前提是你的类实现了序列化接口。 Java Deep Cloning Library是我觉得最好用的一个。它的深拷贝通过反射实现,适合用于你 不能控制的第三方类或者没有实现序列化的类。 浅拷贝 还是Apache旗下,不过不是Commons-Lang3,而是Commons-Beanutils。其中 BeanUtils 提供了一个 cloneBean 方法。 可以直接简单的操作。 如果项目依赖了Spring的库,那么直接使用 BeanUtils 即可。 来源: oschina 链接: https://my.oschina.net/u/866802/blog/2964055

Spring AOP 实现方法日志记录以及执行时间打印

冷暖自知 提交于 2019-12-09 19:56:02
注意:proxy-target-class="true" 这是决定是走jdk代理还是spring cglib代理的。高版本的(貌似)可以忽略。 1.在spring 相关配置文件中假如如下配置: <!-- 日志时间打印 --> <aop:config proxy-target-class="true"> <!-- 这里拦截 service 包中的所有方法 --> <aop:advisor id="methodTimeLog" advice-ref="methodTimeAdvice" pointcut="execution(* *..service..*(..))"/> </aop:config> <bean id="methodTimeAdvice" class="com.ra.fire.utils.MethodTimeAdvice"> </bean> 2.实现spring aopalliance-1.0.jar 包中的的 MethodInterceptor 接口,实现类如下: package com.ra.fire.utils; import org.aopalliance.intercept.MethodInterceptor; import org.aopalliance.intercept.MethodInvocation; import org.apache