请允许在我们的网站上展示广告
您似乎使用了广告拦截器,请关闭广告拦截器。我们的网站依靠广告获取资金。
我已知悉
文章发布订阅~
通过邮箱订阅文章更新,您将在文章发布时收到及时的邮件提醒~
邮箱
昵称
订阅
关闭
首页
专栏
橙Bot
动态
图库
留言板
友链
1
Java如何优雅地创建不可变集合?
2
为什么IDEA不建议使用append拼接字符串?
3
Java为啥不用UTF-8解析properties文件?
4
为什么反射不再是java的最佳选择?
5
全面解析 JDK 9 新特性:模块化、性能优化与全新 API
橙序员
累计撰写
217
篇文章
累计创建
70
个标签
累计收到
4
条评论
栏目
首页
专栏
橙Bot
动态
图库
留言板
友链
搜索
标签搜索
JDK
响应式编程
R2DBC
小说
成长
公众号
事务
流处理
大数据
旅行
mongo db
SUNO
github
IDEA
安全
注解
总结
求职
分布式事务
CAP
分布式系统
loadbalancer
装修
买房
前端
方案设计
AIGC
JVM
资讯
Netty
NIO
BIO
zookeeper
RocketMQ
MySQL
stable diffusion
spring MVC
spring AOP
JDBC
mybatis
logback
docker
consul
spring event
新冠
连接池
redis
运维
nginx
hiper-v
DDD
搞笑
数据库
团建
游戏
Gradle
心情
好物
eureka
spring framework
spring boot
设计模式
apache common
ShardingSphere
KAFKA
leetcode
spring cloud
feign
ES
起点
目 录
CONTENT
以下是
BIO
相关的文章
2023-08-09
BIO阻塞在了哪里?
客户端与服务端之间的交互流程如下:
1. 创建服务端socket,绑定系统端口并监听此端口的客户端连接。
2. 创建客户端连接,指定ip和端口地址。
3. 客户端发起连接请求,服务端接收并受理连接。
4. 连接建立成功,客户端与服务端开始数据交互。
5. 服务端处理客户端请求的流程如下:
- 通过走读源码可以了解到交互的具体流程。
- 关键类的定位:ServerSocket、Socket、SocketImpl等。
- SocketImpl是所有socket实现类(如PlainSocketImpl)的父类,提供了socket相关的方法定义。
- PlainSocketImpl是默认的socket实现类,实现了具体的服务端和客户端操作逻辑。
- DualStackPlainSocketImpl是PlainSocketImpl的拓展类,实现了具体的服务端和客户端操作的相关系统交互。
BIO的C/S架构中,每个客户端连接对应一个线程,服务端与客户端并发访问数呈1:1的关系。这种架构缺乏弹性伸缩能力,当并发访问量过大时,系统可能会产生线程堆栈溢出、创建新线程失败的问题,导致宕机或僵死,无法对外提供服务。
2023-08-09
631
0
0
开发技巧