在写这些东西之前吧,说说目前我这个酱油是干嘛的。严格来说是从事了大约7~8年的.NET/Java开发,乍看一眼,只有2个字:牛逼。
实际上由于各种类型的摸鱼也好,吃喝玩乐混搭子也罢,只能说自己的工作完全胜任了,毕竟非BAT公司,部门也偏向于C端业务(C端B端更多知识在产品经理这一块),做的工作呢对于高并发高可用等等都没什么关系。
本以为自己可以摸鱼到35,然后出来随便干点有的没的,当个蓝骑士啥的这一辈子也就过去了,奈何一纸诏书改变了这个时代,一个赛道就此陨落,居安而思危。不能啥都不会啊!!!!!!!!
面试我这种酱油都面不出去了!!!不行,要学点有的没的。然后在极客时间报了个班,总而言之也是在摸鱼找理由不上课。。。。。
(总感觉可能我就是个摸鱼怪)
但是现在要努力会了, 我觉得写博客可以让我自己静下心来做事,通过本子也好其他什么也好,终归做事的感受不一样。
言归正传
随着时代的变迁,我们互联网行业更多的走向了B/S结构。
那么在B/S的结构下,我们就会需要更多并发的连接。
那么,如何来实现更多并发请求的连接呢?这个就是我们所谓的NIO技术了。
在了解关于Netty也好,NIO,BIO也罢,这之前需要了解一点关于Socket本身的意义。
说一点点题外话,并不是所有的开发都有着极其好的开发功底,懂得TCP/IP7层协议,懂计算机原理,网络等等,可能更多都是那种“我知道代码怎么写”.。所以,这一块还是从最基本的了解清楚比较好
首先先简单的描述一下Server端:
Server,顾名思义是服务端,一般Java开发的东西都在这里(常规情况下是Linux机器,个别也可能部署在例如Windos机器上的Java应用),并且开启一个端口进行监听。
其实也包括我们本机通过IDE跑起来的例如:http://localhost:8081//
那么问题来了,一台机器上我们可以部署多少个应用???为什么我们部署了这么多的应用都在一台机器上他们不会全部受到吗?而且我平时打的线上API可能更多的仅仅是一个域名,要知道默认的端口可是80
这就涉及到域名这么个玩意,简简单单的先来一张手绘图

可以看到图中的小人和大楼,其实就是我们生活中的显示的一部分(当然可能是比较老的年代)
快递员:“张三在吗?” 这里可以看做是客户发送了一条请求,请求的地址是张三,那么张三李四淘宝京东都在同一栋大佬里面,如果张三在家(看做服务正常运行),就会得到张三的响应(200),其他人不会响应,尽管他们都是在同一栋大楼。
这里代表什么?张三,李四, 淘宝,京东大家都部署在了同一台机器上(例如192.168.1.1),客户都找的是80端口,那么,域名可以看做是名字,只要名字不一致的情况下,我们永远不会找错人。
这也就是一个同一个机器上不同域名只有正确的域名才会响应的情况

那么Socket服务器的通信原理是什么?
在CS Client的原理中,我们的Server端是不动的,全世界各地的Client端都可以来连接我们的Server端。
那我们整个Socket就分为了几步
1. 开启一个端口进行Socket的监听
2. 等待收发数据
3.(由客户端发起)创建Socket请求,并且连接对应的端口,双方建立连接【这里有一部分是3次握手确认,这个需要去了解TCP/IP7层协议】
接着我们就开始通过输入/输出流进行通信(全双工通信,这个通信是双方同等的。),通信结束后大家关闭Socket
慢慢写:
简单的Socker程序。
使用Curl指令
【新大陆】Windows 10 如何启用 Ubuntu 子系统
浙公网安备 33010602011771号