随笔分类 -  Java

1 2 3 4 5 ··· 7 下一页
学习参考: 1.https://javabetter.cn/ 2.深入理解JVM第三版 3.https://pdai.tech/
摘要:SocketChannel 和 ServerSocketChannel ServerSocketChannel 用于创建服务器端套接字,而 SocketChannel 用于创建客户端套接字。它们都支持阻塞和非阻塞模式,通过设置其 blocking 属性来切换。阻塞模式下,读/写操作会一直阻塞直到完成 阅读全文
posted @ 2024-08-17 14:34 _Sylvan 阅读(44) 评论(0) 推荐(0)
摘要:传统 IO 基于字节流或字符流(如 FileInputStream、BufferedReader 等)进行文件读写,以及使用 Socket 和 ServerSocket 进行网络传输。 NIO 使用通道(Channel)和缓冲区(Buffer)进行文件操作,以及使用 SocketChannel 和 阅读全文
posted @ 2024-08-17 13:54 _Sylvan 阅读(65) 评论(0) 推荐(0)
摘要:Paths 类 Paths 类主要用于操作文件和目录路径。它提供了一些静态方法,用于创建java.nio.file.Path实例,代表文件系统中的路径。 // 创建一个Path实例,表示当前目录下的一个文件 Path path = Paths.get("example.txt"); // 创建一个绝 阅读全文
posted @ 2024-08-17 13:18 _Sylvan 阅读(97) 评论(0) 推荐(0)
摘要:IO 和 NIO 区别: 可简单认为:IO 是面向流的处理,NIO 是面向块(缓冲区)的处理 面向流的 I/O 系统一次一个字节地处理数据。 一个面向块(缓冲区)的 I/O 系统以块的形式处理数据。 NIO 主要有两个核心部分组成: Buffer 缓冲区 Channel 通道 相对于传统 IO 而言 阅读全文
posted @ 2024-08-17 13:00 _Sylvan 阅读(42) 评论(0) 推荐(0)
摘要:BIO 全称 Block-IO 是一种同步且阻塞的通信模式。是一个比较传统的通信方式,模式简单,使用方便。但并发处理能力低,通信耗时,依赖网速。 Java NIO,全程 Non-Block IO ,是 Java SE 1.4 版以后,针对网络传输效能优化的新功能。是一种非阻塞同步的通信模式。 NIO 阅读全文
posted @ 2024-08-01 10:23 _Sylvan 阅读(115) 评论(0) 推荐(0)
摘要:PrintStream 是 OutputStream 的子类,PrintWriter 是 Writer 的子类。 打印流具有以下几个特点: 可以自动进行数据类型转换:打印流可以将各种数据类型转换为字符串,并输出到指定的输出流中。 可以自动进行换行操作:打印流可以在输出字符串的末尾自动添加换行符,方便 阅读全文
posted @ 2024-08-01 10:11 _Sylvan 阅读(32) 评论(0) 推荐(0)
摘要:转换流主要有两种类型:InputStreamReader 和 OutputStreamWriter。 InputStreamReader 将一个字节输入流转换为一个字符输入流,而 OutputStreamWriter 将一个字节输出流转换为一个字符输出流。它们使用指定的字符集将字节流和字符流之间进行 阅读全文
posted @ 2024-08-01 10:06 _Sylvan 阅读(75) 评论(0) 推荐(0)
摘要:Java 的缓冲流是对字节流和字符流的一种封装,通过在内存中开辟缓冲区来提高 I/O 操作的效率。Java 通过 BufferedInputStream 和 BufferedOutputStream 来实现字节流的缓冲,通过 BufferedReader 和 BufferedWriter 来实现字符 阅读全文
posted @ 2024-08-01 09:54 _Sylvan 阅读(71) 评论(0) 推荐(0)
摘要:使用字节流该如何正确地读出中文: try (FileInputStream inputStream = new FileInputStream("a.txt")) { byte[] bytes = new byte[1024]; int len; while ((len = inputStream. 阅读全文
posted @ 2024-08-01 09:36 _Sylvan 阅读(42) 评论(0) 推荐(0)
摘要:字节输出流(OutputStream) java.io.OutputStream 是字节输出流的超类(父类),我们来看一下它定义的一些共性方法: 1、 close() :关闭此输出流并释放与此流相关联的系统资源。 2、 flush() :刷新此输出流并强制缓冲区的字节被写入到目的地。 3、 writ 阅读全文
posted @ 2024-07-31 19:54 _Sylvan 阅读(40) 评论(0) 推荐(0)
摘要:Java 的 IO 分为两大类,一类是传统的 IO(Blocking IO),一类是 NIO(New IO)。 传统的 IO 基于字节流和字符流,以阻塞式 IO 操作为主。常用的类有 FileInputStream、FileOutputStream、InputStreamReader、OutputS 阅读全文
posted @ 2024-07-31 19:00 _Sylvan 阅读(93) 评论(0) 推荐(0)
摘要:java.io.File 类是专门对文件进行操作的类,注意只能对文件本身进行操作,不能对文件内容进行操作,想要操作内容,必须借助输入输出流。 File 类是文件和目录的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 File 构造方法 比较常用的构造方法有三个: 1、 File(String 阅读全文
posted @ 2024-07-31 18:59 _Sylvan 阅读(46) 评论(0) 推荐(0)
摘要:class CSer { private String name; private int age; public CSer() { } public CSer(String name, int age) { this.name = name; this.age = age; } public St 阅读全文
posted @ 2024-07-31 16:48 _Sylvan 阅读(49) 评论(0) 推荐(0)
摘要:IO,即in和out,也就是输入和输出,指应用程序和外部设备之间的数据传递,常见的外部设备包括文件、管道、网络连接。 Java 中是通过流处理IO 的,那么什么是流? 流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。 当程序需要读取数据的时候, 阅读全文
posted @ 2024-07-31 15:56 _Sylvan 阅读(40) 评论(0) 推荐(0)
摘要:生产者-消费者,实际上包含了两类线程,一种是生产者线程用于生产数据,另一种是消费者线程用于消费数据,为了解耦生产者和消费者的关系,通常会采用共享的数据区域,生产者生产数据之后直接放置在共享数据区中,并不需要关心消费者的行为;而消费者只需要从共享数据区中获取数据,不需要关心生产者的行为。如果共享数据区 阅读全文
posted @ 2024-07-29 11:34 _Sylvan 阅读(63) 评论(0) 推荐(0)
摘要:ArrayList 是一个线程不安全的容器,如果在多线程环境下使用,需要手动加锁,或者使用 Collections.synchronizedList() 方法将其转换为线程安全的容器。否则,将会出现 ConcurrentModificationException 异常。 CopyOnWriteArr 阅读全文
posted @ 2024-07-29 10:30 _Sylvan 阅读(65) 评论(0) 推荐(0)
摘要:ConcurrentHashMap 是 Java 并发包 (java.util.concurrent) 中的一种线程安全的哈希表实现。 HashMap 在多线程环境下扩容会出现 CPU 接近 100% 的情况,因为 HashMap 并不是线程安全的,我们可以通过 Collections 的Map<K 阅读全文
posted @ 2024-07-27 19:08 _Sylvan 阅读(59) 评论(0) 推荐(0)
摘要:Java 的并发集合容器提供了在多线程环境中高效访问和操作的数据结构。这些容器通过内部的同步机制实现了线程安全,使得开发者无需显式同步代码就能在并发环境下安全使用,比如说:ConcurrentHashMap、阻塞队列和 CopyOnWrite 容器等。 java.util 包下提供了一些容器类(集合 阅读全文
posted @ 2024-07-27 16:34 _Sylvan 阅读(46) 评论(0) 推荐(0)
摘要:LockSupprot 用来阻塞和唤醒线程,底层实现依赖于 Unsafe 类(后面会细讲)。 该类包含一组用于阻塞和唤醒线程的静态方法,这些方法主要是围绕 park 和 unpark 展开。 public class Main { public static void main(String[] a 阅读全文
posted @ 2024-07-27 15:10 _Sylvan 阅读(59) 评论(0) 推荐(0)
摘要:ThreadLocal 是 Java 中提供的一种用于实现线程局部变量的工具类。它允许每个线程都拥有自己的独立副本,从而实现线程隔离,用于解决多线程中共享对象的线程安全问题。 通常,我们会使用 synchronzed 关键字 或者 lock 来控制线程对临界区资源的同步顺序,但这种加锁的方式会让未获 阅读全文
posted @ 2024-07-27 15:09 _Sylvan 阅读(56) 评论(0) 推荐(0)

1 2 3 4 5 ··· 7 下一页