mmap + write怎么实现的零拷贝 2022-09-08
应用进程再调用 write(),操作系统直接将内核缓冲区的数据拷贝到 socket 缓冲区中,这一切都发生在内核态,由 CPU 来搬运数据;详情>
Synchronized使得同时只有一个线程可以执行,性能比较差,有什么提升的方法 2022-09-08
轻量级锁(Lightweight Locking):这种锁实现的背后基于这样一种假设,即在真实的情况下我们程序中的大部分同步代码一般都处于无锁竞争状态(即...详情>
传统的IO存在什么问题?为什么引入零拷贝的 2022-09-08
如果服务端要提供文件传输的功能,我们能想到的最简单的方式是:将磁盘上的文件读取出来,然后通过网络协议发送给客户端。传统 I/O 的工作方式...详情>
什么是Java NIO 2022-09-08
传统IO基于字节流和字符流进行操作,而NIO基于Channel和Buffer(缓冲区)进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。...详情>
什么是Reactor模型 2022-09-08
大多数网络框架都是基于Reactor模型进行设计和开发,Reactor模型基于事件驱动,特别适合处理海量的I/O事件。详情>
什么是异步IO 2022-09-08
用户进程进行aio_read系统调用之后,无论内核数据是否准备好,都会直接返回给用户进程,然后用户态进程可以去做别的事情。等到socket数据准备...详情>
什么是信号驱动IO 2022-09-08
应用进程使用 sigaction 系统调用,内核立即返回,应用进程可以继续执行,也就是说等待数据阶段应用进程是非阻塞的。内核在数据到达时向应用进...详情>
有哪些多路复用IO 2022-09-08
目前流程的多路复用IO实现主要包括四种: select、poll、epoll、kqueue。其他情况下多路复用IO技术发挥不出来它的优势。另一方面,使用JAVA NIO...详情>
Synchronized由什么样的缺陷? Java Lock是怎么弥补这些缺陷的 2022-09-08
无法知道是否成功获得锁,相对而言,Lock可以拿到状态Lock解决相应问题。Lock类这里不做过多解释,主要看里面的4个方法:lock(): 加锁 unlock()...详情>
JVM中对象的分配过程 2022-09-08
为对象分配内存是一件非常严谨和复杂的任务,JVM 的设计者们不仅需要考虑内存如何分配、在哪里分配等问题,并且由于内存分配算法和内存回收算...详情>