try

Java基础_学习笔记_14_异常

倾然丶 夕夏残阳落幕 提交于 2019-12-31 16:38:34
1 class Test 2 { 3 public int devide(int x,int y) 4 { 5 int result=x/y; 6 return result; 7 } 8 } 9 class TestException 10 { 11 public static void main(String [] args) 12 { 13 Test t=new Test(); 14 t.devide(2,0); 15 System.out.println("the program is running here!"); 16 } 17 } 18 /* 19 F:\java_example\lesson61>java TestException 20 Exception in thread "main" java.lang.ArithmeticException: / by zero 21 at Test.devide(Test.java:5) 22 at TestException.main(Test.java:14) 23 */ View Code 上述代码中,由于除数为零,导致程序崩溃,后面的代码都不能执行。在实际工作中,或多或少会有各种异常出现,为了尽量避免,需要引入异常的处理机制。 经过异常处理之后,代码如下 1 class Test 2 { 3 public

JAVA学习笔记--二

二次信任 提交于 2019-12-31 16:38:20
一 、抽象类: 访问修饰符 abstract class 类名 { } 抽象类和普通类的区别: 1、 抽象类不能被实例化 2、 抽象类一般含有抽象方法 抽象方法:在抽象类中只有方法签名(方法声明),没有方法实现,具体实现在继承了该抽象类的子类中实现 3、 抽象类可以没有抽象方法,但是一旦某个类有了一个抽象方法,那么该类一定是一个抽象类 4、 抽象类的特殊形式:没有抽象方法的类和所有方法都是抽象方法的类 5、 子类一旦继承抽象类,一定要实现该抽象类的抽象方法 抽象类的特殊形式: 1、 抽象类中所有的方法都是普通方法: 用于:父类本身不适合直接创建对象的情况 2、 抽象类中所有的方法都是抽象方法:(接口) 用于:定义规范或者标准 如果抽象类中都是抽象方法,这种特殊形式实际上就是接口 二 、接口中所有的方法默认都是 public abstract XXXX 类型,所以抽象类中如果所有的方法都是抽象方法实际上该抽象类就是接口形式了。 接口:使用关键字 interface 定义接口,接口中只有方法声明,没有方法实现,因为接口中所有的方法默认的修饰都是 public abstract ,接口中的方法由实现该接口的类去实现。 接口中所有的变量都是常量,在接口中声明变量默认修饰符是 public static final Int num = 10; 接口不能直接 new ,应该创建接口实现类的实例

JAVA 笔记(十一)

人盡茶涼 提交于 2019-12-31 16:38:05
我们处理异常的方法:1.try……catch……finally 2.throws Try…catch….finally的格式try{可能出现问题的代码}catch(异常名 变量){针对问题的处理}finally{释放资源}【finally部分可以不要】注意try里面的代码越少越好,因为占用资源B:cath里面最好有内容,没有内容就是讲异常隐藏了。给出一个提示也行。 当有一个try多个catch的时候【格式try{}catch(){}catch(){}…】,一旦try里面出现了问题,就会把这里的问题给抛出去,然后和catch里面的问题进行匹配,一旦有匹配的,就执行catch里面的处理,就结束了try…catch,继续执行后面的语句。 如果不知道异常名就用exception,它可以接收所有的异常。【但是需要注意的是:1.能明确的尽量明确,不要用大的来处理,因为这样效率高。2.平级关系的异常谁在前谁在后无所谓,但是出现了父子关系的异常,父类必须要放在后面】。 Jdk7的新特性(处理多个异常):try{}catch(异常名1 |异常名2|…..变量){处理}。这种方式虽然很简单,但是处理方式是一样的,没有给出具体哪一个,同时异常之间必须是平级关系。 除了运行时期异常和其子类,其余异常都是编译时期异常。 编译时期异常:java程序必须显示处理,否则程序就会发生错误,无法通过编译。运行时期异常

转 Java读取文件

此生再无相见时 提交于 2019-12-31 09:36:22
--------------------- 作者:playbar 原文:https://blog.csdn.net/hgl868/article/details/6863713 1、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文件内容 4、随机读取文件内容 public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { System.out.println("以字节为单位读取文件内容,一次读一个字节:"); // 一次读一个字节 in = new FileInputStream(file); int tempbyte; while ((tempbyte = in.read()) != -1) { System.out.write(tempbyte); } in.close(); } catch (IOException e) { e.printStackTrace(); return; } try { System.out.println("以字节为单位读取文件内容

java读取文件完整版

流过昼夜 提交于 2019-12-31 09:35:28
public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; StringBuffer sb = new StringBuffer(); if (file.isFile() && file.exists()) { //判断文件是否存在 System.out.println("以字节为单位读取文件内容,一次读多个字节:"); // 一次读多个字节 byte[] tempbytes = new byte[1024]; int byteread = 0; in = new FileInputStream(file); ReadFromFile1.showAvailableBytes(in); // 读入多个字节到字节数组中,byteread为一次读入的字节数 while ((byteread = in.read(tempbytes)) != -1) { // System.out.write(tempbytes, 0, byteread); String str = new String(tempbytes, 0, byteread); sb.append(str); } } else { logger.info("找不到指定的文件

多线程操作实例——生产者与消费者

一个人想着一个人 提交于 2019-12-31 03:29:19
面对多线程学习生产者与消费者是最基本的实例 对于java后端开发的人员必须要掌握,还有考研考试计算机操作系统的同鞋。 下面是三个实例对于生产者与消费者的的例子,层层递进,逐步解决问题。 问题:生产者——设置信息名字name,和内容content 消费者——负责取出设置的信息。 一、基本实现 由于线程的不确定性可能出现以下问题: (1)消费者取出的信息不匹配,即不是由同一个生产者设置的信息 (2)生产者生产了多个信息,消费者才开始取出信息,或消费者取出的重复的信息。 上面的问题下面会逐一解决,下面先看出现问题的程序: package li.xin.hua.ch9; /*线程生产者与向消费者最基本实现,问题有: * 1、数据不匹配 * 2、数据重复取出已经取过的数据*/ class Info{ private String name; private String content; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getContent() { return content; } public void setContent(String content) { this.content =

Netty实践与NIO原理

风格不统一 提交于 2019-12-31 00:43:23
一、阻塞IO与非阻塞IO Linux网络IO模型(5种) (1)阻塞IO模型 所有文件操作都是阻塞的,以套接字接口为例,在进程空间中调用recvfrom,系统调用直到数据包到达且被复制到应用进程缓冲区或发生错误时才返回,期间会一直等待(阻塞)。模型如图: (2)非阻塞IO模型 recvfrom从应用层到内核时,如果该缓冲区没数据,直接返回一个EWOULDBLOCK错误,反复轮询检查这个状态,看是否有数据到来。如图: (3)IO复用模型 Linux提高select/poll,进程通过将一个或多个fd(file descriptor)传递给select或poll系统调用,阻塞在select操作上,侦测多个fd是否处于就绪状态。select/poll顺序扫描fd是否就绪,而且支持的fd数量有限。Linux还提供了一个epoll系统调用,使用基于事件驱动的方式代替顺序扫描,性能更高。当有fd就绪时,立即回调函数rollback。如图: (4)信号驱动IO模型 首先开启套接口信号驱动IO功能,通过系统调用sigaction执行一个信号处理函数,该函数立即返回,进程继续工作,它是非阻塞的。当数据准备就绪时,就为该进程生成一个SIGIO信号,通过信号回调通知应用程序调用recfrom来读取数据,通知主循环函数处理数据。如图: (5)异步IO模型 告知内核启动某个操作,让内核在整个操作完成后

linux 配置ftp服务

≯℡__Kan透↙ 提交于 2019-12-30 08:35:35
需求:定时远程上传文件,windows->linux linux是一个云服务器,centos7 1:安装vsftpd yum install vsftpd 2:设置开机启动服务 chkconfig vsftpd on 3:启动服务 service vsftpd start 4:防火墙端口打开 打开/etc/sysconfig/iptables文件 vi /etc/sysconfig/iptables 在REJECT行之前添加如下代码 -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 保存和关闭文件,重启防火墙 service iptables restart 5:配置vsftpd 服务器 vi /etc/vsftpd/vsftpd.conf 将匿名登录关闭 anonymous_enable=NO chroot_list_enable=YES //限制访问自身目录 # (default follows) chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 编辑 vsftpd.chroot_list文件,将受限制的用户添加进去,每个用户名一行,(但实际上加了这个会很麻烦,所以没加),比如出现 500 OOPS: vsftpd:

Java压缩字符串的方法收集

时间秒杀一切 提交于 2019-12-29 22:04:50
说明: 1、一般来说要实现压缩,那么返回方式一般是用byte[]数组。 2、研究发现byte[]数组在转成可读的String时,大小会还原回原来的。 3、如果采用压缩之后不可读的String时,互相转换大小会变小,唯一缺点就是转出的String不可读,需要再次解码之后才可读。 4、对于压缩一般最近常听的应该就是gzip这些。 实现一: /*** * 压缩GZip * * @param data * @return */ public static byte[] gZip(byte[] data) { byte[] b = null; try { ByteArrayOutputStream bos = new ByteArrayOutputStream(); GZIPOutputStream gzip = new GZIPOutputStream(bos); gzip.write(data); gzip.finish(); gzip.close(); b = bos.toByteArray(); bos.close(); } catch (Exception ex) { ex.printStackTrace(); } return b; } /*** * 解压GZip * * @param data * @return */ public static byte[] unGZip

【Java系列】异常

白昼怎懂夜的黑 提交于 2019-12-29 19:02:53
一、定义 异常 :程序不正常的行为或者状态 如:数组越界,读取文件时文件不存在等 异常处理 :程序能返回到安全状态,或者允许用户保存结果,并以适当的方式的关闭程序。 二、异常分类 1.按类型区分 2.按照编译器的反应进行区分 例如,RuntimeException错误属于Unchecked Exception类,在运行前系统就不会报错。 三、异常处理 1.设计的目的: 允许用户及时保存结果 抓住异常,分析异常内容 控制程序返回到安全状态 2.怎么实现这些目的: try-catch-finally机制,如下: try {正常业务逻辑代码} catch {当try中发生异常将要执行的代码} finally {try或者catch执行后一定要执行的代码} 2.1普通情况 public class TryDemo { public static void main ( String [ ] args ) { //1.这个try-catch-finally语句没有异常 try { int a = 5 / 2 ; //无异常 System . out . println ( "a is " + a ) ; } catch ( Exception ex ) { ex . printStackTrace ( ) ; } finally { System . out . println (