随笔分类 -  高效编程

摘要:常用约束注解 空值校验类:@Null,@NotNull,@NotEmpty,@NotBlank等 范围校验类:@Min,@Size,@Digits,@Future,@Negative等 其他校验类:@Email,@URL,@AssertTrue,@Pattern等 相关依赖 1 <!-- Valid 阅读全文
posted @ 2020-06-27 16:19 mingmingn 阅读(170) 评论(0) 推荐(0)
摘要:简介 Project Lombok是一个java库,可以自动插入编辑并构建工具,为您的java增添色彩. 永远不要再写另一个getter或equals方法,使用一个注释,您的类具有一个功能齐全的构建器,自动化您的日志记录变量等等. 实现原理 注解在编译时解析 实战 插件安装 idea插件搜索lomb 阅读全文
posted @ 2020-06-27 13:30 mingmingn 阅读(188) 评论(0) 推荐(0)
摘要:线程池定义 线程池顾名思义是事先创建若干可执行的线程放入一个池(容器)中,需要的时候从池中获取线程不用自行创建,使用完毕不需要销毁线程而放回池中,从而减少创建和销毁对象的开销. 线程池优点 降低资源消耗提高响应速度提高线程的可管理性 如何设计线程池 简陋版 设计 1.首先要有一个池子(容器)2.池子 阅读全文
posted @ 2020-06-18 19:44 mingmingn 阅读(168) 评论(0) 推荐(0)
摘要:产生背景 如何查看一个东西是否在有大量数据的池子中?一般做法是通过维护一个数据结构来保存池子中的数据,在池子中找被检测数据是否存在。类似黑白名单功能一样。数据量非常大时存在的问题:第一:大量数据的存储消耗很多系统资源第二:检索性能不好。线性表存储,检索时间复杂度为O(n)平衡二叉树存储,时间复杂度为 阅读全文
posted @ 2020-06-16 01:11 mingmingn 阅读(121) 评论(0) 推荐(0)
摘要:使用和避免null 大多数情况下,使用null表明是某种缺失的情况.Guava引入Optinal<T>表明可能为null的T类型引用.Optional实例可能包含非null的引用(引用存在),也可能什么也不包括(引用缺失).Java8将Optional类做为一个新特性引入进Java8的类库. 三种创 阅读全文
posted @ 2020-06-15 15:54 mingmingn 阅读(200) 评论(0) 推荐(0)
摘要:为什么有些资源要手动关闭? 主要跟垃圾回收(GC特点)有关. 垃圾回收机制只负责回收堆内存的资源,不会回收任何物理资源. 程序无法精确控制垃圾回收动作具体时间. 在垃圾回收之前,总会先调用它的finalize方法. 常见需手动释放的物理资源 文件/流资源 套接字资源 数据库连接资源 资源不手动释放会 阅读全文
posted @ 2020-06-12 02:08 mingmingn 阅读(116) 评论(0) 推荐(0)
摘要:归约与汇总 归约(reduce):将Stream流中元素转化成一个值汇总(collect):将Stream流中元素转换成一个容器 接口方法 1 /** 2 *第一个参数表示初始值 3 *第二个参数表示计算逻辑 4 *第三个参数表示合并逻辑 5 */ 6 <U> U reduce(U identity 阅读全文
posted @ 2020-06-11 16:24 mingmingn 阅读(342) 评论(0) 推荐(0)
摘要:收集器简介 将流中的元素累积成一个结果作用于终端操作collect()上collect/Collector/Collectors 收集器演示 将流元素归约和汇总成一个值将流元素分组将流元素分区 import com.alibaba.fastjson.JSON; import org.junit.Be 阅读全文
posted @ 2020-06-11 16:18 mingmingn 阅读(163) 评论(0) 推荐(0)
摘要:流的四种构建方式 由值创建流由数组创建流由文件创建流由函数生成流(无线流) 1 import org.junit.Test; 2 3 import java.io.IOException; 4 import java.nio.file.Files; 5 import java.nio.file.Pa 阅读全文
posted @ 2020-06-10 01:07 mingmingn 阅读(189) 评论(0) 推荐(0)
摘要:常用流的中间操作 filter使用:过滤掉不符合断言判断的数据 map使用:将一个元素转换成另一个元素 flatMap使用:将一个对象转换成流 peek使用:遍历操作 sorted使用:排序 distinct使用:去重 skip使用:跳过前几条limit使用:取限制条数数据 常用流的终端操作 all 阅读全文
posted @ 2020-06-09 17:27 mingmingn 阅读(379) 评论(0) 推荐(0)
摘要:流是什么 JDK1.8引入的新成员,以声明式方式处理集合数据.将基础操作链接起来,完成复杂的数据处理流水线.提供透明的并行处理. 流的简介 从支持数据处理操作的源生成的元素序列. 数据处理操作:流的数据处理功能类似于数据库的操作.以及函数式编程语言的常用操作.如filter,map,reduce,f 阅读全文
posted @ 2020-06-09 16:18 mingmingn 阅读(296) 评论(0) 推荐(0)
摘要:方法引用的由来 使用方法引用代表判断逻辑. public class Sku{ public Boolean comparePrice(){ return this.skuPrice > 1000; } } List<Sku> result = CartService.filterSkus( car 阅读全文
posted @ 2020-06-07 19:34 mingmingn 阅读(119) 评论(0) 推荐(0)
摘要:常用函数接口 接口 参数 返回类型 描述 Predicate<T> T boolean 用于判断一个对象. Consumer<T> T void 用于接收一个对象进行处理但没有返回. Function<T,R> T R 转换一个对象为不同类型的对象 Supplier<T> None T 提供一个对象 阅读全文
posted @ 2020-06-07 01:03 mingmingn 阅读(184) 评论(0) 推荐(0)
摘要:简介 Java8引入函数式编程风格 可以理解为一种匿名函数的代替 通过行为参数化传递代码 形式 ①(parameters) -> expression ②(parameters) -> {statement;} 形式一:没有参数 () -> System.out.println("lambda de 阅读全文
posted @ 2020-06-05 11:01 mingmingn 阅读(194) 评论(0) 推荐(0)