当前位置: 首页 > news >正文

网络原理(Java)

注:此博文为本人学习过程中的笔记

在网络初始中谈到TCP/IP五层模型,接下来我们将介绍这里面涉及到的网络协议。

应用层是程序员接触最多的层次,程序员写的代码只要涉及到网络通信都可以视为是应用层的一部分。应用层里的东西和程序员直接相关,应用层涉及的网络协议很多也是程序员自定制的。

1.自定义协议

自定义协议分成两个阶段

1.根据需求明确需要传输哪些信息

2.约定好信息组织的格式

这里我们以外卖平台为例

1.明确传输信息

请求:用户的位置信息,用户的id

响应:商家的id,商家的名字,商家的图片,评分,配送费,种类

2.约定组织信息的格式

1.行文本

这里的方案是随便写的,实际使用的使用可以随心所欲的使用。

请求:1000,45E45N\n

响应:1,麦当劳,商家图片.jpg,5,3,快餐\n

这个方案比较古老,现在已经不使用了。

2.xml格式

xml是通过成对的标签构成的键值对结构

请求:

<request>

        <userId>1000</userId>

        <position>45E45N</position>

</resquest>

xml格式现在使用的也不多了,它的优点是可读性强,缺点是冗余信息太多,消耗更多的带宽。

3.json

{

"userId":1000,

"positon":"45E45N"

}

json是现在常用的方案,优点是可读性号,需要消耗的带宽也比xml小,缺点是仍然存在冗余信息。

4.protobuf

protobuf基于二进制的格式对数据进行压缩,不涉及到xml/json的冗余信息的,但是可读性很差

经常在性能需求高的场景使用。

2.现成协议

应用层这里除了自定义协议,还有一些大佬们已经现成搞好的协议。比如FTP文件传输,SSH远程操作主机,telnet网络调试工具等,其中最重要的是HTTP协议(HTTPS是在HTTP的基础上加上安全层SSL)。

1.HTTP 协议

应用层协议

HTTP是采用一问一答的协议模式,客户端发送一个请求,服务器就返回一个响应,请求和响应一一对应。网络协议中也有其他模型,多问一答(上传大文件),一问多答(下载大文件),多问多答(远程操作桌面)。这里我们以访问b站网页的请求和响应为例。

下图是请求

下图是响应 

HTTP协议是一个文本格式的协议,请求有首行,请求头,空行,正文。响应有首行,响应头,空行,正文。下面对各个细节进行解析。 

1.url

url是用来描述网络上唯一资源的位置的,以下是url的格式。

协议类型/ip(域名):端口号/路径?查询字符串

2.url encode 

url中本身有一些特殊字符来标识特定含义,url里query string里的内容是程序员自定义的,如果这里面也有特殊字符的话就需要使用api进行转义操作。转义操作就是将数据的二进制内容每个字节取出来,转成十六进制,并在前面加上百分号。

3.方法

GET

获取html,获取css,获取js等操作都是用GET方法

POST

登录,上传文件等是典型的使用POST的场景

GET和POST的区别

1.语义上的区别

2.携带数据的方式不同,GET是使用query string,而POST是使用正文。当然这是理论上的,GET也可以使用正文,而POST也可以使用query string。

3.GET通常是建议被设计成幂等的,而POST无要求。幂等就是指我给出特定的请求就会返回特定的响应。不过现在的场景幂等已经变少了,因为现在讲究个性化。

4.GET设计成幂等就可以让GET的内容被缓存,而POST的则不行。

一些有问题的说法

1.POST比GET更安全。这个说法主要是针对登录场景,因为GET的数据是写在query string里的,所以不安全。安不安全取决于是否加密传输,就算放在query string里,只要加密好也没什么问题。POST的数据如果没加密也可以使用抓包工具简单的获取到。

2.GET传输数据长度有限制。这个说法是针对古早的场景(windowsxp)的。那是的浏览器对url的长度有限制。现在有些有,有些没有,不多就算有,浏览器提供的长度也是够用的。

3.GET只能放文本,POST可以放二进制。这个说法是因为url里只能放文本,不过我们可以把二进制数据转义成文本,这样GET也可以放二进制数据了

DELETE/PUT

这两个方法主要是实现Restful风格的api会使用到。Restful是一种设计服务器接口的习惯。POST表示增,DELETE表示删,PUT表示改,GET表示查。不过实际上这四个方法都可以进行增删改查,取决于代码怎么写。

4.header

header是键值对结构,每一行是一个键值对,键和值之间使用 : 和空格分割。键和值的内容都是标准规定的。

Host

表示服务器主机的地址和端口

Content-Length/Content-Type

当有 body 时才会有这两个东西。如果有 body,却没有这两个(或者少了其中一个)的话,都认为这是一个错误的 HTTP 报文。

Content-Length 表示 body 中的数据的长度,单位是字节。TCP 服务器在连接后可以发送多个请求,因为数据是以字节为单位来传输的,所以需要知道 body 的长度来分割每个请求。

Content-Type 表示 body 中数据的格式。HTTP 可以携带的数据种类很多,有 HTML, JS, CSS, JSON, 图片等,此时就可以提示接收方要怎么解析数据。

User-Agent

可以通过 User-Agent 提供的浏览器版本和操作系统来判断用户的情况,从而决定浏览器的特性。

Referer

描述了当前界面的来源,也就是从哪个页面跳转过来的

Cookie

在浏览器展示页面的过程中,虽然可以使用 js 实现一些逻辑,但是 js 代码是不能访问你的硬盘的。不过在实际开发中,我们还是希望能把某些数据保存到本地硬盘中,因此就引入了 Cookie 机制。

Cookie 就是浏览器允许网页保存数据到本地硬盘的一种机制,不是让网络代码直接访问硬盘,而是做了一层抽象,Cookie 提供了键值对的储存机制。

浏览器从服务器保存了 Cookie 之后,在后续请求中就可以将这些 Cookie 的键值对放到请求头里的 Cookie 中,发送给服务器。

Cookie 里的数据都是程序员自定义的,与业务相关。有一个典型的场景就是登录和用户认证。

5.状态码

描述了响应结果是正确还是出错,出错的原因是什么,下面介绍一些常用的。

200 OK 

最常见的状态码,表示成功。

404 Not Found

访问的资源没找到。在url里,ip定位到服务器,port定位到程序,path定位到程序管理的资源,这里就是path定位的资源服务器找不到。

403 Forbidden

访问被拒绝(没有权限)

405 Method Not Allowed

请求的方法和服务器这边声明的注解不匹配时,就会出现。

500 Internal Server Error

服务器出现问题,比如服务器代码抛出异常而我们没有 catch 到时。

504 Gateway Timeout

网关出现问题

302 Move Temporarily

重定向

总结

2xx 都可以视为是成功

3xx 都是重定向

4xx 客户端出错,用户构造的请求有问题

5xx 服务器出错,出现大概率是程序员的代码有问题

有些状态码的描述是比较含糊的,所以当出现问题时,需要结合代码定位问题。

2.HTTPS 协议

应用层协议

HTTPS 协议就是HTTP 协议加上 SSL协议,这个 SSL 协议也是一个应用层协议,专门负责加密。

加密方式存在对称加密和非对称加密,对称加密就是加密和解密都使用同一个密钥,非对称加密就是加密使用一个密钥,解密使用另一个密钥。

1.工作原理

当服务器和客户端进行传输数据时,如果使用对称加密,尽管数据是密文传输,但是密钥是明文传输,会被获取到。

所以这里我们引入非对称加密对密钥进行加密,由服务器持有私钥,并发放公钥给客户端。因为非对称加密成本比较高,不适合用来加密大量数据,所以用来加密密钥。

在这里黑客虽然能获取到公钥,但这是非对称加密,只有私钥才能用来解密。

2.安全问题

这样的流程看起来不错,但存在重大的安全隐患,会破坏后续传输的安全性。这个问题就是中间人攻击

预防这个问题的关键就是客户端需要能校验获取到的这个公钥是否是服务器发送过来的那个。这里引入了证书这个校验机制。

3.UDP协议

传输层协议 

UDP是无连接,不可靠,面向数据报,全双工的。接下来先认识报文结构

端口号 

因为端口号的长度是两个字节,所以它的取值是有限制的,从0到65535,一般我们会把1024以下的端口号保留,所以取值一般是1024到65535

长度

这个长度表示整个UDP数据报的长度(报头 + 载荷),长度属性也是两个字节,0到65535,也就是64kb。这个长度如果不够用的话,就只能通过TCP协议去传输数据了,因为TCP数据没有长度限制

校验和

验证数据是否发生修改,主要是为了防止传输过程中出现比特翻转。

发送之前,会使用整个数据报的数据计算一个校验和,之后把校验和和数据报一起发送出去,接收方收到之后重新计算一个校验和来进行比对,发现校验和不一样就会丢弃数据。

UDP的校验和使用CRC(循环冗余校验)的方式进行过校验,就是把每个字节(除校验和之外的)数据都当作整数进行累加,溢出也没关系,继续加。

相关文章:

网络原理(Java)

注&#xff1a;此博文为本人学习过程中的笔记 在网络初始中谈到TCP/IP五层模型&#xff0c;接下来我们将介绍这里面涉及到的网络协议。 应用层是程序员接触最多的层次&#xff0c;程序员写的代码只要涉及到网络通信都可以视为是应用层的一部分。应用层里的东西和程序员直接相…...

HDFS 常用基础命令详解——快速上手分布式文件系统

简介&#xff1a; 本文面向刚接触 Hadoop HDFS&#xff08;Hadoop 分布式文件系统&#xff09;的读者&#xff0c;结合 CSDN 博客风格&#xff0c;系统梳理最常用的 HDFS 客户端命令&#xff0c;并配以示例和注意事项&#xff0c;帮助你在开发和运维中快速掌握 HDFS 的文件管理…...

Unity Shaders and Effets Cookbook

目录 作者简介 审稿人简介 前言 我是偏偏 Unity Shaders and Effets Cookbook 第一章&#xff1a;Diffuse Shading - 漫反射着色器 第二章&#xff1a;Using Textures for Effects - 着色器纹理特效的应用 第三章&#xff1a;Making Your Game Shine with Specular - 镜…...

Markdown—LaTeX 数学公式

目录 一、字母1. 希腊大写字母2. 希腊小写字母3. 花体字母 二、上标和下标1. 上标2. 下标3. 其他 三、括号四、数学符号1. 基本数学符号1&#xff09;运算符2&#xff09;常见函数3&#xff09;分式、根号、累加/乘4&#xff09;极限5&#xff09;积分 2. 三角函数与几何符号1&…...

AI 驱动的开发工具

&#x1f527; 主流 AI 前端开发工具 1. GitHub Copilot 由 GitHub 与 OpenAI 联合开发&#xff0c;集成在 Visual Studio Code、JetBrains 等主流 IDE 中&#xff0c;提供智能代码补全、函数生成等功能&#xff0c;极大地提高了开发效率。 (CSDN博客) 2. Cursor 一款 AI 驱…...

【入门】数字走向I

描述 输入整数N&#xff0c;输出相应方阵。 输入描述 一个整数N。&#xff08; 0 < n < 10 ) 输出描述 一个方阵&#xff0c;每个数字的场宽为3。 #include <bits/stdc.h> using namespace std; int main() {int n;cin>>n;for(int i1;i<n*n;i){cout…...

Kubernetes生产实战(十三):灰度发布与蓝绿发布实战指南

在微服务架构中&#xff0c;如何安全高效地发布新版本是每个团队必须掌握的技能。本文将深入讲解Kubernetes中两种主流发布策略的落地实践&#xff0c;附带生产环境真实案例。 一、金丝雀发布&#xff08;灰度发布&#xff09;&#xff1a;渐进式验证新版本 核心思想&#xf…...

数孪实战笔记(1)数字孪生的含义、应用及技术体系

一、含义 数字孪生&#xff08;Digital Twin&#xff09;是一种通过数字化模型在虚拟世界中实时映射和模拟物理实体、系统或过程的技术。它的核心目的是通过对现实对象的建模、感知、分析和预测&#xff0c;实现对物理世界的全面感知、智能控制和优化决策。数字孪生 实体对象 …...

深入浅出之STL源码分析5_类模版实例化与特化

在 C 中&#xff0c;​​类模板的实例化&#xff08;Instantiation&#xff09;和特化&#xff08;Specialization&#xff09;​​ 是模板编程的核心概念&#xff0c;而 ​​显式实例化&#xff08;Explicit Instantiation&#xff09;和隐式实例化&#xff08;Implicit Insta…...

JDBC演进之路:从基础操作到高效连接池

文章目录 一、JDBC 1.0&#xff1a;手动管理的起点1.1 核心特点1.2 代码示例&#xff1a;1.3 痛点分析 二、JDBC 2.0&#xff1a;配置化的升级2.1 核心改进2.2 代码示例2.3 优势与不足 三、JDBC 3.0&#xff1a;连接池的革命3.1 核心改进3.2 代码示例3.3 核心优势 四、版本对比…...

远程调试---在电脑上devtools调试运行在手机上的应用

1、启动项目–以vite项目为例:先ipconfig查看ip地址 ,然后在vite中配置host为ip地址 2、手机上查看项目:保证手机和电脑在同一局域网, 在手机浏览器打开我们vite启动的项目地址, 3、使用chii进行远程调试 (1) 安装 npm install chii -g (2)启动 chii start -p 8080 (3)在…...

街景主观感知全流程(自建数据集+两两对比程序+Trueskill计算评分代码+训练模型+大规模预测)27

目录 0、Emeditor软件1、Place Pluse 2.0数据集2、街景主观感知大框架2.1 街景主观感知&#xff1a;自建数据集2.2 街景主观感知&#xff1a;两两对比程序2.3 街景主观感知&#xff1a;Trueskill评分2.4 街景主观感知&#xff1a;训练模型&#xff0c;Resnet或EfficientNet或V…...

进阶二:基于HC-SR04和LCD1602的超声波测距

一、实验目的 掌握HC-SR04超声波测距模块的工作原理和使用方法。学会使用LCD1602液晶显示屏显示测量数据。熟悉89C51单片机与外设的接口电路设计和编程方法。二、实验原理 1. HC-SR04超声波测距模块原理 HC-SR04超声波测距模块可提供2cm - 400cm的非接触式距离感测功能,测距精…...

单因子实验 方差分析

本文是实验设计与分析&#xff08;第6版&#xff0c;Montgomery著傅珏生译)第3章单因子实验 方差分析python解决方案。本文尽量避免重复书中的理论&#xff0c;着于提供python解决方案&#xff0c;并与原书的运算结果进行对比。您可以从 下载实验设计与分析&#xff08;第6版&a…...

《Python星球日记》 第53天:卷积神经网络(CNN)入门

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、图像表示与通道概念1. 数字图像的本质2. RGB颜色模型3. 图像预处理 二、卷积…...

基于人工智能的个性化 MySQL 学习路径推荐研究

基于人工智能的个性化 MySQL 学习路径推荐研究 摘要: 随着信息技术的飞速发展,数据库在各行业应用广泛,MySQL 作为主流数据库之一,学习需求庞大。然而,不同学习者在知识水平、学习进度和目标上存在差异,传统统一的学习路径难以满足个性化需求。本研究通过运用人工智能技…...

阿里云OSS-服务端加签直传说明/示例(SpringBoot)

目录 概述 OSS文件上传方式 1. OSS控制台上传 2. 客户端直传 3. 后端上传 4. 加签直传 服务端加签方式 1. 服务端生成PostObject所需的签名和Post Policy 2.服务端生成STS临时访问凭证 3. 服务端生成PutObject所需的签名URL 实现1&#xff1a;生成PostObject所需的签…...

《向上生长》读书笔记day5

哎&#xff0c;好像有点坚持不下去了&#xff0c;有点松懈了 不咋想继续写读书笔记&#x1f602;&#xff0c;不过我不可能这么轻易放弃的&#xff0c;起码要做完这一本书&#xff0c;话不多说&#xff0c;开始进入的读书&#x1f4d2;笔记 今天读了两个章节&#xff0c;穷人翻…...

优选算法——队列+BFS

目录 1. N叉树的层序遍历 2. 二叉树的锯齿层序遍历 3. 二叉树最大宽度 4. 在每个树行中找最大值 1. N叉树的层序遍历 题目链接&#xff1a;429. N 叉树的层序遍历 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分析&#xff1a; 层序遍历即可~仅…...

Java MCP 实战 --> AI玩转贪吃蛇

MCP 实战 --> AI玩转贪吃蛇 MCP 更加便捷的扩展了 LLM 的能力&#xff0c;使得 AI 发展更加迅猛。本篇主要为了学习MCP的应用&#xff0c;实现了让AI去玩贪吃蛇&#xff0c;使用 Java 实现了 MCP Server 和 MCP Client 的编码。其他文章如下&#xff1a; thinking 基础版…...

Day20打卡-奇异值SVD分解

今天学习非特征筛选的方法&#xff1a; 知识点回顾&#xff1a; 线性代数概念回顾&#xff08;可不掌握&#xff09;奇异值推导&#xff08;可不掌握&#xff09;奇异值的应用 特征降维&#xff1a;对高维数据减小计算量、可视化数据重构&#xff1a;比如重构信号、重构图像&am…...

【RT-Thread Studio】nor flash配置Fal分区

前置条件&#xff1a;【RT-Thread Studio】W25Q128配置 添加 FAL软件包 配置SFUD驱动程序&#xff0c;使用FAL的设备为W25Q128 将fal_cfg.h和fal_flash_sfud_port.c提取出来&#xff0c;放到自己创建的fal_porting目录。 修改 fal_flash_sfud_port.c struct fal_flash_dev n…...

在资源受限设备上实现手势识别:基于包络EMG数据和实时测试的Tiny-ML方法

英文标题&#xff1a;Enabling Gesture on a Resource-Constrained Device: A Tiny-ML Approach with Envelope EMG Data and Real-Time Testing 中文标题&#xff1a;在资源受限设备上实现手势识别&#xff1a;基于包络EMG数据和实时测试的Tiny-ML方法 作者信息 Mohsin Ali S…...

动态规划:最长递增子序列

给定一个数组&#xff0c;求最长递增子序列的长度,就是要求我们求出一个序列中最长的上升子序列的长度&#xff0c;最长上升子序列的定义就是从原序列中按照孙旭去除一些数字&#xff0c;这些数字是逐渐增大的。 *定义dp[i]表示以第i个元素结尾的最长上升子序列的长度。 *初始…...

贪心算法专题(Part2)

目录 1. 最优除法 2. 加油站 3. 坏了的计算器 4. 可被三整除的最大和 5. 单调递增的数字 6. 合并区间 7. 无重叠区间 8. 用最少数量的箭引爆气球 1. 最优除法 题目链接&#xff1a;553. 最优除法 - 力扣&#xff08;LeetCode&#xff09; 题目展示&#xff1a; 题目分…...

4.9/Q1,GBD数据库最新文章解读

文章题目&#xff1a;The burden of diseases attributable to high body mass index in Asia from 1990 - 2019: results from the global burden of disease study 2019 DOI&#xff1a;10.1080/07853890.2025.2483977 中文标题&#xff1a;1990 年至 2019 年亚洲高体重指数导…...

API 网关核心功能解析:负载均衡、容灾、削峰降级原理与实战摘要

在微服务架构中&#xff0c;API 网关作为流量入口枢纽&#xff0c;通过负载均衡、容灾、削峰降级等核心功能保障系统稳定性与高可用性。本文结合 Spring Cloud Gateway 实战代码、原理剖析及行业最佳实践&#xff0c;深度解析网关核心能力&#xff0c;并对比当前前沿技术方案&a…...

Spring之AOP

什么是AOP AOP:Aspect 0riented Programming(面向切面编程、面向方面编程)&#xff0c;可简单理解为就是面向特定方法编程。 场景:案例中部分业务方法运行较慢&#xff0c;定位执行耗时较长的接口&#xff0c;此时需要统计每一个业务方法的 执行耗时。 优势: 1.减少重复代…...

TransmittableThreadLocal:穿透线程边界的上下文传递艺术

文章目录 前言一、如何线程上下文传递1.1 ThreadLocal单线程1.2 InheritableThreadLocal的继承困境1.3 TTL的时空折叠术 二、TTL核心设计解析2.1 时空快照机制2.2 装饰器模式2.3 采用自动清理机制 三、设计思想启示四、实践启示录结语 前言 在并发编程领域&#xff0c;线程上下…...

基于STM32的甲醛检测

一、制作目标 以正点原子的miniSTM32F103RCT6开发板为主控&#xff0c;使用甲醛传感器检测环境空气中的甲醛含量&#xff08;以mg/m^3为单位&#xff09;、C02含量&#xff08;以ppm为单位&#xff09;和总有机挥发物含量TVOC&#xff08;以mg/m^3为单位&#xff09;在OLED显示…...

人形机器人:主控芯片

目前人形机器人领域的主控芯片因厂商和应用场景不同而有所差异&#xff0c;以下是一些主要人形机器人及其可能使用的主控芯片概况&#xff0c;基于公开信息和行业趋势。由于具体型号常为商业机密&#xff0c;部分信息为推测&#xff1a; 主要人形机器人及其主控芯片 特斯拉&am…...

Web自动化测试入门详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、目的 web自动化测试作为软件自动化测试领域中绕不过去的一个“香饽饽”&#xff0c;通常都会作为广大测试从业者的首选学习对象&#xff0c;相较于C/S架…...

数据结构:树(树的定义和基本术语)

非空树&#xff1a;有且仅有一个根节点 空树&#xff1a;节点数为0的树 在非空树中根节点没有前驱&#xff0c;叶子结点&#xff08;终端结点&#xff09;没有后继&#xff0c;分支结点&#xff08;非终端结点&#xff09;前驱和后继都有&#xff0c;前驱有且仅有一个。 下图…...

用jsp简单实现C语言标准化测试系统

C语言标准化测试系统 在Web编程技术的学习过程中&#xff0c;我们小组为了深入理解相关技术原理&#xff0c;提升实践能力&#xff0c;开发了一个基于动态Web工程框架的C语言标准化考试系统。现在&#xff0c;就来和大家分享一下我们的项目经历。 一、实验目的剖析 这个项目…...

牛客周赛round91

C 若序列为1 4 5 7 9 1 2 3&#xff0c;1 9一定大于1 1或1 4...所以只需要记录当前数之前数字的最大值&#xff0c;然后遍历取max即可&#xff0c;所以对于上面的序列有效的比较为1 9&#xff0c;2 9&#xff0c;3 9取max 代码 //求大于当前数的最大值&#xff0c;然后…...

java-代理

1.什么是java代理模式&#xff1f; 给目标对象提供一个代理对象&#xff0c;并且由代理对象控制对目标对象的引用 我们可以这样理解 我们是用户&#xff0c;代理类是支付宝&#xff0c;我们想用支付宝的转账功能&#xff0c;但是支付宝本身没有转账功能&#xff0c; 又恰好…...

【数据结构与算法】图的基本概念与遍历

目录 一、图的基本概念 1.1 图的基本组成 1.2 图的分类 1.3 顶点的度数 1.4 路径与回路 1.5 子图与特殊图 二. 图的存储结构 2.1 邻接矩阵 2.2 邻接表 三、深度优先遍历 3.1 原理 3.2 实现步骤 3.3 代码实现 四、广度优先遍历 4.1 原理 4.2 实现步骤 4.3 代码…...

《AI大模型应知应会100篇》第54篇:国产大模型API对比与使用指南

第54篇&#xff1a;国产大模型API对比与使用指南 ——从百度文心到通义千问&#xff0c;一文看懂国内AI平台选型 &#x1f4cc; 摘要 随着中国人工智能产业的快速发展&#xff0c;越来越多的国产大模型平台开始崭露头角。本文将系统梳理当前主流国产大模型 API&#xff08;如…...

论文分享➲ arXiv2025 | TTRL: Test-Time Reinforcement Learning

TTRL: Test-Time Reinforcement Learning TTRL&#xff1a;测试时强化学习 https://github.com/PRIME-RL/TTRL &#x1f4d6;导读&#xff1a;本篇博客有&#x1f9a5;精读版、&#x1f407;速读版及&#x1f914;思考三部分&#xff1b;精读版是全文的翻译&#xff0c;篇幅较…...

LeetCode 热题 100 24. 两两交换链表中的节点

LeetCode 热题 100 | 24. 两两交换链表中的节点 大家好&#xff0c;今天我们来解决一道经典的链表问题——两两交换链表中的节点。这道题在 LeetCode 上被标记为中等难度&#xff0c;要求两两交换链表中的相邻节点&#xff0c;并返回交换后链表的头节点。 问题描述 给你一个链…...

好用的播放器推荐

以下是一些好用的播放器推荐&#xff0c;按照不同平台和使用场景分类&#xff1a; 电脑端 VLC Media Player 特点&#xff1a;开源、跨平台&#xff0c;支持几乎所有的音视频格式&#xff0c;无需额外安装解码器。具备强大的功能&#xff0c;如播放列表管理、视频和音频滤镜、…...

C语言_函数hook方案

背景 单体测试中测试一个函数时,该函数调用的其他函数,需要按照测试case,依赖其他函数进行调用参数检查,返回特定值。但是其他函数,不容易做到参数检查和返回特定值,这时需要将其他函数进行hook,hook函数用户自己实现,比较容易实现参数检查和返回值特定值。 本文主要…...

翻转数位题目解释和代码

这段代码的功能是计算一个32位整数中&#xff0c;经过至多一次位翻转&#xff08;0变1或1变0&#xff09;后能得到的连续1的最大长度。例如&#xff0c;输入1775&#xff08;二进制11011101111&#xff09;&#xff0c;翻转中间的0后变为11011111111&#xff0c;连续1的最大长度…...

问题及解决01-面板无法随着窗口的放大而放大

在MATLAB的App Designer中&#xff0c;默认情况下&#xff0c;组件的位置是固定的&#xff0c;不会随着父容器的大小变化而改变。问题图如下图所示。 解决&#xff1a; 为了让Panel面板能够随着UIFigure父容器一起缩放&#xff0c;需要使用布局管理器&#xff0c;我利用 MATLA…...

C/C++复习--C语言中的函数详细

一、函数的基本概念 函数是C语言中封装代码的基本单元&#xff0c;类似于数学中的函数。 作用&#xff1a; 提高代码复用性模块化编程&#xff0c;增强可维护性隐藏实现细节 分类&#xff1a; 库函数&#xff1a;由C标准库提供&#xff08;如printf, strcpy&#xff09;自定…...

BufferAttribute

BufferAttribute 3D虚拟工厂在线体验 描述 BufferAttribute 是 Three.js 中用于高效管理几何体属性数据的核心类&#xff0c;其主要特点包括&#xff1a; 数据存储 专为存储 BufferGeometry 的各种属性设计&#xff0c;包括&#xff1a; 顶点位置&#xff08;position&#…...

FreeRTOS Semaphore信号量-笔记

FreeRTOS Semaphore信号量-笔记 **一、信号量与互斥量的核心区别****二、二值信号量&#xff08;Binary Semaphore&#xff09;****1. 功能与使用场景****2. 示例&#xff1a;ADC中断与任务同步** **三、计数信号量&#xff08;Counting Semaphore&#xff09;****1. 功能与使用…...

HTTP/2概览及内核解析

目录 1. HTTP/2特性概览 1.1. 兼容 HTTP/1 1.2. “语法”层面的改造 1.3. 协议栈 1.4. HTTP/2实验环境 1.5. Question&#xff1a; 2. HTTP/2内核剖析 2.1. 连接前言 2.2. 头部压缩 2.3. 二进制帧 2.4. 流与多路复用 2.5. 流状态转换 1. HTTP/2特性概览 HTTP 协议…...

AI生成视频推荐

以下是一些好用的 AI 生成视频工具&#xff1a; 国内工具 可灵 &#xff1a;支持文本生成视频、图片生成视频&#xff0c;适用于广告、电影剪辑和短视频制作&#xff0c;能在 30 秒内生成 6 秒的高清视频&#xff08;1440p&#xff09;&#xff0c;目前处于免费测试阶段。 即…...

每日一题洛谷T534125 合数c++

字符串输入&#xff0c;看所有位数加起来的数是不是3的倍数 是&#xff0c;直接输出&#xff0c;不是&#xff0c;删除1或2 特判全是1和全是2的情况 直接检测末尾数字可以特判2 特判1时&#xff0c;还要特判11和111&#xff0c;其他数字&#xff0c;k是奇数时是质数&#x…...