在理解了Java并发编程技术后再看网络编程,
1. 首先要对计算机网络有一定的了解(TCP/IP, HTTP相关知识点)
2. 其次要了解Socket的使用及原理,
3. 然后再去了解NIO的相关API,
4. 多写一些客户端和服务端通迅的DEMO,
5. 为了更好理解网络编程,还要去了解UNIX网络编程模型,这是不管使用Java或c++,都必须要了解的
6. 为了更好理解Java网络编程需要,需要了解TOMCAT的实现原理
7. Netty也必须了解,并用这一网络框架进行编程,还可以看看它的源码
幕课网---Web协议详解与抓包实战 | Linux 网络命令必知必会之 tcpdump,一份完整的抓包指南请查收 |
---|
Java 全栈知识体系---Java IO知识体系详解 |
---|
精尽计算机网络学习指南 | 计网 IP 知识全家桶,45 张图一套带走 | Java IO知识体系详解 |
---|
Java IO知识体系详解 |
---|
不了解NIO你好意思说自己是Java程序员? | 我见过最清晰的总结,一键搞定Netty难关,看到NIO再也不犯糊涂了 |
---|
吐血整理所有常用端口,不全你来打我! |
---|
- 手动搭建I/O网络通信框架1:Socket和ServerSocket入门实战,实现单聊
- 手动搭建I/O网络通信框架2:BIO编程模型实现群聊
- 手动搭建I/O网络通信框架3:NIO编程模型,升级改造聊天室
- 手动搭建I/O网络通信框架4:AIO编程模型,聊天室终极改造
- SpringBoot+Netty+WebSocket实现实时通信
ServerSocket与Socket入门详解 | Socket编程实践模拟通信 |
---|
-
-
- 阻塞
- 非阻塞
- 同步
- 异步
-
服务器如何处理请求---操作系统的进程模型
- 单进程
- 多进程
- 消息传递
- 管道
- FIFO
- 消息队列
- 同步
- 互斥量
- 读写锁
- 信号量
- 共享内存
- 远程过程调用
- 消息传递
- 单线程
- 多线程
-
网络编程模型的实际方案
- PPC
- Prefork
- TPC
- Prethread
- Reactor
- Proactor
-
-
分布式应用的系统间通信方式
- 网络通信
- 通信协议
- Java NIO基础
- 基于消息方式的系统间通信
- Socket方式
- 基于java包实现消息方式的系统间通信
- TCP/IP协议 (图解+秒懂+史上最全)---疯狂创客圈
- UDP/IP
- Multicast
- 基于开源框架实现消息方式的系统间通信
- Netty
- Mina(apache,基于java NIO,对外屏蔽了JavaNIO的复杂性)
- Dubbo
- 基于java包实现消息方式的系统间通信
- 消息队列方式
- java包实现消息队列方式的系统间通信
- JMS
- 基于开源框架实现消息队列方式的系统间通信
- ActiveMQ
- RocketMQ
- RabbitMQ
- java包实现消息队列方式的系统间通信
- Socket方式
- 基于远程调用方式的系统间通信
- 基于java包实现远程调用方式的系统间通信
- RMI(Remote Method Invocation)
- webservice
- 基于开源框架实现远程调用方式的系统间通信
- Spring RMI(简单就实现RMI方式的java远程调用)
- Apache CXF
- Hessian
- AXIS
- 基于java包实现远程调用方式的系统间通信
- 网络通信
单服务器高性能的关键之一就是服务器采取的网络编程模型,网络编程模型有如下两个关键设计点:
(l)服务器如何管理连接
(2)服务器如何处理请求
以上两个设计点最终都和操作系统的I/O 模型及进程模型相关。
(1) I/0 模型:阻塞、非阻塞、同步、异步。
(2)进程模型:单进程、多进程、单线程,多线程。
同步阻塞⽅式(BIO),客户端每发⼀次请求,服务端就⽣成⼀个线程去处理。当客户端同时发起的请求很多时,服务端 需要创建很多的线程去处理每⼀个请求,如果达到了系统最⼤的线程数瓶颈,新来的请求就没法处理了。
同步⾮阻塞⽅式 (NIO),客户端每发⼀次请求,服务端并不是每次都创建⼀个新线程来处理,⽽是通过I/O多路复⽤技术 ⾏处理。就是把多个I/O的阻塞复⽤到同⼀个select的阻塞上,从⽽使系统在单线程的情况下可以同时处 理多个客户端请求。这种⽅式的优势是开销⼩,不⽤为每个请求创建⼀个线程,可以节省系统开销。
异步⾮阻塞⽅式(AIO),客户端只需要发起⼀个I/O操作然后⽴即返回,等I/O操作真正完成以后,客户端会得到I/O操作完 成的通知,此时客户端只需要对数据进⾏处理就好了,不需要进⾏实际的I/O读写操作,因为真正的I/O读取或者写⼊操作已 经由内核完成了。这种⽅式的优势是客户端⽆需等待,不存在阻塞等待问题。
- Computer Networking Course - Network Engineering
- Full Ethical Hacking Course - Network Penetration Testing for Beginners (2019)
- 清华大牛权威讲解nio,epoll,多路复用,更好的理解redis-netty-Kafka等热门技术
- HTTP协议详解
- Fiddler抓包工具实战全网最全最细教程,没有之一
- HTTP WATCH
- [尚学堂]Java---网络编程/手写服务器 手写聊天室 手写Webserver
- web网络服务器开发案例 socket /tcp.ip 编程(完
- Linux网络编程 - 轻量级http服务器项目
- 2019最新Java网络编程全套教程(NIO+Tomcat+Netty+Socket)
- Network Fundamentals
-
[linux如何查看某个端口被哪个程序占用了](https://blog.如何模拟超过 5 万的并发用户csdn.net/gezilan/article/details/79921059)