草庐IT

Netty(1)——NIO基础

本篇主要介绍JavaNIO的基本原理和主要组件Netty是由JBOSS提供的Java开源网络应用程序框架,其底层是基于Java提供的NIO能力实现的。因此为了掌握Netty的底层原理,需要首先了解JavaNIO的原理。NIO简介计算机主要由CPU、内存、外存、IO设备等硬件组成,计算机执行计算的过程就是CPU从内存中获取数据,进行计算,然后再将计算结果写入内存中。但由于内存非常昂贵且下电后数据会丢失,计算机需要使用外存来持久化存储大规模的数据,外存提供了大量的存储空间,代价是其存取速度远小于内存。除了读取外存数据,计算机还可以从网络设备获取网络中的数据,受网络传输速度的限制,计算机获取网络数据

Netty基础-NIO(二)

前置文章:Netty基础-NIO(一),该文主要引入NIO三大组件,介绍了Buffer结构,及Buffer具体使用。零、本文纲要一、ChannelFileChannelFileChannel传输二、补充:Path&Paths&Files类Path&PathsFilesFiles类的walkFileTree方法&walk方法一、Channel1.FileChannel注意:FileChannel只能工作在阻塞模式下①获取方式FileInputStream→只读;FileOutputStream→只写;RandomAccessFile→读写;FileChannelreadChannel=newFi

Netty基础-NIO(二)

前置文章:Netty基础-NIO(一),该文主要引入NIO三大组件,介绍了Buffer结构,及Buffer具体使用。零、本文纲要一、ChannelFileChannelFileChannel传输二、补充:Path&Paths&Files类Path&PathsFilesFiles类的walkFileTree方法&walk方法一、Channel1.FileChannel注意:FileChannel只能工作在阻塞模式下①获取方式FileInputStream→只读;FileOutputStream→只写;RandomAccessFile→读写;FileChannelreadChannel=newFi

NIO 实现非阻塞 Socket 通讯,NIO 实现多人聊天室的案例

NIO实现多人聊天室的案例服务端importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.*;importjava.nio.charset.Charset;/***聊天室服务端*/publicclassNServer{privateSelectorselector=null;staticfinalintPORT=30000;privateCharsetcharset=Charset.forName("UTF-8");ServerSock

NIO 实现非阻塞 Socket 通讯,NIO 实现多人聊天室的案例

NIO实现多人聊天室的案例服务端importjava.io.IOException;importjava.net.InetSocketAddress;importjava.nio.ByteBuffer;importjava.nio.channels.*;importjava.nio.charset.Charset;/***聊天室服务端*/publicclassNServer{privateSelectorselector=null;staticfinalintPORT=30000;privateCharsetcharset=Charset.forName("UTF-8");ServerSock

NIOS II入门学习笔记【一】--- NIOS II软核处理器开发入门

​ 一、什么是软核处理器1、什么是处理器在弄清楚什么是软核处理器之前,需要首先明白什么是处理器,这里笔者浅显的作一番解释。众所周知处,理器是可以按照指令序列完成特定的逻辑功能的集成电路,一般的常见的微控制器都为SOC,即片上系统,包括中央处理单元、总线、存储器、外设,比如大家熟知STM32,其F103系列就是由Coretex-M3内核、AHBAPB总线、RAM、ROM以及GPIO等等一些外设组成的,上述所有的内容包含在一个芯片上,所以称之为片上系统,也是常说的微处理器。2、软核处理器具有FPGA和数字电路基础知识的读者应该清楚,FPGA可以通过编程实现几乎所有的数字电路的功能,并且由于Veri

NIOS II入门学习笔记【一】--- NIOS II软核处理器开发入门

​ 一、什么是软核处理器1、什么是处理器在弄清楚什么是软核处理器之前,需要首先明白什么是处理器,这里笔者浅显的作一番解释。众所周知处,理器是可以按照指令序列完成特定的逻辑功能的集成电路,一般的常见的微控制器都为SOC,即片上系统,包括中央处理单元、总线、存储器、外设,比如大家熟知STM32,其F103系列就是由Coretex-M3内核、AHBAPB总线、RAM、ROM以及GPIO等等一些外设组成的,上述所有的内容包含在一个芯片上,所以称之为片上系统,也是常说的微处理器。2、软核处理器具有FPGA和数字电路基础知识的读者应该清楚,FPGA可以通过编程实现几乎所有的数字电路的功能,并且由于Veri

NIO 缓冲区

摘要    Java提供了NIO操作的API,但真正处理NIO流,经常会出现如下代码:SocketChannelchannel=(SocketChannel)key.channel();ByteBufferbuffer=ByteBuffer.allocate(1024);while(channel.read(buffer)!=-1){//复位,转化为读模式buffer.flip();while(buffer.hasRemaining()){System.out.println("收到客户端"+channel.socket().getPort()+"的信息:"+StandardCharsets.

NIO 缓冲区

摘要    Java提供了NIO操作的API,但真正处理NIO流,经常会出现如下代码:SocketChannelchannel=(SocketChannel)key.channel();ByteBufferbuffer=ByteBuffer.allocate(1024);while(channel.read(buffer)!=-1){//复位,转化为读模式buffer.flip();while(buffer.hasRemaining()){System.out.println("收到客户端"+channel.socket().getPort()+"的信息:"+StandardCharsets.

从 Linux 内核角度探秘 JDK NIO 文件读写本质

1.前言笔者在《从Linux内核角度看IO模型的演变》一文中曾对Socket文件在内核中的相关数据结构为大家做了详尽的阐述。又在此基础之上介绍了针对socket文件的相关操作及其对应在内核中的处理流程:并与epoll的工作机制进行了串联:通过这些内容的串联介绍,我想大家现在一定对socket文件非常熟悉了,在我们利用socket文件接口在与内核进行网络数据读取,发送的相关交互的时候,不可避免的涉及到一个新的问题,就是我们如何在用户空间设计一个字节缓冲区来高效便捷的存储管理这些需要和socket文件进行交互的网络数据。于是笔者又在《一步一图带你深入剖析JDKNIOByteBuffer在不同字节序