【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透
文章目录
- 1. 数据链路层
- 2. 以太网帧格式
- 3. MTU
- 3.1 认识MTU
- 3.2 MTU 对于 TCP 协议的影响
- 4. 局域网通信原理
- 5. ARP协议
- 5.1 基本概念
- 5.2 原理
- 5.3 ARP 数据报的格式
- 6. NAT技术
- 7. 内网穿透
- 8. 内网打洞
- 9. 代理服务器
- 9.1 正向代理
- 9.2 反向代理
- 9.3 NAT VS 代理服务器
- 10.网络总结

1. 数据链路层
真正在网络物理结构上传输的,是mac帧;但是逻辑上我们认为是IP报文在流动,实际是需要mac帧的支持的。
在局域网通信那里,我们知道局域网内是使用mac地址进行通信的,所以,数据链路层就是用来解决相邻主机间的通信问题。
MAC 地址用来识别数据链路层中相连的节点
- 长度为 48 位,即6 个字节。 一般用 16 进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
- 在网卡出厂时就确定了,不能修改。 mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址,可能会冲突;也有些网卡支持用户配置 mac 地址)
- IP 地址描述的是路途总体的 起点 和 终点;
- MAC 地址描述的是路途上的每一个区间的起点和终点;
2. 以太网帧格式
“以太网” 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如: 规定了网络拓扑结构,访问控制方式,传输速率等
例如以太网中的网线必须使用双绞线,传输速率有 10M, 100M, 1000M 等;
以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线LAN 等
以太网帧格式:
- 源地址和目的地址是指网卡 MAC 地址,长度是6字节
- 帧协议类型字段有三种值,分别对应 IP、 ARP、 RARP;
- RARP是将MAC地址转换为IP地址
- 帧末尾是 CRC 校验码
3. MTU
3.1 认识MTU
MTU 相当于发快递时对包裹尺寸的限制,这个限制是不同的数据链路对应的物理层,产生的限制。
- 以太网帧中的数据长度规定最小 46 字节,最大 1500 字节,数据包的长度不够 46 字节,要在后面补填充位;
- 最大值 1500 称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
- 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的 MTU了,则需要对数据包进行分片(fragmentation);
- 不同的数据链路层标准的 MTU 是不同的;
3.2 MTU 对于 TCP 协议的影响
让我们再回顾一下 TCP 协议:
- TCP 的一个数据报也不能无限大,还是受制于 MTU,TCP 的单个数据报的最大消息长度,称为MSS(Max Segment Size),
- TCP 在建立连接的过程中, 通信双方会进行 MSS 协商
- 最理想的情况下,MSS 的值正好是在 IP 不会被分片处理的最大长度 (即最大是1460(1500 MTU - 20IP报头 - 20传输层报头))
- 双方在握手发送 SYN 的时候会在 TCP 头部写入自己能支持的 MSS 值,然后双方得知对方的 MSS 值之后,选择较小的作为最终 MSS
- MSS 的值是在 TCP 首部的 40 字节变长选项中(如果有的话)
4. 局域网通信原理
局域网中的一台主机向局域网中发送信息时,该局域网中的所有主机都可以收到该信息
正如图上所画,局域网中的所有主机都能收到该数据帧,若多个主机同时向局域网中发送数据,会发送数据碰撞问题。
所以,为了避免局域网中产生数据碰撞问题,要保证,任何时刻,只有一台主机在使用局域网!
如果发生了碰撞,碰撞双方要休眠一段时间(碰撞避免),然后再重发,
所以在数据链路层上,也有重发机制
此时,整个局域网就像临界资源,只有一台主机在使用局域网就是互斥。
令牌环网,其实它的令牌,就类似于锁,谁持有锁,谁就可以向局域网中发送数据
既然会发送碰撞,那么局域网中主机的数量肯定不能太多,多了容易碰撞,但万一多了怎么办?- - 引入交换机
所以,交换机的作用就是:划分碰撞域!
既然局域网中存在数据碰撞问题,那单台主机发送数据时,数据帧的长度是越短越好,还是越长越好?
- 数据帧不能太长,太长了主机发送单条数据的发送周期长,碰撞多
- 数据帧也不能太段,太短发送的次数太多了
- 所以,数据链路层规定,单词发送数据帧的长度不能超过MTU的长度!
5. ARP协议
5.1 基本概念
ARP 不是一个单纯的数据链路层的协议,而是一个介于数据链路层和网络层之间的协议
ARP 协议的作用:ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系
- 在网络通讯时,源主机的应用程序知道目的主机的 IP 地址和端口号,却不知道目的主机的硬件地址;
- 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
- 因此在通讯前必须获得目的主机的硬件地址·
5.2 原理
ARP的原理非常简单:先广播、再单发
源主机发出 ARP 请求,询问“IP 地址是 192.168.0.1 的主机的硬件地址是多少”?并将这个请求广播到本地网段(以太网帧首部的硬件地址填 FF:FF:FF:FF:FF:FF
表示广播);
目的主机接收到广播的 ARP 请求,发现其中的 IP 地址与本机相符,则发送一个ARP 应答数据包给源主机,将自己的硬件地址填写在应答包中;
每台主机都维护一个 ARP 缓存表,可以用
arp -a
命令查看。 缓存表中的表项有过期时间(一般为 20 分钟),如果 20 分钟内没有再次使用某个表项,则该表项失效,下次还要发 ARP 请求来获得目的主机的硬件地址
5.3 ARP 数据报的格式
注意:源 MAC 地址、目的 MAC 地址在以太网首部和 ARP 请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。
- 硬件类型指链路层网络类型,1 为以太网;
- 协议类型指要转换的地址类型,0x0800 为 IP 地址;
- 硬件地址长度对于以太网地址为 6 字节;
- 协议地址长度对于和 IP 地址为 4 字节;
ARP协议的前6个字节基本是固定的
- op 字段为 1 表示 ARP 请求,op 字段为 2 表示 ARP 应答
ARP工作流程:
首先我们要明确一点:任何一个主机,它都可能会收到ARP请求(广播)或应答(它可能请求过别人)
6. NAT技术
路由器将 IP 首部中的 IP 地址进行替换(替换成路由器的 WAN 口 IP),这样逐级替换,最终数据包中的 IP 地址成为一个公网 IP,这种技术称为 NAT。
- NAT 技术当前解决 IP 地址不够用的主要手段,是路由器的一个重要功能;
- NAT 能够将私有 IP 对外通信时转为全局 IP,也就是就是一种将私有 IP 和全局IP 相互转化的技术方法
目前我们已经知道使用它可以缓解IP地址不足的问题,也能将信息转发到公网上;但是目前不知道如何将信息从公网再转发回内网。
在 NAT 路由器内部,有一张自动生成的,用于地址转换的表
如果局域网内有多个主机都访问同一个外网服务器,如果仅进行IP地址的替换,那么对于服务器返回的数据时,目的 IP 都是相同的,那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机呢?
这时候 NAPT 来解决这个问题了,使用 IP+port进行映射(映射本质是:内网进程和公网进程的映射关系)
这种关联关系也是由 NAT 路由器自动维护的。例如在 TCP 的情况下,建立连接时,就会生成这个表项;在断开连接后,就会删除这个表项
7. 内网穿透
8. 内网打洞
9. 代理服务器
9.1 正向代理
正向代理(Forward Proxy) 是一种常见的网络代理方式, 它位于客户端和目标服务器之间, 代表客户端向目标服务器发送请求。
正向代理服务器接收客户端的请求,然后将请求转发给目标服务器,最后将目标服务器的响应返回给客户端。 通过这种方式,正向代理可以实现多种功能,如提高访问速度、隐藏客户端身份、实施访问控制等。
工作原理
- 客户端将请求发送给正向代理服务器。
- 正向代理服务器接收请求, 并根据配置进行处理, 如缓存查找、 内容过滤等。
- 正向代理服务器将处理后的请求转发给目标服务器。
- 目标服务器处理请求, 并将响应返回给正向代理服务器。
- 正向代理服务器将响应返回给客户端。
功能特点
- 缓存功能: 正向代理服务器可以缓存经常访问的资源, 当客户端再次请求这些资源时,可以直接从缓存中获取, 提高访问速度。
- 内容过滤: 正向代理可以根据预设的规则对请求或响应进行过滤,如屏蔽广告、阻止恶意网站等。
- 访问控制: 通过正向代理,可以实现对特定网站的访问控制, 如限制员工在工作时间访问娱乐网站。
- 隐藏客户端身份: 正向代理可以隐藏客户端的真实 IP 地址, 保护客户端的隐私。
- 负载均衡: 在多个目标服务器之间分配客户端请求, 提高系统的可扩展性和可靠性。
应用场景
公共网络环境: 在公共场所如图书馆、 学校等提供的网络环境中, 通过正向代理可以实现对网络资源的合理分配和管理, 确保网络使用的公平性和安全性。
跨境电商与海外访问: 对于跨境电商或需要访问海外资源的企业和个人, 正向代理可以帮助他们突破网络限制, 顺畅地访问海外网站和资源。
9.2 反向代理
反向代理服务器是一种网络架构模式, 其作为 Web 服务器的前置服务器, 接收来自客户端的请求, 并将这些请求转发给后端服务器, 然后将后端服务器的响应返回给客户端。
这种架构模式可以提升网站性能、 安全性和可维护性等
基本原理
- 反向代理服务器位于客户端和 Web 服务器之间,当客户端发起请求时,它首先会到达反向代理服务器。
- 反向代理服务器会根据配置的规则将请求转发给后端的 Web服务器,并将 Web 服务器的响应返回给客户端。 在这个过程中,客户端并不知道实际与哪个 Web 服务器进行了交互,它只知道与反向代理服务器进行了通信。
应用场景
- 负载均衡: 反向代理服务器可以根据配置的负载均衡策略, 将客户端的请求分发到多个后端服务器上, 以实现负载均衡。 这有助于提升网站的整体性能和响应速度,特别是在高并发场景下。
- 动静分离: 在大型网站中, 通常需要将静态资源和动态资源分开处理。 通过将静态资源部署在反向代理服务器上,可以直接从反向代理服务器返回静态资源的响应,而无需再次向后端服务器发起请求。 这可以大大提升静态资源的访问速度
9.3 NAT VS 代理服务器
路由器往往都具备 NAT 设备的功能,通过 NAT 设备进行中转,完成子网设备和其他子网设备的通信过程。
代理服务器看起来和 NAT 设备有一点像,客户端像代理服务器发送请求,代理服务器将请求转发给真正要请求的服务器;服务器返回结果后,代理服务器又把结果回传给客户端。
那么 NAT 和代理服务器的区别有哪些呢?
- 从应用上讲,NAT 设备是网络基础设备之一,解决的是 IP 不足的问题。代理服务器则是更贴近具体应用,比如通过代理服务器进行翻墙,另外像迅游这样的加速器,也是使用代理服务器.
- 从底层实现上讲,NAT 是工作在网络层,直接对 IP 地址进行替换;代理服务器往往工作在应用层.
- 从使用范围上讲, NAT 一般在局域网的出口部署;代理服务器可以在局域网做,也可以在广域网做,也可以跨网
- 从部署位置上看,NAT 一般集成在防火墙, 路由器等硬件设备上,代理服务器则是一个软件程序,需要部署在服务器上
10.网络总结
- 请描述一下一次网络转发的完整过程:
- 从应用层,把数据做序列化,转换成字符串,然后把他从应用层拷贝到TCP的发送缓冲区(一旦到了这里,发送数据就与用户无关了,由OS自己决定)
- TCP结合滑动窗口、流量控制、超时重传等策略,把数据包可能拆分成若干数据段,添加TCP报头,向下交付给IP
- 添加IP报头,封装成MAC帧,然后进行路由
- 路由的过程涉及:局域网通信,路由表查找,ARP的过程
- 到达目标主机,在自底向上,根据每一层协议的分包、分用,把报头向上交付,直到对方的接收缓冲区
- 应用层再采用read或recv将数据从缓冲区拷贝到应用层,然后解决粘包问题,进行反序列化,得到结构化数据
- 处理,将处理后的字符串,将上述过程再做一遍,即可完成一次完整的通信过程。
- 数据链路层
- 数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
- 以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
- 以太网帧格式
- 理解 mac 地址
- 理解 arp 协议
- 理解 MTU
- 网络层
- 网络层的作用L在复杂的网络环境中确定一个合适的路径.
- 理解 IP 地址,理解 IP 地址和 MAC 地址的区别.
- 理解 IP 协议格式.
- 了解网段划分方法
- 理解如何解决 IP 数目不足的问题,掌握网段划分的两种方案,理解私有 IP 和公网 IP
- 理解网络层的 IP 地址路由过程,理解一个数据包如何跨越网段到达最终目的地.
- 理解 IP 数据包分包的原因.
- 了解 ICMP 协议.
- 了解 NAT 设备的工作原理
- 传输层
- 传输层的作用: 负责数据能够从发送端传输接收端.
- 理解端口号的概念.
- 认识 UDP 协议, 了解 UDP 协议的特点.
- 认识 TCP 协议, 理解 TCP 协议的可靠性. 理解 TCP 协议的状态转化.
- 掌握 TCP 的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性.
- 理解 TCP 面向字节流, 理解粘包问题和解决方案.
- 能够基于 UDP 实现可靠传输.
- 理解 MTU 对 UDP/TCP 的影响.
- 应用层
- 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
- 能够根据自己的需求, 设计应用层协议.
- 了解 HTTP 协议.
- 理解 DNS 的原理和工作流程.
相关文章:
【网络】数据链路层(以太网帧格式、MTU、ARP)、NAT、内网穿透
文章目录 1. 数据链路层2. 以太网帧格式3. MTU3.1 认识MTU3.2 MTU 对于 TCP 协议的影响 4. 局域网通信原理5. ARP协议5.1 基本概念5.2 原理5.3 ARP 数据报的格式 6. NAT技术7. 内网穿透8. 内网打洞9. 代理服务器9.1 正向代理9.2 反向代理9.3 NAT VS 代理服务器 10.网络总结 1. …...
ASPNET Core笔试题 【面试宝典】
文章目录 一、如何在ASP.NET Core中激活Session功能?二、什么是中间件?三、ApplicationBuilder的Use和Run方法有什么区别?四、如何使TagHelper在元素这一层上失效?五、什么是ASP.NET Core?六、ASP.NET Core中AOP的支持…...
Harmony os next~鸿蒙原子化服务开发实战:天气卡片开发全解析
鸿蒙原子化服务开发实战:天气卡片开发全解析 一、原子化服务与HarmonyOS卡片概述 (1)原子化服务特性 HarmonyOS原子化服务具有独立入口(桌面图标/智慧搜索)、免安装、跨设备流转三大核心特性。服务卡片作为其可视化载…...
【pytest框架源码分析三】pluggy源码分析之hook注册调用流程
pluggy的hook调用,最重要的就是使用了__call__魔法函数,这个函数能够在我们调用实例时,自动调用这个函数,无需自己手动调用。 前面介绍了各个类的方法,这里简述下pluggy的调用流程(主要介绍主流程ÿ…...
Linux消息队列
msgget函数(类似于shmget) 是 Linux 系统中用于 创建或获取消息队列(System V Message Queue) 的系统调用。 #include <sys/types.h> #include <sys/ipc.h> #include <sys/msg.h>int msgget(key_t key, int m…...
ChatGPT 提示词框架
作为一个资深安卓开发工程师,我们在日常开发中经常会用到 ChatGPT 来提升开发效率,比如代码优化、bug 排查、生成单元测试等。 但要想真正发挥 ChatGPT 的潜力,我们需要掌握一些提示词(Prompt)的编写技巧,并…...
对于动态线程池框架 Hippo4j 的思考
从 java 线程池探讨动态线程池框架的可行性以及扩展性 ThreadPoolExecutor 对外给用户暴露了很多 get、set 方法,get 方法可以让我直接获得一些线程池的运行时信息,比如线程池过去已经完成任务的总数量,线程池目前活跃线程数量等等ÿ…...
问deepseek: HYPRE BoomerAMG 有哪些参数可以进行性能调优
Hypre BoomerAMG 是一个高性能的多重网格预条件子,常用于求解大规模稀疏线性系统。为了优化其性能,可以调整以下关键参数: 1. AMG 参数 Coarsening (强连接阈值) strong_threshold: 控制强连接的阈值,通常在 0.25 到 0.6 之间&a…...
seacms v9 实现的MySQL注入
目录 过滤关键词information_schema 怎么办 一、环境搭建 二、环境分析 三、源代码分析 1、过滤程序 2、注入点 四、获取数据库名 五、获取数据库表名 六、获取表的列名 七、获取数据信息 过滤关键词information_schema 怎么办 1.、利用sys数据库(MySQL 5.…...
基于C#的CANoe CLR Adapter开发指南
一、引言 CANoe 是一款广泛应用于汽车电子开发和测试的工具,它支持多种编程接口,方便开发者进行自定义扩展。CANoe CLR Adapter 允许我们使用 C# 语言与 CANoe 进行交互,充分利用 C# 的强大功能和丰富的类库。本文将详细介绍如何基于 C# 进行…...
Vue 系列之:基础知识
什么是 MVVM MVVM(Model-View-ViewModel)一种软件设计模式,旨在将应用程序的数据模型(Model)与视图层(View)分离,并通过 ViewModel 来实现它们之间的通信。降低了代码的耦合度。 M…...
知识库功能测试难点
图表交互功能测试难点 知识库图表类型多,每种图表交互功能不同。像柱状图,可能有点击柱子查看详细数据、鼠标悬停显示数据提示等交互;折线图除了这些,还可能支持缩放查看不同时间段数据。多种交互操作在不同图表间存在差异&#x…...
一文掌握 Scrapy 框架的详细使用,包括实战案例
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 1. Scrapy 简介2. Scrapy 的核心组件3. 安装 Scrapy4. 创建 Scrapy 项目4.1 创建项目4.2 创建 Spider5. 编写 Spider5.1 定义 Item5.2 编写 Spider 逻辑6. 运行 Scrapy 爬虫6.1 运行爬虫6.2 保存爬取数据7. Scrapy 的高…...
奔图Pantum M7165DN黑白激光打印一体机报数据清除中…维修
故障描述: 一台奔图Pantum M7165DN黑白激光打印一体机开机自检正常,自检过后就不能工作了,按键面板无任何反应一直提示数据清除中…,如果快速操作的话也能按出菜单、功能啥的,不过一会又死机了,故障请看下图: 故障检修: 经分析可能是主板数据出现了问题,看看能不能快速…...
微服务架构与传统的单体架构有什么区别?微服务架构(Spring Cloud + Maven)强在哪?
微服务架构与传统的单体架构(Spring Boot Maven 项目)在设计和实现上有显著差异,主要体现在系统拆分方式、部署模式、技术栈选择、维护成本等方面。以下是具体对比: 1. 架构设计 维度单体架构微服务架构系统拆分所有功能模块集…...
二、QT和驱动模块实现智能家居----2、编译支持QT的系统
因为我们的Linux内核文件不支持QT系统(当然如果你的支持,完全跳过这篇文章),所以我们要从网上下载很多软件包,这里直接用百问网的软件包,非常方便。 一:Ubuntu 配置 1 设置交叉编译工具链 以…...
游戏引擎学习第128天
开始 然而,我们仍然有一些工作要做,渲染部分并没有完全完成。虽然现在已经能够运行游戏,而且帧率已经可以接受,但仍然有一些东西需要进一步完善。正在使用调试构建编译版本,虽然调试版本的性能不如优化版本࿰…...
【量化策略】套利交易策略
【量化策略】套利交易策略 🚀量化软件开通 🚀量化实战教程 技术背景与应用场景 在金融市场中,套利交易策略是一种利用市场价格差异来获取无风险利润的交易方式。这种策略通常涉及同时买入和卖出不同市场上的相同或相似金融产品࿰…...
laravel11设置中文语言包
安装中文语言包 Laravel 11 默认没有内置完整中文语言包,推荐使用第三方维护的完整翻译: # 通过 Composer 安装语言包 composer require laravel-lang/common --dev# 发布中文语言文件到项目 php artisan lang:add zh_CN这会自动将中文语言文件生成到 l…...
Javaweb数据库多表查询 内连接 外连接 子查询
内连接 外连接 左外连接,左边是全部表 表名,即使没有匹配右边的数据,也要查询出来 子查询 案例 1.没有说所有的部门,所有的员工,用内连接(隐式内连接)...
欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、马氏距离理解学习
目录 一、欧氏距离(Euclidean Distance)公式:原理: 二、曼哈顿距离(Manhattan Distance)公式:原理: 三、切比雪夫距离(Chebyshev Distance)公式:原…...
【地图视界-Leaflet4】绘制自定义图形
引言 在前面的文章中,我们学会了如何在 Leaflet 中添加标记、弹窗以及切换不同的底图和叠加图层。但是在很多实际应用中,我们需要在地图上绘制多边形、圆形、矩形、折线等几何图形,用于标记区域、路径规划、范围分析等。 本篇文章将介绍如何…...
华为hcia——Datacom实验指南——STP工作基本原理及STP/RSTP基本功能配置
什么时候需要用到STP 在二层交换网络中,为了避免环路产生。 什么是STP STP生成树协议,是用来在冗余链路上消除二层环路。在众多交换机中,需要设置出一个根桥,其余的交换机称为非根桥,根桥是整个交换网络的核心&…...
游戏引擎学习第127天
仓库:https://gitee.com/mrxiao_com/2d_game_3 为本周设定阶段 我们目前的渲染器已经实现了令人惊讶的优化,经过过去两周的优化工作后,渲染器在1920x1080分辨率下稳定地运行在60帧每秒。这个结果是意料之外的,因为我们没有预计会达到这样的…...
PostgreSQL 创建表格
PostgreSQL 创建表格 在数据库管理中,表格(Table)是数据存储的基础。PostgreSQL作为一款强大的开源对象关系型数据库管理系统(ORDBMS),创建表格是其最基本的功能之一。本文将详细讲解如何在PostgreSQL中创…...
AF3 deduplicate_unpaired_sequences函数解读
AlphaFold3 msa_pairing模块的deduplicate_unpaired_sequences 函数的作用是移除 chain[msa] 中那些已经存在于 chain[msa_all_seq] 中的序列。换句话说,它保留那些不在 chain[msa_all_seq] 中的序列,从而确保未配对的 MSA 序列不会与配对的 MSA 序列重复…...
图像处理之图像边缘检测算法
目录 1 图像边缘检测算法简介 2 Sobel边缘检测 3 经典的Canny边缘检测算法 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 图像边缘检测算法简介 图像边缘检测是计算机视觉和图像处理中的基本问题,主要目的是提取图像中明暗变化明显的边缘细节…...
unity使用input system实现相机屏幕手势丝滑拖拽
input action设置 操作对象设置 camera 具体操作类 PlayerInputView类 using System.Collections; using UnityEngine; using UnityEngine.InputSystem; using TouchPhase UnityEngine.InputSystem.TouchPhase;public class FingerScale : MonoBehaviour {private Vector3…...
Leetcode-853. Car Fleet [C++][Java]
目录 一、题目描述 二、解题思路 Leetcode-853. Car Fleethttps://leetcode.com/problems/car-fleet/description/ 一、题目描述 There are n cars at given miles away from the starting mile 0, traveling to reach the mile target. You are given two integer array …...
建易WordPress
建易WordPress是一家专业的WordPress建站服务提供商,专注于为企业和个人提供一站式的WordPress网站建设、维护、托管、运营推广以及搜索引擎优化(SEO)服务。 服务内容 1. 网站建设 提供模板建站和定制开发两种服务,满足不同客户的需求。模板建站价格为…...
计算机三级网络技术备考(3)
【知识点补充:带宽是是链路的传输速率,宽带是一种服务】 第四章:路由设计技术 考点1:IP路由选择与路由汇聚 核心层:s0两个IP进行汇聚就行 汇聚层:聚合后两个以上的往前进几位(因为主机号不够因…...
工程化与框架系列(13)--虚拟DOM实现
虚拟DOM实现 🌳 虚拟DOM(Virtual DOM)是现代前端框架的核心技术之一,它通过在内存中维护UI的虚拟表示来提高渲染性能。本文将深入探讨虚拟DOM的实现原理和关键技术。 虚拟DOM概述 🌟 💡 小知识࿱…...
Java实现pdf文件压缩(aspose-pdf实现压缩、itextpdf去除aspose-pdf版权水印)
Java实现pdf文件压缩 时间换空间,实现pdf文件无损压缩。 1、依赖准备 市面上操作pdf文件的组件有spire.pdf.free、itextpdf、openpdf、pdfbox等,它们各有千秋。我们主要完成的场景为压缩,减少文件大小去优化存储、传输等。 在这里选取的组件…...
生态安全相关
概念:生态安全指一个国家具有支撑国家生存发展的较为完整、不受威胁的生态系统,以及应对内外重大生态问题的能力。 (1)国外生态安全的研究进展 国际上对生态安全的研究是从“环境”与“安全”之间的关系展开的。开始的阶段&#x…...
通过 ANSYS Discovery 进行 CFD 分析,增强工程设计
概括 工程师使用计算流体动力学 (CFD) 分析来研究和优化各种应用中的流体流动和传热分析。ANSYS Discovery 是一个用户友好的软件平台,使工程师能够轻松设置和解决 CFD 模型,并能够通知设计修改 在这篇博文中,我们将重点介绍在 Ansys Disc…...
2. 在后端代码中加入日志记录模块
1. 说明 日志模块基本上是每一个软件系统开发中必不可少的,主要用于持久记录一些代码运行中的输出信息,辅助编码人员进行代码调试,以及后期软件上线运行报错分析。在Python中加入日志模块比较简单,只需要借助logging和RotatingFi…...
MySQL锁分类
一、按锁的粒度划分 全局锁 定义:锁定整个数据库实例,阻止所有写操作,确保数据备份一致性。加锁方式:通过FLUSH TABLES WITH READ LOCK实现,释放需执行UNLOCK TABLES。应用场景:适用于全库逻辑备份…...
软件测试之白盒测试知识总结
🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 概念与定义 白盒测试:侧重于系统或部件内部机制的测试,类型分为分支测试(判定节点测试)、路径测试、语句测试…...
看视频学习方法总结
以下是提高教学视频吸收率的系统性方法,结合认知科学原理和实际学习场景,帮助您最大化学习效果: 一、观看前的黄金准备阶段 60秒快速扫描法 用1分钟快速浏览视频目录、章节标题和简介,建立知识框架。荷兰伊拉斯姆斯大学实验表明&…...
nvm的学习
学习 nvm(Node Version Manager) 是掌握 Node.js 开发的关键技能之一。以下是系统的学习路径和实战指南,涵盖从基础到进阶的内容: 一、基础入门 1. nvm 的核心作用 多版本共存:安装和管理多个 Node.js 版本ÿ…...
OpenCV计算摄影学(5)处理一系列图像(例如视频帧)的非局部均值去噪的函数fastNlMeansDenoisingColoredMulti()的使用
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 对用于彩色图像序列的 fastNlMeansDenoisingMulti 函数的修改。 cv::fastNlMeansDenoisingColoredMulti 函数是 OpenCV 中用于处理一系列图像&am…...
mysql安装教程,超详细图文教程(附安装包)MySQL8.0安装教程
文章目录 前言一、MySQL安装包下载二、mysql安装教程 前言 本教程旨在为大家提供详细、清晰的 mysql安装教程,帮助你轻松跨过安装门槛,顺利开启数据库管理与开发的精彩之旅。 一、MySQL安装包下载 MySQL 是一款备受欢迎的开源关系型数据库管理系统&…...
Spark内存迭代计算
一、宽窄依赖 窄依赖:父RDD的一个分区数据全部发往子RDD的一个分区 宽依赖:父RDD的一个分区数据发往子RDD的多个分区,也称为shuffle 二、Spark是如何进行内存计算的?DAG的作用?Stage阶段划分的作用? &a…...
Odoo免费开源CRM技术实战:从商机线索关联转化为售后工单的应用
文 / 开源智造 Odoo金牌服务 Odoo:功能强大且免费开源的CRM Odoo 引入了一种高效的客户支持管理方式,即将 CRM 线索转换为服务台工单。此功能确保销售和支持团队能够无缝协作,从而提升客户满意度并缩短问题解决时间。通过整合 CRM 模块与服…...
对seacmsv9进行sql注入,orderby,过滤information_schema
对seacmsv9进行sql注入,orderby,过滤information_schema 1.对seacmsv9进行sql注入 海洋影视管理系统(seacms,海洋cms)是一套专为不同需求的站长而设计的视频点播系统,采用的是 php5.Xmysql 的架构 seacm…...
跨AWS账户共享SQS队列以实现消息传递
在现代分布式系统中,不同的服务和组件通常需要进行通信和协作。Amazon Simple Queue Service (SQS)提供了一种可靠、可扩展且完全托管的消息队列服务,可以帮助您构建分布式应用程序。本文将介绍如何在一个AWS账户(账户A)中创建SQS队列,并授权另一个AWS账户(账户B)中的用户和角色…...
Starrocks 写入报错 primary key memory usage exceeds the limit
背景 本文基于 StarRocks 3.3.5 单个Starrocks BE配置是 16CU 32GB 在Flink Yaml CDC 任务往 Starrocks写数据的过程中,突然遇到了primary key memory usage exceeds the limit 问题,具体如下: java.lang.RuntimeException: com.starrocks.…...
【Java】I/O 流篇 —— 打印流与压缩流
目录 打印流概述字节打印流构造方法成员方法代码示例 字符打印流构造方法成员方法代码示例 打印流的应用场景 解压缩/压缩流解压缩流压缩流 Commons-io 工具包概述Commons-io 使用步骤Commons-io 常见方法代码示例 Hutool 工具包 打印流 概述 分类:打印流一般是指…...
刷屏(0和1)
计算机有一个“好东西”,它就是2进制,虽然无法快速转换,but可以通过编程来实现。 附代码: #include <bits/stdc.h> using namespace std; int main() {int a,b,c;cout<<" …...
keil主题(vscode风格)
#修改global.prop文件,重新打开keil即可 # Keil uVision Global Properties File # This file is used to customize the appearance of the editor# Editor Font editor.font.nameConsolas editor.font.size10 editor.font.style0# Editor Colors editor.backgro…...