摘要: 1、I/O分类与装饰者模式 基本java I/O包含两种类型的流,字节流(inputStream、outputStream)与字符流(Writer,Reader),关于I/O操作类的设计,用到了装饰者模式,如下图所示。 其中FilterInputStream抽象类继承了InputStream抽象类, 阅读全文
posted @ 2019-08-12 22:47 simpleDi 阅读(524) 评论(0) 推荐(0) 编辑
摘要: Throwable 可以用来表示任何可以作为异常抛出的类(注意,是类不是接口),分为两种: Error(注意!error也是可以throw的,但是不建议) 和 Exception。 其中 Error 用来表示 JVM无法处理的错误,对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和预防,遇到这 阅读全文
posted @ 2019-08-12 22:20 simpleDi 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 1、什么是ExecutorService,为什么要使用线程池? 许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务,每当一个请求到达就创建一个新线程,然后在新线程中为请求服务,但是频繁创建新线程、销毁新线程、线程切换既花费较多的时间,影响相应速度,又消耗大量的系统资源,且有时服务器无法处理 阅读全文
posted @ 2019-08-12 20:41 simpleDi 阅读(26695) 评论(0) 推荐(2) 编辑
摘要: 1、匿名内部类的方式 第1段相当于继承Thread的方式;第二段相当于实现Runnable的方式。 如果我们将上面两段代码合并呢? 此时输出sub,此时相当于将一个实现了runnable接口的类对象传入Thread子类的构造方法,并且在这个子类中重写了run方法。因此原本的run()方法被覆盖。 2 阅读全文
posted @ 2019-08-12 16:21 simpleDi 阅读(1314) 评论(0) 推荐(0) 编辑
摘要: 1、为什么要使用lamda表达式 从JDK1.8开始为了简化使用者进行代码开发,专门提供有Lambda表达式的支持,利用此操作形式可以实现函数式的编程,对于函数式编程比较著名的语言:haskell,Scala,利用函数式的编程可以避免掉面向对象编程之中的一些繁琐的问题。 面向对象在其长期发展的过程中 阅读全文
posted @ 2019-08-12 16:11 simpleDi 阅读(434) 评论(0) 推荐(0) 编辑