计算机网络的一些思考(待完善)
文章目录
- 概念
- 1. 缓存
- 2. 备份(副本)
- 3. 硬件和软件:
- 4.端口
- 5. 二进制协议vs文本协议
- 6. 虚拟
- 7.分布式
- 8.广播域和冲突域的区别
- 9本地地址
- 协议
- 1.CSMA/CD协议
- 2.IP协议
- 3.路由算法协议(RIP,OSPF,BGP)
- 4.ARP协议,ICMP协议
- 5.DHCP协议
- 6.NAT协议
- 7. TCP协议
- 8.UDP
- 9. UDP vs TCP
- 9.其他
- 机制
- 1. 三次握手
- 2. 确认丢失和确认迟到
- 3.网络层应该做可靠交付还是不可靠交付呢?
- 4. 检验和
- 5.传统网络vs软件定义网络
- 6. 工作在各个网络层次的硬件:
- 7.路由
- 8.什么时候发送3个ACK呢?
- 9.虚拟专用网VPN和网络地址转换NAT的区别
- 10.为什么数据链路层需要帧定界
- 11.网络的异构性
- 12.ip数据报分片重组在目的主机
概念
1. 缓存
我觉得网络中很有意思的一个提高效率思路就是缓存,为了提高效率可以把一些东西存在本地,用的时候就可以直接使用。
例如:
ARP高速缓存表
DNS本地服务器也有高速缓存
还有就是处理的时候可以将事务积攒一下,一起处理:
TCP的发送缓存和接受缓存
计算机CPU内的缓存
2. 备份(副本)
(1)tcp,对刚发出去的数据要备份,直到收到确认。
(2)FTP:若要存取一个文件,就必须先获得一个本地文件副本。若要修改文件,只能对文件副本进行修改,然后再将修改后的文件副本传回到原节点。
3. 硬件和软件:
硬件快,固定;软件慢,易更改,编程。
路由器转发的信息有两类:路由信息、数据。路由器转发采用硬件转发。
以太网交换机的每个端口都直接与一个单台主机或另外一个以太网网桥相连(硬件上相连)。
以太网交换机使用专用的交换机结构芯片,用硬件转发收到的帧,其转发速率比使用软件转发的网桥要快的多。
4.端口
应用层的端口是软件层面的端口,不是物理端口,比如hub的接口是硬件的接口。
分为服务器端口号和客户端端口号服务器端口号又分为熟知端口号和登记端口号。可以这么理解,服务器端一般有固定的端口号,客户端则使用临时的动态的端口号。
(2)常用的服务器端口号:
①http:80
②ftp:21用于连接,控制进程; 20用于传送数据,数据进程
③
5. 二进制协议vs文本协议
TCP是二进制协议
HTTP和SMTP是文本协议
文本协议容易读取。
二进制协议效率高。
但是我不理解,基于文本的协议最后不还是被封装在基于二进制的tcp协议里面么?
这样说的话到最后那不就都是以二进制流的形式去传送么
但是下层对上层是透明的,可能应用层的基于文本的协议到了传输层就被转化成基于二进制的协议。
6. 虚拟
我对虚拟的理解:虚拟就是逻辑上的,和物理是一个相对的概念。
我们常常听到建立虚拟连接的虚拟就这个虚拟。ip地址是逻辑地址也就是虚拟地址。
tcp连接是虚拟连接,实际上并不存在这样一条链路,是因为下层的协议对上层透明,直接对上层提供服务,所以tcp才感觉是两个对等端在直接通信。
再比如VLAN(虚拟局域网),局域网给用户提高一种服务。是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。每个VLAN是一个广播域,VLAN内的主机间可以直接通信,而VLAN间则不能直接互通。这样,广播报文就被限制在一个VLAN内。
7.分布式
所谓分布式就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器,以网络上分散分布的地理信息数据及受其影响的数据库操作为研究对象的一种理论计算模型。
互联网采用自适应的、分布式的动态路由选择协议:
这里可以将分布式理解为分层次的。互联网的规模非常大。如果让所有的路由器知道所有的网络应怎样到达,则这种路由表将非常大,处理起来也太花时间。也就是说每个路由器都只知道一部分路由表,完整的路由表是由分布在各个地理位置的路由器里面的路由表拼凑起来的。
8.广播域和冲突域的区别
(1)广播域
(2)冲突域的每一个节点都能收到所有被发送的帧,广播域指的是所有接收广播信息的节点。
(3)冲突域是物理层,广播域是数据链路层。交换机可以分隔冲突域,因为交换机可以限制不同的端口的广播范围,让它们不相交,这样冲突域就被分隔开。路由器可以分隔广播域,因为路由器可以不转发广播包(主机字段为全1的字段)。
9本地地址
作用:
(1)提高安全性。
相当于形成与外界的屏障,外界无法得知内部的具体情况。
(2)节约ip地址资源
本地地址可以在不同的本地系统内被复用,互不干扰。
协议
1.CSMA/CD协议
2.IP协议
2.1 作用:网络互联,使得各种异构的网络在使用ip协议互联在一起之后,形成逻辑上互联的网络,使得来自不同网络的用户可以畅通地通信。2.2 特殊地ip地址(ipv4)有哪些呢?(分类的ip地址里面)
(1)网络号全0的ip地址表示本网络
(2)网络号127 即01111111作为本地软件环回测试本主机进程之间的通信之用。环回地址指的是主机用于向自身发送通信的一个特殊地址(不再通过数据链路层传递数据,而是直接在自己的网络层,运输层进行传递数据)
(3)总结:
①环回地址:127开头的
②网络号:主机号全0
③主机号全1:广播地址2.3 ip首部里面的片偏移以8个字节为单位
总长度有16位,单位是字节;片偏移是13位,单位是8个字节,标志位3位。
这样片偏移的最大值就和总长度的最大值匹配起来啦。2.4ip数据报的分片和重组涉及:
标识:同一ip数据报。
标识属于同一数据报,ip数据包重组时使用,每个从上层传下来的数据报都会被赋予唯一一个标识号。
标志位,片偏移:重组的顺序
3.路由算法协议(RIP,OSPF,BGP)
区别:(1)RIP:距离向量
OSPF:链路状态
BGP:距离向量(2)RIP和BGP-4都带了向量二字,两者区别是?
RIP是路径AS内,BGP-4是AS间。
RIP是最短路径,BGP-4是可达的路径。
RIP给出的是next hop的路由器和去往目的地的距离。
BGP-4给出的是一个路径向量,告诉我们去往下一个AS的完整路径,这些路径上包括的AS。
(3)RIPvsOSPF
① RIP协议:路由器通过nexthop参数给出明确的路径。OSPF:路由器根据自己的数据库运行算法后得到nexthop数值。OSPF形成路由表:所有的路由器根据其区域拓扑结构数据库副本采用最短路径法计算形成各自的路由表。
② RIP每隔30s更新,OSFP每隔30min更新(非触发更新)
③ RIP使用UDP,OSPF使用IP(4)BGPvsRIPvsOSPF不同点:
①BGP只在最开始交换整个报文,后来只交换更新的部分。在BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
②RIP只和相邻路由器交换信息,每隔30s交换一次(或者触发更新),交换自己的全部信息。
③OSPF在链路状态发生变换时需要使用泛洪法通知所有其他路由器,信息包括与该路由器相邻的路由器及其所有相邻链路的状态。
其他:
-
对一个路由协议我们应该了解:路由表的表项及意义,选择路由的算法,更新路由的时刻,更新路由表的方式。
例如:rip协议:表项:目的网络、最短距离、next hop;距离向量算法。定时(30s)更新或者触发更新。和邻居交互信息,发送整个路由表,对比更新表项。具体的更新规则:a将自己的路由表发给b,b将a的路由表next hop加一,且next hop设置为a。b逐个去查看表项,dst不在b里面,将该表项直接加入b;dst在,next hop是a,更新;dst在,next hop不是a,比较,若距离小,则替换。 -
OSPF里面的链路状态指什么?
(1)本路由器与哪些路由器相邻,度量。(这里的度量不同于RIP协议,RIP协议只要相邻度量(距离)就是1,但是OSPF显然更加复杂,同为相邻但度量可能不同。 -
ip地址是根据拓扑结构,mac地址则是网络厂商加序列号,并没有拓扑信息。ip地址可以提高网络传输效率,便于网络管理。
(3) -
MTU(包括协议字段)
(1)以太网:64-1518
(2)网络层:48-1500 -
ip数据报首部检验和:
(1)这个字段用来检验数据报的首部,不包括数据部分。数据报每经过一个路由器,路由器都要重新计算首部检验和。不检验数据部分可以减小计算量。
4.ARP协议,ICMP协议
ARP
主机A广播ARP请求,主机B回复,那么主机A和主机B将拥有对方的ip-MAC映射。
为什么ICMP数据报封装在ip数据报里面?
(1)IP协议自身不存在获取差错信息并进行差错控制的机制,因此在使用IP协议会出现在数据包发送后不知道数据包是否到达目的地,是什么原因造成数据包不能到达目的地的。
(2)ICMP协议就是来处理数据报文传输过程中出现的错误,具体的工作内容:当目标主机或中间设备发现数据报文在传输中出现错误不能达到目的地址后,会触发ICMP模块,同时产生一个ICMP报文向源主机发送出错情况报告。源IP地址和目的IP地址封装在IP数据报里,所以ICMP报文要封装在IP数据报中被传输,才可向源主机发送出错误情况报告
5.DHCP协议
五种报文:
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK
DHCPNAK
请求过程:
流程 | 源地址 | 目的地址 |
---|---|---|
主机请求 | 0.0.0.0 | 255.255.255.255 |
服务器回复 | 服务器地址 | 255.255.255.255 |
主机请求 | 0.0.0.0 | 255.255.255.255 |
服务器回复 | 服务器地址 | 255.255.255.255 |
6.NAT协议
NAT协议有两个作用:
替换源地址:内网与外网通信(出)
替换目标地址:外网与内网通信(入)这引发了我另外一个好奇,ip数据报的里面为什么要放源地址?
因为ip是无连接的,又不需要返回源地址,那为什么还要放源地址呢?
我个人的理解是,这里可以关联到ICMP协议,当ip数据包传输有问题的时候,可以用ICMP数据包通知源站,所以需要在ip数据报的首部放入源地址这个数据段,因为有问题,找源站!
NAT:专用网内部的一些主机本来以及分配到本地IP地址,但现在又想和互联网上的主机通信
(1)NAT路由器将源地址从内部地址转换为全球ip地址
(2)互联网上的路由器不能转换任何地址是专用地址的数据报
(3)NAT路由器将目的地址从全球ip地址转换为内部地址
7. TCP协议
(1)URG字段和PUSH字段
urg字段是告诉发送端紧急发送
push字段是告诉接收端赶紧交付数据(交付给进程)
这里有个先验知识,就是发送缓存和接收缓存,发送方和接收方分别维护着一个发送缓存和接收缓存。发送缓存里面的数据按照先来后到去发送,接收方里面的数据会暂存到接收缓存,然后到一定地步再交付给进程(假设满了之后),以提高效率。
urg字段可以打破先来后到的顺序去发送,跨过缓存阶段,传递给应用程序。push字段可以让接收方在接收缓存未满的时候就去交付。可以这么说,urg主要是针对新来的数据,push是针对在接收缓存里面的数据。我可以理解push,但是不理解urg
(因为我一直觉得首部是给接收端看的,是为了提醒接收端,就是发送端是先有了操作,才有了首部;接收端根据首部去操作。首部对于发送端是记录,对于接收端是指令)理论上是应用层把数据交付下来,假设原本有1000bit数据,正在发送第500个数据,然后突然下来30bit紧急数据,这个时候不能直接插入么.
为什么一定要在首部里面干这个事情,因为我觉得首部就是用来封装数据,是数据封装好后给对方看的,发送端为什么还要靠解析数据来知道这个紧急数据在哪里。
我觉得可能是这样的,前面排的比较靠前的数据已经放好了,不能动,那就只能在500之后插入数据。那就组装成一个报文发给接收端,接收端收到之后先从序号500开始读取这个数据。直接交付给应用程序,也不需要经过缓存。
(这是我自己能自圆其说的最好的理解了)(2)tcp为什么是点对点的?
因为tcp是面向连接的,这个连接是逻辑上的连接,通信前建立连接,通信过程中占用全部资源,通信后释放连接。
(3) TCP重传的情形:计时器超时,3个连续的ACK。
8.UDP
9. UDP vs TCP
(1)udp数据报的源端口号可以为0,但是tcp不可以,因为tcp是全双工通信。必须告知通信对方自己的端口号,这样对方才可以将信息发送过来。
(2)tcp是面向字节流。udp是面向报文的:udp对报文既不拆分也不合并,直接完整地封装进数据部分。
9.其他
数据报里面关于长度的一些字段:
(1) 扩展首部通常包含首部长度例如:ip,tcp,反例:udp
(2) ip既有4位首部长度又有16位总长度字段,udp只有udp长度(首部+数据)
机制
1. 三次握手
甲给乙,乙回甲,这时候甲已经做好准备了,因为甲知道乙收到自己的请求并且确认了。甲再回复给乙,乙就知道自己的回复被收到。甲的连接已经打开了,那么乙就可以开始发送数据了。如果乙没有收到第三次握手的确认,会怎样?
超时重传。
超时重传时间设置太长或者太短会?
太长:不能及时的察觉那些出现差错的分组,导致重传的时间间隔很大,通信效率降低。太短:一些正常的分组由于一些原因还在路上,但由于超时计时器到时,所以需要重传,浪费网络资源的同时还可能加重拥塞为什么不是两次握手?
因为两次握手的第二次如果没有发送到客户端,那么客户端对服务器端的连接将一直关闭,服务器无法通知客户端打开连接,服务器一直向客户端发送数据包。会造成单方面的资源浪费,还可能因为将过多的资源注入网络造成网络拥堵。
2. 确认丢失和确认迟到
(1)确认丢失:接收方已经收到了分组,但确认在路上丢失,发送方又重新发送了分组,接收方将收到的分组丢弃,继续给接收方发送确认
(2)确认迟到:接收方收到确认,但是超时计时器过期了,对于重复的确认,收下就丢弃,什么也不做。我觉得这个时候发送方就可以继续发送数据了。
3.网络层应该做可靠交付还是不可靠交付呢?
(1)互联网的设计:不可靠的数据报服务,这样网络传输效率才能快,网络互联才能简单,网络规模才能大。
4. 检验和
(1)ip数据报只检验ip首部,但是udp、tcp检验和是把首部和数据部分一起检验了。我可以这样理解么,ip数据报的数据部分封装的可能是udp或者tcp这俩都会传输层检验自己的内容,所以ip只需要检验自己的首部就行。
(2)计算检验和的方式
udp、tcp:加上伪首部 ,将检验和设置为0,对首部和数据部分进行反码求和,再取反码,将得到的结果填充到首部。收到数据报时,加上伪首部,进行反码求和,结果为0通过检验,否则不通过。
原理很简单:x=-(0+x) ,x±x=0 x是检验和。
反码求和:和原码求和的不同之处在于,将高位的进位加到最低位。
具体计算方式参考这篇博文
ip:只检验首部
以太网mac帧:CRC冗余检验
5.传统网络vs软件定义网络
传统网络:每个路由器承担两项任务:既做转发,又做路由选择,既要思考,又要劳动。
SDN:将控制层面和数据层面分离,由远端的控制器做决策,下发流表,告诉路由器要做的动作,路由器只需要按照命令执行即可。
感觉有点像CS架构的意思,每个路由器就像一个客户端,然后控制器就像一个服务器一样,去响应来自客户端的请求。
那这样网络不又变成集中控制了么?可以在某些特殊情况下小范围集中控制。
6. 工作在各个网络层次的硬件:
(1)物理层:转发器
(2)数据链路层:网桥,交换机
(3)网络层:路由器
(4)传输层及以上:网关
7.路由
(1)路由聚合作用:压缩转发表,减少转发时间。
路由聚合把多个小的网络合并,在路由表中相当于合并了多个表项。(2)路由表给出的是去往目的网络的路径,而不是目的主机。
强调,网络层是负责网络到网络的通信,数据链路层是点到点,就是节点计算机到节点计算机,传输层是端到端就是进程到进程的通信。
8.什么时候发送3个ACK呢?
9.虚拟专用网VPN和网络地址转换NAT的区别
(1)VPN是两个专用网之间交换信息
(2)NAT是专用网想接入到互联网
10.为什么数据链路层需要帧定界
11.网络的异构性
物理层和数据链路层定义。包括传输介质、数据编码、链路控制协议以及不同的数据单元格式和转发机制。
12.ip数据报分片重组在目的主机
(1)不是在中间路由器。因为IP分片可以独立地通过各个路由,并且在传输过程仍存在分片地可能性(不同网络地MTU可能不同)。
(2)不是在目的网络的路由器。因为到达目的网络之后,由于数据链路层的MTU也有分片的可能。
相关文章:

计算机网络的一些思考(待完善)
文章目录概念1. 缓存2. 备份(副本)3. 硬件和软件:4.端口5. 二进制协议vs文本协议6. 虚拟7.分布式8.广播域和冲突域的区别9本地地址协议1.CSMA/CD协议2.IP协议3.路由算法协议(RIP,OSPF,BGP)4.ARP…...

【第一章】谭浩强C语言课后习题答案
1.什么是程序?什么是程序设计? 程序:就是一组能识别和执行的指令,每一条指令使计算机执行特定的操作 程序设计:是指从确定任务到得到结果、写出文档的全过程 2.为什么需要计算机语言?高级语言有哪些特点? 为什么需要计算机语言:计算机语言解决了人和计算机交流是的…...

最新版本vue3+vite重构尚品汇(解决接口问题)第21-50集
第21集,第22集:照敲就行,引入概念。 第23集:防抖概念:前面所有的触发被取消,最后一次执行在规定的时间之后才会触发,只会执行一次。Lodash插件里面封装了函数的防抖和节流的业务。用到lodash确实…...

【超级猜图案例上半部分的实现 Objective-C语言】
一、超级猜图这么一个案例: 1.实现之后的效果是这样的: 1)中间有一个图片,点一下,能放大,背景变半透明的黑色: 2)再点一下图片,或者点周围黑色的阴影,图片回归原状, 3)右边有一个“大图”按钮,点一下,实现跟点图片一样的效果, 4)左边有一个“提示”按钮,点…...

刷题笔记4 | 24. 两两交换链表中的节点、19. 删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
24. 两两交换链表中的节点 给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 输入:head [1,2,3,4] 输出:…...

15、正则表达式
目录 一、元字符 二、限定修饰符 一、元字符 正则表达式通常被用于判断语句中,用来检查某一字符串是否满足某一格式。正则表达式是含有一些具有特殊意义字符的字符串,这些特殊字符称为正则表达式的元字符。例如,“\\d”表示数字0~9中的任何…...

javaWeb核心01-HTTPTomcatServlet
文章目录HTTP&Tomcat&Servlet1,Web概述1.1 Web和JavaWeb的概念1.2 JavaWeb技术栈1.2.1 B/S架构1.2.2 静态资源1.2.3 动态资源1.2.4 数据库1.2.5 HTTP协议1.2.6 Web服务器1.3 Web核心课程安排2, HTTP2.1 简介2.2 请求数据格式2.2.1 格式介绍2.2.2 实例演示2.…...

深圳大学计软《面向对象的程序设计》实验16 期末复习
A. 一、会员积分(期末模拟) 题目描述 某电商网站的会员分为:普通、贵宾两个级别 普通会员类Member,包含编号、姓名、积分三个属性,编号和积分是整数,姓名是字符串 操作包括构造、打印、积分累加、积分兑…...

Linux基础命令(一)
文章目录1、时间命令:date2、日历命令:cal3、计算器程序:bc4、基础组合键5、正确的关机指令使用5.1 将数据同步写入硬盘中的指令: sync5.2 惯用的关机指令: shutdown5.3 重新开机,关机: reboot,…...

RocketMQ Broker消息处理流程剩余源码解析
🍊 Java学习:Java从入门到精通总结 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年3月4日 …...

JQuery入门基础
目录 1.初识 下载 使用 JQuery(核心)对象 2.选择器 基础选择器 层次选择器 后代选择器 子代选择器 兄弟选择器 相邻选择器 3.JQuery DOM操作 创建元素 插入元素 删除元素 遍历元素 属性操作 获取属性 设置属性 删除属性 样式操作 …...

kafka 构建双向SSL认证
kafka 安装 以下内容均已完成测试,按照教程搭建你会得到一个双向ssl认证的kafka broker,并能通过ip以及域名访问,笔者能力有限如果文章内容存在问题烦请各位指出。 搭建单机Kafka 需求 centos 7kafka_2.12-2.6.0jdk8(文档中统…...

推荐一个.Net Core开发的Websocket群聊、私聊的开源项目
更多开源项目请查看:一个专注推荐.Net开源项目的榜单 今天给大家推荐一个使用Websocket协议实现的、高性能即时聊天组件,可用于群聊、好友聊天、游戏直播等场景。 项目简介 这是一个基于.Net Core开发的、简单、高性能的通讯组件,支持点对点…...

华为OD机试Golang解题 - 事件推送 | 含思路
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典文章目录 华为Od必看系列使用说明本期题目…...

将微信小程序页面转为图片
最近做项目遇到一个需求,那就是要将某个页面转为图片然后传给后端,我仔细找了一圈,发现官方那个Api也就是wx.canvasToTempFilePath生成的图片很有可能为空,太坑了,于是我放弃用它了,选择了用wxml2canvas。 安装wxml2canvas npm init npm install wxml2canvas --save --…...

LINE、SDNE和struc2vec图嵌入算法学习笔记
引言 在cs224w课程中,我先后总结了deepwalk、node2vec,这两种算是最经典也是最主流的做法,而在 图节点嵌入相关算法学习笔记 中,从头至尾,将一些经典算法用wiki的数据集复现了一下,所以本篇博文࿰…...

Buuctf Younger-drive 题解
目录 一.查壳 二.运行缺少dll 三.主函数 四.hObject线程 五.Thread线程 六.judge函数 七.解题脚本 这题的关键在于了解一定的线程相关知识 一.查壳 32位带壳,用upx脱壳 二.运行缺少dll 后续尝试了各种方法修复dll但是还是运行不了 值得一提的是脱壳后的程序不能动态调试…...

数据结构与算法:二叉树专题
数据结构与算法:二叉树专题前言前提条件基础知识二叉树链式存储结构二叉树中序遍历二叉树层序遍历常见编程题把一个有序整数数组放到二叉树中逐层打印二叉树结点数据求一棵二叉树的最大子树和判断两棵二叉树是否相等把二叉树转换为双向链表判断一个数组是否是二元查…...

Cadence Allegro 导出Cadence Schematic Feedback Report详解
⏪《上一篇》 🏡《总目录》 ⏩《下一篇》 目录 1,概述2,Cadence Schematic Feedback Report作用3,Cadence Schematic Feedback Report示例4,Cadence Schematic Feedback Report导出方法4.1,方法1,4.2,方法2,...

《计算机系统基础》—— 运算
文章目录《计算机系统基础》——运算整数按位运算作用操作位移运算作用操作乘法运算除法运算浮点数加减运算乘除运算《计算机系统基础》——运算 🚀🚀本章我们需要介绍的是有关C语言里面的运算,当然了,我们不会是介绍简单的运算&…...

MSTP多进程讲解与实验配置
目录 MSTP多进程 专业术语 MSTP多进程配置 在MSTP域配置 MSTP多进程 多进程的作用 将设备上的端口绑定到不同的进程中,以进程为单位进行MSTP计算,不在同一进程内的端口不参与此进程中的MSTP协议计算,实现各个进程之间的生成树计算相互独立…...

【Python】软件测试必备:了解 fixture 在自动化测试中的重要作用
在自动化软件测试中,fixture 是一种确保测试在一致且受控条件下运行的重要方法。简单来说,fixture 就是一组先决条件或固定状态,必须在运行一组测试之前建立。在测试框架中,fixture 提供了一种方便的方法,用于在每个测…...

DevExpress皮肤引用的办法
1.引用Dll皮肤文件Typeprocedure SetSkin(skinnam:string);procedure TFrmMain.SetSkin(skinnam:string);varHinst:THANDLE;RStream:TResourceStream;beginHinst:Loadlibrary(ALLSK.dll);If Hinst0 ThenExitelsebeginRstream:TResourceStream.Create(Hinst,skinnam,MYSKIN);dxS…...

2023-03-04 区分纳米颗粒核壳原子
声明:未经允许,不得擅自复制、转载。欢迎引用:Laser-Assisted Synthesis of Bi-Decorated Pt Aerogel for Efficient Methanol Oxidation ElectrocatalysisApplied Surface Science ( IF 6.707 ) Pub Date : 2022-04-01 , DOI: 10.1016/j.aps…...

review设备管理
目录 1、设备管理基础知识 (1)、外部设备分类 (2)、注意事项 2、I/O硬件原理 (1)、不同方式对I/O设备分类 (2)、I/O控制方式 (3)、设备控制器 3、I/O软…...

Cadence Allegro 导出Bill of Material Report (Condensed)详解
⏪《上一篇》 🏡《总目录》 ⏩《下一篇》 目录 1,概述2,Bill of Material Report (Condensed)作用3,Bill of Material Report (Condensed)示例4,Bill of Material Report (Condensed)导出方法4.1,方法14.2,方法2,...

B. Sherlock and his girlfriend
Sherlock has a new girlfriend (so unlike him!). Valentines day is coming and he wants to gift her some jewelry. He bought n pieces of jewelry. The i-th piece has price equal to i 1, that is, the prices of the jewelry are 2, 3, 4, ... n 1. Watson…...

Spring SpEL表达式
Java知识点总结:想看的可以从这里进入 目录17、Spring SpEL17.1、简介17.2、配合value使用17.2.1、基本字面值17.2.2、类相关表达式17.2.3、properties17.2.4、T运算符17.2.5、new17.2.6、Elvis运算符17.2.7、运算符17.2、配合XML使用17、Spring SpEL 17.1、简介 S…...

Nginx反向代理原理详解与配置
Nginx反向代理是一种常用的反向代理技术,它允许您将一个或多个Web服务器上的内容公开给Internet上的客户端,而不必暴露您的服务器的IP地址。Nginx反向代理的原理是:客户端发出一个HTTP请求,Nginx服务器收到请求后,将请…...

Happen-Before从入门到踹门
什么是Happen-Before有人翻译为"先行发生原则",其实也没错,但是更准确的说法应该是,前一个操作的值,后一个总能察觉到。Happen-Before的八条规则程序有序性:在前面的代码优先于在后面的代码执行volatile的变…...