JAVA
文章平均质量分 89
JAVA基础
LiarBoy
代码先跑,code不行换我跑
展开
-
Java NIO - IO多路复用
提供了非阻塞调用的方式,从操作系统层面解决了阻塞问题。将 socket 是否就绪检查逻辑下沉到操作系统层面,避免大量系统调用。告诉你有事件就绪,但是没告诉你具体是哪个 FD。epoll 直接将 fd 集合维护在内核中,通过红黑树来高效管理 fd 集合,同时维护一个就绪列表,当 fd 就绪后会添加到就绪列表中,当应用空间调用 epoll_wait 获取就绪事件时,内核直接判断就绪列表即可知道是否有事件就绪。原创 2022-09-28 09:31:09 · 3188 阅读 · 1 评论 -
Java NIO - 基础详解
Standard IO是对字节流的读写,在进行IO之前,首先创建一个流对象,流对象进行读写操作都是按字节 ,一个字节一个字节的来读或写。而NIO把IO抽象成块,类似磁盘的读写,每次IO操作的单位都是一个块,块被读入内存之后就是一个byte[],NIO一次可以读或写多个字节。原创 2022-09-23 09:43:01 · 1548 阅读 · 1 评论 -
Java IO- 源码解析: OutputStream
上一篇文章说了InputStream。JDK1.0中就有了这传统的IO字节流,也就是 InputStream 和 OutputStream。梳理下两者的核心:InputStream中有几个 read() 方法和 OutputStream中有几个 write() 方法。它们是一一对应的,而核心的是read()和write()方法。它们都没实现,所有本质调用是各自实现类实现的该两个方法。read() 和 write() ,对应着系统的Input和Output,即系统的输出输入。原创 2022-09-22 13:25:59 · 1739 阅读 · 0 评论 -
Java IO - 源码解析: InputStream
InputStream是一个抽象类,即表示所有字节输入流实现类的基类。它的作用就是抽象地表示所有从不同数据源产生输入的类,例如常见的FileInputStream、FilterInputStream等。二者,注意它是属于字节流部分,而不是字符流(java.io中Reader\Writer,下面会讲到)。4) 一个其他种类的流组成的序列化 (在分布式系统中常见)1) 字节数组(不代表String类,但可以转换)借用客官你们发财的小手,给个鼓励吧。5) 管道(多线程环境中的数据源)2) String对象。原创 2022-09-21 10:22:05 · 2348 阅读 · 1 评论 -
Java IO - 分类
IO:输入/输出(Input/Output)流:是一个种抽象的概念,是对数据传输的总称。也就是说数据在设备间的传输称为流,流的本质是数据传输。IO中的流就相当与我们日常生活中的管道,我们通过管道来把水引到用户,通过管道把石油输送到大罐.同样,我们利用流来从硬盘的文件中读数据到你的程序中,利用流来写数据到硬盘的文件IO流就是用来处理设备间数据传输问题的常见的应用:文件复制;文件上传;文件下载。原创 2022-09-20 10:54:52 · 2288 阅读 · 1 评论 -
Java 基础 - 反射
注解是插入你代码中的一种注释或者说是一种元数据(meta data)。这些注解信息可以在编译期使用预编译工具进行处理(),也可以在运行期使用Java反射机制进行处理。}在TheClass类定义的上面有一个的注解。注解的定义与接口的定义相似,下面是}在interface前面的@符号表名这是一个注解,一旦你定义了一个注解之后你就可以将其应用到你的代码中,就像之前我们的那个例子那样。在注解定义中的两个指示和,说明了这个注解该如何使用。表示这个注解可以在运行期通过反射访问。原创 2022-09-15 16:28:49 · 3995 阅读 · 0 评论 -
Java 基础 - 异常
// ...}try、catch和finally都不能单独使用,只能是try-catch、try-finally或者try-catch-finally。try语句块监控代码,出现异常就停止执行下面的代码,然后将异常移交给catch语句块来处理。finally语句块中的代码一定会被执行,常用于回收资源。throws:声明一个异常,告知方法调用者。throw :抛出一个异常,至于该异常被捕获还是继续抛出都与它无关。Java编程思想一书中,对异常的总结。在恰当的级别处理问题。原创 2022-09-14 10:56:48 · 2079 阅读 · 2 评论 -
Java 基础 - 注解
定义自己的注解}使用注解@Override}}}}用反射接口获取注解信息try {// 获取所有methods// 遍历// 方法上是否有MyMethodAnnotation注解try {// 获取并遍历方法上的所有注解}// 获取MyMethodAnnotation对象信息}}}}}激动的心,颤抖的手借用客官你们发财的小手,给个鼓励吧。原创 2022-09-13 13:06:02 · 2064 阅读 · 1 评论 -
Java 基础 - 泛型
这种方法可以解决开始遇到的问题,编译器知道类型参数的范围,如果传入的实例类型B是在这个范围内的话允许转换,这时只要一次类型转换就可以了,运行时会把对象当做A的实例看待。在使用泛型的时候,我们可以为传入的泛型类型实参进行上下边界的限制,如:类型实参只准传入某种类型的父类或某种类型的子类。擦除方法定义中的类型参数原则和擦除类定义中的类型参数是一样的,这里仅以擦除方法定义中的有限制类型参数为例。当类定义中的类型参数存在限制(上下界)时,在类型擦除中替换为类型参数的上界或者下界,比如形如。原创 2022-09-09 13:57:42 · 2087 阅读 · 3 评论 -
Java 基础 - 基础知识
我们希望将这两个对象当成一样的,只在集合中添加一个对象,但是因为 EqualExample 没有实现 hasCode() 方法,因此这两个对象的散列值是不同的,最终导致集合添加了两个等价的对象。因此在方法中改变指针引用的对象,那么这两个指针此时指向的是完全不同的对象,一方改变其所指向对象的内容对另一方没有影响。例如在作为网络连接参数的情况下如果 String 是可变的,那么在网络连接过程中,String 被改变,改变 String 对象的那一方以为现在连接的是其它主机,而实际情况却不一定是。原创 2022-09-07 11:55:40 · 2461 阅读 · 1 评论 -
Java 基础 - 面向对象
本文主要介绍Java OOP 面向对象基础和相关类图。@LiarBoy。原创 2022-09-07 10:47:07 · 2195 阅读 · 0 评论 -
Java集合
一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊端,而Java集合就像一种容器,可以动态的把多个对象的引用放入容器中。1.数组Array存储(1)数组在内存存储方面的特点①数组初始化以后,长度就确定了。②数组声明的类型,就决定了进行元素初始化的类型。(2)数组在存储数据方面的弊端①数组初始化以后,长度就不可变了,不便于拓展。原创 2022-09-05 14:00:07 · 2190 阅读 · 2 评论