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

【网络原理】从零开始深入理解TCP的各项特性和机制.(三)

在这里插入图片描述

上篇介绍了网络原理传输层TCP协议的知识,本篇博客给大家带来的是网络原理剩余的内容, 总体来说,这部分内容没有上两篇文章那么重要,本篇知识有一个印象即可.
🐎文章专栏: JavaEE初阶
🚀若有问题 评论区见
欢迎大家点赞 评论 收藏 分享
如果你不知道分享给谁,那就分享给薯条.
你们的支持是我不断创作的动力 .

王子,公主请阅🚀

  • 要开心
    • 要快乐
      • 顺便进步
  • 1. 网络层
    • 1.1 IP协议
    • 1.2 地址管理
      • 1.2.1 地址管理
    • 1.2.2 路由选择
  • 2. 数据链路层
  • 3.应用层协议DNS

要开心

要快乐

顺便进步

1. 网络层

1.1 IP协议

Ⅰ 基本概念

主机: 配有IP地址, 但是不进行路由控制的设备;
路由器: 即配有IP地址, 又能进行路由控制;
节点: 主机和路由器的统称;

Ⅱ 协议头格式

在这里插入图片描述

① 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4. 对于IPv6来说,就是6.
② 4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数. 4bit表示最大的数字是15, 因此IP头部最大长度是60字节.
③ 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须置为0). 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只能选择一个. 对ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞吐量比较重要. 总的来说,8位服务类型能够让IP协议切换形态.
④ 16位总长度(total length): IP数据报整体占多少个字节. IP协议与UDP协议一样,存在64KB的限制, 但是IP协议自身支持"拆包组包"功能.
⑤ 16位标识(id): 唯⼀的标识主机发送的报文. 如果一个大的IP数据报拆成了多个小的,拆出来的这多个小包的16位标识是相同的数值.
⑥ 3位标志字段: 第一位保留(暂时不用), 第二位置为1表示禁止拆包. 第三位表示"更多分片", 如果最后一个分片置为1, 其他是0. 类似于一个结束标记.
⑦ 13位分片偏移(framegament offset): 描述当前每个小的数据包(分片)的相对位置.
⑧ 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一个路由, TTL -= 1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环. 其实就是描述了这个 IP 数据包,在网络上还能继续存活多久.
⑨ 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.
⑩ 32位源地址和32位目标地址(重要): 表示发送端和接收端. IP 地址,本质上就是一个 32位的整数.为了方便人来理解, 用 点分十进制 方式来表示.

在这里插入图片描述

1.2 地址管理

1.2.1 地址管理

Ⅰ 网络号和主机号

IP地址分为两个部分, 网络号和主机号
网络号: 保证相互连接的两个网段具有不同的标识;
主机号: 同一网段内, 主机之间具有相同的网络号, 但是必须有不同的主机号;

在这里插入图片描述

同一局域网中的设备,网络号必须相同,主机号必须不同.


一个 IP 地址, 哪个部分是网络号, 哪个部分是主机号,不是一定的,要通过子网掩码来确定网络号的。 如下图: 一个255表示8个1. 被标记成1的就是网络号.
在这里插入图片描述
上图的 1总共是24个,但是有些情况不是24个, 这并不是固定的,需要根据实际的网络环境灵活配置.

Ⅱ 特殊的IP地址


① 将IP地址中的主机号全部设为0, 就成为了网络号, 代表这个局域网; 这种IP不能给具体的主机分配. 比如: 192.168.100.0
② 将IP地址中的主机号全部设为1, 就成为了广播地址, 用于给同一个链路中相互连接的所有主机发送数据包; 这种IP也不能给具体的主机分配. 比如: 192.168.100.255
前面说UDP 天然能支持广播,就是和这个 IP 有关系,使用 UDP socket 给这个地址发送 UDP 数据报,局域网中所有的设备,都能收到这个数据报而TCP 无法和这个地址建立连接.
如果一个 IP 是 127 开头的, 此时这个 |P 就是"环回 ip"(loopback) 这些IP地址都表示设备自身,自己发给自己. 比如最常用的127.0.0.1;
操作系统提供了一个特殊的"虚拟网卡",关联到了这个 IP 上,这里的 环回 IP 主要的用途就是进行一些测试性的工作,环回 IP 能够排除 网络不通等干扰因素, 更好地排査代码中的问题.

Ⅲ IP地址的数量限制

IP 地址是一个 32 位的整数. 2^32 约等于 42亿9千万, 按理来说地址是不应该重复的,互联网发展到今天,能上网的设备是非常非常多的. 早就超过了 42亿9千万这个数字. 那么IP协议是如何解决IP地址不够用的问题的?

IP协议解决地址不够用问题的方法由下面两个方案结合而成.

① 动态分配IP
设备不上网就不用分配IP地址,设备上网就给设备分配IP.

② NAT机制(网络地址转换)
本质上就是让一个IP地址,代表一批设备.
把IP地址分成两大类:
1. 内网IP(局域网IP), 如果一个IP地址是类似以下三种地址的话就表示内网IP.
10.x 或者172.16.x-172.31.x 或者192.168.x
在同一个局域网内部,内网IP 之间,不能重复在不同的局域网中, 内网 IP 之间, 可以重复。
2. 外网IP(广域网IP), 除了内网IP剩下的就是外网IP了. 外网 IP 则始终都不允许重复,务必做到唯一.
通常一个小区/一个学校/一个公司,都是构成一个大的局域网 (这一个局域网中可能就有几干甚至上万个设备).
这样的一个局域网,使用一个外网 IP 即可表示, 一个外网 |P 就代表了几于个上万个设备.

NAT机制具体是怎么工作的?

在这里插入图片描述
路由器会将我的电脑的源IP替换成一个外网IP, 比如123.139.168.15. 之后传输给服务器,如下图所示:

在这里插入图片描述

内网IP无法在广域网上使用, 当我的设备的IP数据包传输给服务器时, 路由器会对设备的源IP进行替换, 替换成一个外网IP. 同样地, 当数据包从服务器传回我的设备时, 也会对源IP进行替换.
如下图所示:

在这里插入图片描述
当服务器返回数据之后,路由器如何决定这个数据要交给哪个设备?
是要结合端口号来进行区分,“端口号可以用来区分同一个主机的不同进程,也可以区分不同主机的不同进程”.

NAT 机制最大的优势就是纯软件方案, 也正是因为这个机制,局域网内部的设备,能够主动访问外网的设备外网的设备无法主动访问局域网内部的设备. 之前写的 UDP echo server 必须部署到云服务器上才能被其他主机访问.

Ⅳ IPv6


IPv6 使用 16 个字节来表示 IP 地址, 总共有 2^128个地址,这个数字大到什么程度? 大到可以给地球上的每一粒砂子都分配一个不同的 ip 地址,甚至还绰绰有余.

IPv6并不是IPv4的简单升级版. 这是互不相的两个协议, 彼此并不兼容; 但是目前IPv6还没有普及,因为升级成IPv6需要成本,并且花了钱网速不见得有多少提升,世界上大部分人都不愿意花这冤枉钱. 然而截止到 2023 年 8 月 28 日, 我国 IPv6 活跃用户数达7.67亿(网民总数为10.79亿, 占比 71%), 世界领先.

我国为什么会大力推行IPv6呢?

IPv4 地址是由美国的一个"民间组织"负责分配, 所谓的民间组织,背后却是由美国军方赞助. 假设中美双方之间出现了极端情况, 美国人这边不给我们分配IP地址, 并且将之前给我们的地址收回,那势必会对我们国家的互联网行业造成重大损失, 为了预防美国人这一手, 国家大力推行IPv6是必然的.
目前来看,中国几乎所有的互联网公司都支持IPv6, 当然没有默认开启, 非必要应该不会默认开启.

Ⅴ 私有IP地址和公网IP地址

如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址.

① 10.x,前8位是网络号,共16,777,216个地址
② 172.16.到172.31.,前12位是网络号,共1,048,576个地址
③ 192.168.*,前16位是网络号,共65,536个地址包含在这个范围中的, 都成为私有IP, 其余的则称为全局IP(或公网IP);


一个路由器可以配置两个IP地址, 一个是WAN口IP, 一个是LAN口IP(子网IP).
路由器LAN口连接的主机, 都从属于当前这个路由器的子网中.
不同的路由器, 子网IP其实都是一样的(通常都是192.168.1.1). 子网内的主机IP地址不能重复. 但是子网之间的IP地址就可以重复了.
每一个家用路由器, 其实又作为运营商路由器的子网中的一个节点. 这样的运营商路由器可能会有很多级, 最外层的运营商路由器, WAN口IP就是一个公网IP了.
子网内的主机需要和外网进⾏通信时, 路由器将IP首部中的IP地址进行替换(替换成WAN口IP), 这样逐级替换, 最终数据包中的IP地址成为一个公网IP. 这种技术称为NAT(Network Address
Translation,网络地址转换).

如果希望我们自己实现的服务器程序, 能够在公网上被访问到, 就需要把程序部署在一台具有外网IP的服务器上. .


1.2.2 路由选择

在复杂的网络结构中, 找出⼀条通往终点的路线;
路由的过程, 是一跳一跳(Hop by Hop) “问路” 的过程. 所谓 “一跳” 就是数据链路层中的一个区间. 具体在以太网中指从源MAC地址到目的MAC地址之间的帧传输区间.

IP数据包的传输过程也和问路一样.

① 当IP数据包, 到达路由器时, 路由器会先查看目的IP;
② 路由器决定这个数据包能否直接发送给目标主机, 还是需要发送给下一个路由器;
③ 依次反复, 一直到达目标IP地址;
那么如何判定当前这个数据包该发送到哪里呢? 这个就依靠每个节点内部维护一个路由表; 此处路由表不展开说明.

2. 数据链路层

“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

① 以太网帧格式

在这里插入图片描述

源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;
帧协议类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码.

② 认识MAC地址
MAC地址用来识别数据链路层中相连的节点;
长度为48位, 即6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
一台电脑的MAC地址在网卡出厂时就确定了, 不能修改. MAC地址通常是唯一的,所以MAC地址 可以作为 一台网络设备 的身份标识

在这里插入图片描述

IP地址描述的是路途总体的 起点 和 终点;
MAC地址描述的是路途上的每一个局部区间的起点和终点;

3.应用层协议DNS

DNS是一整套从域名映射到IP的系统.

① DNS背景

TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.
于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系.
DNS是应用层协议.
DNS底层使用UDP进行解析.
浏览器会缓存DNS结果.

② 全世界有很多设备需要同时进行 DNS 的请求, 这一组 DN服务器,能抗住这么高的请求量? 一个服务器硬件资源是有限的,服务器处理每个请求,肯定都是要消耗一定的资源的,单位时间内,请求太多,消耗的总资源超过了机器本身的资源上限,机器就挂了.

1. 开源, 搭建DNS系统的大佬们号召各个网络运营商都可以自己搭建一组"DNS 镜像服务器", 镜像服务器的数据,都从他们这边来同步, 此时用户就会优先访问离自己最近的镜像服务器.


2. 节流, 让请求量变少. 让每个上网的设备,搞个本地缓存,假设我的电脑1分钟之内要访问10次百度,那么只让第一次访问请求DSN,把请求的结果保存到本地,后面9次请求都使用第一次的结果即可.


一般进行 DNS 解析,访问的都是就近的运营商的镜像DNS.


本篇博客到这里就结束啦, 感谢观看 ❤❤❤

🐎期待与你的下一次相遇😊😊😊

相关文章:

【网络原理】从零开始深入理解TCP的各项特性和机制.(三)

上篇介绍了网络原理传输层TCP协议的知识,本篇博客给大家带来的是网络原理剩余的内容, 总体来说,这部分内容没有上两篇文章那么重要,本篇知识有一个印象即可. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分…...

MySQL:13.用户管理

13. 用户管理 如果我们只能使用root用户,这样存在安全隐患。这时,就需要使用MySQL的用户管理。 13.1 用户 13.1.1 用户信息 MySQL中的用户,都存储在系统数据库mysql的user表中 mysql> use mysql; Database changed mysql> select h…...

leetcode0103. 二叉树的锯齿形层序遍历-medium

1 题目:二叉树的锯齿形层序遍历 官方标定难度:中 给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行&#xf…...

【Go语言】ORM(对象关系映射)库

github.com/jinzhu/gorm 是 Go 语言中一个非常流行的 ORM(对象关系映射)库,用于简化与关系型数据库的交互。以下是关于它的关键信息: 核心特点 全功能 ORM 支持主流数据库:MySQL、PostgreSQL、SQLite、SQL Server 等。…...

Java : GUI

AWT 初始化界面 直接封装起来: panel 的添加 布局 流式布局,控制按钮的位置 东西南北中布局 网格布局 frame.pack();java函数,会自动选择最优的布局 事件监听 给按钮添加 添加文本 画笔 鼠标监听 键盘监听 JDialog”弹窗 默认有关闭事件 标签&#…...

ipa包安装到apple手机上

获ipa包的方式 ipatool 下载appStore的ipa包-CSDN博客 方式一:巨魔商店 原理是利用apple的漏洞,但是有低版本的系统要求 TrollStore - Always Sideload Any IPAs For FreeTrollStore - The ultimate jailbreak app for iOS. Permanently install any …...

JavaScript输出数据的方法

1. console.log() console.log()是最常用的方法之一,用于在浏览器的控制台(Console)中输出信息。这对于调试和查看变量的值非常有用。 console.log("Hello, world!");2. alert() alert()方法会弹出一个带有指定消息和确定按钮的警告…...

操作系统:计算机世界的基石与演进

一、操作系统的本质与核心功能 操作系统如同计算机系统的"总管家",在硬件与应用之间架起关键桥梁。从不同视角观察,其核心功能呈现多维价值: 硬件视角的双重使命: 硬件管理者:通过内存管理、进程调度和设…...

FFmpeg之三 录制音频并保存, API编解码从理论到实战

在学习FFmpeg的时候,想拿demo来练习,官方虽有示例,但更像是工具演示,新手不好掌握,在网上找不到有文章,能给出完整的示例和关键点的分析说明,一步一个错误,慢慢啃过来的,…...

幂等性处理解决方案实战示例

幂等性处理解决方案实战示例 幂等性是指对同一个操作执行一次或多次,产生的结果是相同的。在分布式系统、网络请求和金融交易等场景中,幂等性设计至关重要。下面我将介绍几种常见的幂等性处理方案及其实战示例。 1. 唯一标识符方案 原理:为…...

华为仓颉编程语言的实际用法与使用领域详解

华为仓颉编程语言的实际用法与使用领域详解 一、语言概述与核心特性 华为仓颉编程语言是面向万物智联时代的系统级编程语言,其核心特性包括: 三重内存安全机制:所有权系统 + 引用检查 + 硬件辅助防护零成本抽象:高级语法不牺牲底层性能全场景支持:从嵌入式设备到量子计算…...

JavaEE-多线程实战01

Java 多线程入门:第一个多线程程序 在 Java 中,多线程编程是非常重要的一部分。本篇文章将通过示例,带你快速了解如何创建第一个多线程程序,并深入分析其运行机制。 1. 创建一个线程类并继承 Thread 在 Java 中,我们…...

当AI浏览器和AI搜索替代掉传统搜索份额时,老牌的搜索引擎市场何去何从。

AI搜索与传统搜索优劣势分析 AI搜索优势 理解和处理查询方式更智能:利用自然语言处理(NLP)和机器学习技术,能够更好地理解用户的意图和上下文,处理复杂的问答、长尾问题以及多轮对话,提供更为精准和相关的…...

大模型——Spring.new快速构建AI驱动的定制化商业应用

大模型——Spring.new快速构建AI驱动的定制化商业应用 Spring.new 是一个基于人工智能的在线平台,专注于帮助营销经理和产品经理快速构建定制化工作流和小型应用。它通过自然语言输入,让用户描述需求,自动生成连接 Notion、Airtable、Slack 等工具的工作流或应用,例如将 F…...

django admin 中更新表数据 之后再将数据返回管理界面

在Django中,更新数据库中的数据并将其重新显示在Django Admin界面上通常涉及到几个步骤。这里我将详细说明如何在Django Admin中更新表数据,并确保更新后的数据能够立即在管理界面上显示。 定义模型 首先,确保你的模型(Model&…...

深度理解linux系统—— 进程概念

一、进程 进程,什么是进程? 在课本,教材中是这样描述的:程序的一个执行示例,正在执行的程序; 从内核角度来说,进程就是担当分配系统资源(CPU时间,内存)的实体…...

【如何使用solidwork编辑结构导入到simscope】

这里写自定义目录标题 欢迎使用Markdown编辑器 欢迎使用Markdown编辑器 To use Simscape Multibody Link, you must install MATLAB and the CAD applications on the same computer. To ensure the successful installation of Simscape Multibody Link, before launching yo…...

Flink 时态维度表 Join 与缓存机制实战

一、引言:为什么需要时态维度表? 在实时数仓建设中,维度表是不可或缺的一环,例如: 风控系统中,用户的风险等级在不同时间可能变化; 营销体系中,商品的促销标签会动态调整&#xff…...

Apache Tomcat 漏洞(CVE-2025-24813)导致服务器面临 RCE 风险

CVE-2025-24813Apache Tomcat 中发现了一个严重安全漏洞,标识为,该漏洞可能导致服务器面临远程代码执行 (RCE)、信息泄露和数据损坏的风险。 此缺陷影响以下版本: Apache Tomcat11.0.0-M1通过11.0.2Apache Tomcat10.1.0-M1通过10.1.34Apache Tomcat9.0.0-M1通过9.0.98了解 …...

来自B站-AI匠的“RAG的prompt设计指南“的部分截图

来自B站-AI匠的“RAG的prompt设计指南“的部分截图 0. 引言1. RAG提示词 - 部分视频截图2. 总结 - 部分视频截图3. 举例 - 部分视频截图 0. 引言 这个文章记录的是B站Up主AI匠关于RAG的prompt设计指南的视频截图。 1. RAG提示词 - 部分视频截图 笔记: Up主推荐Fa…...

【Linux】Centos7 在 Docker 上安装 Redis7.0(最新详细教程)

一、拉取 Redis 镜像 1. 从 阿里云加速器(docker hub)拉取 redis镜像,选择镜像标签为 7.2.4 docker pull redis:7.2.4 2. 准备 Redis 的配置文件(便于后期对配置文件进行修改) 3.在服务器上创建需要挂载的文件夹 mk…...

Java使用微信云服务HTTP API操作微信云开发数据库

可以直接用的工具类代码 package com.kstc.qgy.util;import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.kstc.qgy.model.exception.WxException; import com.kstc.qgy.model.service.Limit; imp…...

Linux的权限

目录 1、用户分类 1.1 超级用户(root)和普通用户 1.2 普通<->超级 1.3 sudo 2、文件和目录的权限 2.1 chown&&chgrp 2.1.1 chown 2.1.2 chgrp 2.2 chmod 总结一下&#xff1a; 3、文件和目录的默认权限 4、共享文件 4.1 理解多用户隔离 4.2 /tmp/ 1…...

ACT游戏和MMORPG经济形态区别以及对经济循环的思考

对于原神的明日之后经济形态的不同解析 对于MMORPG游戏来说&#xff0c;如果采用开放市场经济的设计&#xff0c;以明日之后为例&#xff0c;系统产出端为采集、运营活动投放&#xff1b;玩家产出端为交易&#xff1b;消耗端为武器耐久的减少。但我好奇&#xff0c;在ACT游戏里…...

zynq7035的arm一秒钟最多可以支持触发多少次中断

一、概述 1.关于zynq7035的ARM处理器一秒能够支持多少次中断触发&#xff0c;需要综合来考虑。需要确定ARM处理器的参数&#xff0c;目前zynq7000系列&#xff0c;使用的双核Cortex-A9处理器。其中主频大概在500MHZ~1GHZ左右&#xff0c;不同的用户配置的主频可能稍微有差别。 …...

Spring MVC 拦截器教程

一、拦截器核心概念 1.1 拦截器 vs 过滤器 特性过滤器 (Filter)拦截器 (Interceptor)依赖关系Servlet容器Spring MVC框架作用范围所有Web请求Controller请求实现机制Java EE标准Java反射AOP生命周期服务器启动时初始化随Spring容器初始化功能场景字符编码、安全过滤权限校验、…...

【HPC存储性能测试】02-ior带宽性能测试

文章目录 一、前言二、软件安装1、安装依赖2、安装软件 三、参数说明1、mpirun参数2、ior参数 四、测试说明 一、前言 ior introduction | github hpc ior IOR 测试工具使用 POSIX、 MPIIO 或 HDF5接口对并行文件系统进行基准测试 通常使用IOR测试工具时&#xff0c;一般会配合…...

【RabbitMQ】保证消息不丢失

要确保 RabbitMQ 在消费者&#xff08;Python 服务&#xff09;重启或挂掉时消息不丢失&#xff0c;需结合 消息持久化、确认机制&#xff08;ACK&#xff09; 和 死信队列&#xff08;DLX&#xff09; 实现高可靠性&#xff1a; 1. 消息持久化&#xff08;Durability&#xff…...

算法效率的钥匙:从大O看复杂度计算 —— C语言数据结构第一讲

目录 1.数据结构与算法 1.1数据结构介绍 1.2算法介绍 2.算法效率 2.1复杂度 2.1.1时间复杂度 2.1.1.1时间复杂度计算示例1 2.1.1.2时间复杂度计算示例2 2.1.1.3时间复杂度计算示例3 2.1.1.4时间复杂度计算示例4 2.1.1.5时间复杂度计算示例5 2.1.1.6时间复杂度计算示例6…...

AI赋能守护行车安全新防线,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建驾驶车辆场景下驾驶员疲劳分心驾驶行为智能检测预警系统

在当今社会&#xff0c;随着科技生产力的飞速发展&#xff0c;汽车早已成为人们日常出行不可或缺的交通工具。它不仅极大地提高了人们的出行效率&#xff0c;也为生活带来了诸多便利。然而&#xff0c;随着汽车保有量的不断增加&#xff0c;交通安全问题也日益凸显。疲劳驾驶和…...

HNUST湖南科技大学-嵌入式考试选择题题库(109道纠正详解版)

HNUST嵌入式选择题题库 1.下面哪点不是嵌入式操作系统的特点。(B) A.内核精简 B.功能强大 C.专用性强 D.高实时性 解析&#xff1a; 嵌入式操作系统特点是内核精简、专用性强、高实时性&#xff0c;而"功能强大"通常指的是通用操作系统&#x…...

【音视频】SDL事件

SDL 事件 函数 SDL_WaitEvent()&#xff1a; 等待一个事件SDL_PushEvent()&#xff1a; 发送一个事件SDL_PumpEvents()&#xff1a; 将硬件设备产生的事件放入事件队列&#xff0c;用于读取事件&#xff0c;在调用该函数之前&#xff0c;必须调用SDL_PumpEvents搜集键盘等事件…...

[特殊字符]实战:使用 Canal + MQ + ES + Redis + XXL-Job 打造高性能地理抢单系统

&#x1f4da;目录 项目背景 技术栈总览 详细流程分析 3.1 Canal监听MySQL Binlog 3.2 MQ中转传递订单变化 3.3 Elasticsearch存储并查询附近订单 3.4 Redis高性能抢单Lua防止抢单冲突 3.5 XXL-Job定时任务处理 完整系统流程图 总结 一、项目背景 针对类似外卖、跑…...

FPGA基础之基础语法

一、基本模块结构 Verilog 代码以 模块&#xff08;Module&#xff09; 为单位&#xff0c;每个模块对应一个硬件功能单元&#xff08;如逻辑门、寄存器等&#xff09;。 基本格式&#xff1a; module 模块名 (// 输入输出端口声明input 端口1,input 端口2,output 端口3 );…...

影楼精修-皮肤瑕疵祛除算法解析

注意&#xff1a;本文样例图片为了避免侵权&#xff0c;均使用AIGC生成&#xff1b; 顾名思义&#xff0c;皮肤瑕疵祛除旨在祛除人像照片皮肤区域的痘痘/斑点/痣/胎记等瑕疵&#xff1b;当前主流算法方案可分为传统图像处理方法和基于深度学习的方法&#xff0c;本文重点介绍基…...

2025蓝桥杯省赛网络安全组wp

文章目录 黑客密室逃脱ezEvtxflowzipEnigma星际xml解析器EBC-TrainAES-CBC 黑客密室逃脱 提示猜文件名&#xff0c;猜几个常见的&#xff0c;app.py读到源码 这里也是脑抽了一下&#xff0c;把密钥看成1236了。。。卡了五分钟左右&#xff0c;解出来的时候已经降到300多分了&a…...

【数据结构】·励志大厂版(复习+刷题):二叉树

前引&#xff1a;哈喽小伙伴们&#xff01;经过几个月的间隔&#xff0c;还是逃脱不了再次复习的命运&#xff01;&#xff01;&#xff01;本篇文章没有冗杂的闲话&#xff0c;全是干货教学&#xff0c;带你横扫二叉树的几种遍历&#xff0c;怎么前序、、中序、后续&#xff1…...

Spark-Streaming2

一&#xff0e;有状态转化操作 1. UpdateStateByKey UpdateStateByKey 原语用于记录历史记录&#xff0c;有时&#xff0c;我们需要在 DStream 中跨批次维护状态(例如流计算中累加 wordcount)。针对这种情况&#xff0c;updateStateByKey()为我们提供了对一个状态变量的访问&…...

《深入浅出Git:从版本控制原理到高效协作实战》​

Git的原理和使用 1、Git初识与安装2、Git基本操作2.1、创建Git本地仓库2.2、配置Git2.3、认识工作区、暂存区、版本库2.4、修改文件2.5、版本回退2.6、撤销修改2.7、删除文件 3、Git分支管理3.1、理解分支3.2、创建、切换、合并分支3.3、删除分支3.4、合并冲突3.5、合并模式3.6…...

内耗型选手如何能做到不内耗?

以下是针对「内耗型选手」的系统性解决方案&#xff0c;结合认知神经科学、行为心理学和效能管理理论&#xff0c;提供可落地的策略框架&#xff1a; 一、建立「内耗熵值」监测系统 1. 绘制内耗热力图 用时间轴记录每日内耗触发点&#xff1a; 时间段内耗场景能量损耗值&…...

pyspark将hive数据写入Excel文件中

不多解释直接上代码&#xff0c;少python包的自己直接下载 #!/usr/bin/env python # -*- encoding: utf-8 -*- from pyspark.sql import SparkSession import pandas as pd import os# 初始化 SparkSession 并启用 Hive 支持 spark SparkSession.builder \.appName("sel…...

Java大师成长计划之第5天:Java中的集合框架

&#x1f4e2; 友情提示&#xff1a; 本文由银河易创AI&#xff08;https://ai.eaigx.com&#xff09;平台gpt-4o-mini模型辅助创作完成&#xff0c;旨在提供灵感参考与技术分享&#xff0c;文中关键数据、代码与结论建议通过官方渠道验证。 在 Java 编程中&#xff0c;集合框架…...

rt-linux下的D状态的堆栈抓取及TASK_RTLOCK_WAIT状态

一、背景 在之前的博客 缺页异常导致的iowait打印出相关文件的绝对路径-CSDN博客 里的 2.1 一节里的代码&#xff0c;我们已经有了一个比较强大的抓取D状态和等IO状态超过阈值的waker和wakee的堆栈状态的内核模块。在之前的博客 增加等IO状态的唤醒堆栈打印及缺页异常导致iowa…...

数据结构【堆和链式结构】

堆和链式结构 1.堆的概念和定义1.1堆1.2二叉树的性质 2.堆的实现3.实现链式二叉树3.1链式二叉树的概念3.2前中后遍历3.3遍历&#xff08;举例&#xff09; 1.堆的概念和定义 1.1堆 定义&#xff1a;是特殊的二叉树 #mermaid-svg-vWPNPMGSLe0nGNcd {font-family:"trebuch…...

聊一聊自动化测试

目录 一、自动化测试的定义与核心价值 &#xff08;一&#xff09;什么是自动化测试 &#xff08;二&#xff09;核心价值&#xff1a;从人工到智能的跨越 二、自动化测试的发展阶段 &#xff08;一&#xff09;萌芽阶段&#xff08;早期&#xff09; &#xff08;二&…...

vue2 开发一个实习管理系统电脑端-前端静态网站练习

为了快速的掌握vue2的所学习到的知识点&#xff0c;最近又使用vue2和element-ui 做了一个实习管理系统来巩固自己的前端技术&#xff0c;我觉得对于新手来说&#xff0c;多写代码&#xff0c;多找一些项目练习&#xff0c;是提供自己编程能力的一个很好的办法&#xff0c;这也是…...

【Hive入门】Hive基础操作与SQL语法:DML操作全面解析

目录 1 Hive DML操作概述 2 数据加载操作 2.1 LOAD DATA语句 2.2 INSERT语句 3 数据导出操作 3.1 INSERT OVERWRITE DIRECTORY 3.2 使用HDFS命令导出 4 数据更新与删除 4.1 UPDATE语句 4.2 DELETE语句 5 MERGE操作&#xff08;Hive 2.2&#xff09; 6 性能优化建议…...

C++类和对象(上)

目录 类的定义类定义格式访问限定符类域 实例化实例化概念对象大小 this指针C和C语言实现Stack对比 类的定义 类定义格式 在下面的代码中&#xff0c;class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c; 注意类定义结束时后面分号不能省…...

LS2K0300龙芯开发板——智能车竞赛

开启 LS2K0300 调车之旅&#xff08;自己写的自己慢慢更&#xff0c;可能写的不好欢迎指教&#xff09; 欢迎大家一起讨论共同进步&#xff01;逐飞科技针对 LS2K0300 MCU 开发的开源库&#xff0c;涵盖多种实用功能&#xff0c;助力竞赛与产品开发。以下是快速上手指南&#…...

电子病历高质量语料库构建方法与架构项目(智能质控体系建设篇)

引言 随着人工智能技术的迅猛发展,医疗信息化建设正经历着前所未有的变革。电子病历作为医疗机构的核心数据资产,其质量直接关系到临床决策的准确性和医疗安全。传统的病历质控工作主要依赖人工审核,存在效率低下、主观性强、覆盖面有限等问题。近年来,基于人工智能技术的…...