try

学习java习惯

五迷三道 提交于 2020-02-11 19:09:52
1. 抽象方法子类添加快捷键:Ctrl+1 2.非静态内部类 语法: new 外部类().new 内部类() eg: Hero hero = new Hero(); HeroScore score = hero.new HeroScore(); 3.默认方法 default加在接口中 可以在连接该接口的子类中加入default方法 通过这种手段,就能够很好的扩展新的类,并且做到不影响原来的类 4.父类构造方法在子类构造方法之前进行 5.super 若父类提供两个构造方法,一个有参,一个无参 public Hero(){ System.out.println("Hero的无参的构造方法 ");} public Hero(String name){ System.out.println("Hero的有一个参数的构造方法 "); this.name = name; } 1 2 3 4 5 6 7 子类实例化时, 默认掉用父类无参构造方法(因为可能父类没有提供构造方法) 若此时需要调用父类带参构造方法 用super(name); 值得注意的是,super是用来调用指定构造方法,而非有参 若super(); 则调用无参,即可认为子类构造方法中,本身就带有super(); eg:super(1,2)super(1) 且括号内数做其父类的参数 6.instanceof 7. Math

避免在 finally 语句块中使用 return 语句

我是研究僧i 提交于 2020-02-11 17:20:21
在try-catch-finally语句块中,finally语句块中的return/抛出异常(立即结束语句)的优先级最高,程序会优先返回finally语句块中的立即结束语句的结果,此时try-catch语句块中的return/抛出异常(立即结束语句)的结果无效,因为被覆盖了。 参考: https://juejin.im/entry/5955c3215188250d841c9974 https://beginnersbook.com/2013/05/java-finally-return/ 来源: CSDN 作者: yrk0556 链接: https://blog.csdn.net/yrk0556/article/details/104258705

JDK动态代理实现机制

故事扮演 提交于 2020-02-11 09:41:45
===========================================     原文链接: JDK动态代理实现机制 转载请注明出处! =========================================== 本文只对JDK动态代理的底层实现进行分析,如需了解代理模式和动态代理的使用请移步: 设计模式—代理模式 动态代理的两种实现方式(JDK/Cglib) 在读代码之前先清楚两个概念:   1、Class类存储的是类的所有信息,包括类的所有方法、属性、实现接口等。每个类对应一个Class对象(单例),Class对象是由classLoader加载出来的,使用双亲委派模型来保证class只会被加载一次。   2、classLoader在加载类的时候不管class文件是从哪里来的,无论是从.class文件、网络、数据库类加载器都不关心。他只关心给他的class二进制流是不是能够通过校验。 说明:以下测试代码和 动态代理的两种实现方式(JDK/Cglib) 相同 使用JDK动态代理需要实现 InvocationHandler 接口,同时实现invoke()方法。 package com.zpj.proxy.jdk; import java.lang.reflect.InvocationHandler; import java.lang.reflect

异常处理总结

喜欢而已 提交于 2020-02-11 01:00:07
一,异常和错误 part1:程序中难免出现错误,而错误分成两种 1.语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 def test: pass #语法错误示范三 print(haha 语法错误 语法错误 2.逻辑错误(逻辑错误) #用户输入不完整(比如输入为空)或者输入非法(输入不是数字) num=input(">>: ") int(num) #无法完成计算 res1=1/0 res2=1+'str' 逻辑错误 part2:什么是异常 异常就是程序运行时发生错误的信号,在python中,错误触发的异常如下 part3:python中的异常种类 在python中不同的异常可以用不同的类型(python中统一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误 # 触发IndexError l=['egon','aa'] l[3] # 触发KeyError dic={'name':'egon'} dic['age'] #触发ValueError s='hello' int(s) 错误举例 AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x IOError 输入/输出异常;基本上是无法打开文件 ImportError 无法引入模块或包

实现一个简易的RPC

本秂侑毒 提交于 2020-02-10 20:45:41
  之前写了一些关于RPC原理的文章,但是觉得还得要实现一个。之前看到一句话觉得非常有道理,与大家共勉。不是“不要重复造轮子”,而是“不要发明轮子”,所以能造轮子还是需要造的。   如果大家还有不了解原理的,可参考我之前写的“ RPC原理 ”,点击即可通过“飞机票”过去。   这篇文章的梗概如下:   1. 介绍一下这篇RPC的大致梗概。   2. 说一下这篇文章需要的技术和实现。   3. 用测试用例测试一下。 一、梗概   这篇RPC主要提示了服务注册,服务发现,同步调用,异步调用,回调功能。这些功能已经足够学习RPC使用了,对其中的原理就了解的非常清楚了。 二、技术和实现   采用的技术有Netty, Zookeeper, Protostuff, Spring,Cglib,Log4j这些基本就能够达到这个功能。   Netty的作用就是用于客户端向服务端发送请求,服务端接收请求后进行处理,Netty是一个基于异步事件处理的程序,客户端和服务端采用的LengthFieldBasedFrameDecoder,这种解码方法是最通用的,也就是把长度写到数据包中,即 Length + Data,用这种解码方法解决拆包粘包的问题。   Zookeeper的作用是用于服务的注册,分布式解决方案中的很重要的一个工具。里边主要做两件事,一个是创建一个永久的节点,然后再永久的节点下边创建临时节点

Java异常处理之捕获异常

纵饮孤独 提交于 2020-02-10 16:33:22
目录 一、try-catch语句 1.try代码块 2.catch代码块 二、多catch代码块 三、try-catch语句嵌套 四、多重捕获 1.为什么使用多重捕获 2.如何使用多重捕获 一、try-catch语句 捕获异常是通过try-catch语句实现的,最基本try-catch语句语法如下: try { //可能会发生异常的语句 } catch ( Throwable e ) { //处理异常e } 1.try代码块 try代码块中应该包含执行过程中可能会发生异常的语句。 一条语句是否有可能发生异常,这要 看语句中调用的方法。 如下: public Date parse ( String source ) throws ParseException 方法后面的throws ParseException说明:当调用parse()方法时有可以能产生ParseException异常。 提示 :静态方法、实例方法和构造方法都可以声明抛出异常,凡是抛出异常的方法都可以 通过try-catch进行捕获,当然运行时异常可以不捕获。一个方法声明抛出什么样的异常需要 查询API文档。 2.catch代码块 每个try代码块可以伴随一个或多个catch代码块,用于处理try代码块中所可能发生的多种异常。 catch(Throwable e)语句中的e是捕获异常对象

2018年4月19日JAVA

断了今生、忘了曾经 提交于 2020-02-10 09:13:12
异常 异常处理机制能让程序在异常发生时,按照代码的预先设定的异常处理逻辑,针对性地处理异常,让程序尽最大可能恢复正常并继续执行,且保持代码的清晰。 Java中的异常可以是函数中的语句执行时引发的,也可以是程序员通过throw 语句手动抛出的,只要在Java程序中产生了异常,就会用一个对应类型的异常对象来封装异常,JRE就会试图寻找异常处理程序来处理异常。 Throwable类是Java异常类型的顶层父类,一个对象只有是 Throwable 类的(直接或者间接)实例,他才是一个异常对象,才能被异常处理机制识别。JDK中内建了一些常用的异常类,我们也可以自定义异常。 Java异常的分类和类结构图 Java标准库内建了一些通用的异常,这些类以Throwable为顶层父类。 Throwable又派生出Error类和Exception类。 错误:Error类以及他的子类的实例,代表了JVM本身的错误。错误不能被程序员通过代码处理,Error很少出现。因此,程序员应该关注Exception为父类的分支下的各种异常类。 异常:Exception以及他的子类,代表程序运行时发送的各种不期望发生的事件。可以被Java异常处理机制使用,是异常处理的核心。 总体上我们根据Javac对异常的处理要求,将异常类分为2类。 非检查异常(unckecked exception):Error 和

寒假第九天

天涯浪子 提交于 2020-02-09 16:56:53
package com.zzw.dao; import java.util.List; import com.zzw.entity.Bill; import com.zzw.entity.User; public interface IUserDao { //注册 public boolean Register(User user) ; //查询账户是否存在 public boolean isExist(String uname) ; //登录 public boolean Login(String uname,String upwd) ; //根据帐号查询用户全部信息 public User Query(String uname) ; //记账 public boolean AddBill(Bill bill); //根据账目编号删除账目信息 public boolean DeleteBill(int bid); //根据账目编号修改账目信息 public boolean UpdateBill(int bid,Bill bill) ; //查询账目是否存在 public boolean isExist(int bid) ; //根据账目编号查询账目信息 public Bill Query(int bid); //根据消费类型查询账单信息 public List<Bill>

每日记载内容总结41

匆匆过客 提交于 2020-02-09 07:08:55
1.dbcp连接数据库(附带基本数据库操作方法) package com.nplus.dbcp; import java.io.InputStream; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import org.apache.commons.dbcp.BasicDataSource; import org.apache.commons.dbcp.BasicDataSourceFactory; import org.apache.log4j.Logger; import com.nplus.help.StringHelper; public class Dbcp { public static Logger

JAVA异常

扶醉桌前 提交于 2020-02-09 03:34:27
throw关键字 /** * throw关键字 * 作用: * 可以使用throw关键字在指定的方法中抛出指定的异常 * 使用格式: * throw new xxxException("异常产生的原因"); * 注意: * 1.throw关键字必须写在方法内部 * 2.throw关键字后边new的对象必须是Exception或者Exception的子类对象 * 3.throw关键字抛出指定的异常对象,我们就必须处理这个异常对象 * throw关键字后边创建的是RuntimeException或者RuntimeException的子类对象,我们可以不处理,默认交给JVM处理(打印异常对象,中断程序) * throw关键字后边创建的是编译异常(写代码的时候报错),我们就必须处理这个异常,要么throws,要么try...catch */ public class Demo03Throw { public static void main ( String [ ] args ) { //int[] arr=null; int [ ] arr = new int [ 3 ] ; int e = getElement ( arr , 3 ) ; System . out . println ( e ) ; } /* 在工作中我们必须对方法传递过来的参数进行合法性校验 如果参数不合适