Junit单元测试
✅ JUnit 单元测试(Java)JUnit 是 Java 中最常用的单元测试框架,用于对 Java 方法的功能进行自动化测试,提高开发效率和代码质量。 ✅ 基本概念 名称 说明 单元测试(Unit Test) 针对程序中最小功能单元(如方法)进行的测试 JUnit Java 编程语言的单元测试框架,目前主流版本为 JUnit 4 和 JUnit 5 测试用例 编写好的测试方法,用来验证业务方法是否正确 断言(assert) 检查预期结果和实际结果是否一致,决定测试是否通过 ✅ JUnit 测试的基本步骤1️⃣ 添加 JUnit 依赖(以 JUnit 4 为例)👉 如果你是使用 Maven 的项目:123456<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> ...
TCP详解
✅ 什么是 TCP 协议?TCP(传输控制协议) 是一种面向连接、可靠传输、基于字节流的通信协议。 📦 简单理解:打电话前要先拨号(建立连接),通话中对方要回应(确认),最后挂电话(断开连接),这就是 TCP 的行为风格! ✅ TCP 的特点 特点 说明 面向连接 通信前必须建立连接(三次握手) 可靠传输 保证数据正确、无误、无重复地到达 有序传输 按照发送顺序到达(使用序号) 双向通信 全双工,双方都可以发送/接收 基于字节流 传输是连续的字节流,而非分包发送 ✅ TCP 工作流程1️⃣ 建立连接(三次握手)1234客户端 服务端 | ---SYN---> | 第一次握手:客户端发起连接请求 | <---SYN+ACK | 第二次握手:服务端响应连接请求 | ---ACK----> | 第三次握手:客户端确认,连接建立成功 ✅ 建立完连接后,客户端和服务端就可以开始数据传输了。 2️⃣ 数据传输 使用 序列号(Sequence Number) 和 确认号(ACK)...
UDP详解
✅什么是UDP协议UDP(用户数据报协议) 是一种简单、高效的无连接传输协议,位于 OSI 模型的第四层(传输层)。与 TCP 相比,它不提供复杂的可靠机制,因此速度更快,延迟更低,常用于音视频、游戏等对时效性要求较高的场景。 ✅ 1️⃣ UDP 的基本特点 特性 描述 无连接 发送数据前不建立连接,直接发送数据 不可靠性 不保证数据是否成功送达,也不保证顺序和完整性 数据报协议 将数据封装为数据报(Datagram)独立发送,每个报文独立处理 速度快 无需建立连接和确认应答,效率高,适用于高实时性场景 轻量协议 协议头开销小(仅 8 字节),不做流量控制和拥塞控制 广播/多播支持 支持局域网内广播和组播,是 TCP 不具备的能力 ✅ 2️⃣ UDP 报文结构UDP 报文格式如下(共 8 字节): 字段名称 长度(字节) 说明 源端口 2 发送方端口号 目标端口 2 接收方端口号 长度 2 整个 UDP 报文的长度(含头部) 校验和 2 可选,用于错误检测 ✅ 3️⃣ Java 中的 UDP...
TCP与UDP
好的!我将根据你提供的要求,写一篇详细且结构清晰的关于 TCP 与 UDP 协议对比的文章: ✅ TCP 与 UDP 协议对比在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种常见的传输层协议。它们各自具有不同的特点和应用场景,理解它们的区别对于网络编程和网络应用的设计至关重要。 1️⃣ 什么是 TCP?TCP(Transmission Control Protocol,传输控制协议) 是一种面向连接的协议,提供可靠的数据传输服务。TCP 在数据传输前需要建立连接,并通过一系列的确认机制来确保数据的可靠性。 TCP 的特点: 面向连接:TCP 在发送数据之前需要通过三次握手建立连接,确保通信双方准备好进行数据传输。 可靠性:TCP 使用序列号、确认应答(ACK)、重传机制、数据完整性检查等手段保证数据的可靠传输。 顺序性:保证数据按发送顺序到达接收端。 流量控制:TCP 通过滑动窗口机制控制发送方的数据发送速度,以避免网络拥堵。 拥塞控制:TCP 会根据网络的拥堵情况动态调整数据发送速率,避免造成网络堵塞。 TCP...
协议
✅ Java 网络编程基础:协议(Protocol)详解在计算机网络中,协议是通信的规则和标准,它规定了数据如何格式化、传输、接收与处理。 在 Java 网络编程中,我们主要关注的协议有:TCP、UDP、HTTP、FTP 等。 1️⃣ 什么是网络协议?网络协议定义了两台主机通信时要遵循的规则,类似于人与人交流时的“语言”。 👉 没有协议,网络通信就像“鸡同鸭讲”。 2️⃣ 常见网络协议及用途 协议 类型 特点 应用场景 TCP 面向连接 可靠、数据有序、速度略慢 网页浏览、文件传输、聊天程序 UDP 无连接 不可靠、数据无序、速度快、效率高 视频直播、语音通话、在线游戏 HTTP 应用层 基于 TCP 的协议,用于浏览器和服务器之间的通信 网站访问、接口调用 FTP 应用层 基于 TCP,用于文件上传与下载 远程文件传输 SMTP 应用层 用于发送电子邮件 邮件客户端发送邮件 POP3/IMAP 应用层 用于接收电子邮件 邮件客户端接收邮件 3️⃣ TCP 与 UDP...
端口
✅ Java 网络编程基础:端口(Port)详解在计算机网络中,端口(Port)是用于区分不同网络服务的数字标识,它与 IP 地址共同组成网络通信的“地址”。 1️⃣ 什么是端口? IP 地址标识一台主机 端口号标识该主机上的某个应用程序(网络服务) 👉 通信时数据发送的目标为:IP 地址 + 端口号 2️⃣ 端口号的范围 范围 说明 0 ~ 1023 系统端口,保留给操作系统使用,如 HTTP(80)、FTP(21)等 1024 ~ 49151 注册端口,用于用户进程或服务(如 MySQL:3306) 49152 ~ 65535 动态端口 / 私有端口,临时分配的端口 3️⃣ 常见端口号 服务/协议 默认端口号 HTTP 80 HTTPS 443 FTP 21 SSH 22 Telnet 23 MySQL 3306 Oracle 1521 Redis 6379 4️⃣ Java 中的端口使用场景 使用方式 示例类 创建服务器并绑定端口 ServerSocket(int...
InetAddress
✅ Java 网络编程:InetAddress 类详解在 Java 中,InetAddress 类用于表示 IP 地址(IPv4 或 IPv6),它是 Java 网络编程中最常用的类之一,属于 java.net 包。 1️⃣ InetAddress 的作用 表示一个 IP 地址(域名或 IP 本身) 提供主机名与 IP 地址的解析功能 是进行 Socket 编程的基础类之一 2️⃣ 常用方法 方法名 说明 getLocalHost() 获取本机的 InetAddress 对象 getByName(String host) 根据主机名或 IP 获取对应的 InetAddress 对象 getAllByName(String host) 获取与指定主机名关联的所有 IP 地址 getHostName() 获取该 IP 对象对应的主机名 getHostAddress() 获取该对象的 IP 地址字符串 isReachable(int timeout) 判断该地址是否可以在指定时间内连通 3️⃣ 示例一:获取本机 IP...
IP
✅ IP 地址详解(Internet Protocol)IP(Internet Protocol)是网络通信中的核心协议之一,主要用于为网络中的每台设备分配唯一的地址,实现数据在网络中的传输与定位。 1️⃣ IP 地址的作用IP 地址相当于“网络中的门牌号”,用来唯一标识网络上的一台主机。当你访问网站、下载文件、发送邮件时,系统就是通过 IP 地址找到目标主机。 2️⃣ IP 地址的分类📌 按地址类型分类 类型 描述 示例 IPv4 使用 32 位地址,写作 4 个十进制数 192.168.0.1 IPv6 使用 128 位地址,支持更多设备 2001:0db8:85a3::8a2e:0370:7334 📌 按使用范围分类 类型 描述 示例 IP 范围 公网 IP 在互联网中唯一 8.8.8.8(Google DNS) 私有 IP(内网) 局域网中使用,不可直接访问公网 192.168.0.0/16,10.0.0.0/8 3️⃣ IPv4 地址详解📌 IPv4 地址结构IPv4 地址由 4 段 0~255...
线程池
✅ 线程池概述在多线程编程中,创建和销毁线程是一项相对昂贵的操作。为了减少频繁创建和销毁线程带来的性能开销,线程池(Thread Pool)技术应运而生。线程池通过提前创建一定数量的线程来 复用线程,提高系统的 效率 和 性能。 线程池的主要优势: 避免频繁创建和销毁线程的开销。 可以控制线程的最大并发数,防止资源过度消耗。 线程池可以更好地管理线程生命周期,避免线程泄漏。 ✅ Java 中的线程池在 Java 中,线程池的使用通过 java.util.concurrent 包中的 Executor 接口及其实现类来完成。 1. 线程池核心接口:Executor Executor 接口定义了执行异步任务的核心方法:execute(Runnable command)。 ExecutorService 是 Executor 的子接口,提供了更多的线程池控制方法,如提交任务、关闭线程池等。 2. 常见线程池实现: ThreadPoolExecutor 这是 ExecutorService 的最常用实现类,具有高度的自定义性。 Executors...
线程同步
✅ 1. 线程同步概述在 多线程环境 下,如果多个线程同时访问 共享资源,可能会导致 数据不一致 或 线程安全问题。为了避免这种情况,我们需要 线程同步机制 来 控制多个线程对共享资源的访问。 常见的线程同步方式: 同步代码块(synchronized 代码块) 同步方法(synchronized 方法) 显示锁(Lock 机制,如 ReentrantLock) ✅ 2. 同步代码块(synchronized 代码块)🔹 概念 通过 synchronized 关键字 锁定某个对象,保证 同一时刻只有一个线程 执行同步代码块。 适用于部分代码需要同步 的情况,提高性能。 🔹 代码示例12345678910111213141516171819202122232425262728class SharedResource { private int count = 0; public void increment() { synchronized (this) { // 只锁定 this(当前实例) ...