logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

【Java】I/O流 字节流有无字符编码的说法?

只负责读取文件中的原始字节(byte),不进行任何字符编码的转换。如果你希望将文件内容作为文本读取,就需要用。

#java#面试
【Java】BIO流

在Java中,是一种传统的、同步的输入输出(I/O)模型。它意味着每次进行I/O操作时,线程会被阻塞,直到数据完全读取或写入完毕。BIO通常是阻塞式的,当程序发出读取或写入请求时,它会等待I/O操作完成才会继续执行后续代码。

#java
【Java】NIO及核心概念

Buffer 是一个容器,用于与 Channel 交互的数据。开始提供的一套新 I/O API,它与传统的。Selector 是 NIO 的核心,用于。,非常适合高并发网络应用。

#java#面试
【Java】NIO 中的多路复用(Selector / Channel)机制

直接调用->替换原有兴趣事件保留原有事件->用移除事件->用设置该通道只关心读事件当通道有数据可读时,Selector 会通知你是 NIO非阻塞 I/O的核心机制之一。

#java#nio#面试
【Java】try-with-resources语法糖

在 Java 中,资源是指实现了接口(或其子接口)的对象。这些对象在使用完毕后必须显式关闭,否则会占用系统资源(如文件句柄、数据库连接池连接等)。ReaderWriterConnectionStatementResultSet(JDBC)Socket优点:代码简洁:消除了大量的finally样板代码。安全性:确保资源一定会被关闭,防止内存泄漏或连接泄漏。调试友好:通过“异常抑制”机制,保留了业务逻

#java#面试
【Java】I/O:PrintStream与PrintWriter核心区别

*优先选择 **:在处理文本输出(特别是写文件或网络Socket)时,更合适,因为它支持指定编码,避免乱码。注意构造函数的异常:虽然print方法不抛异常,但构造函数(如)会抛出,这个必须捕获。谨慎对待“静默失败”对于日志记录,静默失败通常是可以接受的(日志写不进去不应该崩掉业务系统)。对于关键业务数据(如交易记录、入库单据),不要依赖或,因为它们可能会丢数据且不报错。此时应使用普通的或,并严格处

#java#面试
【Java】NIO零拷贝:最清晰易懂的逐层递进方式带你了解

内核就是那个躲在幕后,默默为你管理CPU、内存和硬件,确保所有软件能够和平共处、高效工作的那个“隐形管理者没有内核,你的电脑就是一堆毫无生气的金属和硅片。DMA:设备自己直接访问内存,不再占用 CPU 搬运。在 NIO“零拷贝”语境下,DMA 负责:磁盘 -> 内核缓冲区内核 socket 缓冲区 -> 网卡这两段“设备级”拷贝,从而让 CPU 更专注于业务逻辑,提升吞吐。内核就是操作系统的“大脑

#java#nio#面试
【Java】NIO零拷贝:为何transferTo需要循环调用?

transferTo不保证原子性(即不保证一次性传完指定 count)。如果你去查看 Java 官方文档或 JDK 源码注释,会发现它明确指出:因此,必须使用while循环来确保文件被完整传输,就像你代码中写的那样。这与或通常需要循环调用的原理是一样的。

#java#nio#面试
【Java】AIO(异步IO)详解与对比

NIO 不是零拷贝的代名词。普通的依然会发生用户态/内核态切换和数据拷贝。NIO 的优势在于“非阻塞”(节省了线程资源,避免了因等待数据导致的线程挂起),而不是消除内核态切换。只有在使用等特定 API 时,NIO 才能实现真正的零拷贝和减少上下文切换。BIO:线程是“苦力”,一直在傻等,效率最低。NIO:线程是“监工”,虽然不傻等了,但得一直盯着看谁有活干,有活了自己还要动手搬砖。AIO:线程是“

#java#开发语言#面试
【Java】NIO零拷贝技术揭秘:CPU不参与的数据传输

在的实现中,数据本身从未离开过内核空间,也从未经过 CPU 的寄存器进行搬运。磁盘到内核读缓冲区:DMA 拷贝。内核读缓冲区到网卡:DMA 拷贝(依靠 Scatter/Gather 机制,网卡直接来“取”数据)。这就是为什么它被称为“零拷贝”——指的是CPU 拷贝次数为零。

#java#nio#开发语言
    共 23 条
  • 1
  • 2
  • 3
  • 请选择