博客专栏推荐
-
1177338次
-
122015次
-
56769次
-
29259次
本月博客排行
年度博客排行
-
第1名
青否云后端云 -
第2名
zw7534313 -
第3名
大家都说我很棒 - liyihz2008
- wy_19921005
- hbxflihua
- 腾讯优测1
- e_e
- ning2-eye
- wallimn
- dbagirl
- gengyun12
- luxurioust
- zysnba
- itdatacenter
- alsmile
- robotmen
- xiangjie88
- johnsmith9th
- gaozzsoft
- jywhltj
- fantaxy025025
- zhangdaiscott
- chinahuyong
- 淡看人生
- leslie26
- sichunli_030
- cuityang
- kaizi1992
- jveqi
- mukeliang728
- cpongo1
- hellohank
- zlr
- weiyides
- hanbaohong
- appalese
- jickcai
- zhaoshijie
- lzyfn123
- jackpot1234
- qepwqnp
- ranbuijj
- 解宜然
- lyongq04
- xpenxpen
- ssydxa219
- gdpglc
- java-007
最新文章列表
传统的服务器设计是:一连接一处理线程,也就是我们常说的 bio 编程。bio 在读取和发送时是阻塞的,在请求的整个生命周期内,不管有没有数据可读或待发送,都绑定和占用了这个处理线程。
bio 多线程并发模式,一个连接一个线程的优点是:
一定程度上极大地提高了服务器的吞吐量,因为之前的请求在read阻塞以后,不会影响到后续的请求,因为他们在不同的线程中。这也是为什么通常会讲“一个线程只能对应一个 ...
有320人浏览
2020-04-11 08:40
分享一下关于java网络通讯方面的内容. 下载地址:https://github.com/mldn/echo
java基础知识:bio、nio、aio三者的技术实现,以及彼此之间的区别
netty:tcp 程序实现为主,代码的核心:echo程序模型,通过网络实现一个基础的echo。
一.bio模型
同步阻塞io处理
在程序的开发之中java里面最小的处理单元就是线程 ...
有624人浏览
2019-06-08 10:36
发展:
bio -> nio -> aio
bio就是我们传统意义上的io,它的特点是阻塞的。例如以前我们进行网络编程时,一个客户端使用一个线程来进行处理。这样会导致一个问题:服务器的线程数是有限制的,而不是每个客户端时时都有数据进行传输的。所以大量空的线程占了位置,但是又不工作,导致服务器的性能受限。
这会涉及到4次上下文切换和4次拷贝。
第一次切换:从用户态切换到内核态,将数 ...
有954人浏览
2019-03-11 13:43
原文:《java nio asynchronousfilechannel》
asynchronousfilechannel 使得异步读写文件成为可能。此教程将解释如何使用该类。
创建一个 asynchronousfilechannel
可通过 asynchronousfilechannel.open() 方法创建实例:
path path = paths.get("c ...
有448人浏览
2019-03-03 22:30
原文:《java nio files》
java nio 的 files 类(java.nio.file.files)提供了多个方法用于操纵文件系统中的文件。此教程包含这些方法中最常用的几个。files类� ...
有431人浏览
2019-03-03 20:02
原文:《java nio path》
java nio path 接口是 nio 2 更新的一部分。其全称为 java.nio.file.path。
一个 path 实例表示文件系统中的一个路径(path)。path 可以 ...
有478人浏览
2019-03-01 18:47
原文:《java nio vs. io》
当学习java nio 和 io 的api时,很快会遇到一个问题: 什么时候用io,什么时候用nio?
我会尝试在本文提供一些关于java nio 与 io � ...
有364人浏览
2019-02-26 23:38
原文:《java nio pipe》
java nio 的 pipe 是一个线程间的单向数据连接。一个pipe有一个 source channel 和 一个 sink channel。你可以向 sink channel 写入数据。这些数据可以从 source channel 中被读出。
简化结构如下:
创建pipe
pipe pipe = pipe.open();
...
有408人浏览
2019-02-15 17:00
原文:《java nio datagramchannel》
datagramchannel是可以发送与接收udp数据包的channel。因为udp是无连接的网络协议,所以你不能像操作其它channel那样对其读写。你需要发送或接收数据包。
开启datagramchannel
datagramchannel channel = datagramchannel.open();
c ...
有326人浏览
2019-02-15 16:31
原文:《java nio: non-blocking server》
github 上的实例代码
https://github.com/jjenkov/java-nio-server
非阻塞io管道
非阻塞io管道是一系列组件的链接。简化结� ...
有400人浏览
2019-02-15 15:36
原文:《java nio serversocketchannel》
java nio 中的 serversocketchannel 用于在tcp通信中监听来自客户端的连接。
开启 serversocketchannel
serversocketchannel channel = serversocketchannel.open();
关闭 serversocket ...
有390人浏览
2019-02-13 16:32
原文:《java nio socketchannel》
java nio 中的 socketchannel 用于处理 tcp 网络连接。
开启 socketchannel
示例:连接远程服务器
socketchannel channel = socketchannel.open();
channel.connect(new inetsocketaddress("ab ...
有336人浏览
2019-02-13 16:06
注:利用 filechannel.transferto 和 filechannel.transferfrom 方法可以更高效地读写文件。
(《filechannel 数据传输》)
原文:《java nio filechannel》
java nio 中的 filechannel 可用于读写文件。filechannel 总是以 阻塞 模式运行,不支持非阻塞模式。
开启 file ...
有592人浏览
2019-02-13 14:50
原文:《java nio selector》
selector 可以检查多个 channel 实例,发现那些已经就绪,可以读/写的 channel。通过这个机制,可以实现 单线程处理多个channel,从而处理多个网络连接。
为什么要使用 selector ?
对操作系统来说,线程之间的切换代价较高,而且每个线程都会占用一些内存资源。所以线程越少越好。而利用select可以实现只 ...
有448人浏览
2019-02-12 17:23
原文:《java nio channel to channel transfers》
filechannel 的 transferfrom 和 transferto 方法可以方便地将数据传入 filechannel(写文件)或 读取 filechannel 中的数据(读文件)
这两个方法比简单的 循环 读取-写入 更高效。因为许多操作系统能直接将 源channel 中的数据传输到 文件 ...
有581人浏览
2019-01-31 10:29
« 上一页 1 …