首页
动态
橙Bot
导航
翻译橙
标签分类
文章归档
专栏
图库
友链
留言板
1
技术方案有什么
2
引导AI,探索无限可能:深入了解prompt
3
Github:那些你不知道的使用方式
4
博客接入公众号,我是如何做到的?
5
我在青岛~
橙序员
累计撰写
186
篇文章
累计创建
65
个标签
累计收到
4
条评论
栏目
首页
动态
橙Bot
导航
翻译橙
标签分类
文章归档
专栏
图库
友链
留言板
搜索
标签搜索
公众号
事务
流处理
大数据
旅行
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
428
0
0
开发技巧