java
文章平均质量分 63
java
_lrs
这个作者很懒,什么都没留下…
展开
-
java调用服务出错时重试
由于调用的服务在出错时正常返回,返回的数据里包含Server Error,并没有包含其他有效信息,导致OkHttp 认为结果正常,拦截器里不能自动进行重试,因此需要自己写重试逻辑。原创 2022-06-26 20:18:09 · 597 阅读 · 0 评论 -
java Flow 执行流程
使用上一篇文章的例子来调试一下Flow的执行流程。原创 2022-06-12 14:36:35 · 874 阅读 · 0 评论 -
java Flow 的使用
jdk 9 中新增了 Flow 类,是Reactive Stream (响应式流/反应流) 的实现,Reactive Stream是一套基于发布/订阅模式的数据处理规范,能够以非阻塞背压方式实现数据的异步流。原创 2022-06-11 21:01:15 · 1390 阅读 · 0 评论 -
java流式编程(二十三)CompletableFuture 原理分析
目录前言一、示例二、原理三、总结前言本篇文章主要分析一下CompletableFuture 中的 supplyAsync 和 thenApply 方法的实现原理。一、示例(1)先执行完上一步,再构建并执行后续步骤 CompletableFuture<String> a = CompletableFuture.supplyAsync(() -> "aaa"); //等待上一步完成 try { Thread.sleep(5000);原创 2022-03-27 17:47:22 · 465 阅读 · 0 评论 -
java流式编程(二十二)CompletableFuture 常用方法
目录前言一、CompletableFuture二、静态方法1、supplyAsync( )2、runAsync( )3、completedFuture( )4、allOf( )5、anyOf( )三、实例方法1、Apply2、accept3、run4、combine5、acceptBoth6、runAfterBoth7、applyToEither8、acceptEither9、runAfterEither10、thenCompose11、handle12、whenComplete13、exceptional原创 2022-03-26 14:32:47 · 730 阅读 · 0 评论 -
java 枚举类使用反射
目录前言一、枚举类二、反射获取枚举三、反射调用枚举方法前言跟普通类使用反射基本一样。一、枚举类public enum OperateType { add("添加", 0), delete("删除", 1), select("查询", 2), update("修改", 3), stop("停止", 4), restart("重启", 5), check("检查", 6), download("下载", 7), upload("上原创 2022-03-10 22:49:08 · 3578 阅读 · 3 评论 -
定时任务锁ShedLock的原理
目录前言总结前言本文以jdbc数据库锁为例,分析ShedLock的执行原理。1、@EnableSchedulerLock开启定时任务锁,添加了该注解,才能使用ShedLock锁的功能,该类通过@Import导入了SchedulerLockConfigurationSelector@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Import(SchedulerLockConfigurationSelector.c..原创 2021-12-04 17:36:12 · 3154 阅读 · 0 评论 -
定时任务锁ShedLock的使用
目录一、简介二、引入依赖三、创建表四、配置锁五、参数说明六、测试一、简介ShedLock主要用于多个相同服务在分布式环境下执行同一定时任务时,确保只有一个服务执行,即保证同一时刻,同一定时任务只被执行一次。可以通过JDBC数据库、Redis、Mongo、Hazelcast、ZooKeeper等实现锁的功能。下面以jdbc实现锁功能为例二、引入依赖<!-- https://mvnrepository.com/artifact/net.javacrumbs.shedlock/shedloc..原创 2021-12-04 15:55:09 · 3888 阅读 · 0 评论 -
java流式编程(二十二)结果处理工具类
前言工具类用于对一组数据进行一系列操作如映射、分组、排序后,返回结果。package com.iscas.supervision.util;import java.util.*;import java.util.function.Function;import java.util.stream.Collectors;import java.util.stream.Stream;public class ResultUtil { public static <T,...原创 2021-11-16 22:05:44 · 359 阅读 · 0 评论 -
java流式编程(二十一)sorted并行流排序原理分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录前言一、示例二、原理2.读入数据总结前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言本文简单分析一下并行流的排序流程。一、示例Stream.of(1, 3, 5, 7, 9, 2, 4, 6, 8, 10) .parallel() .sorted() .forEach(System.out::printl.原创 2021-11-14 16:16:10 · 753 阅读 · 0 评论 -
java流式编程(二十)sorted串行排序原理分析
目录前言一、串行排序1、示例原理二、SizedRefSortingSink三、RefSortingSink总结前言sorted用于对流中元素进行排序。一、串行排序1、示例 @Test public void sortedTest(){ Stream<Integer> datas = Stream.of(1, 3, 5, 7, 9, 2, 4, 6, 8, 10); List<Integer> sorted = datas.s..原创 2021-11-13 17:14:52 · 582 阅读 · 0 评论 -
java流式编程(十九)parallelStream原理学习二
目录前言一、示例二、原理总结前言本文讲解一下并行流的forEach方法一、示例public class StreamTest { private List<Integer> data = new ArrayList<>(); private static int length = 100; @Before public void before() { for (int i = 0; i < length; ..原创 2021-09-12 17:47:09 · 238 阅读 · 0 评论 -
java流式编程(十八)parallelStream原理学习一
目录前言一、示例二、ForkJoinPool三、 ForkJoinTask前言在数据量大或许多操作不需要串行且耗时较长时,使用并行流会充分利用计算机的多核,大大提升执行的效率。一、示例使用parallelStream()或parallel()方法构建并行流public class StreamTest { private List<Integer> data = new ArrayList<>(); private static int len..原创 2021-09-09 23:39:32 · 645 阅读 · 0 评论 -
java流式编程(十七)dropWhile
目录前言一、示例二、原理总结前言在jdk9中,Stream中提供了dropWhile的功能。一、示例 @Test public void testDropWhile(){ List<Integer> list = List.of(1, 2, 3, 4, 5, 4, 3, 2, 1); Stream<Integer> dropWhile = list.stream().dropWhile(i -> i < 4); ..原创 2021-07-31 21:47:41 · 249 阅读 · 0 评论 -
java流式编程(十六)takeWhile
目录前言一、示例二、原理总结前言在jdk9中,Stream中提供了takeWhile的功能。一、示例 @Test public void testTakeWhile(){ List<Integer> list = List.of(1, 2, 3, 4, 5, 4, 3, 2, 1); Stream<Integer> takeWhile = list.stream().takeWhile(i -> i < 4); ..原创 2021-07-31 21:22:43 · 301 阅读 · 0 评论 -
java Double精度缺失
在使用Double计算数值时,经常会遇见精度缺失的问题,例如 @Test public void testDouble() { Double a = Double.valueOf(0.05); BigDecimal bd = new BigDecimal(a); String s = bd.toPlainString(); System.out.println(s); }结果打印出0.0500000000000000..原创 2021-07-30 17:39:33 · 248 阅读 · 0 评论 -
java调用百度翻译
目录一、注册二、测试1.代码2.读入数据总结一、注册打开百度翻译开放平台 http://api.fanyi.baidu.com/注册账号开通通用翻译免费版服务,获取APP ID和密钥二、测试1.代码代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarni..原创 2021-07-28 21:14:45 · 1106 阅读 · 0 评论 -
java图片文字识别tesseract-ocr
目录前言一、安装二、配置二、测试1 命令行测试2 代码测试总结前言。一、安装https://github.com/tesseract-ocr/tesseract下载安装包:tesseract-ocr-setup-4.00.00dev.exe下载语言包: chi_sim.traineddata,eng.traineddata二、配置(1)配置环境变量 TESSDATA_PREFIX=D:\tools\Tesseract-OCR\tessdata(2)配置环境变量:path中添加..原创 2021-07-27 23:24:15 · 790 阅读 · 2 评论 -
java流式编程(十五)flatMap原理解析
flatMap可以将流扁平化文章目录前言一、示例二、原理总结前言有时候需要将多个流合并到一个流中,这是就需要通过flatMap对流进行扁平化操作。一、示例对字符串进行拆分,返回每个字符 List<String> data = Arrays.asList("hello", "world"); List<String> result = data.stream().flatMap(item -> Arrays.stream(item.split(""))原创 2021-07-03 16:08:21 · 779 阅读 · 0 评论 -
java流式编程(十四)MatchOps原理解析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、MatchKind二、执行原理1.测试代码2.原理分析前言Stream里面的anyMatch、allMatch、noneMatch就是使用MatchOps类来完成的功能。一、MatchKindenum MatchKind { //匹配任意一个 ANY(true, true), //匹配所有 ALL(false, false),原创 2021-06-09 22:41:05 · 395 阅读 · 0 评论 -
java流式编程(十三)Collectors中部分常用方法原理解析
前言前面已经分析了Collectors.groupingBy()、Collectors.toMap()的实现原理,接下来介绍Collectors中的其他方法。文章目录前言1、joining()2、joining(CharSequence delimiter, prefix, suffix)3、mapping(mapper, downstream)4、collectingAndThen(downstream, finisher)5、minBy(comparator)6、summingInt(ma..原创 2021-06-06 18:17:13 · 159 阅读 · 0 评论 -
java流式编程(十二)Collectors.groupingBy()原理解析
目录前言一、示例二、使用步骤1.引入库2.读入数据总结前言Collectors.toMap主要用于将流收集到Map中。本文以Collectors.toMap(keyMapper, valueMapper, mergeFunction, mapSupplier)方法为例。一、示例 List<Integer> datas = ImmutableList.of(1, 2, 3, 4, 5); HashMap<Integer, Integer> dataMap ..原创 2021-06-06 13:06:22 · 1097 阅读 · 0 评论 -
java流式编程(十一)Collectors.toMap()原理解析
文章目录前言一、示例二、参数解析1、keyMapper2、valueMapper3、mergeFunction4、mapSupplier三、处理过程总结前言Collectors.toMap主要用于将流收集到Map中。一、示例List<Integer> datas = ImmutableList.of(1, 2, 3, 4, 5); HashMap<Integer, Integer> dataMap = datas.stream().collect( ..原创 2021-06-05 20:57:55 · 1262 阅读 · 0 评论 -
java流式编程(十)终端操作Collertor运行流程
目录前言一、测试代码二、中间过程三、终端操作总结前言在上一篇流式编程中分析了流的创建、中间过程、forEach终端过程的流程,这一篇主要介绍Collector终端过程的流程。提示:以下是本篇文章正文内容,下面案例可供参考一、测试代码 List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); list.stream() .skip(1) .filter(v ->原创 2021-06-05 19:10:14 · 144 阅读 · 0 评论 -
使用freemarker模板生成带图片的word--html格式
文章目录前言一、制作freemarker模板二、修改模板三、后台代码四、结果总结前言用户需要预览word的功能,word里面带了很多图片,本文选择生成html格式的word来提供该功能。一、制作freemarker模板首先,新建一个docx,然后往word里粘贴一个图片,再将word另存为html文件。新建一个freemarker文件,如 word.ftl,将xml内容拷贝到word.ftl中。二、修改模板找到html的body标签修改为以下格式<body style="t..原创 2021-06-02 21:21:20 · 974 阅读 · 0 评论 -
使用freemarker模板生成带图片的word--xml格式
文章目录前言一、制作freemarker模板1、 准备模板2、修改模板二、后台代码1.引入freemarker依赖2. freemarker工具类方法3. 测试方法三、测试结果总结前言以xml的格式生成word,可以将图片的二进制数据保存在word中,无需考虑图片的存放位置。一、制作freemarker模板1、 准备模板首先,新建一个docx,然后往word里粘贴一个图片,再将word另存为xml文件。新建一个freemarker文件,如 word.ftl,将xml内容拷贝到word...原创 2021-06-02 21:17:33 · 3341 阅读 · 0 评论 -
springboot事务学习-事务解析过程
1、通过注解开启事务@EnableTransactionManagement2、通过@Import TransactionManagementConfigurationSelector导入以下两个类AutoProxyRegistrarProxyTransactionManagementConfiguration3、通过AutoProxyRegistrar注册InfrastructureAdvisorAutoProxyCreator间接继承 AbstractAutoProxyCreator和 Be原创 2021-05-31 22:09:51 · 218 阅读 · 0 评论 -
java流式编程(九)Stream运行流程分析
目录前言一、stream的创建二、stream的中间操作三、stream的终端操作总结前言目前已经基本能熟练的操作流,接下来是时候探索一下stream的运行流程了。一、stream的创建测试代码: List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); list.stream() .skip(1) .filter(v -> v != 3) ..原创 2021-05-23 15:27:06 · 298 阅读 · 0 评论 -
java流式编程(八)自定义Collector
目录需求一、自定义collector二、测试三、应用总结需求将多个long类型数组对应项之后进行累加,合并成一个数组。一、自定义collectorpublic class ArrayCollector implements Collector<Long[], Long[], Long[]> { private int size; boolean present = false; public ArrayCollector(int size) {原创 2021-03-06 15:00:16 · 294 阅读 · 4 评论 -
Java中Double、Float类型的NaN和Infinity
目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?Java虚拟机在处理浮点数运算时,不会抛出任何运行时异常(这里所讲的是java语言中的异常,请勿与IEEE 754规范中的浮点异常相互混淆,IEEE 754的浮点异常是一种运算信号),当一..原创 2021-03-06 11:56:06 · 2269 阅读 · 3 评论 -
java流式编程(七)Collectors中的常用方法
目录前言一、创建实体类二、测试数据二、测试方法1、toCollection(Supplier collectionFactory)2、toList()3、toSet()4、toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper)5、toMap(Function<? super T, ? extends K> keyMapper, Fu..原创 2021-02-28 18:57:17 · 2610 阅读 · 0 评论 -
java流式编程(六)Collector接口
目录一、Collector接口1、定义2、泛型一、Collector接口1、定义public interface Collector<T, A, R> { Supplier<A> supplier(); BiConsumer<A, T> accumulator(); BinaryOperator<A> combiner(); Function<A, R> finisher(); Set<Char原创 2021-02-28 15:00:49 · 760 阅读 · 2 评论 -
springboot项目去除druid监控的广告超链接等
目录前言一、配置druid监控二、druid监控的广告三、广告的来源四、广告超链接的去除1、思路2、实现总结前言访问项目中druid监控的页面,发现存在广告和超链接,需要我们来去除或者替换成自己企业定制的banner等。一、配置druid监控1、引入druid的依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> ..原创 2021-02-27 12:15:08 · 973 阅读 · 3 评论 -
java流式编程(五)Optional的使用
目录一、Optional引入二、Optional的创建三、Optional的使用总结一、Optional引入在java中,null不属于任何类型,可以将null赋值给任何引用对象的变量,它表示一个对象的引用是不存在的值,在程序中经常会出现引用值是null报错为空指针异常。java 8 提供了Optional类,Optional 是一个容器类,可以用来保存任何类型的值,也可以保存null值,在一定程度上避免了空指针异常。提示:以下是本篇文章正文内容,下面案例可供参考二、Optional的创建..原创 2021-02-21 17:28:48 · 562 阅读 · 0 评论 -
java流式编程(四)default关键字
目录一、default简介一、使用接口的default方法二、子类实现default方法总结一、default简介Java 8 新增了接口的默认方法,用default来修饰的方法即为默认方法,该接口的子类可以不实现默认方法。在Java 8 之前,当需要修改接口时候,需要修改全部实现该接口的子类,以保证接口方法在子类中都有实现。当需要在现有接口中增加一个方法时,是没法在给接口添加新方法的同时不影响已有的实现。所以引进的默认方法。他们的目的是为了解决接口的修改与现有的实现不兼容的问题。使用defau..原创 2021-02-21 12:29:07 · 489 阅读 · 0 评论 -
java流式编程(三)Stream简介
目录前言一、创建流1、由值创建流2、由数组创建流3、由文件创建流4、创建无限流二、中间操作三、终端操作1.引入库2.读入数据总结前言流Stream是java8中新增的API,Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象,可以对集合进行聚合、统计、并行处理等操作,可以用流写出更加简洁高效的代码。提示:以下是本篇文章正文内容,下面案例可供参考一、创建流1、由值创建流Stream<Integer> stream..原创 2021-02-20 22:36:27 · 199 阅读 · 0 评论 -
java通过cron表达式来获取执行的周期
目录前言一、代码示例1、计算固定的周期2、计算多个周期前言项目中使用cron表达式来作为定时调度的参数,又需要根据执行的周期来计算一些平均数据,所以需要根据cron表达式获取执行周期。spring 5.3 以上提供了 CronExpression,可以用来实现该需求。一、代码示例1、计算固定的周期通过下次执行时间和下下次执行时间之差计算public class CronTest { /** * 根据cron表达式获取执行周期 */ @Test ..原创 2021-01-24 17:26:40 · 3074 阅读 · 2 评论 -
java 调度线程池ScheduledThreadPoolExecutor的使用和源码学习
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、创建线程池二、测试schedule方法1.测试代码2.原理分析总结前言ScheduledThreadPoolExecutor可以用来执行一些定时调度任务,可以按照指定的周期执行任务一、创建线程池ThreadPoolTaskScheduler内部包装了一个ScheduledThreadPoolExecutor@Configurationpublic class ScheduleConfiguration {原创 2021-01-24 15:48:16 · 752 阅读 · 1 评论 -
java流式编程(二)方法引用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码原创 2021-01-23 12:57:02 · 247 阅读 · 4 评论 -
java流式编程(一)lambda表达式
文章目录一、lambda表达式1、lambda简介2、lambda语法二、使用步骤1.引入库2.读入数据总结一、lambda表达式1、lambda简介lambda是Java 8 中的新特性,它能以更简洁的代码完成匿名类的功能,可以将lambda表达式作为参数传递到方法中,也可以将它存储在变量中。2、lambda语法(parameters) -> expression或(parameters) ->{ statements; }lambda表达式由三部分组成:参数列表:..原创 2021-01-17 17:34:12 · 500 阅读 · 2 评论