范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

java中节省90时间的常有的工具类

  下面一起来看看可以节省 90% 的加班时间的第三方开源库吧。第一个介绍的必须是 Apache 下的 Commons 库,第二个是 google 开源的 Guava 库, 第三个是 Hutool工具类库。 Apache Commons
  Apache Commons 是一个功能非常强大、经常被使用到的库。它有 40 个左右的类库,包含了对字符串、日期、数组等的操作。 Lang3
  Lang3 是一个处理 Java 中基本对象的包,比如用 StringUtils 类操作字符串、ArrayUtils 类操作数组、DateUtils 类可以处理日期、MutablePair 类可以返回多个字段等等。 字符串操作
  对字符串快速操作,在 if else 的少写判空条件。 1 2 3 4 5 6 7 8 9 StringUtils.isBlank(" "); //是不是空字符串  StringUtils.isAnyBlank("a", "", "c"); // 其中一个是不是空字符串  StringUtils.isNumeric("1"); //字符串是不是全是数字组成,"." 不算数字  StringUtils.remove("sgsgsdfasd", "a") //移除字符串  日期操作
  终于可以不用 SimpleDateFormat 格式化日期了,DateUtils.iterator 可以获取一段时间。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20Date date = DateUtils.parseDate("2021-07-01", "yyyy-MM-dd");  DateUtils.addDays(date,1);//加一天  DateUtils.isSameDay(date, new Date());//比较  /* 获取一段日期 RANGE_WEEK_SUNDAY 从周日开始获取一周日期 RANGE_WEEK_MONDAY 从周一开始获取一周日期 RANGE_WEEK_RELATIVE 从当前时间开始获取一周日期 RANGE_WEEK_CENTER 以当前日期为中心获取一周日期 RANGE_MONTH_SUNDAY 从周日开始获取一个月日期 RANGE_MONTH_MONDAY 从周一开始获取一个月日期 */ Iterator iterator = DateUtils.iterator(date, DateUtils.RANGE_WEEK_CENTER); while (iterator.hasNext()) {     Calendar next = iterator.next();     System.out.println(DateFormatUtils.format(next, "yyyy-MM-dd")); } 返回多个字段
  有时候在一个方法中需要返回多个值的时候,经常会使用 HashMap 返回或者是 JSON 返回。Lang3 下已经帮我们提供了这样的工具类,不需要再多写 HashMap 和 JSON 了。 1 2 3 4 5MutablePair mutablePair = MutablePair.of(2, "这是两个值"); System.out.println(mutablePair.getLeft() + "  " + mutablePair.getRight());  MutableTriple mutableTriple = MutableTriple.of(2, "这是三个值", new Date()); System.out.println(mutableTriple.getLeft() + " " + mutableTriple.getMiddle() + " " + mutableTriple.getRight()); ArrayUtils 数组操作
  ArrayUtils 是专门处理数组的类,可以让方便的处理数组而不是需要各种循环操作。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24//合并数组 String[] array1 = new String[]{"value1", "value2"}; String[] array2 = new String[]{"value3", "value4"}; String[] array3 = ArrayUtils.addAll(array1, array2);  //clone 数组 String[] array4 = ArrayUtils.clone(array3);  //数组是否相同 EqualsBuilder.reflectionEquals(array3, array4);  //toString  ArrayUtils.toString(array4)  //反转数组 ArrayUtils.reverse(array4);  //二维数组转 map Map arrayMap = (HashMap)ArrayUtils.toMap(new String[][]{     {"key1", "value1"}, {"key2", "value2"} }); for(String s : arrayMap.keySet()) {     System.out.println(arrayMap.get(s)); } collections4 集合操作
  commons-collections4 增强了 Java 集合框架,提供了一系列简单的 API 方便操作集合。
  maven 依赖 1 2 3 4 5       org.apache.commons       commons-collections4       4.4      CollectionUtils 工具类
  这是一个工具类,可以检查 null 元素不被加入集合,合并列表,过滤列表,两个列表的并集、差集、合集。有部分功能在 Java 8 中可以被 Stream API 替换。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32//null 元素不能加进去 List arrayList1 = new ArrayList(); arrayList1.add("a"); CollectionUtils.addIgnoreNull(arrayList1, null); System.out.println(arrayList1.size());  //排好序的集合,合并后还是排序的 List arrayList2 = new ArrayList();  List arrayList3 = new ArrayList();  List arrayList4 = CollectionUtils.collate(arrayList2, arrayList3); System.out.println(arrayList4);  // 过滤,只保留 b CollectionUtils.filter(arrayList4, new Predicate() {     public boolean evaluate(String s) {         if( s.equals("b")) {             return true;         }         return false;     } });  //交集 CollectionUtils.retainAll(arrayList4, arrayList3);  //并集 CollectionUtils.union(arrayList4, arrayList3  //差集 CollectionUtils.subtract(arrayList4, arrayList3) Bag 统计次数
  用于统计值在集合中出现的次数。 1 2 3 4 5 6Bag bag = new HashBag(); bag.add("a"); bag.add("b"); bag.add("a"); bag.add("c", 3); System.out.println(bag.getCount("a")); beanutils Bean 操作
  beanutils 是通过反射机制对 JavaBean 进行操作的。比如对 Bean 进行复制、map 转对象、对象转 Map。
  maven 依赖 1 2 3 4 5     commons-beanutils     commons-beanutils     1.9.4  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21//Bean public class User {     private String name;     //省略get/set }  //copy Bean User user1 = new User(); user1.setName("李四"); User user2 = (User) BeanUtils.cloneBean(user1); System.out.println(user2.getName());  //Bean 转 map BeanUtils.describe(user1);  //Map 转 Bean Map beanMap = new HashMap(); beanMap.put("name", "张三"); User user3 = new User(); BeanUtils.populate(user3, beanMap); System.out.println(user3.getName()); Guava
  Google 开源的一个基于 Java 扩展项目,包含了一些基本工具、集合扩展、缓存、并发工具包、字符串处理等。
  maven 依赖 1 2 3 4 5   com.google.guava   guava   30.1.1-jre  Map 类型
  在java 代码中经常会遇到需要写 Map map 的局部变量的时候。有时候业务情况还会更复杂一点。 1 2 3 4 5 6 7 8 9 10 11 12 13//以前 Map> map = new HashMap>(); List list = new ArrayList(); list.add("张三"); list.add("李四"); map.put("名称", list); System.out.println(map.get("名称"));  //现在 Multimap multimap = ArrayListMultimap.create(); multimap.put("名称", "张三"); multimap.put("名称", "李四"); System.out.println(multimap.get("名称")); value 不能重复的 Map
  在 Map 中 value 的值时可以重复的,Guava 可以创建一个 value 不可重复的 Map,并且 Map 和 value 可以对调。 1 2 3 4 5 6 7 8 9//会报异常 BiMap biMap = HashBiMap.create(); biMap.put("key1", "value"); biMap.put("key2", "value"); System.out.println(biMap.get("key1"));  //key-value 对调 biMap = biMap.inverse(); System.out.println(biMap.get("value")); 缓存
  写业务的时候肯定会使用缓存,当不想用第三方作为缓存的时候,Map 又不够强大,就可以使用 Guava 的缓存。
  使用 CacheBuilder.newBuilder().build() 构建缓存,maximumSize() 方法可以设置缓存的存储数量 1 2 3 4 5Cache cache = CacheBuilder.newBuilder().maximumSize(2).build(); cache.put("key1", "value1"); cache.put("key2", "value2"); cache.put("key3", "value3"); System.out.println(cache.getIfPresent("key1")); //key1 = null 过期时间
  expireAfterAccess() 可以设置缓存的过期时间。 1 2 3 4Cache cache = CacheBuilder.newBuilder().maximumSize(2).expireAfterAccess(1, TimeUnit.SECONDS).build(); cache.put("key1", "value1"); Thread.sleep(1000); System.out.println(cache.getIfPresent("key1")); 加载数据
  当需要访问 key1 时,如果 key1 此时没有被缓存,就会从回调函数中加载 key1 的值。值得一提的时当多个线程同时访问的时候只有一个线程会执行回调函数。 1 2 3 4 5 6 cache.get("key1", new Callable() {     public String call() throws Exception {         return "value1";     } }); System.out.println(cache.getIfPresent("key1"));
  Guava 有许许多多的工具类,这里只列出了小小的部分,可以在官网例子中查看到各种用法。 Hutool
  一个Java基础工具类,对文件、流、加密解密、转码、正则、线程、XML等JDK方法进行封装,组成各种Util工具类,同时提供以下组件: hutool-aop JDK动态代理封装,提供非IOC下的切面支持 hutool-bloomFilter 布隆过滤,提供一些Hash算法的布隆过滤 hutool-cache 缓存 hutool-core 核心,包括Bean操作、日期、各种Util等 hutool-cron 定时任务模块,提供类Crontab表达式的定时任务 hutool-crypto 加密解密模块 hutool-db JDBC封装后的数据操作,基于ActiveRecord思想 hutool-dfa 基于DFA模型的多关键字查找 hutool-extra 扩展模块,对第三方封装(模板引擎、邮件等) hutool-http 基于HttpUrlConnection的Http客户端封装 hutool-log 自动识别日志实现的日志门面 hutool-script 脚本执行封装,例如Javascript hutool-setting 功能更强大的Setting配置文件和Properties封装 hutool-system 系统参数调用封装(JVM信息等) hutool-json JSON实现 hutool-captcha 图片验证码实现 SecureUtil(加密解密工具)
  主要是在登录的时候还有修改密码的时候用到的,因为数据库里面的密码是md5加密处理的,所以登录的时候需要先加密之后再到数据库进行查询,使用Hutool的话,只需要调用SecureUtil中的md5方法就可以了。 user = userService.userLoginByName(loginName,SecureUtil.md5(loginPwd));HtmlUtil(HTML工具类)
  这个工具类就比较厉害了,不过我在Halo当中用得最多的还是HtmlUtil.encode,可以将一些字符转化为安全字符,防止xss注入和SQL注入,比如下面的评论提交。 comment.setCommentAuthor(HtmlUtil.encode(comment.getCommentAuthor()));
  这就是防止有小坏蛋故意写一些可执行的js代码,然后提交评论,在后台面板就会执行这一段代码,比较危险,使用encode方法就可以将
  就可以将

现在新媒体那么发达,人手一只手机看天下,报纸什么时候消失呢?这个问题可能在其它国家可能会消亡。但在中国不会消亡的,由其是地方日报,还有参考消息之类的报纸,它是各单位必须预定的。还有一个最硬性的指标,它是政府的喉舌!所以楼主的问题是杞人忧天了有没有可能我们在这个宇宙中并不是唯一的人类!或是说人类并不只存在于地球,你认同吗?人类当然不是唯一的人类。不知在哪个星球,基因工程合成我们人类的后脑勺延长型的人,他们以自己为蓝本,合成出三种颜色的智人后,派了一些人带着合成后的人类来地球,教导人类知识,并和人类共地球上的水是在增多还是在减少,还是永恒不变呢?我们都知道,水分为三种形态,即固体液体和气体。这三种形态中的固态水和液态水都被地球的引力牢牢的束缚住了,因此我们只需要操心地球上的气态水,也就是水蒸气的问题了。因为水蒸气比空气略轻假如地球突然停止转动一秒钟,人类将遭遇什么灾难?假如地球停转一秒,全人类马上就会体验到飞一般的感觉为什么这么说呢?因为地球每时每刻都在转动,而且速度是绝对不慢的,我们可以来简单计算一下地球的赤道长是40192km,而地球转一圈需助听器通道是怎么回事?通道是覆盖一个声音频率范围的滤波器,由助听器统一进行分析处理和再现。一般助听器的频率范围是250Hz8000Hz。我们生活中听到的绝大多数声音都在这个频段。多通道助听器并不意味着助助听器和人工耳蜗哪个更好?为什么?助听器适合于轻度至重度听力损失的患者,人工耳蜗适合于极重度的听力障碍者,即应用助听器不能起到任何帮助的人。没有哪个更好,只有哪个更适合你。助听器是放大声音补偿听力,适用于重度以下听听力下降几十年了,现在配助听器还有用吗?很多人觉得,听力下降很正常,只要还能听到,就先不戴,等实在听不到了再戴助听器。但殊不知,助听器是利用残余听力让人能听到正常的声音,等彻底听不到了,助听器干预已经不起作用了。在听力行济南公安通报阿里女员工被侵害,王某文张某涉嫌强制猥亵罪,无证据证明强奸,有哪些信息值得关注?既然问到我,就说一句,正在看中国新闻网头条202108150117的信息httpswww。toutiao。comwa1708090044923917无法言语。这个事情以警方通报为准大家最讨厌的手机广告是谁?天气预报中的广告最讨厌讨厌各种广告,最讨厌开屏广告论小说中的广告伟大的鲁迅曾经说过广告啥也不是。可事实往往如此,在你小说看个尽兴时,突然弹出个广告,让你自动下载软件。我想你的心情肯哪个看书软件最好?为什么?咸鱼杂货铺,享你所想什么看书软件最好?我对比了十多款看书软件,最终选出了最强的免费看小说软件,可以说吊打同类小说软件。阅读这款软件就叫阅读,别看他图标的设计有点不fashion,可以太坊是币圈茅台吗?要谈是不是币圈茅台,首先就得搞清楚姨太的价值。评估一个东西是否值得投资,应当要看这个东西是否还具有潜在的价值未被开发,或是这个东西本身就有值得令人期待的未来价值。格雷厄姆的价值投资
正式官宣了!被司马南公开质疑后,联想滴滴的结果到来了点击关注,每天精彩不断!导读正式官宣了!被司马南公开质疑后,联想滴滴的结果到来了!众所周知,随着国内科技产业的快速发展,在最近这几十年时间里,国内也诞生了一大批的互联网科技巨头企业一个司马南为什么能挑战企业的巨无霸联想司马南,一个六十多岁的老头,普通而退休,无权又无势,一个普通的自媒体人,却能手撕联想,多期视频,有理有据,口若悬河,下面的网友一呼百应,影响巨大。为什么一介草民,能挑战企业的巨无霸关于联想,国家出手调查,这一切都被司马南说中了?自从去年科创板上市未果后,联想就一直处于舆论的风口浪尖,尤其是司马南胡锡进等学者对联想提出的种种质疑,至今联想都没有给出回应,这也引来了网友的口诛笔伐。其实,对于联想来说,沉默是解联想被责令整改,司马南只是说了实话今年年初,司马南在聊天中只不过说了几句他看到的新闻资料,然后引发了网络大战,因为联想的关系网太复杂,所以网上很多水军漫无目的的喷司马南,有很多都莫名其妙。终于,今天官方经过调查开始王传福15岁失双亲,嫂子卖嫁妆供他上学,今身价千亿不忘兄嫂情对于比亚迪来说,2022或将是它的重生元年。因为从这一年的三月份开始,比亚迪开始停止燃油汽车的整装生产。这个消息直白一点来说,比亚迪将彻底告别燃油时代,再次回归到纯电车的轨道上来。2022年全国老年人防诈反诈知识大赛启动中国青年报客户端北京5月13日电(中青报中青网记者王亦君)由中国老龄协会公安部刑侦局主办,中国老年杂志社腾讯公司承办,泰康之家协办的2022年全国老年人防诈反诈知识大赛(以下简称大绑定特斯拉松下力推4680电池上车特斯拉在抢占全球新能源汽车市场份额时,也成为电池巨头眼中的利润蛋糕。5月12日,有消息称,松下公司首席财务官梅田博和透露特斯拉正要求松下控股公司加速开发4680电池,同时特斯拉对2家里宽带从100M升级到200M,需要更换路由器吗?家庭带宽升级到200M,如果路由器的有线端口WAN端口和LAN端口仅支持百兆,是无法跑满签约带宽的,需要升级全千兆无线路由器。下文具体说一说。全千兆无线路由器有线端口支持千兆路由器家里安装了电信带宽为300M的光纤,网速却慢如蜗牛,怎么解决?电信300M的家庭带宽,家庭网络需要使用千兆无线路由器千兆网线组网。如果感觉网速比较慢,很可能是自家网络出现了问题,可以用排除法查找原因。step1断开路由器测试网速家庭带宽测速,常见vue面试题,大厂小厂都一样一谈谈你对MVVM的理解?映射关系简化,隐藏controllerMVVM在MVC的基础上,把控制层隐藏掉了。Vue不是一个MVVM框架,它是一个视图层框架。ViewModal是一个我还是选择了全频喇叭首先今天我说的目的不是和大家争论全频喇叭好还是分频音箱好这个问题。我觉得这个不应该再争论了。分频音箱是科技和时代选择的结果,分频音箱从数据层面和技术层面远远超过了全频喇叭。这个是时