随笔分类 -  Java学习

摘要:六大基本原则可分为:SOLID和迪米特原则 1.单一职责原则S——优化代码的第一步 Single Responsibility Principle,简称SRP 定义:一个类只负责一项职责。 好处:降低类的复杂度,一个类只负责一个职责,其逻辑一定会比一个类负责多项职责要简单,同时也易于维护,提高类的可 阅读全文
posted @ 2019-01-02 21:41 Hermioner 阅读(457) 评论(0) 推荐(0)
摘要:Selector(选择器)是Java NIO中能够检测一到多个NIO通道,并能够知晓通道是否为诸如读写事件做好准备的组件。这样,一个单独的线程可以管理多个channel,从而管理多个网络连接。 一. 为什么使用Selector? 仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理 阅读全文
posted @ 2018-10-21 16:42 Hermioner 阅读(145) 评论(0) 推荐(0)
摘要:一. Buffer介绍 Buffer,故名思意,缓冲区,实际上是一个容器,是一个连续数组。Channel提供从文件、网络读取数据的渠道,但是读取或写入的数据都必须经由Buffer。具体看下面这张图就理解了: 上面的图描述了从一个客户端向服务端发送数据,然后服务端接收数据的过程。客户端发送数据时,必须 阅读全文
posted @ 2018-10-21 16:16 Hermioner 阅读(196) 评论(0) 推荐(0)
摘要:一. Channel 在标准的IO当中,都是基于字节流/字符流进行操作的,而在NIO中则是是基于Channel和Buffer进行操作,其中的Channel的虽然模拟了流的概念,实则大不相同。 1.1 概念 Channel(通道)用于在字节缓冲区和位于通道另一侧的实体(通常是一个文件或套接字)之间有效 阅读全文
posted @ 2018-10-21 16:04 Hermioner 阅读(210) 评论(0) 推荐(0)
摘要:转自:https://www.cnblogs.com/aspirant/p/8630283.html 一、概念 NIO即New IO(非阻塞IO),这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java AP 阅读全文
posted @ 2018-10-21 11:42 Hermioner 阅读(206) 评论(0) 推荐(0)
摘要:Java的System类提供了一些简单的静态方法调用,以允许我们对标准输入、输出和错误I/O流进行重定向: setIn(InputStream) setOut(PrintStream) setErr(PrintStream) 如果我们突然开始在显示器上创建大量输出,而这些输出滚动得太快以至于无法阅读 阅读全文
posted @ 2018-10-18 20:38 Hermioner 阅读(255) 评论(0) 推荐(0)
摘要:一. 序列化和反序列化的概念 对象序列化:把对象转换为字节序列的过程 对象反序列化:把字节序列恢复为对象的过程 1. 为何要进行序列化 我们知道当虚拟机停止运行之后,内存中的对象就会消失。在很多应用中,需要对某些对象进行序列化,让他们离开内存空间,进入物理硬盘,便于长期保存。例如,最常见的是WEB服 阅读全文
posted @ 2018-10-18 20:38 Hermioner 阅读(289) 评论(0) 推荐(0)
摘要:一. 源码结构 我们可以看到它的父类是Object,没有继承字节流、字符流家族中任何一个类。并且它实现了DataInput、DataOutput这两个接口,也就意味着这个类既可以读也可以写。RandomAccessFile 是随机访问文件(包括读/写)的类。它支持对文件随机访问的读取和写入,即我们可 阅读全文
posted @ 2018-10-18 20:37 Hermioner 阅读(306) 评论(0) 推荐(0)
摘要:一.流的分类 1、从功能上:输入流、输出流 2、从结构上:字节流、字符流 3、从来源上:节点流、过滤流 其中InputStream/OutputStream是为字节流而设计的,Reader/Writer是为字符流而设计的。处理字节或者二进制对象使用字节流,处理字符或者字符串使用字符流。 在最底层,所 阅读全文
posted @ 2018-10-18 20:36 Hermioner 阅读(851) 评论(0) 推荐(0)
摘要:Java中的流是个抽象的概念,当程序需要从某个数据源读入数据的时候,就会开启一个数据流,数据源可以是文件、内存或网络等等。相反地,需要写出数据到某个数据源目的地的时候,也会开启一个数据流,这个数据源目的地也可以是文件、内存或网络等等 一. 字符流的引入 正如字节流中所看到的,有时候当一个中文字符含有 阅读全文
posted @ 2018-10-18 20:36 Hermioner 阅读(779) 评论(0) 推荐(0)
摘要:IO概述 Java IO 是一套Java用来读写数据(输入和输出)的API。大部分程序都要处理一些输入,并由输入产生一些输出。Java为此提供了java.io包。 Java的IO包主要关注的是从原始数据源的读取以及输出原始数据到目标媒介。以下是最典型的数据源和目标媒介: 文件 管道 网络连接 内存缓 阅读全文
posted @ 2018-10-18 20:30 Hermioner 阅读(204) 评论(0) 推荐(0)
摘要:Java7中的文件IO发生了很大的变化,引入了很多新的类,可以去看java.nio.file包。比如:1.7之前主要是通过File创建一个文件,然后将File作为输入参数,获取输入流等操作。而1.7开始,就采用了Path接口代替File类,且Files作为操作了,里面定义了很多非常有用的API。并且 阅读全文
posted @ 2018-10-10 17:12 Hermioner 阅读(323) 评论(0) 推荐(0)
摘要:JDK1.7之前用的是java.io.File,File是一个实用类库工具,它可以帮助我们处理文件目录问题。它可以将一个实际磁盘文件或目录对应到一个Java对象。Java中使用File来抽象一个文件,无论是普通文件或是目录,都可以对应一个File对象。它只是抽象的代表了磁盘上的某个文件或目录,内部实 阅读全文
posted @ 2018-10-09 21:26 Hermioner 阅读(166) 评论(0) 推荐(0)
摘要:enum 的全称为 enumeration, 是 JDK 1.5 中引入的新特性,存放在 java.lang 包中。它是一个看似很小的特性,它使得我们在需要群组并使用枚举类型集时,可以很方便地处理。(note:可选值固定在某个范围时使用)。 一. 枚举的引入 1. 未引入枚举之前 假如有以下需求需要 阅读全文
posted @ 2018-10-08 20:38 Hermioner 阅读(301) 评论(0) 推荐(0)
摘要:文章开头先引入一处图片。 这处图片引自老罗的博客。为了避免不必要的麻烦,首先声明我个人比较尊敬老罗的。至于为什么放这张图,自然是为本篇博文服务,接下来我自会说明。好了,可以开始今天的博文了。 Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有 阅读全文
posted @ 2018-10-08 20:36 Hermioner 阅读(195) 评论(0) 推荐(0)
摘要:转自https://www.cnblogs.com/xdp-gacl/p/3623759.html & https://blog.csdn.net/qq_31655965/article/details/60882588 一.数组的基本概念 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。 阅读全文
posted @ 2018-10-03 16:56 Hermioner 阅读(276) 评论(0) 推荐(0)
摘要:一. 泛型概念的提出(为什么需要泛型)? 首先,我们看下下面这段简短的代码: 1 public class GenericTest { 2 3 public static void main(String[] args) { 4 List list = new ArrayList(); 5 list 阅读全文
posted @ 2018-10-02 17:57 Hermioner 阅读(371) 评论(0) 推荐(0)
摘要:一. Java反射机制介绍 Java 反射机制。通俗来讲呢,就是在运行状态中,我们可以根据“类的部分已经的信息”来还原“类的全部的信息”。这里“类的部分已经的信息”,可以是“类名”或“类的对象”等信息。“类的全部信息”就是指“类的属性,方法,继承关系和Annotation注解”等内容。 举个简单的例 阅读全文
posted @ 2018-10-02 09:45 Hermioner 阅读(304) 评论(0) 推荐(0)
摘要:什么叫多态?从字面上理解就是多种形态,即对同一个客体,可以有多种不同的形式。就好像糖一样,有多种口味,你想吃什么口味的就可以吃什么口味。但在程序中,却不是你想要怎样就怎样。更多的是需要怎样去做就怎样去做。来一个算是比较官方的解释:在面向对象语言中,接口的多种不同的实现方式即为多态。引用Charlie 阅读全文
posted @ 2018-09-02 21:07 Hermioner 阅读(166) 评论(0) 推荐(0)
摘要:在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码使我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是j 阅读全文
posted @ 2018-09-02 21:07 Hermioner 阅读(157) 评论(0) 推荐(0)