TCP/IP卷一详解第二章Internet地址结构概要
在这一章中介绍了Internet中使用的网络层地址(也就是IP地址),还有如何为Internet中的设备分配地址,以及各种类型的地址等等……
一、IP地址的表示
为大家所常见的有IPV4地址和IPV6地址,但在IPV4地址中,通常采用所谓的点分四组或点分十进制表示法,例如192.168.56.101,点分四组表示法由四个用点分隔的十进制组成,每个数字是个非负整数,范围在[0,255]代表整个IP地址的四分之一,IP地址为二进制组成,IPV4由32位二进制组成,八个八个分为一组,一共分为四组数字中间用点表示,例如:192.168.56.100即由1100 0000.1010 1000.0011 1000.0110 0100表示,为了方便我们看而转化为十进制显示出来,二进制转化为十进制看二进制有多少位为一组,例如IPV4中的八位一组,则0000 0000,从右到左第一个0到第二个0分别为2的0次方,2的1次方,2的2次方,2的三次方……2的7次方,依次为1 2 4 8 16 32 64 128,当二进制为一时将其中为1的部分的十进制数相加得到该组二进制的十进制数,若有n位二进制,则从左到右第x位上的二进制为1时该位十进制为2的(x-1)次方,这n位二进制范围为[0,2的n次方-1]即最大为2的n次方-1。则IP地址十进制与二进制之间的关系即为如此。
因为IPV4随着互联网的发展,越来越多的设备需要分配IP导致不够用,随后又有了IPV6地址,该地址长度为128位是IPV4的四倍长,IPV6地址的传统表示方法采用 块 或 字段 的四个十六进制数,这些 块 或 字段 的数由冒号分隔,例如一个包含八个块的IPV6地址可写为5f05:2000:80ad:5800:0058:0800:2023:1d71采用的十六进制,该八个 块 每个 块 由十六位二进制组成,在十六位二进制中可分为四个四个为一体组成一个十六进制,方法依然是相加,但是与十进制不同是,超过10和包含10的时候不是用数字10或11等等去表示而是用a,b,c等去表示,这里a=10,b=11,c=12,d=13,e=14,f=15,所以一个十六进制的范围为[0,15]==> [0,f]来表示。
由于IPV6太长了看着不好看,又有了一些取得共识的IPV6地址简化表示法被标准化。
1,一个块中前导的零不必书写。
2,全零的块可以省略,用::两个冒号代替。例如IPV6地址0:0:0:0:0:0:0:1可简写为::1,同样如此12:13:0:0:0:0:0:1可简写为12:13::1。为了避免出现歧义,::只能在一个IPV6地址中使用一次 。(只能用于影响最大的地方"压缩最多的0",如果多个块包含相同长度的0,顺序靠前的块将被替换为::)
3.在IPV6地址中嵌入IPV4地址可使用混合符号形式,紧接着IPV4部分的地址块的值为ffff,地址的其余部分使用点分四组格式。例如,IPV6地址 ::ffff:10.0.0.1可表示IPV4地址10.0.0.1。这被称为IPV4映射的IPV6地址。
4.IPV6地址的低32位通常采用点分四组表示法。因此,IPV6地址 ::0101:f001相当于地址::1.2.240.1。这被称为IPV4兼容的IPV6地址。需要注意IPV4兼容地址与IPV4映射地址不同,它们只能用类似IPV4地址的方式书写或由软件处理方面给人以兼容的感觉。这种最初用于IPV4和IPV6之间的过渡计划,但现在不再需要。
还有注意的一点是,a~f的十六进制数字应该用小写表示。
二、基本的IP地址结构
IPV4地址空间有2的32次方-1=4 294 967 296个可能的地址,而IPV6有2的128次方-1=340 282 366 920 938 463 463 374 607 431 768 211 456个地址,由于地址数量太大,尤其是IPV6,可以方便的将这些地址空间划分为块。IP地址可根据类型和大小分组。大多数IPV4地址被细分为一个地址,用于识别Internet或某些专用的内联网的计算机网络接口。这些地址称为单播地址。IPV4地址空间大部分是单播地址空间。IPV6地址空间大部分目前未使用。除了单播,其他类型的地址包括广播,组播和任播地址。
地址中的一些连续位称为网络号,其余位称为主机号地址空间的划分涉及五大类。每类都基于网络中可容纳的主机数量,确定在一个32位的IPV4地址中分配给网络号和主机号的位数,如图所示
类由地址中的头几位来定义,如图中所示0为A类,10为B类,110为C类,1110为D类组播使用,1111为E类保留
由上图可看出不同类地址 可使用的大小数量不同,下图将显示它们最初“分类”的划分
该表显示了分类地址结构的主要使用方式,例如一个A类网络号18.0.0.0,其中有2的24次方可以分配给 主机(范围为18.0.0.0~18.255.255.255)但整个Internet中只有127个A类网络。某站点分配了一个C类网络,例如192.125.3.0,只能容纳256台(范围192.125.3.0~192.125.3.255),但整个C类网络有超过两百万个网络号是可用的。
这些数字是不准确的,有几个地址通常不作为单播地址使用。特别是地址块中的第一个和最后一个地址通常不使用,实际上18.0.0.0能分配2的24次方-2=16 777 214个单播IP地址。
子网寻址:改变一个IP地址的网络部分和主机部分的限制,Internet其余部分将只能“看到”传统的A类,B类和C类部分。支持此类功能的方法称为子网寻址。通过子网寻址,一个站点被分配一个A类,B类或C类的网络号,保留一些剩余主机号进一步用于站点内分配。该站点可能将基础地址中的主机部分进一步划分为一个子网号和一个主机号。从本质上来说,子网寻址为IP地址结构增加了一个额外部分,但它没有为地址增加长度。因此,一个站点管理员能在子网数和每个子网中预期的主机数之间折中,同时不需要与其他站点协调。子网寻址虽然提供额外灵活性,但是代价为成本增加。由于当前的子网字段和主机字段的定义是由站点指定的(不是由网络号分类决定),一个站点中所有路由器和主机需要一种新的方式以确定地址中的子网部分和其余的主机部分。在出现子网之前,这个信息可直接从一个网络号中获得,只需知道是A类,B类或C类地址(由地址的前几位表示)。
子网掩码:子网掩码由一台主机或路由器使用的分配位,以确定一台主机对应IP地址中获得网络和子网信息。IP子网掩码与对应的IP地址长度相同。通常在一台主机或路由器中以IP地址向荣的方式配置,也可以是静态的(通常是路由器),也可以使用一些动态方式,例如动态主机配置协议(DHCP)
下图列出了一些IPV4以及IPV6子网掩码的例子


掩码由路由器和主机使用,以确定一个IP地址的网络/子网部分的结束和主机部分的开始。子网掩码中的一位设为0,表示一个IP地址的对应位作为主机ID的一部分。例如下图所示的一个例子

这里面看到地址中的每一位与子网掩码中的对应位进行与计算。还看到128.32.1.14属于子网128.32.1.0/24。子网掩码纯粹是站点内部的局部问题。
可变长度子网掩码(VLSM),VLSM可用于分割一个网络号,使每个子网支持不同数量的主机。每个路由器和主机除了IP地址,还需要配置一个子网掩码。大多数软件支持VLSM,除了一些旧的路由协议(例如RIP版本1)
广播地址 在每个IPV4子网中,一个特殊地址被保留作为子网广播地址。子网广播地址通常将IPV4地址的网络/子网部分设置为适当值,已经主机部分所有位设置为1而形成。例如下所示例子:
地址128.32.1.14/24的广播地址;
掩码为24位则地址前二十四位不变128.32.1,地址后八位为00001110与掩码取反的后八位11111111进行或运算得到后八位全为1,即该子网广播地址为128.32.1.255
IPV6地址和接口标识符,IPV6地址除了比IPV4长4倍,还有一些额外的特点。IPV6地址使用特殊的前缀表示一个地址范围。一个IPV6地址范围是指它可用的网络规模。在IPV6中,大部分节点通常在同一个网络接口上使用多个地址。虽然IPV4中也支持这,但并不常见。一个IPV6节点中需要一组地址,包括组播地址。
链路本地IPV6地址(和一些全球性IPV6地址)使用接口标识符(IID)作为一个单播IPV6地址分配基础。除了地址是以二进制值000开始以外,IID在所有情况下都作为一个IPV6地址的低序位,这样它们必须在同一网络中有唯一前缀。IID的长度通常是64位,并直接由一个网络接口相关的链路层MAC地址形成,该地址使用修改的EUI-64格式,或由其他进程随机提供的值形成,以提供可防止地址跟踪的某种程度的隐私保护。
三、CIDR和聚合
前缀,为了帮助缓解IPV4地址(特别是B类地址)的压力,分类寻址方案通常使用一个类似VLSM的方案,扩展Internet路由系统以支持无类别域间路由(CIDR)。这提供了一种方便的分配连续地址范围的方式,包含多于255台但少于65536台主机。使用CIDR,未经过预定义的任何地址范围可作为一个类的一部分,但需要一个类似子网掩码的掩码,有时也称为CIDR掩码。CIDR掩码不再局限于一个站点,而对全球性路由系统都是可见的。因此,除了网络号之外,核心Internet路由器必须能解释和处理掩码。这个数字组合称为网络前缀,用于IPV4和IPV6地址管理。下图展示了一些例子

这个表中,由前缀来定义并固定的位被圈在一个框中。剩余位可设置为0和1的任意组合 从而涵盖可能的地址范围。显然,一个较小的前缀可对应于一个更大的地址范围。
聚合,在Internet环境中,可采用分层路由思想以一种特定方式减少Internet路由条目数。这通过一个称为路由聚合的过程来实现。通过相邻的多个IP前缀合并成一个短前缀(称为一个聚合或汇聚),可以覆盖更多地址空间。如下例子所示;
在这个例子中,第一步,190.154.27.0/26和190.154.27.64/26可以聚合,这是由于他们数值相邻,但是190.154.27.192/26不能聚合。通过与190.154.27.128/26相加,它们可经过两步骤聚合形成190.154.27.0/24。最后,通过与相邻的190.154.26.0/24相加,生成聚合结果190.154.26.0/23
四、特殊用途地址、IPV4和IPV6地址空间中都包括几个地址范围,它们被用于特殊用途(因此不能用于单播地址分配)。
对于IPV4,这些地址显示在如下图所示
在IPV6中,许多地址范围和个别地址用于特定用途,如下图所示

对于IPV4和IPV6,没有指定作为特殊、组播或保留地址的地址范围可供单播使用。一些单播地址空间(IPV4的前缀10/8,172.16/12,192.168/16以及IPV6的前缀fc00::/7)被保留用于构建专用网络。
IPV4/IPV6地址转换、在有些网络中,可能需要在IPV4和IPV6之间转换。目前已制定了一个用于单播转换的框架,以及一个正在开发的用于组播转换的方案。一个基本功能是提供自动,基于算法的地址转换。该方案使用一种特殊地址格式,称为嵌入IPV4的IPV6地址。这种地址在IPV6地址内部包含IPV4地址。它可采用6种格式之一来编码,IPV6前缀长度必须是下列数值之一:32,40,48,56,64或96。下图显示了可用的格式

如图所示,前缀可以是一个众所周知的 前缀,也可以是组织为转换器分配的唯一前缀,第64至71位必须设置为0,以保持与[RFC4291]指定标识符的兼容性。后缀的位被保留,并且应设置为0。然后采用简单方法来生成嵌入IPV4的IPV6地址:将IPV6前缀与32位的IPV4地址相串联,并确保第64至71位被设置为0(如果有必要,插入)。在后缀的后面增加0,直到生成一个128位地址。嵌入IPV4的IPV6地址使用96位前缀选项,该选项通常用前面提到的IPV6映射地址来表示。
组播地址、IPV4和IPV6支持组播寻址一个IP组播地址(也称为组或组地址)标识一组主机接口而不是单个接口。一般来说,一个组可以跨越整个Internet。一个组所覆盖的网络部分称为组的范围。管理范围的地址可用于一个网络区域内已手动配置到路由器的地址。站点管理员可将路由器配置为管理范围边界,这意味着相关组的组播流量不会被路由器转发。在软件的控制下,每个Internet主机中的协议栈能加入或离开一个组播组。当一台主机向一个组发送数据时,它会创建一个数据报,使用(单播)IP地址作为源地址。当一台主机向一个组发送数据时,它会创建一个数据报,使用(单播)IP地址作为源地址,使用组播IP地址作为目的地址。已加入组的所有主机将接受发送到该组的任何数据报。发送方通常不知道主机是否接收到数据报?除非它们明确做出应答。事实上,发送方甚至不知道通常有多少台主机接收它的数据报。
IPV4组播地址、对于IPV4,D类空间已被保留支持组播。28位空闲意味着可提供2的28次方=268 435 456个主机组(每个组是一个IP地址)。这个地址空间被分为几个注意部分,它建立在对路由分配和处理的基础上。下图列出了这些主要部分
第一个Ad hoc(特定)块用于保留一些地址,避免它们落入本地或互联网络控制块。其他主要地址块的出现稍晚于IP组播的演变。
最近,IPV4组播地址分配机制将多个组播地址与一个IPV4单播地址前缀关联。这被称为基于单播前缀的组播寻址(UBM),UBM的IPV4地址范围是234.0.0.0至234.255.255.255。单播地址需分配一个/24或更短的前缀以使用UBM地址。分配更短的地址(即/25或更长的前缀)必须使用一些其他机制。UBM地址被构造成前缀234/8,分配单播前缀与组播ID的串联,为了确定与一个单播分配相关的UBM地址,分配前缀只是简单的在前面添加前缀234/8。UBM地址比其他类型的组播地址分配有更多优点。例如,用于GLOP寻址时,它们可以不受16位AS号限制。另外它们可作为已存在的单播地址空间的分配结果。
IPV6组播地址、对于IPV6,对组播的使用相当积极,前缀ff00::/8已被预留给组播地址,并且112位可用于保存组号。一般格式如下
(1 1 1 1 1 1 1 1| 0| R| P |T|范围4位|组ID112位)其中0EPT是标志(四位)
可提供组数为2的112次方组,IPV6组播地址的第2字节包含一个4位标志字段和一个4位范围ID字段。范围字段表示到某些组播地址的数据报的分配限制。十六进制值0,3和f保留,十六进制值6,7和9~d未分配。下图给出了这些值
很多IPV6组播地址由IANA分配为永久使用,并且故意跨越多个地址范围。这些组播地址对每个范围都有一定偏移量(由于这个原因,这些地址被称为相对范围或可变范围)。例如下图所示一些预留定义的地址
在P和R位字段设置为0时,使用下图给出的组播地址格式
当P设置为1,无须基于每个组的全球性许可。当T位字段被设置时,表示组地址是临时或动态分配的。当P字段被设置为1,T位也必须被设置为1。
与IPV4相似,IPV6也有一些保留的组播地址。除了前面提到的可变范围地址,这些地址还根据范围划分成组。下图给出了IPV6组播空间中的保留列表。
任播地址、任播地址是一个单播IPV4或IPV6地址,这些地址根据它所在的网络确定不同的主机。这是通过配置路由器通知Internet中多个站点有相同单播路由来实现。
五、分配,IP地址通常被分配为大的块可以,这由一些分层组织的权威机构完成。权威机构是各种“所有者”分配地址空间的组织,“所有者”通常是ISP或其他较小的权威机构。权威机构经常参与全球单播地址空间分配,但有时也分配其他类型的地址(组播和特殊用途)。权威机构为用户分配一个不限时的地址块,或是一个限时(例如实验)的地址块。这个层次结构的顶部是IANA[IANA],它负责分配IP地址和Internet协议使用的其他号码。
单播、对于单播IPV4和IPV6的地址空间,IANA将分配权限主要委托给几个地区性Internet注册机构(RIR)。下图列出了加入NRO的地区性Internet注册机构

组播、在IPV4和IPV6中,组播地址(即组地址) 可根据其范围来描述,他们需要确定组播方式(静态、动态的协议或算法),以及是否使用ASM或SSM。
六、单播地址分配,一个站点分配了单播IP地址范围后-----通常是从自己的ISP处获得,站点或网络管理员需要决定如何为每个网络接口指定地址,以及如何建立子网结构。如果这个站点只有一个物理网段(例如大多数家庭),这个过程相对简单。对于规模较大的企业,尤其是那些由多个ISP提供服务,并且多个物理网段分布在很大地理区域的企业,这个过程可能非常复杂。
单个供应商/无网络/单个地址,目前我们可获得的最简单的Internet服务是由ISP提供一个在一台计算机上使用的IP地址。
单个供应商/单个网络/单个地址,拥有多台计算机的Internet用户发现只有一台计算机连接到Internet并不是理想情况。因此,他们通常拥有家庭局域网(LAN)或无线局域网(WLAN),并使用一台路由器或主机作为路由器连接Internet。这种配置与单个计算机情况类似,除了路由器将分组从家庭网络转发到ISP,它们也执行NAT,在于ISP通信时重写分组中的IP地址。从ISP角度来看,只有一个IP地址被使用。
单个供应商/多个网络/多个地址,很多组织发现仅分配一个单播地址,特别是当它只是暂时分配时,通常无法满足自己的上网需求。对于运行Internet服务器(例如web站点)的组织,通常希望拥有一个固定的IP地址。这些站点经常有多个局域网,其中有些是内部的,有些可能是外部网。对于这样的网络,通常需要有一个站点或网络管理员,以确定站点需要多少个IP地址,如何构建网站的子网,以及哪些子网是内部或外部网。
多个供应商/多个网络/多个地址(多宿主),对于一些依赖Internet接入来保证持续运营的组织,它们通常使用一个以上的供应商(称为多宿主),以便在失效时或其他情况下提供冗余连接。由于CIDR,只有一个ISP的组织通常拥有与该ISP相关联的PA地址。
七、与IP地址相关的攻击 IP地址基本上都是数字,只有少数网络攻击涉及它们。一般情况下,执行攻击可发送“欺骗”数据包或其他相关活动,也就是说,IP地址现在有助于查明涉嫌不良活动的个体(例如,对等网络中的版权侵权或非法材料分发)。这样做可能被以下几个原因所误导。例如,在很多情况下,IP地址只是暂时的,并在不同时间重新分配给不同用户。因此,在精准计时中出现任何错误,容易造成数据库中的IP地址到用户的映射出错。另外访问控制没有被广泛和安全的部署;用户可能通过一些公共的接入点,或无意中开放的家庭或办公室的无线路由器连接Internet。在这种情况下,不知情的家庭或企业所有者可能因IP地址而成为嫌疑人,即使这个人并不是网络流量的发送者。这种情况也可能因受攻击的主机被用于组成僵尸网络而发生。目前,这类计算机(和路由器)可通过基于Internet的黑市来租凭,并被用于执行攻击、非法内容服务和其他违法活动。
相关文章:
TCP/IP卷一详解第二章Internet地址结构概要
在这一章中介绍了Internet中使用的网络层地址(也就是IP地址),还有如何为Internet中的设备分配地址,以及各种类型的地址等等…… 一、IP地址的表示 为大家所常见的有IPV4地址和IPV6地址,但在IPV4地址中,通…...
小程序 打开方式 页面效果 表单页面 点击跳到详情页 图标 获取后台数据 进行页面渲染
请求地址:geecg-uniapp 同源策略 数据请求 获取后台数据 ui库安装 冲突解决(3)-CSDN博客 一.uniapp转小程序 (1) 运行微信开发工具 (2) 配置id 然后运行 打开小程序 路径 E:\通\uniapp-jeecg\unpackage\dist\d…...
一个“Hello, World”Flask应用程序
如果您访问Flask网站,会看到一个非常简单的示例应用程序,只有5行代码。为了不重复那个简单的示例,我将向您展示一个稍微复杂一些的示例,它将为您编写大型应用程序提供一个良好的基础结构。 应用程序将存在于包中。在Python中&…...
计算机丢失mfc100.dll如何恢复,详细解析mfc100.dll文件丢失解决方法
在计算机使用过程中,我们可能会遇到一些错误提示,比如“mfc100.dll丢失”。这是因为动态链接库(DLL)文件是Windows操作系统的重要组成部分,它们包含了许多程序运行所需的函数和数据。当这些DLL文件丢失或损坏时&#x…...
分享一本让你真正理解深度学习的书
关注微信公众号:人工智能大讲堂,后台回复udl获取pdf文档。 今天要分享的书是Understanding Deep Learning,作者是西蒙普林斯,英国巴斯大学的荣誉教授,其个人学术能力相当强大,在AI领域有着深厚的学术造诣。…...
Apache APISIX Dashboard 未经认证访问导致 RCE(CVE-2021-45232)漏洞复现
漏洞描述 Apache APISIX 是一个动态、实时、高性能的 API 网关,而 Apache APISIX Dashboard 是一个简单易用的前端界面,用于管理 Apache APISIX。 在 2.10.1 之前的 Apache APISIX Dashboard 中,Manager API 使用了两个框架,并在…...
Git 安全警告修复手册:解决 `fatal: detected dubious ownership in repository at ` 问题 ️
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
【MySQL事务篇】多版本并发控制(MVCC)
多版本并发控制(MVCC) 文章目录 多版本并发控制(MVCC)1. 概述2. 快照读与当前读2.1 快照读2.2 当前读 3. MVCC实现原理之ReadView3.1 ReadView概述3.2 设计思路3.3 ReadView的规则3.4 MVCC整体操作流程 4. 举例说明4.1 READ COMMITTED隔离级别下4.2 REPEATABLE READ隔离级别下 …...
拆分代码 + 动态加载 + 预加载,减少首屏资源,提升首屏性能及应用体验
github 原文地址 我们看一些针对《如何提升应用首屏加载体验》的文章,提到的必不可少的措施,便是减少首屏幕加载资源的大小,而减少资源大小必然会想到按需加载措施。本文提到的便是一个基于webpack 插件与 react 组件实现的一套研发高度自定…...
在 Vue3 中使用 mitt 进行组件通信
npm 包地址 mitt 是一个轻量级的 JavaScript 事件触发器, 只有200b。有基本的事件触发、订阅和取消订阅功能,还支持用命名空间来进行更高级的事件处理。 功能特点: Microscopic —— weighs less than 200 bytes gzippedUseful —— a wil…...
SQLite 3.44.0 发布!
SQLite 开发团队于 2023 年 11 月 01 日发布了 SQLite 3.44.0 版本,带来了一些 SQL 和优化器增强,本文给大家做一个简要分分析。 新增 concat() 函数 新版本增加了两个连接字符串的函数:concat() 以及 concat_ws()。它们可以兼容 PostgreSQ…...
本地生活新赛道-视频号团购怎么做?
目前有在做实体行业的商家一定要看完,只要你进入了这个本地生活新的赛道,那你的生意自然会源源不断,那这个赛道又是什么呢? 这就是十月份刚刚上线的视频号团购项目,开通团购之后,就可以通过发短视频&#…...
输入一个url后,会发生什么事?
Internet上的每一个网页都具有一个唯一的名称标识,通常称之为URL(Uniform Resource Locator,统一资源定位器)。它是www的统一资源定位标志,简单地说URL就是web地址,俗称“网址”。 所以当我们在浏览器上输入一个url后&…...
R语言和jsonlite库编写代码示例
R语言和jsonlite库来下载的程序。 r # 导入jsonlite库 library(jsonlite) # 设置代理主机和端口 proxy_host <- "" proxy_port <- # 使用httr库创建一个对象 proxy <- create_proxy(proxy_host, proxy_port) # 使用httr库的GET方法下载网页内容 url <…...
容联七陌携手岚时科技,解决医美机构回访3大痛点
近日,岚时科技研发中心联合容联七陌发布了全新的智能呼叫中心系统,5大功能模块解决了医美机构回访过程中的3大难题:客户资产保全困难、客户回访技术被卡脖子、回访人员(客服、咨询)效率管理困难。 “智能呼叫中心”通过…...
自动计算零售数据分析指标?BI软件表示可行
随着BI技术的飞速发展,借助系统来计算分析指标也不是什么难事,即便是面对组合多变的零售数据分析指标,奥威BI软件也依旧可以又快又精准地完成指标计算。 BI软件可以自动计算零售数据分析指标,如销售额、库存量、订单量等。在计算…...
Qt读取xml文件并把内容显示到QTableview上
本例子中把xml文件作为数据库表。 xml文件名作为函数参数,把不同的xml文件名传入函数,会显示不同的文件内容。 以下为代码: void MainWindow::ShowContent(QString FileName) {LoadXmlContent(FileName);ShowContentInView();}bool MainWi…...
xv6-x86在ubuntu14.04 i386下正常编译、调试,在ubuntu23.04下编译各种报错--google镜像
来源 原git仓库 xv6-x86(xv6-public) 文档 mit 6.828/2023/ 文档 MIT 6.828/2018/xv6/book-rev11.pdf 原readme 注: xv6-x86(xv6-public) 已经被放弃了, 原作者转向了xv6-riscvxv6-x86文档来源:mit-pdos/xv6-book.git, 它需要 heirloom-doctools 来编译成pdf&#x…...
关于unity中 编辑器相关逻辑的记录
prefab 在场景中 , 用这个方法可以获取它的磁盘路径: [MenuItem("Gq_Tools/↓获取prefab路径")] public static void SaveDecalParameters() { var objs Selection.objects; var obj objs[0] as GameObject; Object parentObject Prefab…...
linux安装配置MongoDB并设置开机启动
linux安装配置MongoDB并设置开机启动 文章目录 linux安装配置MongoDB并设置开机启动1. 下载 MongoDB 的linux安装包2. 上传 MongoDB 安装包到linux系统中3. 解压 MongoDB 安装包4. 创建 MongoDB 必要目录5. 移动 MongoDB 安装目录6. 设置 MongoDB 环境变量7. 添加 MongoDB 配置…...
css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
LRU 缓存机制详解与实现(Java版) + 力扣解决
📌 LRU 缓存机制详解与实现(Java版) 一、📖 问题背景 在日常开发中,我们经常会使用 缓存(Cache) 来提升性能。但由于内存有限,缓存不可能无限增长,于是需要策略决定&am…...
