Lucent's Blog

Lucent's Blog

当时明月在 曾照彩云归


人生不相见,动如参与商。


java

  1. Hutool工具类

    Hutool工具类

    3 min read
    java

    🍬A set of tools that keep Java sweet. 官网: 👉 https://hutool.cn/ 👈 📚简介 Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当; Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免封装不完善带来的bug。 🍺Hutool如何改变我们的coding方式 Hutool的目标是使用一个工具方法代替一段复杂代码,从而最大限度的避免“复制粘贴”

  2. Java微服务视频学习资料

    Java微服务视频学习资料

    1 min read
    java

    内容链接 推荐开发使用IDEA IntelliJ IDEA神器使用技巧http://t.cn/R1MAAsI pig 中大量使用lambda 表达式等 Java8 语法http://t.cn/A64TNeZc 提升对 Spring 使用水平,进阶的好视频http://t.cn/A64TNFYG Spring Cloud 基础组件入门,拒绝长篇大伦http://t.cn/A64Tpz4L Spring Security开发安全的REST服务http://t.cn/RBrsznR

  3. java8如何排序Map

    java8如何排序Map

    3 min read
    java · Stream API

    在Java中,有多种方法可以对Map进行排序,但是我们将重点介绍Java 8 Stream,这是实现目标的一种非常优雅的方法。 学习一下HashMap的merge()函数 在学习Map排序之前,有必要讲一下HashMap的merge()函数,该函数应用场景就是当Key重复的时候,如何处理Map的元素值。这个函数有三个参数: * 参数一:向map里面put的键 * 参数二:向map里面put的值 * 参数三:如果键发生重复,如何处理值。可以是一个函数,也可以写成lambda表达式。 String k = "key"; HashMap<String, Integer> map

  4. StreamAPI终端操作

    StreamAPI终端操作

    5 min read
    java · Stream API

    Java Stream管道流是用于简化集合类元素处理的java API。 在使用的过程中分为三个阶段: * 将集合、数组、或行文本文件转换为java Stream管道流 * 管道流式数据处理操作,处理管道中的每一个元素。上一个管道中的输出元素作为下一个管道的输入元素。 * 管道流结果处理操作 回顾一下之前写过的一个例子: List<String> nameStrs = Arrays.asList("Monkey", "Lion", "Giraffe","Lemur"); List<

  5. Stream查找与匹配元素

    Stream查找与匹配元素

    3 min read
    java · Stream API

    在对数组或者集合类进行操作的时候,经常会遇到这样的需求,比如: * 是否包含某一个“匹配规则”的元素 * 是否所有的元素都符合某一个“匹配规则” * 是否所有元素都不符合某一个“匹配规则” * 查找第一个符合“匹配规则”的元素 * 查找任意一个符合“匹配规则”的元素 这些需求如果用for循环去写的话,还是比较麻烦的,需要使用到for循环和break。下面使用Stream来完成这些操作。 何用Stream API来实现“查找与匹配” Employee员工类: @Data @AllArgsConstructor public class Employee { private Integer id; private Integer

  6. 函数式接口Comparator

    函数式接口Comparator

    3 min read
    java · Stream API

    函数式接口是什么? 所谓的函数式接口,实际上就是接口里面只能有一个抽象方法的接口。Comparator接口就是一个典型的函数式接口,它只有一个抽象方法compare。 有人会说equales方法也没有方法体,也是抽象方法。但是函数式接口的特点中有一条是:允许出现java.lang.Object中的public方法,所以equales方法可以忽略掉,Comparator仍然是函数式接口。 函数式接口的特点 * 接口有且仅有一个抽象方法,如上图的抽象方法compare * 允许出现java.lang.Object中的public方法,如上图的方法equals。 * 允许定义静态非抽象方法 * 允许定义默认defalut非抽象方法(default方法也是java8才有的) * FunctionInterface注解不是必须的,如果一个接口符合"函数式接口"定义,那么加不加该注解都没有影响。 甚至可以说:函数式接口是专门为lambda表达式准备的,lambda表达式是只实现接口中唯一的抽象方法的匿名实现类。 default关键字

  7. java像使用SQL一样排序集合

    java像使用SQL一样排序集合

    3 min read
    java · Stream API

    字符串List排序 cities是一个字符串数组。注意london的首字母是小写的。 List<String> cities = Arrays.asList( "Milan", "london", "San Francisco", "Tokyo", "New Delhi" ); System.out.println(cities); //[Milan, london, San

  8. Stream的状态与并行操作

    Stream的状态与并行操作

    4 min read
    java · Stream API

    有状态与无状态 在编程中,经常会接触到“有状态”,“无状态”,绝大部分的人都比较蒙。而且在不同的场景下,“状态”这个词的含义似乎有所不同。 * 状态通常代表公用数据,有状态就是有“公用数据” * 因为有公用的数据,状态通常需要额外的存储。 * 状态通常被多人、多用户、多线程、多次操作,这就涉及到状态的管理及变更操作。 举个例子: * web开发session就是一种状态,访问者的多次请求关联同一个session,这个session需要存储到内存或者redis。多次请求使用同一个公用的session,这个session就是状态数据。 * vue的vuex的store就是一种状态,首先它是多组件公用的,其次是不同的组件都可以修改它,最后它需要独立于组件单独存储。所以store就是一种状态。 * filter与map操作,不需要管道流的前面后面元素相关,所以不需要额外的记录元素之间的关系。输入一个元素,

  9. Stream管道流的map操作

    Stream管道流的map操作

    2 min read
    java · Stream API

    Stream管道流map的基础用法 将集合中的每一个字符串,全部转换成大写: List<String> alpha = Arrays.asList("Monkey", "Lion", "Giraffe", "Lemur"); List<String> collect = alpha.stream().map(String::toUpperCase).collect(Collectors.

  10. Stream的filter与谓语逻辑

    Stream的filter与谓语逻辑

    3 min read
    java · Stream API

    什么是谓语逻辑 如下代码中WHERE 和 AND 限定了主语employee是什么,那么WHERE和AND语句所代表的逻辑就是谓语逻辑。 SELECT * FROM employee WHERE age > 70 AND gender = 'M' lambda表达式表达的是一个匿名接口函数的实现,那具体到Stream.filter()中,它表达的是一个Predicate接口,在英语中这个单词的意思是:谓语。 创建一个实体类Employee 下面的代码使用了lombok的注解Data、AllArgsConstructor来代替getter,setter和全参构造方法 @Data @AllArgsConstructor public class Employee