【计算机网络】窥探计网全貌:说说计算机网络体系结构?
标签 | 难度 | 考察频率 |
综合题 | ⭐⭐⭐ | 60% |
这个问题在计算机网络知识体系中是一个比较重要的问题,只有完整地了解计算机网络的体系结构才能清晰地认识网络的运行原理。
在回答这个问题时,笔者认为有几个比较重要的点:
- 首先一定要分清楚前置条件,明确面试官问的是 OSI 模型还是 TCP/IP 模型。
- 注意各层的顺序一定要是对的。
- 比较清晰地回答出各层级的功能以及之间的协作关系。
- 最好回答出各层级中常见的协议或者特点。
系统性学习过计算机网络的同学应该都能找到这个问题的一个非常明显的“坑”在哪,那就是在讨论计算机网络体系结构时,我们往往会根据模型不同给出不同的分类情况,比如 OSI 七层模型、TCP/IP 四层模型等。
笔者就曾经在这个地方吃过亏,当时并不是很清楚这几种分类,在被问到网络分层问题时一律回答的都是五层,在后面学习了之后才发现这个重要的问题。
该问题其实还可以表示成以下几种情况:
- OSI 七层模型是什么?都有哪七层?各层的功能是什么?
- TCP/IP 五层模型是什么?都有哪七层?各层的功能是什么?
- 五层体系结构是什么?都有哪七层?各层的功能是什么?
- OSI 模型有几层?TCP/IP 模型有几层?
- 了解每一层对应的协议吗?
- ……
这个问题的变式还有很多,但是只要掌握了整个问题的核心内容,无论怎么变化回答的逻辑是不会变的。
下面笔者将从 TCP/IP 五层模型 出发,详细讲解各层级的功能、不同模型中各层级的区别以及在面试时应该如何回答这个问题。
为什么要分层?
在正式学习各层级之间的功能之前,我们先来搞明白这样一个问题,那就是为什么要分层?为什么不能把所有的功能集中到一起,这样不是更简单省事吗。
其实不是这样的,把所有的功能集中到一起在初期开发的过程中会给我们一种简单省事的错觉,但是在后期工程变大以及维护时就会发现其中的弊端,内容过多导致在出现问题时不好修改,出现牵一发而动全身的情况。
简化系统设计
由于计算机网络是一个极为复杂的系统,设计到众多的硬件、软件和通信协议。将其划分为若干个层次,每个层次专注于特定的功能,使得网络系统的设计、实现和维护变得更加简单和清晰。例如,在互联网中,我们不需要在设计应用程序时考虑底层的物理传输细节,只需要关注应用层的功能实现,底层的工作由其他层次负责。这样,不同层次可以独立进行设计和改进,降低了整个系统的复杂度。
实现模块化和分工协作
分层结构使得网络系统可以按照功能模块进行划分,不同的层次由不同的专业团队或人员负责开发和维护。每个层次都有明确的接口和功能定义,层与层之间通过标准的接口进行通信。这就好比汽车制造,不同的工厂分别负责生产发动机、底盘、车身等部件,然后通过标准的接口进行组装。例如,网络设备制造商可以专注于开发物理层和数据链路层的设备,如网卡、交换机等;软件开发商则可以专注于应用层和传输层的软件开发,如浏览器、电子邮件客户端等。这种分工协作提高了开发效率和系统的可维护性。
提高系统的可拓展性
在计算机行业中,我们常常会提到这样一句话:“计算机科学领域的任何问题,都是可以通过增加一个间接的中间层来解决的。”
随着技术的发展和用户需求的增加,网络系统需要不断进行扩展和升级。分层结构使得系统的扩展变得更加容易,只需要在相应的层次上进行修改或添加新的功能,而不会影响到其他层次的正常运行。例如,当出现新的网络应用需求时,只需要在应用层开发新的应用程序,而不需要对底层的网络结构进行大规模的改动。同样,当网络传输技术发生变化时,只需要更新物理层和数据链路层的设备和协议,上层的应用程序可以继续正常运行。
促进标准化
分层结构为网络协议的标准化提供了良好的基础。每个层次都有明确的功能和接口定义,不同的厂商可以根据这些标准来开发自己的产品,从而保证了不同厂商的产品之间的兼容性和互操作性。例如,国际标准化组织(ISO)制定的开放系统互连(OSI)参考模型,为计算机网络的标准化提供了一个通用的框架。不同的厂商按照这个标准来开发网络设备和软件,使得不同的网络系统可以相互连接和通信。
几种分类方式
计算机网络体系结构通过复杂的网络通信分解成不同的层次,来标准化交互的过程。常见的模型包括 OSI 七层模型、TCP/IP 四层模型和五层体系结构。
- OSI 是理论上的网络通信模型,这模型很牛逼。但是现在基本是存在教科书的啦,学习网络的同学都是知道有这个模型,实际情况使用很少的。
- TCP/IP 是实际应用层面上的网络通信模型,在日常工作中接触最多的是上两层,偶尔会去触碰网络层。网络接口层不是软件开发工程师的工作范围。当然如果是一些专门的网络安全部门,网管等岗位,下面几层就是非常熟悉的。
- 五层结构是为了方便理解和记忆。
应用层
最上层的,也是我们能直接接触到的就是应用层(Application Layer)。
应用层时计算机网络与用户交互的接口或界面,直接向用户提供服务。
我们的电脑或手机使用的应用软件都是在应用层实现的。那么,当两个不同的设备的应用需要通信的时候,应用九八应用数据传输给下一层,也就是传输层。
应用层只需要专注于为用户提供应用功能,比如 HTTP、FTP、Telnet、DNS、SMTP等。
所以很明了,应用层解决的问题就是如何为用户提供服务,以及提供高效、可靠、满意的服务。应用层是不用去关心数据是如何传输的,就类似于我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不需要关心快递是如何被运输的。
而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。
总结下,应用层是为用户提供服务接口或者界面,同时要解决服务的高效、可靠、满意。
在 OSI 七层模型中,应用层和传输层之间还会有下面两个层级,即表示层和会话层。
表示层
表示层要解决的问题就是确保一个系统发送的信息可以被另一个系统的应用层读取。它负责的是数据的转换、压缩和加密。
例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
会话层
管理用户的会话,控制网络上两节点间的会话和数据交换的管理。它负责建立、维护和终止会话。
通过传输层(端口号:传输端口接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是 IP 也可以是 MAC 或者是主机名)。
传输层(段)
应用层的数据包会传给传输层(Transport Layer)是为了给应用层提供网络支持的。
负责端到端的通信,是面向网络通信的第三层和面向信息处理的高三层之间的中间一层,起到桥梁作用。很明显了,传输层要解决的问题就是端到端的传输问题。
在传输层会有两个传输协议,分别是 TCP 和 UDP。
TCP 的全称为传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。
UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。当然,UDP 也可以实现可靠传输,把TCP的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。
应用需要传输的数据可能会非常大,如果直接传输就不好控制,因此当传输层的数据包大小超过 MSS(TCP最大报文段长度),就要将数据包分块,这样即使中途有一个分块丢失或损坏了,只需要重新发送这一个分块,而不用重新发送整个数据包。在 TCP 协议中,我们把每个分块称为一个 TCP 段(TCP Segment)。
当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是端口。
比如 80 端口通常是 Web 服务器用的,22 端口通常是远程登录服务器用的。而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进程分配临时的端口号
由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应用。
思考一个问题:网络层不是已经把数据转发到对应的主机了吗,为什么还要需要传输层?
位于两台网络主机间的真正数据通信主体不是这两台主机,而是两台主机中的各种网络应用进程,也就是应用程序。一台主机上有很多应用程序,很多应用程序都在进行网络通信,这时候就必须使用到传输层的知识去解决了。
怎样完成端到端的传输呢?分为两个步骤:
- 一是虚拟传输连接的建立(此处仍仅针对面向连接的传输层协议);
- 二是源端用户数据沿着传输连接传送到目的端;
在整个数据传输过程中,传输层服务需要完成以下8个方面的基本功能:传输层寻址、传输连接建立、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复。
总结下,传输层主要是为了解决端到端(这里的端到端指的是进程到进程)的通信,起到网络通信桥梁作用。
网络层(包)
网络层也被称为中转层,是网络体系结构中非常重要的一层,在技术上又是非常复杂的一层,因为它既要解决不同网络的节点间通信的路由和协议识别问题,又要通过路由选择策略解决网络拥塞问题,尽可能提高网络通信的可靠性。
网络层解决的主要问题是,从A主机把数据运送到B主机是走高速呢、飞机呢、还是火车呢或者是多种混合的方案呢。一句话就是,网络层关注的是如何将分组从源端沿着网络路径传送到目的端(这个端指的是主机不是应用程序)。
为了实现这个目标,网络层必须知道通信子网的拓扑结构,并且在拓扑结构中选择适当的路径。同时网络层还必须谨慎地选择路由路径,以避免发生某些通信线路和路由器负载过重,而其他线路和路由器空闲的情形。
总结下,网络层主要是为了解决不同网络之间数据传输和转发问题。
数据链路层(帧)
物理层中也有许多规程或协议,但它们是用来构建物理传输线路、建立物理意义的网络通信,不是用来控制数据传输的。
设计数据链路层的主要解决的问题就是在原始的、有差错的物理传输线路的基础上,采取差错检测、差错控制与流量控制等方法,将有差错的物理线路改进成逻辑上无差错的数据链路,以便向它的上一层(网络层)提供高质量的服务。一句话总结就是控制数据传输。
总结下,数据链路层是为了解决数据传输的控制作用。
物理层 (比特流)
物理层位于各计算机网络体系结构的最底层,主要负责在物理介质上为数据链路层提供原始比特流传输的物理链接。
物理层解决的问题就是数据传输。上面的所有层都是封装数据和管理,物理层是传输数据的唯一出口,所有数据到达物理层都会变成二进制的载波信号。
总结下,物理层就是真正传输数据。
如何回答?
OSI 七层模型
OSI(Open System Interconnection)七层参考模型是一个网络架构模型,有网络标准化组织(ISO)提出,用于描述和标准化计算机网络的功能和过程。这七层从低到高分别是:
- 应用层:最靠近用户的层,负责处理待定的应用程序细节。这一层提供了网络服务与用户应用软件之间的接口。例如:Web 浏览器、FTP 客户端和服务器、电子邮件客户端等。
- 表示层:确保一个系统发送的信息可以被另一个系统的应用层读取,它负责数据的转换、压缩和加密。例如:确保数据从一种编码格式转换为另一种,如 ASCII 到 EBCDIC。
- 会话层:管理用户的会话,控制网络上两节点间的会话和数据交换的管理。它负责建立、维护和终止会话。例如:建立一个会话令牌,以便在网络上的两个节点之间传递。
- 传输层:提供端到端的通信服务,保证数据的完整性和正确顺序。这一层包括 TCP 和 UDP。
- 网络层:负责在多个网络之间进行数据传输,确保数据能够在复杂的网络结构中找到从源到目的地的最佳路径,这层使用的是 IP(Internet Protocol)协议。
- 数据链路层:在物理连接中提供可靠的传输,负责建立和维护两个相邻节点的链路。包括帧同步、MAC(媒体访问控制)。
- 物理层:负责在物理媒介上实现原始的数据传输,比如电缆、管线和无线信号传输。设计的内容包括电压、接口、针脚、电缆的规格和传输速率。
TCP/IP 四层模型
TCP/IP 四层模型是互联网的核心,定义了一系列协议和标准,确保设备可以可靠地进行数据传输。
- 应用层:直接面向用户和应用程序,提供各种网络服务。它包含了用于特定应用的协议和服务,如 HTTP、FTP、SMTP 等。
- 传输层:提供端到端的通信服务,确保数据的可靠传输。它负责分段数据、流量控制、错误检测和纠正。常见的传输层协议有 TCP 和 UDP。
- 网际层:或者叫网络层,负责在不同网络之间路由数据包,提供逻辑地址(IP 地址)和网络寻址功能,用于处理数据包的分组、转发和路由选择,确保数据可以从源端传输到目的端。
- 网络接口层:或者叫链路层,负责奖数字信号在物理通道中准确传输,定义了如何在单一网络链路上传输数据,如何处理数据帧的发送和接受,包括物理地址(MAC 地址)的解析。
五层体系结构
- 应用层:作为网络服务和最终用户之间的接口。它提供了一系列供应用程序使用的协议,如 HTTP(网页)、FTP(文件传输)、SMTP(邮件传输)等。使用户的应用程序可以访问网络服务。
- 传输层:提供进程到进程的通信管理,这一层确保数据按顺序、无错误地传输。主要协议包括 TCP 和 UDP。
- 网络层:负责数据包从源到目的地的传输和路由选择,包括跨越多个网络(即互联网)。它使用逻辑地址(如 IP 地址)来唯一标识设备。路由器是网络层设备。
- 数据链路层:确保从一个节点到另一个节点的可靠、有效的数据传输。交换机、网桥是数据链路层设备。
- 物理层:电缆、光纤、无线电频谱、网络适配器等。
相关文章:
【计算机网络】窥探计网全貌:说说计算机网络体系结构?
标签难度考察频率综合题⭐⭐⭐60% 这个问题在计算机网络知识体系中是一个比较重要的问题,只有完整地了解计算机网络的体系结构才能清晰地认识网络的运行原理。 在回答这个问题时,笔者认为有几个比较重要的点: 首先一定要分清楚前置条件&am…...
【MySQL】DATEDIFF()函数使用
DATEDIFF 函数用于计算两个日期之间的差值,以天为单位 DATEDIFF 函数返回一个整数,表示 date1 和 date2 之间的天数。如果 date1 在 date2 之前,结果为负数;如果在 date2 之后,结果为正数;如果相等…...
计算机网络学习笔记
第1课 绪论、传输介质 【知识点回顾】 两种导线可以减小电磁干扰: 双绞线(分为非屏蔽双绞线、屏蔽双绞线)(RJ-45用)同轴电缆(短距离使用)网络通信的基本单位:位(bit&…...
Spring Boot性能提升的核武器,速度提升500%!
虚拟线程是 Java 21 引入的一个新特性,用于简化并发编程。它与传统的操作系统线程相比,具有显著的优势: 轻量级:虚拟线程由 JVM 管理,而非操作系统,因此它们的内存占用和创建成本远低于传统线程。理论上&am…...
zig 安装,Hello World 示例
1. 安装 Zig 首先,你需要在你的计算机上安装 Zig 编译器。你可以从 Zig 官方网站 下载适合你操作系统的版本。 安装完成后,你可以在终端中运行以下命令来检查 Zig 是否安装成功: zig version如果一切正常,它会显示 Zig 的版本信…...
【数据库系统概论】第5章 数据库完整性【!触发器】
目录 5.1数据库完整性概述 5.2 实体完整性 5.3 参照完整性 5.4 用户定义的完整性 属性上的约束 1. 列值非空(NOT NULL) 2. 列值唯一(UNIQUE) 3. 检查列值是否满足条件(CHECK) 元组上的约束 5.5 完…...
Linux中通过frp实现内网穿透
1、准备工作 准备一台公网服务器(云服务器),推荐阿里云或者腾讯云都可以 需要下载好frp安装包Linux端的和Windows端的安装包 网址:Releases fatedier/frp (github.com)https://github.com/fatedier/frp/releases 2、下载frp_0…...
Vscode辅助编码AI神器continue插件
案例效果 1、安装或者更新vscode 有些版本的vscode不支持continue,最好更新到最新版,也可以直接官网下载 https://code.visualstudio.com/Download 2、安装continue插件 搜索continue,还未安装的,右下脚有个Install,点击安装即可 <...
上海亚商投顾:沪指探底回升微涨 机器人概念股午后爆发
上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 一.市场情绪 市场全天探底回升,沪指盘中跌超1.6%,创业板指一度跌逾3%,午后集体拉升翻红…...
LeetCode 3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口
【LetMeFly】3297.统计重新排列后包含另一个字符串的子字符串数目 I:滑动窗口 力扣题目链接:https://leetcode.cn/problems/count-substrings-that-can-be-rearranged-to-contain-a-string-i/ 给你两个字符串 word1 和 word2 。 如果一个字符串 x 重新…...
ssm旅游攻略网站设计+jsp
系统包含:源码论文 所用技术:SpringBootVueSSMMybatisMysql 需要源码或者定制看文章最下面或看我的主页 目 录 目 录 III 1 绪论 1 1.1 研究背景 1 1.2 目的和意义 1 1.3 论文结构安排 2 2 相关技术 3 2.1 SSM框架介绍 3 2.2 B/S结构介绍 3 …...
前端学习-环境this对象以及回调函数(二十七)
目录 前言 目标 环境对象 作用 环境对象this是什么? 判断this指向的粗略规则是什么? 回调函数 目标 常见的使用场景 综合案例:Tab任务栏切换 总结 前言 男儿何不带吴钩,收取关山五十州 目标 能够分析判断函数运行在不…...
计算机网络-数据链路层(虚拟局域网VLAN)
2.6 虚拟局域 2.6.1 虚拟局域网概述 以太网交换机连接的各个网络同属于一个广播域,随着以太网的规模扩大,广播域也会相应的扩大,巨大的广播域会带来巨大的弊端。 广播风暴 难以治理 潜在的安全问题 TCP/IP协议下会进行广播的协议:…...
Python贪心
贪心 贪心:把整体问题分解成多个步骤,在每个步骤都选取当前步骤的最优方案,直至所有步骤结束;每个步骤不会影响后续步骤核心性质:每次采用局部最优,最终结果就是全局最优如果题目满足上述核心性质…...
CSS 盒模型
盒模型 CSS盒模型是网页布局的核心概念之一,它描述了网页元素的物理结构和元素内容与周围元素之间的关系。根据W3C规范,每个HTML元素都被视为一个矩形盒子,这个盒子由以下四个部分组成: 内容区(Content areaÿ…...
【linux】vi编辑文件及readonly文件修改读写权限方法
板端vi修改文件: 1、vi 文件路径 vi mnt/eol/config/oem_eol.xml2、按 i进入修改状态,此时可以修改配置文件 3、按 esc退出修改状态,并按"wq!保存 问题:readonly文件无法直接vi修改 方案: 1、mount -o remoun…...
Git使用笔记
Git 版本控制 一、Git 介绍二、Git 使用1. 安装及配置2. 使用方法3. Git 命令3. 历史版本回退4. 分支 (Branch) 三、远程仓库1. SSH公钥连接Gitee2. 推送到远程仓库 一、Git 介绍 常见版本控制软件:集中式(CVS、SVN),分布式&#…...
mermaid大全(语法、流程图、时序图、甘特图、饼图、用户旅行图、类图)
⚠️ 有些网站的mermaid可能不完整,因此下面教程中可能有些语法是无效的。 😊亲测Typora软件均可以显示。 1. 介绍 Mermaid是一个基于JavaScript的图表绘制工具,它使用类似Markdown的语法来创建和修改各种类型的图表。以下是关于Mermaid的详…...
慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)
3.UI模板 当我们选择一条已经建好的业务对象点击功能按钮【UI模板】进入该业务对象的UI显示配置界面。 右边填写的是UI模板的编码以及对应名称;菜单界面配置以业务对象UI模板编码获取显示界面。 3.1【列表-按钮】 展示的对应业务对象界面的功能按钮配置࿱…...
vue3+ts+element-plus 输入框el-input设置背景颜色
普通情况: 组件内容: <el-input v-model"applyBasicInfo.outerApplyId"/> 样式设置: ::v-deep .el-input__wrapper {background-color: pink; }// 也可以这样设置 ::v-deep(.el-input__wrapper) {background-color: pink…...
python迷宫寻宝 第6关 安全策略
地图: 1、体力不足去找终点,体力足则原地不动 import api## 判断是否需要离场的函数 # 体力足返回False,体力不足返回True def should_leave():# 拿到我离终点的距离e_row api.get.exit(what"row")e_col api.get.exit(what"…...
【计算机网络】lab7 TCP协议
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀计算机网络_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录 1. 实验目的…...
Monorepo设置:新手指南
Monorepo是一种项目代码管理方法,指在单个代码仓库中管理多个项目,有助于简化代码共享、版本控制、构建和部署的复杂性,并提供更好的可重用性和协作性。 简单理解:所有项目都在一个代码仓库中 📦,但这并不意…...
HTTP 请求与响应的结构
一、引言 在当今数字化的时代,网络通信如同空气一般无处不在,而HTTP协议则是网络世界中最为重要的基石之一。当我们在浏览器中输入一个网址,轻松浏览网页、观看视频、下载文件或是进行在线购物等操作时,背后HTTP协议都在默默地发…...
计科高可用服务器架构实训(防火墙、双机热备,VRRP、MSTP、DHCP、OSPF)
一、项目介绍 需求分析: (1)总部和分部要求网络拓扑简单,方便维护,网络有扩展和冗余性; (2)总部分财务部,人事部,工程部,技术部,提供…...
Soildworks的学习【2025/1/12】
右键空白处,点击选项卡,即可看到所有已调用的选项卡: 点击机械小齿轮选项卡,选择文档属性,选择GB国标: 之后点击单位,选择MMGS毫米单位: 窗口右下角有MMGS,这里也可以选择…...
ORACLE-表空间和分区控制
--查询最后更新的统计信息时间 SELECT table_name, last_analyzed FROM dba_tables WHERE table_name 表名; --更新统计信息 -----按分区 BEGIN DBMS_STATS.GATHER_TABLE_STATS( ownname > XI_SF, -- 模式名称 tabname > 表名, -- 表名称 partnam…...
C# 与 Windows API 交互的“秘密武器”:结构体和联合体
一、引言 在 C# 的编程世界里,当我们想要深入挖掘 Windows 系统的底层功能,与 Windows API 打交道时,结构体和联合体就像是两把神奇的钥匙🔑 它们能够帮助我们精准地操控数据,实现一些高级且强大的功能。就好比搭建一…...
【数字化】华为-用变革的方法确保规划落地
导读:华为在数字化转型过程中,深刻认识到变革的必要性,并采用了一系列有效的方法确保转型规划的有效落地。华为认为,数字化转型不仅仅是技术层面的革新,更是企业运作模式、流程、组织、文化等深层次的变革。数字化转型…...
SpringData-Redis缓存
Spring Framework是领先的全堆栈Java/JEE应用程序框架。它提供了一个轻量级容器和一个通过使用依赖注入、AOP和可移植服务抽象实现的非侵入性编程模型。 NoSQL存储系统为传统RDBMS提供了一种横向可扩展性和速度的替代方案。就实现而言,键值存储代表NoSQL空间中最大…...
大语言模型兵马未动,数据准备粮草先行
从OpenAI正式发布ChatGPT开始,大型语言模型(LLM)就变得风靡一时。对业界和吃瓜群众来说,这种技术最大的吸引力来自于理解、解释和生成人类语言的能力,毕竟这曾被认为是人类独有的技能。类似CoPilot这样的工具正在迅速…...
跳表和Mysql联合索引的最左原则和索引下推的优化
文章目录 跳表(Skip List)关键特性跳表的结构示意图跳表的查询效率为什么 MySQL 不使用跳表而使用 B 树?跳表的实际应用场景 总结 MySQL 联合索引的最左匹配原则最左匹配原则的规则示例:创建联合索引查询示例及索引使用情况设计联…...
Android切换语言不退出App
1.需求 实现用户选择语言(未点击下一步),更新当前界面UI,点击下一步后,更新App的语言,并进行保存。 实现目标: 1.设置App的语言,本地进行保存 2.updateResources更新本地语言配置…...
Unity编程与游戏开发-编程与游戏开发的关系
游戏开发是一个复杂的多领域合作过程,涵盖了从创意构思到最终实现的多个方面。在这个过程中,技术、设计与美术三大核心要素相互交织,缺一不可。在游戏开发的过程中,Unity作为一款强大的跨平台游戏引擎,凭借其高效的开发工具和庞大的社区支持,成为了很多游戏开发者的首选工…...
【Git】问题汇总
在push的时候显示 protocol error: bad line length 8192 我在本地创建了一个gogs服务器,现在正在上传代码,但是出现了上述的这个问题。 解决方法 设置本地http.postBuffer(待验证) 方法一:全局配置 git config --g…...
搭建docker私有化仓库Harbor
Docker私有仓库概述 Docker私有仓库介绍 Docker私有仓库是个人、组织或企业内部用于存储和管理Docker镜像的存储库。Docker默认会有一个公共的仓库Docker Hub,而与Docker Hub不同,私有仓库是受限访问的,只有授权用户才能够上传、下载和管理其中的镜像。这种私有仓库可以部…...
修改sshd默认配置,提升安全
对于Linux服务器,特别是暴露在公网的服务器,会经常被人扫描、探测和攻击。包括通过ssh访问登录攻击。对此,对默认的sshd配置进行调整,提升安全。 下面以CentOS 7.9为例说明: 一、常见安全措施 以root用户编辑vim /e…...
formik 的使用
礼记有言:独学而无友,则孤陋而寡闻 让我们一起了解更多便捷方法,缩短开发时间去摸鱼,嘿嘿。 框架:react 在写表单的时候,我不太喜欢把验证写的很繁琐,这里讲介绍,验证表单的非常好用…...
【学习笔记】理解深度学习的基础:机器学习
1. 机器学习基础 1.1 机器学习的定义与重要性 定义:深度学习是机器学习的一种特定形式。为了深入理解深度学习,必须牢固掌握机器学习的基本原理。机器学习算法是一种能够从数据中学习的算法,通过经验E在任务T上提高性能度量P(Mi…...
Docker 基础知识
背景 传统的linux的环境部署 命令多步骤多安装版本多使用docker的话,一个命令就可以全部搞定安装linux 之前安装过,所以直接使用的开罩进行复制的如果之前配置过静态地址,需要改成IPV4静态地址访问安装docker 参考连接:https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBk…...
pyqt鸟瞰
QApplication是Qt框架中的一个类,专门用于管理基于QWidget的图形用户界面(GUI)应用程序的控制流和主要设置。QApplication类继承自QGuiApplication,提供了许多与GUI相关的功能,如窗口系统集成、事件处理等。 QAppli…...
Linux syslog 运行机制
Busybox的syslogd认识与使用 syslogd 的基本工作原理: syslogd 是一个系统日志守护进程,它接收来自各种进程和系统服务的日志消息,并根据配置将这些消息存储到不同的日志文件中。 syslogd日志记录器由两个守护进程(klogd&#x…...
ZYNQ初识10(zynq_7010)UART通信实验
基于bi站正点原子讲解视频: 系统框图(基于串口的数据回环)如下: 以下,是串口接收端的波形图,系统时钟和波特率时钟不同,为异步时钟,,需要先延时两拍,将时钟同…...
day38 tcp 并发 ,linux下的IO模型----IO多路复用
TCP 并发 由于tcp协议只能实现一对一的通信模式。为了实现一对多,有以下的的处理方式 1. 多进程 开销大 效率低 2. 多线程 创建线程需要耗时 3. 线程池 多线程模型创建线程耗时问题,提前创建 4. IO多路复用 在不创建进程和线程的前提下,对…...
el-date-picker 禁用一个月前、一个月后(当天之后)的时间 datetimerange
文章目录 功能需求今天是 2025-01-09示例1示例2 代码 Vue2 功能需求 时间范围选择器,最大时间选择尺度为一个月。 今天是 2025-01-09 示例1 选择 2025-01-02 日 禁用未来日期(2025-01-09之后日期) 禁用上月2号(31日之前&#…...
ES6的高阶语法特性
一、模板字符串的高级用法 1.1.模板字符串的嵌套 模板字符串的嵌套允许在一个模板字符串内部再嵌入一个或多个模板字符串。这种嵌套结构在处理复杂数据结构或生成具有层级关系的文本时非常有用。 1. 嵌套示例 假设我们有一个包含多个对象的数组,每个对象都有名称、…...
数据在内存的存储
数据类型介绍 前面我们已经学习了基本的内置类型: char //字符数据类型 1字节 打印%c short //短整型 2字节 打印%hd int //整形 4字节 打印%d long long int //长整型 4/8字节 打印%ld l…...
【微服务】面试题 6、分布式事务
分布式事务面试题讲解 一、问题背景与解决方案概述 因微服务项目涉及远程调用可能引发分布式事务问题,需解决。主流解决方案有阿里 Seata 框架(含 XA、AT、TCC 模式)和 MQ。 二、Seata 框架关键角色 事务协调者(TC)&…...
VMware中Ubuntu如何连接网络?安排!
一、设置NAT模式 1、关闭Ubuntu虚拟机: 确保Ubuntu已经完全关机,而不是挂起或休眠状态。 2、编辑虚拟网络设置: 在VMware主界面点击“编辑”菜单,选择“虚拟网络编辑器”。 如果需要,选择VMnet8 (NAT模式)并点击“更改…...
最近在盘gitlab.0.先review了一下docker
# 正文 本猿所在产品的代码是保存到了一个本地gitlab实例上,实例是别的同事搭建的。最近又又又想了解一下,而且已经盘了一些了,所以写写记录一下。因为这个事儿没太多的进度压力,索性写到哪儿算哪儿,只要是新了解到的…...