try

阻塞队列BlockingQueue之LinkedBlokingQueue

◇◆丶佛笑我妖孽 提交于 2020-01-18 22:11:40
1、简介 LinkedBlokingQueue 是链表实现的有界阻塞队列,此队列的默认和最大长度为 Integer.MAX_VALUE。此队列按照先进先出的原则对元素进行排序。ArrayList和ArrayBlockingQueue一样,内部基于数组来存放元素,而LinkedBlockingQueue则和LinkedList一样,内部基于链表来存放元素。 2、源码分析 2.1、属性 /** * 节点类,用于存储数据 */ static class Node<E> { E item; Node<E> next; Node(E x) { item = x; } } /** 阻塞队列的大小,默认为Integer.MAX_VALUE */ private final int capacity; /** 当前阻塞队列中的元素个数 */ private final AtomicInteger count = new AtomicInteger(); /** * 阻塞队列的头结点 */ transient Node<E> head; /** * 阻塞队列的尾节点 */ private transient Node<E> last; /** 获取并移除元素时使用的锁,如take, poll, etc */ private final ReentrantLock takeLock = new

java框架--Model层框架 sorm

别来无恙 提交于 2020-01-18 13:33:29
SORM框架 1 核心框架: Query接口 负责查询(对外提供读物的核心类) QueryFactory类 负责根据配置信息创建query对象 Typeconverto接口 负责类型转换 TableContext 类 负责获取管理数据库所有表结构和类结构的关系,并可以根据表结构生成类结构, DBManager 类 根据配置信息,维持连接对象的管理增加连接池功能 工具类 JDBCUtil 封裝常用JDBC操作 StringUtil 封裝常用字符串操作 JavaFileUtil封裝java文件操作 ReflectUtil 封裝常用反射操作 client QueryFactory <interface> DB2Query query OracleQuery mysqlQuery TableContext DBManager <interface> OracleTypeConvertor TypeConvertor mysqlTypeConvertor 核心bean ,封裝相关数据 ColumnInfo 封裝表中一个字段的信息(字段类型、字段名、键类型) Configuration 封裝配置文件信息 TableInfo 封裝一张表的信息 2、针对SORM框架的说明: 核心思想:使用简单、性能高、极易上手! 配置文件: 模卡使用资源文件、后期项目复杂后可以增加xml文件配置和注解。

捕获异常try…catch…finally

杀马特。学长 韩版系。学妹 提交于 2020-01-18 03:32:44
捕获:Java中对异常有针对性的语句进行捕获,可以对出现的异常进行指定方式的处理 捕获异常格式: try { //需要被检测的语句。 } catch(异常类 变量) { //参数。 //异常的处理语句。 } finally { //一定会被执行的语句。 } try:该代码块中编写可能产生异常的代码。 catch:用来进行某种异常的捕获,实现对捕获到的异常进行处理。 finally:有一些特定的代码无论异常是否发生,都需要执行。另外,因为异常会引发程序跳转,导致有些语句执行不到。而finally就是解决这个问题的,在finally代码块中存放的代码都是一定会被执行的。 代码演示 public class Main { public static void main(String[] args) { try { devision(0); }catch (ArithmeticException ex){ //进行异常处理 System.out.println("异常处理"); }finally { System.out.println("这句话一定会打印"); } } public static Integer devision(int i) throws ArithmeticException{ if(i==0){ throw new ArithmeticException(

java笔记----异常处理

偶尔善良 提交于 2020-01-18 03:27:56
Error 和 Exeption Error   Error 描述了 JAVA 程序运行时系统的内部错误,通常比较严重,除了通知用户和尽力使应用程序安全地终止之外,无能为力,应用程序不应该尝试去捕获这种异常。通常为一些虚拟机异常,如 StackOverflowError 等。 Exception   Exception 类型下面又分为两个分支,一个分支派生自 RuntimeException,这种异常通常为程序错误导致的异常;另一个分支为非派生自 RuntimeException 的异常,这种异常通常是程序本身没有问题,由于像 I/O 错误等问题导致的异常,每个异常类用逗号隔开。 受查异常和非受查异常 受查异常   受查异常会在编译时被检测。如果一个方法中的代码会抛出受查异常,则该方法必须包含异常处理,即 try-catch 代码块,或在方法签名中用 throws 关键字声明该方法可能会抛出的受查异常,否则编译无法通过。如果一个方法可能抛出多个受查异常类型,就必须在方法的签名处列出所有的异常类。 通过 throws 关键字声明可能抛出的异常: private static void readFile(String filePath) throws IOException { File file = new File(filePath); String result;

JAVA设计模式之动态代理

烂漫一生 提交于 2020-01-18 03:07:03
本文转载自: https://www.cnblogs.com/lfdingye/p/7717063.html 作者:lfdingye 转载请注明该声明。 动态 代理模式主要由四个元素共同构成:   1. 接口,接口中的方法是要真正去实现的   2. 被代理类,实现上述接口,这是真正去执行接口中方法的类   3. 代理类,实现InvocationHandler,帮助被代理类去实现方法   4. 测试用例: 举例详解:     1. 接口: public interface Person { void searchHouse(); }   2. 被代理类Master,实现上述接口: public interface Person { void searchHouse(); }   3. 代理类HomeLine,实现InvocationHandler接口 import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class HomeLink implements InvocationHandler{ private Person target; public Object getInstance(Person

Java 异常的处理

对着背影说爱祢 提交于 2020-01-18 02:55:30
throw关键字 作用 可以使用throw关键字在指定的方法中抛出指定的异常 使用格式 throw new xxxException(“异常产生的原因“) 注意 throw关键字必须写在方法的内部 throw关键字后边new的对象必须是 Exception或者 Exception的子类对象 throw关键字抛出指定的异常对象,我们就必须处理这个异常对象。 throw关键字后边创建的是 RuntimeException或者是RuntimeException的子类对象,我们可以不处理,默认交给JW处理(打印异常对象,中断程序) throw关键字后边创建的是编译异常,我们就必须处理这个异常,要么 throws,要么try...catch 举例 例子1: public class DemoThrow { public static void main(String[] args) { int[] array = {}; int element = DemoThrow.getElement(array, 1); } public static int getElement(int[] array, int index) { if (array.length == 0) { throw new NullPointerException("传入的数组为空"); } else if (index

SQLServer异常捕获(Try Catch)

喜你入骨 提交于 2020-01-18 02:54:18
/* SQLServer异常捕获 在SQLserver数据库中,如果有很多存储过程的时候,我们会使用动态SQL进行存储过程调用存储过程,这时候,很可能在某个环节就出错了,但是出错了我们很难去跟踪到出错的存储过程,此时我们就可以使用异常处理,通过日志表来记录存储过程的执行情况,然而定位到错误的存储过程,以下是一个存储过程异常处理的小实例: */ /*===================================================== 相关错误消 息如下: ERROR_NUMBER() 返回错误号。 ERROR_SEVERITY() 返回严重性。 ERROR_STATE() 返回错误状态号。 ERROR_PROCEDURE() 返回出现错误的存储过程或 触发器的名称。 ERROR_LINE() 返回导致错误的例程中的行 号。 ERROR_MESSAGE() 返回错误消息的完整文本。 ========================================================*/ CREATE TABLE #LogTable /*可以建一个实体表来保存错误的信息*/ ( ID int identity(1,1),--错误序号 ErrorNumber int,--错误号 ErrorSeverity int,--严重性 ErrorState int,

java基础学习笔记四(异常)

不想你离开。 提交于 2020-01-18 02:02:02
Java中的异常 Exception 如图可以看出所有的异常跟错误都继承与Throwable类,也就是说所有的异常都是一个对象。 从大体来分异常为两块: 1、error---错误 : 是指程序无法处理的错误,表示应用程序运行时出现的重大错误。例如jvm运行时出现的OutOfMemoryError以及Socket编程时出现的端口占用等程序无法处理的错误。 2、Exception --- 异常 :异常可分为运行时异常跟编译异常 1) 运行时异常 :即RuntimeException及其之类的异常。这类异常在代码编写的时候不会被编译器所检测出来,是可以不需要被捕获,但是程序员也可以根据需要进行捕获抛出。常见的RUNtimeException有:NullpointException(空指针异常),ClassCastException(类型转换异常),IndexOutOfBoundsException(数组越界异常)等。 2) 编译异常 :RuntimeException以外的异常。这类异常在编译时编译器会提示需要捕获,如果不进行捕获则编译错误。常见编译异常有:IOException(流传输异常),SQLException(数据库操作异常)等。 捕获异常 使用 try 和 catch 关键字可以捕获异常。try/catch 代码块放在异常可能发生的地方。 try

Java基础 throw 抛出异常后,用try...catch捕获

和自甴很熟 提交于 2020-01-18 02:00:50
    JDK :OpenJDK-11     OS :CentOS 7.6.1810     IDE :Eclipse 2019‑03 typesetting :Markdown   code package per.jizuiku.base; /** * @author 给最苦 * @date 2019/06/29 * @blog www.cnblogs.com/jizuiku */ class Demo { /** * @param args */ public static void main(String[] args) { try { throw new ArithmeticException(); } catch (Exception e) { // TODO: handle exception System.out.println("捕获异常: " + e.toString()); } } }   result 捕获异常: java.lang.ArithmeticException   sourceCode /** * Constructs an {@code ArithmeticException} with no detail * message. */ public ArithmeticException() { super(); }   resource [

javascript中 try catch用法

徘徊边缘 提交于 2020-01-18 02:00:20
javascript中 try catch用法 投稿:hebedich 字体:[ 增加 减小 ] 类型:转载 时间:2015-08-16 我要评论 JS try catch语句一般在什么情况下使用?是必须使用的吗?下面就让小编来给大家介绍一下试用心得。 先看个实例 <input id='b1' type='button' value='按钮'/> <script> window.onload=function(){ var oBtn=document.getElementById("b1"); function mto(){ alert("123"); }; try //非IE { oBtn.attachEvent("onclick",mto,false); } catch(e)//IE { oBtn.addEventListener("click",mto,false); } }; </script> 注意的是: addEventListener和attachEvent的区别在第一个参数 前者是click 后者是onclick addEventListener 在其元素所在的元素作用域中运行 attachEvent在全局作用域中运行(this=window) Try...Catch 语句 try...catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch