首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

异步任务实战之远程拉取和风天气API 发布于

当最外层的try catch接受到异常后会开始最多3次的重试下载,并在全部失败后将CompletionException异常抛出到异步任务外。...构建完成的异步任务 现在我们已经构建好了downloadFile远程下载任务和unzipFile解压文件任务,并且也处理好了在发生错误时抛出一个CompletionException类型的异常。...A --> B[接口将IP传递给GeoLiteReader.getCityCode方法] B --> C[GeoLiteReader.getCityCode方法从GeoLite2.mmdb数据库读取经纬网信息...AllArgsConstructor public class QWeatherRouter { @Resource private GeoLiteReader reader; // 自动注入CityID读取的...setting -> setting.get("qWeatherPrivateKey").asText("")) .flatMap(key -> { // 从配置中读取私钥

21930
您找到你想要的搜索结果了吗?
是的
没有找到

Java异常处理最佳实践

因此,总是尝试寻找最适合你的异常事件的类,例如,抛出一个 NumberFormatException 来替换一个 IllegalArgumentException 。避免抛出一个不明确的异常。...当你尝试首先捕获较不具体的异常时,它们会报告无法访问的代码块。 但问题在于,只有匹配异常的第一个 catch 块会被执行。...【推荐】防止NPE,是程序员的基本修养,注意NPE产生的场景: 1) 返回类型为基本数据类型,return包装数据类型的对象时,自动拆箱有可能产生NPE。...4) 远程调用返回对象时,一律要求进行空指针判断,防止NPE。 5) 对于Session中获取的数据,建议进行NPE检查,避免空指针。...6) 级联调用obj.getA().getB().getC();一连串调用,易产生NPE。 正例:使用JDK8的Optional类来防止NPE问题。

71250

【148期】最最最全面的Java异常面试及解答

,代码会进入 catch 代码块,之后进入 finally 代码块;若读取文件时未发生异常,则会跳过 catch 代码块直接进入 finally 代码块。...NoClassDefFoundError 是一个 Error 类型的异常,是由 JVM 引起的,不应该尝试捕获这个异常。...【推荐】防止NPE,是程序员的基本修养,注意NPE产生的场景:1) 返回类型为基本数据类型,return包装数据类型的对象时,自动拆箱有可能产生NPE。...4) 远程调用返回对象时,一律要求进行空指针判断,防止NPE。5) 对于Session中获取的数据,建议进行NPE检查,避免空指针。...6) 级联调用obj.getA().getB().getC();一连串调用,易产生NPE。正例:使用JDK8的Optional类来防止NPE问题。

55520

Java异常面试题(2020最新版)

,代码会进入 catch 代码块,之后进入 finally 代码块;若读取文件时未发生异常,则会跳过 catch 代码块直接进入 finally 代码块。...NoClassDefFoundError 是一个 Error 类型的异常,是由 JVM 引起的,不应该尝试捕获这个异常。 ...【推荐】防止NPE,是程序员的基本修养,注意NPE产生的场景: 1) 返回类型为基本数据类型,return包装数据类型的对象时,自动拆箱有可能产生NPE。...4) 远程调用返回对象时,一律要求进行空指针判断,防止NPE。 5) 对于Session中获取的数据,建议进行NPE检查,避免空指针。...6) 级联调用obj.getA().getB().getC();一连串调用,易产生NPE。 正例:使用JDK8的Optional类来防止NPE问题。

75030

Unix的IO模型解析

inputStream = socket.getInputStream(); byte[] content = new byte[128]; // 并且尝试读取数据 int bytesOfRead...= inputStream.read(content); } 在输入流上的read调用会阻塞直到有数据被读取成功或者连接发生了异常。...其模型如下 可以看到,在内核没有数据时,尝试对数据的读取不会导致线程阻塞,而是快速的返回一个错误。直到内核中收到数据时,尝试读取,就会将数据从内核复制到用户空间,进行操作。...异步IO 异步IO的实现一般是通过系统调用,向内核注册了一个套接字的读取动作。这个调用一般包含了:缓存区指针,缓存区大小,偏移量、操作完成时的通知方式。...同步 V.S 异步 根据 POSIX 的定义: 同步:同步操作导致进程阻塞,直到 IO 操作完成 异步异步操作不导致进程阻塞 来看下五种 IO 模型的对比,如下 可以看到,根据定义,前 4 种模型,在数据的读取阶段

48430

CompletableFuture原理与实践-外卖商家端API的异步

调用端异步》一文。...= null),如果已完成直接触发fn,否则将观察者Completion加入到CF的观察者链stack中,再次尝试触发,如果被观察者未执行完则其执行完毕之后通知触发。...依次弹栈,通知观察者尝试运行。...与单个依赖不同的是,在依赖的CF未完成的情况下,thenCombine会尝试将BiApply压入这两个被依赖的CF的栈中,每个被依赖的CF完成时都会尝试触发观察者BiApply,BiApply会检查两个依赖是否都完成...4.2.3 异步RPC调用注意不要阻塞IO线程池 服务异步化后很多步骤都会依赖于异步RPC调用的结果,这时需要特别注意一点,如果是使用基于NIO(比如Netty)的异步RPC,则返回结果是由IO线程负责设置的

1.4K10

JDK 14即将发布,你所要知道的都在这里!

在老年代中,不会尝试将对象保存在同一个NUMA节点中。humongous region也并不适用这项分配策略。...发出在创建新记录时必须发生的事件 写入事件元数据(例如字段布局) 写入检查点数据(例如堆栈跟踪) 将数据从磁盘存储复制到单独的记录文件 如果有一种方法,可以在不创建新记录文件的情况下,从磁盘存储库中读取正在记录的数据...描述 jdk.jfr模块里的jdk.jfr.consumer包,提供了异步订阅事件的功能。用户可以直接从磁盘存储库读取记录数据,也可以直接从磁盘存储流中读取数据,而无需转储记录文件。...我们可以在当前线程中启动流,也可以异步启动流。 Java虚拟机(JVM)每秒一次将线程本地缓冲区中存储的事件定期刷新到磁盘存储库。...NPE几乎可以出现在程序的任意位置,因此尝试捕获和修复它们是不可能的。

96830

Java IO学习笔记五

不建议对这两个对象尝试使用单个线程,因为这样可能会造成该线程死锁。如果某个线程正从连接的管道输入流中读取数据字节,但该线程不再处于活动状态,则该管道被视为处于 毁坏 状态。...通常,数据由某个线程从 PipedInputStream 对象读取,并由其他线程将其写入到相应的 PipedOutputStream。不建议对这两个对象尝试使用单个线程,因为这样可能死锁线程。...,但是此时的读线程的管道结束,那么此时的写线程的管道就会发生IOException异常 * 2.读线程正在从缓冲区读数据的时候,但是此时的写线程的管道已经结束了,此时就会引起读线程的管道发生IOException...100个字节 int len = 0; try { len = inputStream.read(...,那么就会一直出现堵塞 问题 写线程正在往缓冲区写数据的时候,但是此时的读线程的结束读取,那么此时的写线程的管道就会发生IOException异常,可以将上面receive进程中的while(true

32930

如何避免 Java 中的“NullPointerException”

在上面的示例中,我们尝试分配给 String 变量 Integer 值: 字符串变量 3 空引用破坏了 Java 类型的安全性 Java 在编译期间验证变量的类型和赋值的类型。那有什么问题呢?...避免NPE的实用方法是什么?让我们在下面回顾一个示例并尝试修复它。 7 NullPointerException 在我们的示例中,我们有一个带有地址字段的用户对象。潜在地,它们都可能为空。...11 @NotNull @Nullable 我们需要一个解决方案,它可以在编译步骤中读取我们的代码,并通知我们错过了潜在的 NPE 场景。为此,我们可以使用 Java 注释处理器。...现在,让我们将其标记为@Nullable,并尝试使用它: 使用 @Nullable 注释 该框架会在该代码中发现任何错误吗?...让我们再次运行编译检查: 运行编译 因此,它在第 19 行发现了一个潜在问题,我们尝试在 Nullable 字符串上调用 .length()。

2.8K20

Java IO(2)阻塞式输入输出(BIO)

输入流(InputStream)   站在程序的角度,读取文件的动作称为输入,InputStream是一个抽象类,Java中IO的设计并不仅仅是只有InputStream类,因为存在许多输入流,例如网络...字符流读取出来的文件则直接就是字符,不需要再重新转化。Reader和InputStream类似,也是一个抽象类,它也有不少的实现,其主要实现如下。  ...如果对显示锁Lock有所了解的话,应该是会知道它的两个方法一个是阻塞式获取锁——lock,直到成功地获取所后才返回;另一个是非阻塞式获取锁——tryLock,它首先尝试获取锁,成功获取所则成功返回,未能获取锁也会立即返回...当然还有异步阻塞与非阻塞,这里暂不涉及异步相关,所以本文所述阻塞与非阻塞均是在同步状态下。   在此有必要了解什么是同步,通俗地说就是你进行下一步动作需要依赖上一步的执行结果。...有时在我们的应用程序中,读取文件并不是下一步所必需的,也就是说这是两个不相干的逻辑,此时如果采用同步的手段去读取文件,读完过后再做另外的逻辑显然这个时间就被浪费了,通常情况下采取的措施是——伪异步,单独创建一个线程执行读取文件的操作

1.1K50

少啰嗦!一分钟带你读懂Java的NIO和经典IO的区别

1、引言 很多初涉网络编程的程序员,在研究Java NIO(即异步IO)和经典IO(也就是常说的阻塞式IO)的API时,很快就会发现一个问题:我什么时候应该使用经典IO,什么时候应该使用NIO?...在本文中,将尝试用简明扼要的文字,阐明Java NIO和经典IO之间的差异、典型用例,以及这些差异如何影响我们的网络编程或数据传输代码的设计和实现的。...而不是仅仅从例如InputStream读取字节的数据字节,必须首先将数据读入缓冲区,然后从那里进行处理。 5.2 数据处理 使用纯NIO设计与IO设计时,数据处理也会受到影响。...在IO设计中,您从InputStream或Reader中读取字节的数据字节。想象一下,您正在处理基于行的文本数据流。...附录:更多NIO异步网络编程资料 《Java新一代网络编程模型AIO原理及Linux系统AIO介绍》 《有关“为何选择Netty”的11个疑问及解答》 《开源NIO框架八卦——到底是先有MINA还是先有

86930

.Net之使用Jquery Ajax通过FormData对象异步提交图片文件到服务端保存并返回保存的图片路径

这篇文章中,我将要描述的是在我们.Net中如何使用Jquery Ajax通过FormData对象异步提交图片文件到后台保存,并返回保存的图片路径展示出图片,实现一个无刷新的异步图片上传的过程,当然这里我讲解的是单张图片的保存过程...,对于多图片上传的话其实我们只需要在type='file'文本框中加上一个multiple可多选,然后获取input中的文件数组遍历向后台提交感兴趣的话可以尝试,不过下一篇博客将会讲解如何使用Layui...比起普通的ajax,使用FormData的最大优点就是我们可以异步上传一个二进制文件。...: false, // 告诉jQuery不要去设置Content-Type请求头 contentType: false, beforeSend: function () { console.log("正在进行...= fileData.InputStream) 53 { 54 MemoryStream memoryStream = inputStream as MemoryStream; 55 if (memoryStream

2K20

高通向开发者开放AI SDK,将推出AI芯片增强神经网络

还有的公司则在尝试降低AI本身的性能需求,使其能更容易的整合到手机芯片中。高通目前的计划就是更倾向于后者。 ?...为了加快人工智能(AI)应用在智能手机上的执行速度,相关企业正尝试各种的可能性。上述 SDK 是用来协助开发商优化软件在骁龙 600、800 系列处理器上的 AI 执行效能。...这意味着软件开发者如果想打造影像辨识应用软件,将可与高通 NPE SDK 整合,以便能在相容处理器上达到更快执行效率。...高通 AI 暨机器学习部主管 Gary Brotman 受访时表示,骁龙 NPE SDK 简单易用,任何已在深度学习领域耕耘的软件开发商无论规模大小都是锁定的对象。...高通表示,Facebook将会成为率先整合该SDK的厂商之一,他们目前正在用它来加速自己手机应用中的增强现实滤镜。通过使用神经处理引擎,Facebook的滤镜加载速度提高了5倍。

1.5K50
领券