一、套接字的本质套接字是网络驱动程序提供给应用程序的接口和通信机制,是应用程序与网络协议栈之间的桥梁,用于实现不同主机上应用程序的网络通信。
二、Java 中的网络通信类(均位于java.net包下)Java 通过封装套接字相关类,简化了 TCP 和 UDP 协议的网络编程实现,核心类如下:
1. UDP 协议相关类UDP 通信基于数据报,不分客户端和服务端,核心类为:
**DatagramSocket**:用于发送和接收 UDP 数据报的套接字,是 UDP 通信的端点。
**DatagramPacket**:用于封装 UDP 传输的数据(包含数据内容、源 / 目标地址和端口等信息),是 UDP 通信的数据载体。
2. TCP 协议相关类TCP 通信基于连接,严格区分客户端和服务端,核心类为:
**ServerSocket**:仅用于服务端,负责监听指定端口,接收客户端的连接请求并建立连接。
**Socket**:主要用于客户端,也用于服务端接收到连接后生成的通信端点,通过它与对方进行数据传输(客户端通过Socket发起连接,服务端通过ServerSocket.acce ...
一、TCP(传输控制协议)核心特性
可靠性:提供面向连接的、可靠的字节流传输,通过确认机制、重传机制、流量控制等确保数据完整送达。
适用场景:对数据完整性要求高,可接受一定延迟的场景,例如:
安装包下载(需保证文件完整,不允许丢失或损坏)
网页浏览、邮件发送、文件传输(FTP)等
二、UDP(用户数据报协议)核心特性
高效性:无连接、不可靠传输,数据包可能丢失,但传输速度快(无需建立连接、确认等额外开销)。
数据报格式(简单简洁):
字段
长度(位)
说明
源端口
16
发送端应用程序端口号
目标端口
16
接收端应用程序端口号
长度
16
整个 UDP 数据报的字节数(包括首部和数据)
校验和
16
用于校验数据在传输中是否损坏(可选)
数据
可变
实际传输的应用数据
适用场景
对实时性要求高,可容忍少量数据丢失的场景,例如:
视频 / 语音通话、直播(卡顿可接受,延迟需极低)
实时游戏、DNS 查询等
核心区别速记
维度
TCP
UDP
连接性
面向连接(需三次握手建立连接)
无连接(直接发送)
可靠性
可靠(无丢失 ...
一、OSI 参考模型(七层模型)注意:OSI(开放系统互连)是由 ISO(国际标准化组织)制定的参考模型,但两者概念不同,需区分。
七层结构及核心特征:
层级
核心功能 / 数据单位
典型设备 / 组件
7. 应用层
为用户应用提供服务
各类应用程序(如浏览器、邮件客户端)
6. 表示层
数据格式转换、加密解密
-
5. 会话层
建立、管理和终止会话
-
4. 传输层
端到端的数据传输控制
网关
3. 网络层
分组路由与转发
路由器(数据单位:包)
2. 数据链路层
物理地址识别、帧传输
交换机、网卡、网桥(数据单位:帧)
1. 物理层
比特流传输、物理介质连接
光纤、网线(数据单位:比特)
二、TCP/IP 分层模型(因特网参考模型)TCP/IP 模型是互联网实际应用的分层体系,又称 “因特网分层模型”,共分为 4 层:
层级(按序号)
名称
核心功能
4
应用层
处理特定应用程序细节,直接为应用提供服务(对应 OSI 的应用层、表示层、会话层功能)
3
传输层
实现两个计算机的端到端通信 ...
一、网络协议分类(一)TCP/IP 协议簇常用协议TCP/IP 是互联网核心协议体系,包含以下关键协议:
Telnet:远程终端协议,用于远程登录管理设备。
FTP:文件传输协议,采用 C/S 模式,实现客户端与服务器间文件传输。
SMTP:简单邮件传输协议,负责电子邮件的发送。
NFS:网络文件系统,支持不同主机间共享文件资源。
UDP:用户数据报协议,无连接、不可靠,适用于实时性要求高的场景(如视频通话)。
(二)其他常用网络协议
HTTP 1.1:超文本传输协议,用于浏览器与 Web 服务器间传输网页数据。
ARP:地址解析协议,将 IP 地址转换为物理 MAC 地址。
SNMP:简单网络管理协议,用于监控和管理网络设备。
CMIP:公共管理信息协议,功能更复杂的网络设备统一管理协议。
DHCP:动态主机配置协议,自动分配 IP 地址、子网掩码等网络参数。
POP3:邮局协议版本 3,用于接收电子邮件。
PPP:点对点协议,适用于拨号上网等点对点连接场景。
IPv6:互联网协议版本 6,解决 IPv4 地址枯竭问题。
IPX/SPX:曾 ...
核心原则:异常处理有明确的优先级,推荐使用全局异常处理器统一管理,避免代码冗余。
一、异常处理的三种核心方式按使用范围和优先级,分为以下三类,优先级从高到低排列。
1. 控制器(Controller)本类处理在发生异常的 Controller 内部,通过@ExceptionHandler注解定义方法,专门处理当前类的异常。
核心特点:仅作用于当前 Controller,优先级最高。
适用场景:当前 Controller 有特殊的异常处理逻辑,与其他 Controller 不同时使用。
代码示例(来自 HelloController):
12345// 处理当前类的算术异常(如10/0)@ExceptionHandler(ArithmeticException.class)public R handleArithmeticException(ArithmeticException e){ return R.error(100,"执行异常" + e.getMessage());}
2. 全局异常处理通过@RestControllerAdv ...
SpringMVC_拦截器可在请求到达目标方法前后执行额外操作,是实现权限验证、日志记录等通用功能的核心机制,以下从核心概念、使用步骤、执行规则三方面整理:
一、核心概念与作用1. 拦截器定义拦截器是实现 HandlerInterceptor 接口的组件,能在 请求处理的关键节点 插入自定义逻辑,不破坏原有业务代码,实现 “横切关注点” 的复用。
2. 典型应用场景
权限验证:判断用户是否登录、是否有权限访问接口(如未登录则拦截请求)。
日志记录:记录请求的 URL、参数、处理时长等信息(用于调试或审计)。
数据共享:在请求处理前向 request 域中存入公共数据(如登录用户信息,供页面使用)。
资源统一处理:如统一编码设置、跨域配置补充等。
二、拦截器使用步骤需两步完成拦截器的创建与配置,确保拦截器生效。
步骤 1:创建拦截器(实现 HandlerInterceptor 接口)HandlerInterceptor 接口提供 3 个核心方法,分别对应请求处理的不同阶段,可按需重写(无需全部实现)。
方法名
执行时机
返回值含义
核心作用
preHandle
请求到达目标 ...
拦截器(Interceptor)vs 过滤器(Filter)对比笔记拦截器和过滤器均用于请求处理的 “增强”,但二者在技术归属、作用范围、执行时机等核心维度差异显著,以下从多维度对比梳理:
一、核心差异对比表
对比维度
拦截器(Interceptor)
过滤器(Filter)
技术归属
SpringMVC 框架组件
Java Servlet 规范组件
作用范围
仅作用于 SpringMVC 管理的请求(如 @Controller 接口)
作用于所有 Servlet 容器接收的请求(包括静态资源、JSP 等)
执行时机
在 DispatcherServlet 之后、目标方法前后执行
在 DispatcherServlet 之前 执行(请求进入 Servlet 容器的第一道拦截)
拦截内容
可拦截请求、目标方法、响应数据(能获取 HandlerMethod、ModelAndView 等 Spring 对象)
仅能拦截请求和响应的 “字节流”(无法直接获取 Spring 相关对象)
配置方式
需实现 WebMvcConfigurer 接口,通过 Intercepto ...
1. 统一响应格式(R 类)(1)核心字段
code:业务状态码,200 表示成功,其他数值表示失败(需前后端约定具体含义,如 404 表示资源不存在)。
msg:响应消息,用于前端展示(如 “删除成功”“ID 不存在”)。
data:业务数据,存储返回的具体信息(如查询到的员工对象、员工列表)。
(2)常用方法
R.ok(data):返回成功响应,携带业务数据(如查询列表时返回List<Employee>)。
R.ok():返回成功响应,无业务数据(如删除、新增操作)。
2. 数据交互流程
前端发送请求:根据接口类型选择传递路径参数或请求体(如查询用 GET + 路径参数,新增用 POST+JSON 请求体)。
后端处理:控制器接收请求,调用服务层处理业务,通过R类封装响应结果。
前端接收处理:判断code值,成功则解析data展示数据,失败则显示msg提示信息。
3. 数据格式要求
前端传递:新增 / 更新资源时,请求体需与后端实体类(如 Employee)字段名一致,格式为 JSON。
后端返回:响应数据统一为 JSON 格式,通过R类保证结构一致。
...
1. 同源策略与跨域定义(1)同源策略浏览器的安全策略,要求 AJAX 请求的协议、域名、端口三者完全一致(即 “同源”),否则拦截请求。
(2)跨域场景当请求的协议、域名、端口任一与当前页面不一致时,即为跨域。例如:
页面地址:http://localhost(端口默认 80)
请求地址:http://localhost:8080(端口不同)
页面地址:http://127.0.0.1
请求地址:http://localhost(域名不同,即使指向同一 IP)
2. 跨域请求的特殊行为复杂跨域请求(如 POST、PUT)会先发一次OPTIONS预请求,询问服务器是否允许当前域名访问;服务器允许后,才会发送真正的业务请求。
3. 后端解决方案(1)使用 @CrossOrigin 注解
位置:添加在控制器类上(如EmployeeRestController),作用于该类所有接口。
原理:服务器响应时自动添加Access-Control-Allow-Origin响应头,默认允许所有域名(*)访问。
示例:
1234@CrossOrigin // 允许所有域跨域访问@RestContr ...
1. 核心设计原则基于 HTTP 方法语义定义接口功能,URL 仅表示资源,不包含操作动词(如 “add”“delete”)。
2. 关键注解与使用
注解
作用
应用场景
@RequestMapping
类 / 方法级路径映射,可指定 HTTP 方法
类上定义基础路径(如/api/v1)
@GetMapping
处理 GET 请求,简化 @RequestMapping (method=GET)
查询单个资源、查询资源列表
@DeleteMapping
处理 DELETE 请求
删除指定资源
@PostMapping
处理 POST 请求
新增资源
@PutMapping
处理 PUT 请求
更新资源
3. 参数传递方式
路径参数:用@PathVariable("参数名")获取 URL 中的参数,如/employee/{id}中的id,适用于查询、删除单个资源。
请求体参数:用@RequestBody接收 JSON 格式的请求体数据,适用于新增、更新资源时传递完整对象(如 Employee)。
4 ...



