网络编程
文章平均质量分 72
自学笔记
黄子何
爱好篮球。
展开
-
零拷贝
零拷贝传统 IO 问题NIO 优化进一步优化(linux2.1)更进一步优化(linux2.4) 参考自《黑马程序员netty》 传统 IO 问题 传统的 IO 将一个文件通过 socket 写出 File f = new File("helloword/data.txt"); RandomAccessFile file = new RandomAccessFile(file, "r"); byte[] buf = new byte[(int)f.length()]; file.read(buf); S原创 2021-04-17 12:35:48 · 69 阅读 · 0 评论 -
简单的多路复用io实现
BossEventLoop public class BossEventLoop implements Runnable{ private Selector boss; private volatile boolean isStart = false; private AtomicInteger index = new AtomicInteger(); private WorkerEventLoop worker; public void register(.原创 2021-04-17 12:30:30 · 76 阅读 · 0 评论 -
零拷贝
来自《黑马程序员netty》课程 零拷贝 传统 IO 问题 传统的 IO 将一个文件通过 socket 写出 File f = new File("helloword/data.txt"); RandomAccessFile file = new RandomAccessFile(file, "r"); byte[] buf = new byte[(int)f.length()]; file.read(buf); Socket socket = ...; socket.getOutputStream()原创 2021-04-05 23:45:17 · 59 阅读 · 0 评论 -
三种io
阻塞式 阻塞模式下,这些方法会导致线程阻塞 ServerSocketChannel.accept 会在没有连接建立时让线程暂停 (等待客户端连接) SocketChannel.read 会在没有数据可读时让线程暂停 (等待客户端发数据) 在单线程的情况下,阻塞方法之间会互相影响,基本上不能正常工作。 举个例子: A客户端建立连接,B客户端也建立连接,当遍历每个连接时,B客户端发送了数据给服务端, 但是如果先遍历到A,而A没有发送数据,则一直卡在这里,B的数据也无法处理到。 而如果在多线程的情况下,原创 2021-04-05 18:45:57 · 203 阅读 · 2 评论