Java网络编程与NIO
文章平均质量分 76
Java网络编程一直是很重要的一部分内容,其中涉及了socket的使用,以及Java网络编程的IO模型,譬如BIO,NIO,AIO,当然也包括Linux的网络编程模型。
了解这部分知识对于理解网络编程有很多帮助。另外还补充了两个涉及NIO的重要技术:Tomcat和Netty。
Java技术江湖
在下程序员黄小斜,前阿里Java工程师,4年码龄。 专注分享Java技术干货文,偶尔也吹水吐槽聊人生。
展开
-
Java网络编程与NIO详解14:Tomcat 常见面试题汇总
1、Tomcat的缺省端口是多少,怎么修改?1)找到Tomcat目录下的conf文件夹2)进入conf文件夹里面找到server.xml文件3)打开server.xml文件4)在server.xml文件里面找到下列信息<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" uriEncoding="utf-8"/>port="8080"改成你想要的端口转载 2021-05-08 11:00:59 · 462 阅读 · 0 评论 -
Java网络编程与NIO详解13:epoll、poll、select面试题汇总
文章目录一、文件描述符与IO模型二、端口和地址复用三、select四、poll五、epoll六、相关面试题1、epoll读到一半又有新事件来了怎么办?一、文件描述符与IO模型 文件描述符:当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。 IO多路复用是一种同步IO模型,实现一个进程可以监视多个文件句柄(socket、文件或者管道等等),一旦某个文件句柄就绪,就能够通知程序进行相应的读写操作。 IO多路复用相比于多线程的优势在于系统的开销小,系统不必创转载 2021-05-06 11:29:46 · 597 阅读 · 0 评论 -
Java网络编程与NIO详解12:常见NIO和BIO的Java面试题,一网打尽!
首先我们分别画图来看看,BIO、NIO、AIO,分别是什么?BIO:传统的网络通讯模型,就是BIO,同步阻塞IO它其实就是服务端创建一个ServerSocket, 然后就是客户端用一个Socket去连接服务端的那个ServerSocket, ServerSocket接收到了一个的连接请求就创建一个Socket和一个线程去跟那个Socket进行通讯。接着客户端和服务端就进行阻塞式的通信,客户端发送一个请求,服务端Socket进行处理后返回响应。在响应返回前,客户端那边就...转载 2021-05-06 11:23:18 · 467 阅读 · 0 评论 -
Java网络编程与NIO学习总结
Java网络编程与NIO学习总结这篇总结主要是基于我之前Java网络编程与NIO系列文章而形成的的。主要是把重要的知识点用自己的话说了一遍,可能会有一些错误,还望见谅和指点。谢谢更多详细内容可以查看我的专栏文章:Java网络编程与NIOhttps://blog.csdn.net/column/details/21963.htmlJava IOJava IO的基础知识已在前面...原创 2018-06-29 14:43:33 · 5456 阅读 · 1 评论 -
探秘Netty2:Netty与Java NIO
Netty与Java NIO的渊源netty是什么 Netty是一个基于Java NIO的client-server网络服务框架,人们可以利用netty快速地开发网络应用。同时netty相对于其他网络框架更加简单并且扩展性更强,这主要得益于其提供的简单易用的api将业务逻辑和网络处理代码解耦开来。能够使你更加专注于业务的实现而不需要太多关心网络底层实现。异步设计 ...转载 2018-06-20 09:46:06 · 5421 阅读 · 0 评论 -
探秘Netty3:Netty概述与基础实例
Netty有什么用?随着移动互联网的爆发性增长,小明公司的电子商务系统访问量越来越大,由于现有系统是个单体的巨型应用,已经无法满足海量的并发请求,拆分势在必行。在微服务的大潮之中, 架构师小明把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。世界上没有免费的午餐, 拆分成多个“微服务”以后虽然增加了弹性,但也带来...转载 2018-06-20 10:27:35 · 1378 阅读 · 0 评论 -
探秘Netty4:Netty核心组件详解
ByteBuf网络传输的基本单位是字节,在Java NIO中提供了ByteBuffer作为字节缓冲区容器,但该类的API使用起来不太方便,所以Netty实现了ByteBuf作为其替代品,下面是使用ByteBuf的优点: 相比ByteBuffer使用起来更加简单。 通过内置的复合缓冲区类型实现了透明的zero-copy。 容量可以按需增长。 读和写使用...转载 2018-06-20 10:40:07 · 4823 阅读 · 0 评论 -
探秘Netty5:基于Netty自己动手实现RPC框架
大厨小鲜——基于Netty自己动手实现RPC框架钱文品Good news everyone!关注他71 人赞了该文章今天我们要来做一道小菜,这道菜就是RPC通讯框架。它使用netty作为原料,fastjson序列化工具作为调料,来实现一个极简的多线程RPC服务框架。我们暂且命名该RPC框架为rpckids。食用指南在告诉读者...转载 2018-06-20 12:11:36 · 3535 阅读 · 0 评论 -
探秘Netty6:基于Netty自己动手实现Web框架
大厨小鲜——基于Netty自己动手实现Web框架上节课我们自己动手制作了一个RPC框架,本节课我们挑战一个稍有难度的一点的任务,手动制作一个Web框架。我不太愿意叫什么MVC框架,因为我在制作这个小项目的时候可没想过它要怎么怎么的MVC,一切皆以易于使用为目标。首先我们看看这个Web框架使用起来如何简单Hello Worldimport http...转载 2018-06-20 16:43:43 · 6088 阅读 · 0 评论 -
探秘Netty7:一篇文章,读懂Netty的高性能架构之道
Netty是一个高性能、异步事件驱动的NIO框架,它提供了对TCP、UDP和文件传输的支持,作为一个异步NIO框架,Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。作为当前最流行的NIO框架,Netty在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,一些业界著名的开源...转载 2018-06-22 11:51:39 · 3005 阅读 · 0 评论 -
Java网络编程与NIO详解11:Tomcat中的Connector源码分析(NIO)
Tomcat 中的 NIO 源码分析转自https://www.javadoop.com/post/tomcat-nio#toc1之前写了两篇关于 NIO 的文章,第一篇介绍了 NIO 的 Channel、Buffer、Selector 使用,第二篇介绍了非阻塞 IO 和异步 IO,并展示了简单的用例。本文将介绍 Tomcat 中的 NIO 使用,使大家对 Java NIO...转载 2017-06-12 14:57:49 · 1312 阅读 · 0 评论 -
Java网络编程与NIO详解10:深度解读Tomcat中的NIO模型
转自:http://www.linkedkeeper.com/detail/blog.action?bid=1046一、I/O复用模型解读Tomcat的NIO是基于I/O复用来实现的。对这点一定要清楚,不然我们的讨论就不在一个逻辑线上。下面这张图学习过I/O模型知识的一般都见过,出自《UNIX网络编程》,I/O模型一共有阻塞式I/O,非阻塞式I/O,I/O复用(select/poll...转载 2017-06-12 15:16:23 · 2382 阅读 · 0 评论 -
Java网络编程和NIO详解9:基于NIO的网络编程框架Netty
小白科普:Netty有什么用?原创:老刘码农翻身2017-11-20随着移动互联网的爆发性增长,小明公司的电子商务系统访问量越来越大,由于现有系统是个单体的巨型应用,已经无法满足海量的并发请求,拆分势在必行。在微服务的大潮之中, 架构师小明把系统拆分成了多个服务,根据需要部署在多个机器上,这些服务非常灵活,可以随着访问量弹性扩展。世界上没有免费的午餐, ...转载 2017-06-14 00:32:43 · 2082 阅读 · 0 评论 -
Java网络编程和NIO详解6:Linux epoll实现原理详解
Linux epoll实现原理详解在linux 没有实现epoll事件驱动机制之前,我们一般选择用select或者poll等IO多路复用的方法来实现并发服务程序。在大数据、高并发、集群等一些名词唱得火热之年代,select和poll的用武之地越来越有限,风头已经被epoll占尽。本文便来介绍epoll的实现机制,并附带讲解一下select和poll。通过对比其不同的实现机...转载 2017-06-14 10:27:39 · 4123 阅读 · 2 评论 -
Java网络编程和NIO详解7:浅谈 Linux 中NIO Selector 的实现原理
浅谈 Linux 中 Selector 的实现原理转自:https://www.jianshu.com/p/2b71ea919d49概述Selector是NIO中实现I/O多路复用的关键类。Selector实现了通过一个线程管理多个Channel,从而管理多个网络连接的目的。Channel代表这一个网络连接通道,我们可以将Channel注册到Selector中以实现Sele...转载 2017-07-07 19:54:20 · 1397 阅读 · 0 评论 -
Java网络编程与NIO详解8:浅析mmap和Direct Buffer
之前看到一篇文章说epoll中在维护epoll句柄数据结构时使用到了mmap的技术,但是后来看了其他文章以及epoll源码后发现好像并没有用到这个技术。转自知乎:epoll_wait的实现~有关从内核态拷贝到用户态代码.可以看到__put_user这个函数就是内核拷贝到用户空间.分析完整个linux 2.6版本的epoll实现没有发现使用了mmap系统调用,根本不存在共享内存在epoll的实现if...转载 2017-07-07 19:58:53 · 5032 阅读 · 0 评论 -
Java网络编程与NIO详解4:浅析NIO包中的Buffer、Channel 和 Selector
Java NIO:Buffer、Channel 和 Selector转自https://www.javadoop.com/post/nio-and-aio本文将介绍 Java NIO 中三大组件Buffer、Channel、Selector的使用。本来要一起介绍非阻塞 IO和 JDK7 的异步 IO的,不过因为之前的文章真的太长了,有点影响读者阅读,所以这里将它们放...转载 2017-07-10 15:19:05 · 1641 阅读 · 0 评论 -
Java网络编程和NIO详解5:Java 非阻塞 IO 和异步 IO
Java 非阻塞 IO 和异步 IOJAVA AIO简介jdk7中新增了一些与文件(网络)I/O相关的一些api。这些API被称为NIO.2,或称为AIO(Asynchronous I/O)。AIO最大的一个特性就是异步能力,这种能力对socket与文件I/O都起作用。AIO其实是一种在读写操作结束之前允许进行其他操作的I/O处理。AIO是对JDK1.4中提出的同步非阻塞I/O...转载 2017-07-14 15:25:37 · 1732 阅读 · 0 评论 -
Java网络编程和NIO详解3:IO模型与Java网络编程模型
基本概念说明用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用户进程不能直接操作内核(kernel),保证内核的安全,操作系统将虚拟空间划分为两部分,一部分为内核空间,一部分为用户空间。针对linux操...转载 2017-07-10 15:57:48 · 5096 阅读 · 1 评论 -
Java网络编程与NIO详解2:JAVA NIO 一步步构建I/O多路复用的请求模型
JAVA NIO 一步步构建I/O多路复用的请求模型转自:https://github.com/jasonGeng88/blog摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog文章一:JAVA 中原生的 socket 通信机制当前环境jdk == 1.8代码地址git 地址:https://github...转载 2017-04-24 15:46:25 · 2832 阅读 · 1 评论 -
Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制
JAVA 中原生的 socket 通信机制摘要:本文属于原创,欢迎转载,转载请保留出处:https://github.com/jasonGeng88/blog当前环境jdk == 1.8知识点socket 的连接处理 IO 输入、输出流的处理 请求数据格式处理 请求模型优化场景今天,和大家聊一下 JAVA 中的 socket 通信问题。这里采用最简单的一请求一响应...转载 2017-04-21 13:18:15 · 2356 阅读 · 0 评论 -
Java网络编程和NIO详解开篇:Java网络编程基础
老曹眼中的网络编程基础转自:https://mp.weixin.qq.com/s/XXMz5uAFSsPdg38bth2jAA我们是幸运的,因为我们拥有网络。网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界。 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至无法描述。对于一个码农而言,了解网络的基础知识可能还是从...转载 2017-07-13 11:33:18 · 8634 阅读 · 1 评论 -
夯实Java基础系列16:一文读懂Java IO流和常见面试题
本文介绍了Java IO流的基本概念,使用方法,以及使用的注意事项等。帮助你更好地理解和使用Java的IO流。具体代码在我的GitHub中可以找到 https://github.com/h2pl/MyTech喜欢的话麻烦点一下星哈谢谢。文章首发于我的个人博客: https://h2pl.github.io/2018/05/04/javase17更多关于Java后...原创 2018-05-05 00:05:52 · 5334 阅读 · 0 评论