Java io
深山猿
不断进化的深山猿
展开
-
io初步理解与使用
inputStream和InputstreamReader和writer分别怎么用?有什么联系?InputStream 是接口File(path);FileInputStream(file); ---- read write对应于byte[],所以字节流InputStreamReader(fileInputStream); ----read write对应于char[],所以字符流Bu...原创 2019-09-19 18:52:18 · 480 阅读 · 0 评论 -
理解阻塞非阻塞同步和异步
理解流的发展与演化需要先理解一些概念。家庭主妇在用热水器烧水,水没开的时候一直等着,别的啥也不干,这就是阻塞。但是如果烧水的时候同时去洗菜,就是非阻塞。家庭主妇烧水用的是不带报警器的热水器,则该主妇需要不时自己过来看水是否烧开,此为同步;如果热水器有报警功能,水烧开后自动报警通知改主妇,则为异步。阻塞非阻塞:有数据返回前是否等待阻塞:请求方发送数据后,线程得不到返回值就一直等.非阻塞:...原创 2017-09-22 16:14:03 · 221 阅读 · 0 评论 -
从内核与用户空间理解bio和nio,netty对nio的优化和zerocopy
linux 系统会划分为User space and Kernel spacecpu对空间管理分为4个不同的级别:Ring0--Ring3。 Ring0下,可以执行特权指令,在Ring3则有很多限制。linux系统则利用这一特性,使用了其中两级来分别运行linux内核与应用程序,这样使操作系统本身得到充分的保护。 用户代码运行在Ring3,内核代码运行在Ring0.内核空间与用户空间是程序...原创 2019-09-24 12:02:37 · 933 阅读 · 0 评论 -
BIO\NIO\AIO和对应网络编程的发展
传统的io为bio(blocking i/o),阻塞io;使用bio的网络编程经典方式如下:{ExecutorService executor = Excutors.newFixedThreadPollExecutor(100);//线程池ServerSocket serverSocket = new ServerSocket();serverSocket.bind(8088);...原创 2019-09-19 18:48:21 · 232 阅读 · 0 评论 -
BIO\NIO\AIO再理解,nio轮询方式与epoll
BIO\NIO\AIO的直观比较:所有的系统I/O分为两个部分:等待就绪和操作.如读函数,分为等待系统可读和真正的读;但等待就绪不使用CPU,但真正的读写操作的是使用cpu的,当然操作执行期间也是一种阻塞.以socket.read()为例:对于BIO:socket,read()时,如果TCPRecvBuffer里面没有数据,函数会一直阻塞,直到收到数据,返回读到的数据.NIO:如果TCP ...原创 2018-09-08 22:46:31 · 10453 阅读 · 0 评论 -
dubbo通信框架 netty reactor模式
Dubbo使用什么通信框架Dubbo使用的是netty,主流通信框架包括netty,mina,GrizzlyMina:Mina(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络应用程序提供了非常便利的框架。当前发行的 Mina 版本2.04支持基于 Java ...原创 2018-07-19 21:32:23 · 12353 阅读 · 0 评论 -
tomcat假死分析 连接\请求\线程 io模式
服务挂掉的两种现象504 Gateway Time-out ---05月16 13:22:17the gateway did not receive a timely response from the upsteream server or application.页面访问https://bi.pp.com/rsbi/frame/Frame.action 504504超时:这种应该是t...原创 2019-07-05 18:31:54 · 892 阅读 · 0 评论 -
Ascii,Unicode和utf-8的发展演变,java下字符和字节关系
出现ascii码:开始计算机只在美国用。八位的字节一共可以组合出256(2的8次方)种不同的状态,此时传输英文的各种字母字符或控制码足够了.出现GB2312和GBK后来计算机在中国使用,大家使用中文,但是中文很多7千多个中文,都需要表示,所以将ascii码改造(即一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,注意此时一定大于127)后产生了GB...原创 2017-09-21 21:05:54 · 237 阅读 · 0 评论 -
Direct Buffer和flip方法 和垃圾收集
DirectBuffer和MappedByteBufferDirectBuffer : 在 Buffer 的方法定义中,有一个 isDirect() 方法,返回当前方法是否是 Direct 类型。这是 Java 提供的堆外 Buffer。可以使用 allocateDirect 方法直接创建。如:ByteBuffer.allocateDirect(1024);MappedByteBuffer:...原创 2019-09-25 13:56:07 · 772 阅读 · 0 评论