随笔分类 - Java
摘要:CompletableFuture进阶篇-外卖商家端API的异步化 背景 为何需要并行加载 并行加载的实现方式 同步模型 NIO异步模型 为什么会选择CompletableFuture? CompletableFuture使用与原理 CompletableFuture的背景和定义 Completab
阅读全文
摘要:目录 依赖添加 实体类: OSS配置类: OSSUtil工具类: OSS上传接口类: OSS上传接口实现类: OSS上传控制类: 工具类: 依赖添加 在Maven的pom.xml文件中添加OSS的依赖: <!--阿里云OSS--> <dependency> <groupId>com.aliyun.o
阅读全文
摘要:解题思路:JAVA8使用stream()根据类型对List进行分组统计。 核心功能代码片段: //分组求和 Map<String, LongSummaryStatistics> collect = list.stream().collect( Collectors.groupingBy(Fruit:
阅读全文
摘要:我有一个函数 ( findByNames) 接受传播参数,如下例所示: List<Users> findByNames(String... names) { ... } 作为参数,我有一个列表: List<String> names = asList("john","abraham"); 所以我想将
阅读全文
摘要:使用jdk8的stream流(基本实现分组靠Collectors.goupingby),list自带的sort()方法排序,话不多说,代码如下: List<User> list = Arrays.asList(new User("1","小明","2","一年级"), new User("2","小
阅读全文
摘要:使用Parallel Stream时,在适当的环境中,通过适当地使用并行度级别,可以在某些情况下获得性能提升。 如果程序创建一个自定义ThreadPool,必须记住调用它的shutdown()方法来避免内存泄漏。 Parallel Stream默认使用的线程池 如下代码示例,Parallel Str
阅读全文
摘要:定义: Stream(流)是JDK8中引入的一种类似与迭代器(Iterator)的单向迭代访问数据的工具。ParallelStream则是并行的流,它通过Fork/Join 框架(JSR166y)来拆分任务,加速流的处理过程。最开始接触parallelStream很容易把其当做一个普通的线程池使用,
阅读全文
摘要:在某些特殊的场景下,我们需要在 Java 程序中对 List 集合进行排序操作。比如从第三方接口中获取所有用户的列表,但列表默认是以用户编号从小到大进行排序的,而我们的系统需要按照用户的年龄从大到小进行排序,这个时候,我们就需要对 List 集合进行自定义排序操作了。 List 排序的常见方法有
阅读全文
摘要:提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 Stream - 实现分组后,且每个分组也进行排序 前言 一、groupingBy高级用法 二、先分组,再排序 总结 前言 之前记录过:stream的三个常用方式(toMap,groupingBy,findFirst)。 这里继续记录
阅读全文
摘要:CompletableFuture 前言 CompletableFuture继承于java.util.concurrent.Future,它本身具备Future的所有特性,并且基于JDK1.8的流式编程以及Lambda表达式等实现一元操作符、异步性以及事件驱动编程模型,可以用来实现多线程的串行关系,
阅读全文
摘要:一、什么是流? Stream是java8中新增加的一个特性,首先Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator。原始版本的 Iterator,用户只能显式地一个一个遍历元素并对其执行某些操作;高级版本的 Stream,用户只要给出
阅读全文
摘要:parallelStream默认使用了fork-join框架,其默认线程数是CPU核心数。通过测试实践,发现有两种方法来修改默认的多线程数量:1、全局设置在运行代码之前,加入如下代码:System.setProperty("java.util.concurrent.ForkJoinPool.comm
阅读全文
摘要:方法1: clickhouse使用pageHelper 最近项目数据库从musql 变更到clickhouse 之后发现许多接口都报错了 发现是pageHelper的原因。 查看clickHouse分页语法 ,发现是和mysql一样的,因此,只需要将项目启动的时候,将clickhouse分页方言配置
阅读全文
摘要:InputStream,OutputStream 前者为字节输入流,后者为字节输出流。Reader Writer 前者为字符输入流,后者为字符输出流。 四个均为抽象类。fileInputStream 是InputStream 的实现类 fileReader 是Reader 的实现类 字节流读取单位为
阅读全文
摘要:目录: 1.函数式接口的基本概念和格式 2.函数式编程 3.函数式接口作为方法的参数和方法的返回值 4.常用函数式接口 1.函数式接口的基本概念和格式 1.函数式接口的基本概念: 函数式接口在Java中是指:有且仅有一个抽象方法的接口。 函数式接口,即适用于函数式编程场景的接口。而Java中的函数式
阅读全文
摘要:int c = a%b==0?a/b:a/b+1; 两个数相除,如果余数等于0 则直接取 a/b所得的数。 否则有余数的话 取a/b在加一
阅读全文
摘要:CPU高占用 排查思路 top 命令查看CPU占用率高的进程 top -H -p ${pid} 命令查看具体是进程的哪个线程占用CPU printf ‘%x\n’ ${pid} 将线程的pid转为16进制 jstack 进程pid grep -A 20 ${十六进制线程pid} 查看线程的基本信息与
阅读全文
摘要:RandomAccessFile的简介 RandomAccessFile可以实现对文件数据的随机读取。 RandomAccessFile类包含了一个记录指针,用以标识当前读写处的位置,当程序新创建一个RandomAccessFile对象时,该对象的文件记录指针位于文件头(也就是0处),当读/写了n个
阅读全文
摘要:java retry:详解 发现 今天在探秘线程池原理知识点,在阅读JDK源码时遇到程序代码中出现如下代码,因为之前没有遇到过,于是特地记录下来并谷歌了一番,后面我自己做了一些简要的验证和分析。 验证 网上溜达一番发现,这retry就是一个标记,标记对一个循环方法的操作(continue和break
阅读全文
摘要:jdk版本的切换: 在mac切换jdk是一件非常容易的事情。 1,查看自己mac中的jdk版本,java -version是查看自己电脑当前正在使用的jdk版本,输入 /usr/libexec/java_home -V ,如图所示: 2,也可以手动查看jdk的版本:默认安装目录:/Library/J
阅读全文