随笔分类 - Java-a1-Java基础
摘要:使用NIO完成网络通信的三个核心: 1、通道(Channel):负责连接 java.nio.channels.Channel接口: SelectableChannel抽象类:有一下几个实现类 SocketChannel TCP ServerSocketChannel TCP DategramChan
阅读全文
摘要:传统的io(阻塞式) 客户端发送请求给服务端以后 服务端不能确定客户端发送来的请求 此时线程就会处于一个阻塞状态 客户端发送读写请求,服务端不能确定数据是否有效 此时的线程一直处于阻塞状态 等待有正确的数据之后才会立即执行 此时任何操作都做不了 如果有大量请求 前方的阻塞 后方的请求也会阻塞 都会进
阅读全文
摘要:字符集:Charset 编码:字符串-->字节数组 解码:字节数组-->字符串 查看相关的字符集 可以看到支持的字符集非常多(省略很多) 对应的编码对应相同的解码方式 如果编码和解码的方式不一致则会发生乱码的问题
阅读全文
摘要:分散读取 分散读取(Scattering Reads)是指从 Channel 中读取的数据“分散”到多个 Buffer 中。 注意:按照缓冲区的顺序,从 Channel 中读取的数据依次将 Buffer 填满。 聚集写入 聚集写入(Gathering Writes)是指将多个 Buffer 中的数据
阅读全文
摘要:实例1: 利用通完完成文件的复制(非直接缓冲区) 实例2: 使用直接缓冲区完成文件的复制(内存映射文件的方式) 等同于allocateDirect()方法 通道之间的数据传输 --transferForm():将数据从源通道传输到其他 Channel 中 (ReadableByteChannel s
阅读全文
摘要:通道(Channel) 通道(Channel):由 java.nio.channels 包定义的。 Channel 表示 IO 源与目标打开的连接。Channel 类似于传统的“流”。 只不过 Channel 本身不能直接访问数据,Channel 只能与Buffer 进行交互。 图解: 传统的方式
阅读全文
摘要:直接缓冲区和非直接缓冲区 非直接缓冲区:通过allocate()方法分配缓冲区,将缓冲区简历在JVM的内存中 allocate()源码 操作的是数组 直接缓冲器:通过allocaioeDirect()方法分配直接缓冲区,将缓冲区建立在物理机内存中,可以提高效率 allocaioeDirect()相关
阅读全文
摘要:缓冲区(BUffer) 缓冲区(Buffer):一个用于特定基本数据类型的容器。由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类。 Java NIO 中的 Buffer 主要用于与 NIO 通道进行交互,数据是从通道读入缓冲区,从缓冲区写入通道中的。 缓冲区:在NIO中负责
阅读全文
摘要:关于NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。 NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。 NIO将以更加高效的方式进行文件的读写操作 和IO的
阅读全文
摘要:管道流可以实现两个线程之间的通信 两个线程:管道输出流(PipedOutputStream)、管道输入流(PipedInputStream) 如果要进行管道输出,必须把输出流连在输入流之上 PipedOutputStream中的方法可以实现连接管道功能 public void connect(Pip
阅读全文
摘要:输入和输出可以基于文件实现 也可以将输出的位置设置再内存上 此时需要使用ByteArrayInputStream、ByteArrayOutputStream来完成输入和输出功能 ByteArrayInputStream 是将内容写到内存中 ByteArrayOutputStream 是将内存中的数据
阅读全文
摘要:BufferedReader 常见方法: BufferedReader(Reader in) 接收一个Reader类的实例 readLine() 一次性从缓冲区中将内容全部读取出来 注意: BufferedReader中只能接收输入流的实例 必须使用字符输入流和字节输入流的的转换类InputStre
阅读全文
摘要:整个Java的I/O包中实际上分为字节流和字符流 还存在一组”字节流--字符流“的转换类 1、OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流 即将一个字符流的输出对象变为字节流的输出对象 2、InputStreamReader:是Reader的子类,将输入的字节
阅读全文
摘要:1、相关理论 在java.io包中的流操作主要有两大类:字节流类和字符流类 字节流: 在字节流中输出数据使用OutputStream类完成 使用InputStream类进行输入 字节流主要操作byte数据,以byte数组为准 主要的操作类OutputStream和InputStream类 字符流:
阅读全文
摘要:类File只是针对文件本身进行操作的 在Java中如果需要对文件内容进行操作 可以使用RandomAccessFile类进行实现 RandomAccessFile类既可以读取文件的内容,也可以向文件传输数据RandomAccessFile支持随机访问的方式,程序可以跳到文件的任意地方来读写文件 支持
阅读全文
摘要:在整个I/O包中 唯一与文件本身有关的类就是File 使用File类可以实现创建或删除文件等常用的操作 要使用File类需要首先观察File类的构造方法 在实例化File类时必须要设置好路径 如在D盘中的test.txt文件则写成"d:\\test.txt" "\\表示一个“\“ File类中方法
阅读全文
摘要:使用线程进行打印a-z 开启两个线程进行交替打印 测试代码如下: 思想: 在启动线程之后 线程1启动之后首先进行相关的操作,在进行唤醒其他线程,然后再让自己进行等待 线程2启动之后(可能处于等待状态,等待其他的线程将其唤醒) 在得到资源分配之后,首先进行相关的操作,在进行唤醒其他线程(此时唤醒的是线
阅读全文
摘要:线程同部 synchronized关键字的作用域有二种: 1)是某个对象实例内,synchronized aMethod(){} 可以防止多个线程同时访问这个对象的synchronized方法 (如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法
阅读全文
摘要:1、线程的优先级 Thread类提供了获取和设置线程优先级的方法getPriority:获取当前线程的优先级setPriority:设置当前线程的优先级Java语言为线程类设置了10个优先级,分别使用1~10内的整数表示 ,整数值越大代表优先级越高。 每个线程都有一个默认的优先级,主线程的默认优先级
阅读全文
摘要:线程状态转换的图解: 1、新建状态(New):新创建了一个线程对象。 2、就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。 该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。 3、运行状态(Running):就绪状态的线程获取了CPU,执行程
阅读全文

浙公网安备 33010602011771号