java网络专题

第二次的博客,也没有什么感想,就觉得老师说的很有道理,如果自己没有什么学习方法,那就每天都敲代码,肯定会有收获
知识梳理
TCP/IP协议栈 栈:一组协议
TCP 网络传输控制协议
IP 网络地址协议
应用层:访问的网页 http协议(超文本传输协议)
远程登录主机 telnet协议 ssh协议(保证安全)
传输层:打包和确定目的应用程序
TCP(保障数据的可靠有序),UDP(不保障)

    http 占用80 端口
    telnet 22
    ssh 22
    mysql 3306

互联网层:IP协议
网络访问层:
发送:应用层->传输层—>互联网层->网络访问层
接收:网络访问层—>互联网层—>传输层—>应用层

连接:telnet 对方ip 端口号
发送请求:http协议
请求:
GET /time HTTP/1.1
Host:localhost
回车
回车

响应:

Socket 端点 底层是TCP协议
1.新建Socket对象
Scocket(host代表主机,port:端口号)//三次握手
客户端->服务器
服务器->客户端
客户端->服务器
2.发送数据用输出流
Outputstream
3.接收响应用输入流
Inputstream
用bufferedReader

应用层
URL 统一资源定位符
创建new URL(http://ip地址:端口/资源地址)
HTTPURLConnection connection =url().openconnection();//建立连接,发送get请求
connection.getInputStream//拿到服务器返回的结果

3.服务器端
3.1阻塞IO BIO
serverSocket 服务器的端点
new ServerSocker(端口号);//每个程序只能占用一个端口,自己的程序用4位以上的端口
.accept();//等待,直到客户端连接为止

127.0.0.1<==>localhost

new Thread(new runnable{
public void run(){
把io相关的操作都放到线程内执行,让每个线程处理一个io操作,避免io阻塞
}
}).start();
阻塞io的特点,一个socket执行io读写操作会阻塞其它io的读写
一个线程内io的读写是串行的,可以用多线程的方法来解决,建议使用线程池而不是自己手动创建线程

线程池
ExecutorService service=new ThreadPoolExecutor(corePoolSize,maxpoolsize,keepAliveTime,timeUnit,BlockingQueue)
corepoolsize 核心线程数
maxpoolsize 最大线程数:核心线程数+救急线程数<=最大线程数
keepAliveTime保持时间 如果一个线程闲暇的时间超过了保持时间,那就把它回收,但不会少于核心线程数
timeUnit时间单位
BlockingQueue阻塞队列 当任务数超过核心线程数后,就把任务放入阻塞队列排队运行(有界 无界)

3.2并发量再高怎么办
非阻塞IO NIO, nonBlocking IO,new IO
线程(多路)复用
一个线程可以同时处理多个io操作,减少了线程的数量,能够应付更高的并发
WEB服务器 tomcat 熊猫(BIO,NIO)
Netty 服务器 封装了NIO技术,并发能力很高
spark 分布式计算框架
Redis 缓存服务器(c语言)单线程 QPS 10万

#3.3
new Thread(()—>{}).strat();
参数部分 特殊符号 代码体
(形参) -> {执行的代码}
针对单方法的接口,才能使用lambda表达式简化
当代码体部分只有一条语句,{}可省略,且不能加分号
参数部分可以省略类型
如果代码体部分只有一条语句,那么它还可以充当返回值,省掉return
concurrentHashMap

Socket 服务器实例
如下的Test是一个服务器程序
socket服务器

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值