随笔分类 - Java
摘要:常用的链路追踪组件 现在常用的开源组件有google的Dapper,Twitter的zipkin和Apache SkyWalking等,商用的比较有代表性的是阿里的Eagleeye(鹰眼)。它们的工作模式不外乎是客户端在同一个trace的不同span上采点上传到server端然后server端进行存
阅读全文
摘要:这篇文章主要介绍了利用Spring boot+LogBack+MDC实现链路追踪,MDC 可以看成是一个与当前线程绑定的哈希表,可以往其中添加键值对,下文详细介绍需要的小伙伴可以参考一下 MDC介绍 API说明 MDC使用 1.拦截器 2.工具类 MDC 存在的问题 子线程日志打印丢失traceId
阅读全文
摘要:目录 TaskDecorator 定义TaskDecorator实例 线程池使用TaskDecorator 开发中很多数据如oauth2的认证信息,日志TracerId都是在请求线程中的,如果内部使用多线程处理就存在获取不到认证信息或TraceId的问题。这时候就需要处理子线程与主线程间数据传递的问
阅读全文
摘要:快速理解Consumer、Supplier、Predicate与Function 一、前言 这几个接口都处在java.util.function包下,Consumer(消费型),Supplier(供给型)、Predicate(判断型)与Function(转换型),暂时不理解他们的类型没关系。 如果对
阅读全文
摘要:String webPath11 =commonPath+File.separator+ name+"_"+i+ ".xlsx"; File file = new File(webPath11); // // 必须按创建本地目录 // if (!file.getParentFile().exists
阅读全文
摘要:一个非常简单的代码片段如下: String[] list = {"a", "b", "c"}; List<CompletableFuture<String>> completableFutureList = new ArrayList<>(); for (String s : list) { com
阅读全文
摘要:package util; public class IdUtils { private static IdWorkerUtils idWorkerUtils=new IdWorkerUtils(1,1,1); public static Long nextId(){ return idWorker
阅读全文
摘要: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分页方言配置
阅读全文

浙公网安备 33010602011771号