try

Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore

那年仲夏 提交于 2019-12-17 01:31:07
原文出处: 海子 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 一.CountDownLatch用法 CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。 CountDownLatch类只提供了一个构造器: public CountDownLatch(int count) { }; //参数count为计数值 然后下面这3个方法是CountDownLatch类中最重要的方法: public void await() throws InterruptedException { }; //调用await()方法的线程会被挂起,它会等待直到count值为0才继续执行 public boolean await(long timeout, TimeUnit unit) throws InterruptedException { }; /

异常处理

白昼怎懂夜的黑 提交于 2019-12-17 00:17:59
一、什么是异常处理 异常 是错误发生的信号,一旦程序出错就会产生一个异常, 如果该异常没有被应用程序处理,那么该异常就会抛出来,程序的执行也随之终止。 异常包含三个部分: traceback异常的追踪信息 异常的类型 异常的信息 错误分为两大类: 1.语法上的错误:在程序运行前就应该立即修正 2.逻辑上的错误 二、为何要异常处理 避免程序因为异常而崩溃,所以在应用程序中应该对异常进行处理,从而增强程序的健壮性 三、如何异常处理 try : #try监听下面的代码块 代码 1 代码 2 代码 3 . . . . . . except NameError: 当抛出的异常时 NameError时执行的子代码块 # 异常处理: try : print ( '====>1' ) print ( '====>2' ) print ( '====>3' ) l = [ 1 , 2 , 3 ] l [ 100 ] #IndexError #运行到此处直接跳到except下的代码块 print ( '====>4' ) #不执行 except IndexError : print ( 'IndexError' ) #异常处理多分支 try : print ( '====>1' ) print ( '====>2' ) print ( '====>3' ) l = [ 1 , 2 , 3 ] d =

异常类

三世轮回 提交于 2019-12-16 23:24:30
异常类 throwable:{ error:IOError,linkageError,threadDeath,AWTError { Exception:SQLExpection,RuntimeExteption:(IndexOutOfBoundsException,NullPointerException,ArithmetchException), IOException:FileNotFoundException,EOFEException java提供的异常处理机制有两种: 使用try…catch捕获异常:将可能产生异常的代码放在try语句中进行隔离,如果遇到异常,程序会停止执行try块的代码,跳到catch块中进行处理 使用throws声明抛出异常:当前方法不知道如何处理所出现的异常,该异常应由上一级调用者进行处理,可在定义该方法时使用throws声明抛出异常 所有异常对象都包含以下几个常用的方法用于访问异常信息: getMessage()方法:返回该异常的详细叙述字符串; printStackTrace()方法:该异常的跟踪栈信息输出到标准错误输出; printStackTrace(printStream s)方法:将该异常的跟踪栈信息输出到指定输出流; getStrackTrace( ):返回该异常类的跟踪栈信息。 list集合: ArrayList=new

18-NioEventLoop实例化过程

谁都会走 提交于 2019-12-16 22:24:33
文章目录 NioEventLoop实例化过程 一、构造方法 1.1 NioEventLoop 1.2 SingleThreadEventLoop 1.3 SingleThreadEventExecutor 1.4 AbstractEventExecutor 二、EventLoop 与 Channel 的关联 2.1 Channel注册到EventLoop 2.2 EventLoopGroup注册Channel 三、EventLoop启动 3.1 SingleThreadEventExecutor#startThread 3.2 NioEventLoop#run 四、小结 NioEventLoop实例化过程 本文集合代码流程来分析 NioEventLoop 的实例化过程 开篇我们牢记 NioEventLoop 的两个功能: 1.处理IO事件;执行与 Channel 相关的 IO 操作, 包括调用 select 等待就绪的 IO 事件、读写数据与数 据的处理等; 2.执行提交的任务;作为任务队列, 执行 taskQueue 中的任务, 例如用户调用 eventLoop.schedule 提 交的定时任务也是这个线程执行的; 一、构造方法 实例化自然离不开构造方法,不管是我们直接构造对象还是框架内部去构造对象都会走构造方法,因为NioEventLoop 是一个最底层的实现类

使用iText库创建PDF文件

你。 提交于 2019-12-16 17:30:30
阅读目录 前言 iText库概述 iText库常用类 iText Hello World示例 给PDF文件设置文件属性 PDF中添加图片 PDF中创建表格 PDF中创建列表 PDF中设置样式/格式化输出 给PDF文件设置密码 给PDF文件设置权限 读取/修改已有的PDF文件 往HTTP response输出流中写入PDF内容 前言 译文连接: http://howtodoinjava.com/apache-commons/create-pdf-files-in-java-itext-tutorial/ 对于excel文件的读写操作,相信大家都比较熟悉,使用apache的POI库即可。本篇文章,我将基于iText库编写各式各样的代码示例去创建PDF文件。这些例子会按它们各自的功能分类,为了使大家能更加形象的看到代码所生成的PDF文件内容,每一个例子我都会附加上一张PDF文件截图。我已经尽可能的把我能找到的有用的例子放在这里,如果你觉得我错过了一些用例,随时在评论里留下你的建议,我会把这些例子添加进去。 iText库概述 好的一面是,iText是开源的API,但是需要注意,虽然iText是开源,如果你出于商业目的使用它,仍然需要购买商业许可证。你可以从http://itextpdf.com上免费获取iText的Java类库,iText库非常强大,支持HTML、RTF

深入理解 Java 异常

喜欢而已 提交于 2019-12-16 16:36:46
📓 本文已归档到:「 javacore 」 🔁 本文中的示例代码已归档到:「 javacore 」 1. 异常框架 1.1. Throwable Throwable 是 Java 语言中所有错误( Error )和异常( Exception )的超类。 Throwable 包含了其线程创建时线程执行堆栈的快照,它提供了 printStackTrace() 等接口用于获取堆栈跟踪数据等信息。 主要方法: fillInStackTrace - 用当前的调用栈层次填充 Throwable 对象栈层次,添加到栈层次任何先前信息中。 getMessage - 返回关于发生的异常的详细信息。这个消息在 Throwable 类的构造函数中初始化了。 getCause - 返回一个 Throwable 对象代表异常原因。 getStackTrace - 返回一个包含堆栈层次的数组。下标为 0 的元素代表栈顶,最后一个元素代表方法调用堆栈的栈底。 printStackTrace - 打印 toString() 结果和栈层次到 System.err ,即错误输出流。 toString - 使用 getMessage 的结果返回代表 Throwable 对象的字符串。 1.2. Error Error 是 Throwable 的一个子类。 Error 表示合理的应用程序不应该尝试捕获的严重问题

async处理异步操作

别等时光非礼了梦想. 提交于 2019-12-16 12:09:16
async函数用async作为关键字,try和 catch来处理异常, await接受一个promise函数返回 async list () { try { await api.findjuBarData().then(res => { console.log(res) }) console.log('测试') } catch (error) { console.log(error) } }, 这个函数会先打印请求到的值再打印’测试‘ 来源: https://www.cnblogs.com/wjsy/p/12048016.html

Java异常

无人久伴 提交于 2019-12-16 11:04:35
一、异常? 程序的运行过程中所发生的不正常事件 ,如所需文件找不到、网络连接不能或连接中断、算术运算出错( 如被零除 )、数组下标越界、装载一个不存在的类、对 null 对象操作、类型转换异常等。异常会中断正在运行的程序。 二、Java 异常体系结构 所有异常都是 Throwable 类的子类 ,它派生了两个类: Error 类 和 Exception 类 。 注:在进行程序设计时,应该更关注 Exception 类 2.1 Error 类: 表示仅靠 程序本身无法恢复的严重错误 ,如内存溢出、动态链接失败、虚拟机错误。应用程序不应该抛出这种类型的错误( 一般由虚拟机抛出 )。假如出现这种错误,应尽力使程序安全退出。 2.2 Exception 类: 由 Java 应用程序 抛出和处理的 非严重错误 ,如所需文件找不到、网络连接不通或连接中断、算术运算出错( 如被零除 )、数组下标越界、装载一个不存在的类、对 null 对象操作、类型转换异常等。它的各种不同的子类分别对应不同类型的异常。 2.3 Exception 可分为两大类异常 运行时异常 :包括 RuntimeException 及其所有子类。不要求程序必须对它们进行处理。 Checked 异常( 非运行时异常 ) :除了运行时异常外的其他从 Exception 类继承来的异常类。 三、常见的异常类 常见的异常类 异常 说明

excle导入 文件file上传ajxa请求

最后都变了- 提交于 2019-12-16 10:20:55
第一次写导入excle文件的功能,需求点击选择文件上传,然后点击确定后文件上传请求后台接口,保存数据.最初选择layui的 upload控件,发现它有两种方式,一时点击选择文件就触发请求后台接口,不符合我现在的需求;另外一种就是点击上传文件,然后在点击其他按钮事件触发后台接口的请求,问题是这里要求文件的格式只能是图片,最终选择放弃,选择了最原始的 input type = " file " 下面是前端页面的代码,以及ajax的请求代码 <div> <div class="contain"> <div class="wenzi">附件上传</div> <div class="form_msg"> <form action="" enctype="multipart/form-data" method="post" > <input id="file" type="file" name="file" /> <button type="button" class="xiazai" id="excleMuban">Excel模板下载</button> </form> <div class="rec_buttom"> <button class="layui-btn layui-btn-normal" id="save">确定</button> <button class="layui

基于注解的AOP实现事务控制及问题分析

微笑、不失礼 提交于 2019-12-16 07:53:15
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.learn</groupId> <artifactId>\day04_learn_03account_aoptx_anno</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency>