### 网络基础 >-java是一门基于Internet的语言,它提供很多网络的支持,主要集中java.net包中; >什么是网络 > 网络就是将分散在不同位置的网络终端设备通过网络介质连接到一起,实现资源共享和通讯; >-iP地址 > 网络中某个设备的唯一标识,通过IP可找到网络中的某个设备; >-端口 > 通过端口可以找到设备中的一个网络程序;每个计算机中可以使用65535个; >-协议 > 通讯规则Http >TCP/IP > TCP/IP以其两个主要协议:传输控制协议(TCP)和网络互联协议(IP)而得名,实际上是一组协议,包括多个具 有不同功能且 互为关联的协议。 TCP/IP协议模型从更实用的角度出发,形成了高效的四层体系结构,即网络接口层、IP层、传输层和应用层。下图表示了TCP/IP的分层结构和与OSI参考模型的对应关系。 ### TCP传输控制 1. 面向连接的协议 2. 有服务端客户端 3. 基于流的通信 4. 创建服务端的Socket,并等待接收客户端的连接请求 5. 客户端发送连接请求; 6. 服务端接收到客户端的请求后,创建一个与之匹配的Socket,此时,两个Socket就可以相互通信了﹔l ### Socket 套接字,网络终端 >- 连接到远程主机绑定到端口 >- 接收从远程机器来的连接请求监听到达的数据 >- 发送数据 >- 接收数据关闭连接。 >- 代表网络套接字,是通信的网络终端设备,屏蔽了网络通信的细节; >- Socket s=new Socket(InetAdderss.getLocalHost(),8888; ![img_3.png](img_3.png) ### ServerSocket 服务端 >- 代码服务端的socket ,有来接受客户端的请求; >- //1.创建serversocket,IP地址是本机的,端口号是8888serversocket server=new serversocket(8888); >- //2.接受客户端的请求,如果没有客户端发请求,则一直阻塞(等待)socket=server.accept(; ### UDP协议 用户数据包 >-用户数据报协议 > User Datagram protocal ;特点; > 1.非连接,类似于邮局发邮件;2.没有明确的服务端和客户端;3.不安全,不可靠; > 4.传递效率高; ### DatagramSocket >-此类表示用来发送和接收数据报包的套接字(UDP)。 >-DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口普通方法 >-send(DatagramPacket p):从此套接字发送数据报包。 >-receive(DatagramPacket p):从此套接字接收数据报包。 ![img_4.png](img_4.png) ### TCP/IP >- 报文+报头 >- 三次握手 ,客户开始,保证能够确立连接 >- 四次挥手结束 ### Redis >- 数据类型int raw embstr list hash set >- 缓存雪崩,通过随机设置Redis key失效时间解决大量缓存同时失效的问题 >- 数据穿透:redis没有id,直接访问数据库,会在高并发情况挂掉,利用校验进行过滤 >- 将redis,mysql搭建成高可用的集群,防止单点 >- 10万/秒 ### 消息队列 ActiveMQ RabbitMQ RocketMQ kafka,中间件 >- 优点,解耦,异步处理,流量控制(秒杀),服务解耦 >- 解决上下游速度不一致的问题,起到缓冲的作用 ### 自增Id用完了怎么办 >- 重新循环INdb,覆盖原来的值