JavaIO
菠萝y
发上等愿,结中等缘,享下等福;择高处立,寻平处住,向宽处行。
展开
-
java 驼峰字符和下划线字符相互转换工具类
此工具类需要依赖谷歌的java开发工具包guava,这个工具包里面具备了很多功能具体的可以参考并发编程网关于guava的系列教程[ 快捷入口 ]:CaseFomat提供的枚举常量的说明SN 枚举常量 说明1 LOWER_HYPHEN 连字符的变量命名规范如lower-hyphen2 LOWER_UNDERSCORE c++变量命名规范如lower_underscore3 LOWER_CAMEL java变量命名规范如lowerCamel4 UPPER_CAMEL java和c++类的命名规范如U转载 2021-09-10 14:24:45 · 854 阅读 · 0 评论 -
十七、IO进化过程之EVENT(EPOLL-事件驱动异步模型)
导论前面几篇文章我们分别从一、C10K问题经典问答二、java.nio.ByteBuffer用法小结三、Channel 通道四、Selector选择器五、Centos-Linux安装nc六、windows环境下netcat的安装及使用七、IDEA的maven项目的netty包的导入(其他jar同)八、JAVA IO/NIO九、网络IO原理-创建ServerSocket的过程十、网络IO原理-彻底弄懂IO十一、JAVA中ServerSocket调用Linux系统内核十二、IO进化过程原创 2020-09-28 11:42:51 · 865 阅读 · 0 评论 -
十六、Netty入门服务端代码
导论前面几篇文章我们分别从一、C10K问题经典问答二、java.nio.ByteBuffer用法小结三、Channel 通道四、Selector选择器五、Centos-Linux安装nc六、windows环境下netcat的安装及使用七、IDEA的maven项目的netty包的导入(其他jar同)八、JAVA IO/NIO九、网络IO原理-创建ServerSocket的过程十、网络IO原理-彻底弄懂IO十一、JAVA中ServerSocket调用Linux系统内核十二、IO进化过程原创 2020-09-24 16:05:33 · 467 阅读 · 0 评论 -
JavaIO体系文章目录
JavaIO流体系结构图注意:学习过程中,对于实际的示例案例一定要在看的基础上自己动手写一下,并测试一下,这样更方便深入理解。第一篇文章我们从IO体系中的经典问答引导大家深入了解IO体系,尤其是网络IO问题。一、C10K问题经典问答从第二篇文章开始我们讲解JAVAIO体系中的一些工具及用法。二、java.nio.ByteBuffer用法小结三、Channel 通道四、Selector选择器以下两篇文章是用于在linux系统或者windows系统环境下 安装nc 测试命令的。用于后续的soc原创 2020-09-23 14:00:35 · 148 阅读 · 0 评论 -
十五、使用Selector(多路复用器)实现Netty中Reactor主从模型
导论前面几篇文章我们分别从一、C10K问题经典问答二、java.nio.ByteBuffer用法小结三、Channel 通道四、Selector选择器五、Centos-Linux安装nc六、windows环境下netcat的安装及使用七、IDEA的maven项目的netty包的导入(其他jar同)八、JAVA IO/NIO九、网络IO原理-创建ServerSocket的过程十、网络IO原理-彻底弄懂IO十一、JAVA中ServerSocket调用Linux系统内核十二、IO进化过程原创 2020-09-23 10:39:12 · 1428 阅读 · 1 评论 -
十四、使用Selector(多路复用器)实现Netty中Reactor单线程模型
导论前面几篇文章我们分别从一、C10K问题经典问答二、java.nio.ByteBuffer用法小结三、Channel 通道四、Selector选择器五、Centos-Linux安装nc六、windows环境下netcat的安装及使用七、IDEA的maven项目的netty包的导入(其他jar同)八、JAVA IO/NIO九、网络IO原理-创建ServerSocket的过程十、网络IO原理-彻底弄懂IO十一、JAVA中ServerSocket调用Linux系统内核十二、IO进化过程原创 2020-09-23 10:26:30 · 1256 阅读 · 1 评论 -
十三、Java-IO进化过程之NIO
概述前面几篇文章我们对Java的IO体系做了一个大致的介绍,从本文开始我们将对NIO、SELECTOR、EPOLL、Netty等携带例子做更深入的讲解。如需持续了解请关注后随时查看。解读:非阻塞IO模型:当用户线程发起一个read操作后,并不需要等待,而是马上就得到了一个结果。如果结果是一个error时,它就知道数据还没有准备好,于是它可以再次发送read操作。一旦内核中的数据准备好了,并且又再次受到的用户线程的骑牛,那么它马上就将数据拷贝到了用户线程,然后返回。所以事实上,在非阻塞IO模型中,用户原创 2020-09-21 11:54:46 · 305 阅读 · 0 评论 -
十二、IO进化过程之BIO
概述前面几篇文章我们对Java的IO体系做了一个大致的介绍,从本文开始我们将对BIO、NIO、SELECTOR、EPOLL、Netty等携带例子做更深入的讲解。如需持续了解请关注后随时查看。解读阻塞IO模型:最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才接触block状态。典型的阻塞IO原创 2020-09-21 11:23:32 · 475 阅读 · 0 评论 -
十一、JAVA中ServerSocket调用Linux系统内核
前面几篇文章我们对我们分别对JavaIOtixi 及在学习IO过程中需要用到的基础知识做了一些讲解,有兴趣的可以看往期的几篇文章。全图(下面有分解图)图解:释义:1.Linux中可以使用strace命令抓取程序运行时对系统的调用,不只抓取JAVA,任何Linux中程序都可以抓取。strace -ff -o ./ooxx java TestSocket.java2.使用以上命令会当前目录生成一堆线程所需文件,ooxx.***文件后缀为线程ID号3.使用grep命令,查看当面目录哪个文件中原创 2020-09-21 10:39:52 · 545 阅读 · 0 评论 -
十、网络IO原理-彻底弄懂IO
全图(下面有分解图):图解:释义:1.IO的发展历程:操作系统内核-BIO-NIO-SELECTER-EPOLL。2.计算机开机启动,首先进入内存的第一个程序为操作系统的内核。系统内核负责对计算机进行统一管理和分配,同时生成一个GDT(全局描述符表),GDT记录内存空间划分,划分为用户空间、内核空间等。3.用户空间与内核空间的划分是用于保护计算机,用户空间无法修改内核空间数据。4.普通应用需要调用磁盘数据时是存在IO成本的,他必须去调用内核帮他做磁盘及其他硬件的操作。5.如果普通应用想调原创 2020-09-18 17:12:49 · 1300 阅读 · 0 评论 -
九、网络IO原理-创建ServerSocket的过程
示例:创建ServerSocker过程://创建ServerSocket并注册端口号8090 ServerSocket server = new ServerSocket(8090); while (true) {//循环 final Socket socket = server.accept();//获取数据System.out.println("ClientSocket:" + client.getPort()); new Thread(new Runnable() {//如果原创 2020-09-18 17:11:15 · 461 阅读 · 0 评论 -
八、JAVA IO/NIO
JAVA IO/NIOBIO、NIO、AIO 有什么区别?Java NIO : 同步非阻塞,服务器实现模式为一个请求一个线程,即客户端发送的连接请求都会注册到多路复用器上,多路复用器轮询到连接有I/O请求时才启动一个线程进行处理。Java AIO(NIO.2) : 异步非阻塞,服务器实现模式为一个有效请求一个线程,客户端的I/O请求都是由OS先完成了再通知服务器应用去启动线程进行处理,NIO方式适用于连接数目多且连接比较短(轻操作)的架构,比如聊天服务器,并发局限于应用中,编程比较复杂,JDK1.原创 2020-09-18 17:07:48 · 347 阅读 · 0 评论 -
六、windows环境下netcat的安装及使用
windows环境下netcat的安装及使用s小菜鸟 2019-01-03 21:05:51 5080 收藏 141.下载netcat。下载地址:https://eternallybored.org/misc/netcat/2.解压文件3.把nc.exe 复制到C:\Windows\System32的文件夹下4 、 进去黑窗口使用nc开启两个黑窗口第一个执行nc -l -p 9999第二个执行nc localhost 9999执行结果转载地址:https://blog转载 2020-09-18 16:50:44 · 2102 阅读 · 0 评论 -
五、Centos-Linux安装nc
1)netcat(nc)是一个简单而有用的工具,被誉为网络安全界的“瑞士军刀”,不仅可以通过使用TCP或UDP协议的网络连接读写数据,同时还是一个功能强大的网络调试和探测工具,能够建立你需要的几乎所有类型的网络连接。 2)在Linux终端窗口可以直接使用yum工具进行安装:[root@master01 spark]# yum install nc.x86_643)安装完毕后,在终端模式下运行nc -help查看命令是否正常安装[hadoop@master01 spark]$ nc -helpu转载 2020-09-18 16:48:45 · 1226 阅读 · 0 评论 -
四、Selector选择器
接着上一章的那个比喻,如果我们把Buffer缓冲区看做码头,Channel通道看做航道的话,那么Selector选择器可以看做海上的一个调度中心,一个调度中心可以监听多个航道的事件,当然,这需要航道归属在这个调度中心的编制下。创建一个SelectorSelector selector = Selector.open();将Channel注册在某个Selector的管辖范围之下Selector是一个对象,它可以被注册到很多个Channel上,监听各个Channel上发生的事件,并且能够根据事件情况决转载 2020-09-18 16:47:09 · 639 阅读 · 0 评论 -
一、C10K问题经典问答
原文链接:https://zhuanlan.zhihu.com/p/61785349服务端经典的C10K问题最近看了一下Unix网络编程相关的内容,然后发现了一篇非常经典的文章, 内容可能不是很新,不过真的很经典,C10K问题,简单翻译了一下(markdown转换过来格式可能存在少量问题)对掌握linux io和 linux 线程会有更深的理解.(文内存在大量的链接.) 原文链接 The C10K problem现在 web 服务器需要同时处理上万请求,难道不是吗?毕竟如今的网络将会有很大的发展空间.转载 2020-09-18 16:29:02 · 1297 阅读 · 0 评论 -
二、java.nio.ByteBuffer用法小结
java.nio.ByteBuffer用法小结简介在Java的Socket编程中,若使用阻塞式(BIO),则往往通过ServerSocket的accept()方法获取到客户端Socket之后,再使用客户端Socket的InputStream和OutputStream进行读写。Socket.getInputstream.read(byte[] b)和Socket.getOutputStream.write(byte[] b)的方法中的参数都是字节数组。这种阻塞式的Socket编程显然已经远远不能满足目前的转载 2020-09-18 16:38:53 · 1102 阅读 · 0 评论 -
三、Channel 通道
Channel 通道顾名思义,channel在NIO中扮演着通道的角色,负责传输缓冲区Buffer中的数据块。打个比方,如果说Buffer是码头的话,码头中的一个个集装箱,就是存放在Buffer中的数据块,channel就是航道,运输这些集装箱,就需要走我们的航道,将集装箱送到目的地的码头,具体去哪个码头取集装箱,是由航道决定的,这条航道通往哪里,你就去哪个码头。所以,我们获取集装箱(数据块)是去找码头(Buffer),找码头(Buffer)之前,我先需要通过航道(Channel)把数据块读入运入(读原创 2020-09-18 16:41:43 · 240934 阅读 · 0 评论