我国基层政府网站建设情况/网络营销的主要工作有哪些
目录
IP协议
编辑
基本概念:
协议头格式:
编辑
网段划分
DHCP :
CIDR:
特殊的IP地址:
IP地址的数量限制:
私有IP和公网IP
路由
路由的过程:
数据链路层
认识以太网:
以太网帧:
认识MAC地址
认识MTU:
MTU对IP协议的影响:
MTU对UDP协议的影响:
MTU对TCP协议的影响:
MSS和MTU 的关系:
ARP协议
ARP协议的作用:
ARP协议的工作流程:
编辑
ARP数据报的格式:
其他重要协议或技术
DNS(Domain Name System)
背景:
域名简介:
[经典面试题 ]
浏览器输入url后,发生的事情?
ICMP协议
ICMP功能 :
ICMP报文格式:
编辑
ping命令
NAT技术
NAT技术背景 :
NAPT
NAT的技术缺陷:
NAT和代理服务器:
总结
数据链路层:
网络层:
传输层:
应用层:
IP协议
基本概念:
主机:配有IP地址,但是不进行路由控制的设备
路由器:即配有IP地址,又能进行路由控制
节点:主机和路由器的统称
协议头格式:
详情:
- 4位版本号:指定IP协议的版本 。对于IPv4来说,就是4
- 4位头部长度:IP头部的长度是多少个32bit,也就是length * 4 字节数,4bit能表示的最大的数字是15,因此IP头部最大长度是60字节
- 8位服务类型:3位优先权字段(已弃用),4位TOS字段,和一位保留字段(必须置位0)
- 4位TOS分别表示:最小延迟,最大吞吐量,最高可靠性,最小成本,这四者相互冲突,只能选择一个,对于ssh和telnet这样的应用程序来说,最小延迟比较重要,对于ftp来说最大吞吐量比较重要
- 16位总长度:IP数据包整体占多少个字节
- 16位标识:唯一的表示主机发送的报文,如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的
- 三位标志字段:第一位保留(保留的意思是现在就算不同也留下以备以后使用),第二位置位1的话表示禁止分片,如果这时候报文长度超过MTU,就直接被IP模块丢弃,第三位表示更多分片,如果分片的话这个分片置为1,其他是0,类似一个结束标记
- 13位片偏移:是分片相对于原始报文IP开始处的偏移,其实就是相当于当前分片应该在原始报文中的哪一个位置。实际偏移的字节数是这个值* 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍
- 8位生存时间:数据包到达目的地最大报文跳数,一般输64,没经过一次路由,TTL -= 1,一直减到0还没到达的话,就直接丢弃了。这个字段主要是为了防止路由循环
- 8位协议:表示上层协议的类型(tcp/udp ....)
- 16位头部检验和:使用CRC进行校验,来鉴别头部是否损坏
- 32位源地址和32位目标地址:表示发送端和接收端
- 选项字段(不定长):最多40字节
网段划分
- 网络号:保证相互连接的两个网段具有不同的标识
- 主机号:同一网段内,主机之间具有相同的网络号,但是主机号必须不同
- 不同的子网其实就是把网络号相同的主机放到一起
- 如果在子网中新增一台主机,则这台诸暨的网络号和这个子网的网络号一致,但是主机号不能和该子网中的其他主机重复
通过设置主机号和网络号,就可以保证在相互连接的网络中,每台主机的IP地址都相同
DHCP :
- 有一种技术叫DHCP,能够自动的给子网内新增主机节点分配IP地址,避免手动管理IP的不便
- 一般的路由器都有DHCP功能,因此路由器也可以看做是一个DHCP服务器
过去有一种划分网络号和主机号的方案,把所有的IP地址分为5类:
- A类:0.0.0.0 ~ 127.255.255.255
- B类:128.0.0.0 ~ 191.255.255.255
- C类:192.0.0.0 ~ 223.255.255.255
- D类:224.0.0.0 ~ 239.255.255.255
- E类:240.0.0.0 ~ 247.255.255.255
随着Internet的发展,大多数组织都申请了B类网络地址,导致B类地址很快就分配完了,而A类缺浪费了大量地址
- 例如,申请了一个B类地址,理论上 一个子网内能允许6万5千多个主机,A类地址更多
- 然而实际网络架设中,不会存在一个子网有这么多使用的情况,大多数都是浪费掉了
针对这种情况,提出了一个新的方案
CIDR:
- 引入一个子网掩码来区分网络号和主机号
- 子网掩码也是一个32位的正整数,通常用一串 0 结尾
- 将子网IP和子网掩码进行按位与操作,得到的结果就是网络号
- 网络号和主机号的划分与这个IP地址是A类、B类、C类无关
所以IP地址和子网掩码与运算后就可以得到网络号,主机号从0~1就是子网的地址范围
IP地址和子网掩码还有一种更简洁的表示方法,例如140.252.20.68/24 表示IP地址为140.252.20.68,子网掩码的高24位是1,也就是255.255.255.0
特殊的IP地址:
- 将IP地址中的主机地址全部设为0,就成为了网络号,代表这个局域网
- 将IP地址中的主机地址全部设为1,就是广播地址,用于给同一链路中相互连接的所有主机发送数据包
- 127.*的IP地址用于本机环回测试,通常是127.0.0.1
IP地址的数量限制:
我们知道IPV4是一个4字节32位的正整数,那么一共只有2^32 个IP地址,大约是43亿左右。而TCP/IP协议规定,每个主机都有需要有一个IP地址
这意味着一共只有43亿台主机能接入网络吗?
实际上,由于一些特殊IP地址的存在,数量远不足43亿,另外IP地址不是按照主机台数来配置的,而是每一个网卡都要配置一个或多个IP。
CIDR在一定程度上缓解了IP地址不够的问题,(提高了利用率,减少了浪费,但是IP总数并没有增加) ,这时候有三种方法解决:
- 动态分配IP地址:只给接入网络的设备分配IP地址,因此同一个MAC地址的设备,每次接入互联网中,得到的IP地址不一定是相同的
- NAT技术
- IPv6:IPv6并不是IPv4的升级版,这是互不相干的两个协议,彼此不兼容,IPv6用16字节128位来表示一个IP地址;但是目前IPv6没有普及
私有IP和公网IP
如果一个组织内部组建局域网,IP地址只用于局域网内的通信,而不直接连到Internet上,理论上 使用任意的IP地址都可以,但是RFC 1918规定了用于组建局域网的私有IP地址
- 10.*,前8位是网络号,共16,777,216个地址
- 172.16.到172.31.,前12位是网络号,共1,048,576个地址
- 192.168.*,前16位是网络号,共65,536个地址
- 一个路由器可以配置两个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数据包,到达路由器时,路由器会先查看目的IP
- 路由器决定这个数据包是能直接发送给目标主机,还是需要发送给下个路由器
- 依次反复,直到到达目的IP
- 路由表可以使用route命令查看
- 如果IP命中了路由表,直接转发就可以了
- 路由表中的最后一行,只有由下一跳地址和发送端口两部分组成,当目的地址与路由表中其他行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址
路由表中的flags中如果是U标志,表示此条目有效,如果是G标志表示此条目的下一条的地址是某个路由器的地址,没有G标志的条目表示目的网络是与本机接口直连的,不用路由器转发
假设某主机上的网络接口配置路由表如下图
样例1
转发过程 1: 如果要发送的数据包的目的地址是192.168.56.3
- 先跟第一行的子网掩码做运运算 得到192.168.56.0和第一行的网络地址不符
- 再跟第二行的子网掩码与运算一下,发现网络地址相符,因此从eth1接口发送出去
- 由于192.168.56.0/24正是与eth1 接口直接相连的网络,因此可以直接发送到目标主机,不需要经过路由器的跳转
样例2
转发过程2:如果要发送的数据包的目的地址是202.10.1.2
- 一次和路由表前嘉兴进行对比,发现都不匹配
- 按缺省路由条目,从eth0接口发送出去,发往192.168.10.1路由器
- 由192.168.10.1路由器根据他的路由表决定下一个地址(if 不知道 那就 反复往上直到它知道)
数据链路层
认识以太网:
-
"以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
-
例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
-
以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;
以太网帧:
认识MAC地址
-
MAC地址用来识别数据链路层中相连的节点;
-
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
-
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址)
对比理解IP地址和MAC地址
- IP地址是代表起点和终点
- MAC地址描述的是路径上的每一个区间的起点和终点
认识MTU:
MTU相当于发快递时对包裹尺寸的限制. 这个限制是不同的数据链路对应的物理层, 产生的限制
- 以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后面补填充位;
- 最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
- 如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation);
- 不同的数据链路层标准的MTU是不同的;
MTU对IP协议的影响:
由于数据链路层MTU的限制,对于大的IP数据包要进行分包
- 将较大的IP包分成多个小包, 并给每个小包打上标签
- 每个小包IP协议头的 16位标识(id) 都是相同的
- 每个小包的IP协议头的3位标志字段中, 第2位置为0, 表示允许分片, 第3位来表示结束标记(当前是否是最后一个小包, 是的话置为1, 否则置为0
- 到达对端时再将这些小包, 会按顺序重组, 拼装到一起返回给传输层
- 一旦这些小包中任意一个小包丢失, 接收端的重组就会失败. 但是IP层不会负责重新传输数据
MTU对UDP协议的影响:
-
一旦UDP携带的数量超过1472(1500-20(IP首部)-8(UDP首部)),那么就会在网络层分成多个IP数据包
-
这个数据包有任意一个丢失,都会引起接收端网络层重组失败,这就意味着UDP数据包在网络层被分片,整个数据丢失的概率大大增加了
MTU对TCP协议的影响:
- TCP的一个数据报也不能无限大, 还是受制于MTU. TCP的单个数据报的最大消息长度, 称为MSS(MaxSegment Size);
- TCP在建立连接的过程中, 通信双方会进行MSS协商
- 最理想的情况下, MSS的值正好是在IP不会被分片处理的最大长度(这个长度仍然是受制于数据链路层的MTU)
- 双方在发送SYN的时候会在TCP头部写入自己能支持的MSS值
- 然后双方得知对方的MSS值之后, 选择较小的作为最终MSS
- MSS的值就是在TCP首部的40字节变长选项中(kind=2)
MSS和MTU 的关系:
查看硬件地址和MTU
ARP协议
ARP不是一个单纯的数据链路层协议,而是一个结余数据链路层和网络层之间的协议
ARP协议的作用:
ARP协议建立了主机IP地址和MAC地址的映射关系
- 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址
- 数据包首先是被网卡接收到再去处理上层协议的,如果接受到的数据包的硬件地址和本机不符,则直接丢弃
- 因此在通信前必须获得目的主机的硬件地址
ARP协议的工作流程:
- 源主机发送ARP请求,询问IP地址是192.168.0.1的主机的硬件地址是多少,并将这个请求广播到本地网段(以太网首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播)
- 目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送ARP应答数据给源主机,将自己的硬件地址填写在应答包中
- 每台主机都维护一个ARP缓存表,可以使用arp -a查看,缓存表中的过期时间一般为20分钟
Q1:为什么要有缓存表 ?
A1:
- 第一当然就是提高性能,当我们没有对方的MAC的时候,会进行ARP请求广播,最后返回中包含MAC地址,但是如果每次通信前都要进行这一步就会大大增加通行时间
- 减少网络负载:在大规模的局域网中,每次都广播ARP请求会产生很大的网络负载。使用缓存表,可以有效减少这种广播流量,提高网络的效率。
-
优化网络交互:缓存表可以提供一种快速查找映射关系的方式,确保主机可以快速而准确地找到目标主机的MAC地址。这样可以在通信过程中减少不必要的等待和延迟。
Q2:为什么缓存表要有过期时间?
-
动态网络拓扑:局域网中的设备和网络拓扑可能会发生变化。例如,当设备重新启动、添加新设备、更换设备,或进行网络重组时,IP地址与对应的MAC地址的映射关系可能会发生变化。为了避免使用过时的映射关系,设备需要定期刷新ARP缓存表。
-
IP地址分配变更:动态主机配置协议(DHCP)通常用于分配局域网中的IP地址。IP地址的分配和释放可能会导致映射关系的变动。缓存表中的映射关系应该及时更新以反映最新的IP地址分配状态。
-
缓存表空间有限:设备上的ARP缓存表通常有一定的存储空间限制。如果持续保留所有的映射关系,可能会消耗过多的资源。
-
对应关系变更:由于网络攻击、欺骗或设备故障等原因,MAC地址的对应关系可能会被恶意篡改或伪造。
ARP数据报的格式:
- 注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的
- 硬件类型指链路层网络类型,1为以太网;
- 协议类型指要转换的地址类型,0x0800为IP地址;
- 硬件地址长度对于以太网地址为6字节;
- 协议地址长度对于和IP地址为4字节;
- op字段为1表示ARP请求,op字段为2表示ARP应答;
其他重要协议或技术
DNS(Domain Name System)
DNS是一整套从域名映射到IP的系统
背景:
TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序. 但是IP地址不方便记忆.
于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系
最初,通过互联网信息中心(SRI-NIC) 来管理这个hosts文件的
- 如果一个新的计算机要接入网络,或者计算机的IP变更,都需要到信息中心申请变更hosts文件
- 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网
这样太麻烦了,于是有了DNS系统
- 一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系
- 如果新计算机接入网络, 将这个信息注册到数据库中
- 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址
域名简介:
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称
www.csdn.com
- com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等
- csdn: 二级域名, 公司名.
- www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx 这样的格式, 来表示主机支持的协议.
[经典面试题 ]
浏览器输入url后,发生的事情?
① 首先,在浏览器输入需要的网址
② 浏览器查找域名对应的IP地址,DNS查找过程如下
- 浏览器缓存 -- 浏览器会缓存DNS记录一段时间,不同的浏览器不同(2~30min不等)
- 系统缓存 -- 如果浏览器缓存里没有,那浏览器会做一个系统调用(window是gethostbyname)可以获取系统缓存中的记录
- 路由器缓存 -- 接着,前面的查询请求发送给路由器,路由器一般都能找到对应的缓存记录
- ISP DNS 缓存 -- 接下来check的就是ISP缓存DNS的服务器,一般都能找到
- 递归搜索 -- 你的ISP的DNS服务器从根域名服务器开始递归搜索,从.com顶级域名服务器到Csdn的域名服务器
③ 浏览器给web服务器发送一个http请求(get or post)
④ 目标服务(csdn)重定向相应:即我请求csdn.com 就会重定向到 https://www.csdn.com/
⑤ 浏览器跟踪重定向地址,浏览器知道了https://www.csdn.com/ 是正确的地址之后,它会发送一个正确的请求
⑥ 服务器"处理"请求 :收到请求后处理后并返回响应(响应可能是html,也可能是一串json等等)
⑦ 服务器返回HTML响应 状态码是200 表示请求成功
⑧ 浏览器开始显示HTML
⑨浏览器发送获取嵌入在html中的对象,比如登录在线OJ的时候,有个登录图片,这就是嵌入在html中的
⑩浏览器发送异步(AJAX)请求:持续的与服务器保持联系
ICMP协议
ICMP是一个网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因
ICMP功能 :
- 确认IP包是否到达目标地址
- 通知发送过程中IP包被丢弃的原因
- ICMP也是基于IP协议工作的,但是他并不是传输层的功能,所以归结为网络层
- ICMP只能搭配IPv4使用,如果是IPv6,需要用ICMPv6
ICMP报文格式:
ICMP大概分为两类报文:
- 一类是通知出错原因
- 一类是用于诊断查询
ping命令
- ping的是域名不是url ,一个域名可以通过DNS解析成IP地址
- ping命令不光能验证网络的连通性,同时也会统计响应时间和TTL(IP包中的Time To Live生命周期)
- ping 命令会先给对端发送一个ICMP Echo Request给对端
- 对端接收到之后,会返回一个ICMP Echo Reply
- 记住,ping命令基于ICMP,在网络层,而端口号是传输层的东西,在ICMP中根本就不关心端口号
NAT技术
NAT技术背景 :
之前我们讨论了, IPv4协议中, IP地址数量不充足的问题
NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能
- NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法
- 很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP
- 全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的
- NAT路由器将源地址从10.0.0.10替换成全局的IP 202.222.144.33;
- NAT路由器收到外部的数据时, 又会把目标IP从202.222.144.33替换回10.0.0.10;
- 在NAT路由器内部, 有一张自动生成的, 用于地址转换的表;
- 当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系,便于收到请求
NAPT
那么问题来了, 如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系
NAT的技术缺陷:
由于NAT依赖转换表,所以有很多限制
- 无法从NAT外部向内部建立连接
- 转换表的生成和销毁需要额外开销
- 通信过程中一旦NAT异常,所有的TCP连接都会断开
NAT和代理服务器:
路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.
代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.
那么NAT和代理服务器的区别有哪些呢?
- 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙
- 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层
- 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
- 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上
代理服务器是一种应用很广的技术:
- 翻墙:广域网中的代理
- 负载均衡:局域网中的代理
代理服务器又分为正向和反向代理
代购例子
我去国外进口手机,但是我嫌麻烦,叫我弟替我出国买,我弟这里就是正向代理
之后找我弟买的人过多,我弟一次囤了不少手机,之后别人找他代购,他就把屯下来的手机卖给这些人,这时候是反向代理
总结 :正向代理用于请求的转发 ,反向代理往往作为一个缓存
总结
数据链路层:
-
数据链路层的作用: 两个设备(同一种数据链路节点)之间进行传递数据
-
以太网是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等
-
以太网帧格式
-
理解mac地址
-
理解arp协议
-
理解MTU、
网络层:
- 网络层的作用: 在复杂的网络环境中确定一个合适的路径
- 理解IP地址, 理解IP地址和MAC地址的区别.
- 理解IP协议格式
- 了解网段划分方法
- 理解如何解决IP数目不足的问题, 掌握网段划分的两种方案. 理解私有IP和公网IP
- 理解网络层的IP地址路由过程. 理解一个数据包如何跨越网段到达最终目的地.
- 理解IP数据包分包的原因
- 了解ICMP协议
- 了解NAT设备的工作原理
传输层:
- 传输层的作用: 负责数据能够从发送端传输接收端
- 理解端口号的概念
- 认识UDP协议, 了解UDP协议的特点.
- 认识TCP协议, 理解TCP协议的可靠性. 理解TCP协议的状态转化.
- 掌握TCP的连接管理, 确认应答, 超时重传, 滑动窗口, 流量控制, 拥塞控制, 延迟应答, 捎带应答特性
- 理解TCP面向字节流, 理解粘包问题和解决方案
- 能够基于UDP实现可靠传输.
- 理解MTU对UDP/TCP的影响
应用层:
- 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层
- 能够根据自己的需求, 设计应用层协议.
- 了解HTTP协议
- 理解DNS原理和工作流程
相关文章:

网络基础之重中之重
目录 IP协议 编辑 基本概念: 协议头格式: 编辑 网段划分 DHCP : CIDR: 特殊的IP地址: IP地址的数量限制: 私有IP和公网IP 路由 路由的过程: 数据链路层 认识以太网&#x…...

HarmonyOS应用开发者-----基础认证试题及答案
HarmonyOS应用开发者基础认证试题及答案 试题会不定时刷新,本试题仅供大家学习参考 【判断题】 2.5/2.5 所有使用@Component修饰的自定义组件都支持onPageShow,onBackPress和onPageHide生命周期函数。 正确(True)错误(False) 回答正确【判断题】 2.5/2.5 在Column和Row容器组…...

C++:string并非以0作为结束符,c_str和data的返回却包含结束符0
C语言中使用char数组保存字符串时,是以字符为0或者\0作为字符串的结束符标志的。 所以一个char str[10]的数组只能合法的保存9个字符(因为最后还要加一个结束符)。 #include <cstring> #include <iostream>using namespace std;int main() {char str[10] ="…...

ChatGPT插件的优缺点
虽然西弗吉尼亚大学的研究人员看到了最新的官方ChatGPT插件——名为“代码解释器”( Code Interpreter)的教育应用潜力,但他们也发现,对于使用计算方法处理针对癌症和遗传疾病的定向治疗的生物数据的科学家来说,这款插…...

北京985学校,交叉学科考英一数三408
北京师范大学(B) 考研难度(☆☆☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1096字,预计阅读:3分钟 2023考情概况 北…...

ChatGPT 总结前端HTML, JS, Echarts都包含哪些内容
AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Office, Python ,ETL Excel 2021 实操,函数,图表,大屏可视化 案例实战 http://t.csdn.cn/zBytu...

企业架构LNMP学习笔记1
项目开发流程: 公司老板或者产品经理,根据市场调查,决定开发一整套互联网产品。 互动社交电商用户论坛(BBS) 产品决策 (老板产品UI设计) 业务实施、代码开发 程序开发人员 前端开发&#x…...

【位运算】leetcode371:两整数之和
一.题目描述 两整数之和 二.思路分析 题目要求我们实现两整数相加,但是不能使用加号,应该立马想到是用位运算来解决问题。之前说过,异或就是“无进位相加”,故本题可以先将两数异或,然后想办法让得到的结果进位即可。…...

【爬虫小知识】如何利用爬虫爬网页——python爬虫
前言 网络时代的到来,给我们提供了海量的信息资源,但是,想要获取这些信息,手动一个一个网页进行查找,无疑是一项繁琐且效率低下的工作。这时,爬虫技术的出现,为我们提供了一种高效的方式去获取…...

什么是跨域问题 ?Spring MVC 如何解决跨域问题 ?Spring Boot 如何解决跨域问题 ?
目录 1. 什么是跨域问题 ? 2. Spring MVC 如何解决跨域问题 ? 3. Spring Boot 如何解决跨域问题 ? 1. 什么是跨域问题 ? 跨域问题指的是不同站点之间,使用 ajax 无法相互调用的问题。 跨域问题的 3 种情况&#x…...

线性代数的学习和整理17:向量空间的基,自然基,基变换等(未完成)
目录 3 向量空间的基:矩阵的基础/轴 3.1 从颜色RGB说起 3.2 附属知识 3.3 什么样的向量可以做基? 3.4 基的分类 3.1.1 不同空间的基---向量组的数量可能不同 3.1.2 自然基 3.1.3 正交基 3.1.4 标准正交基 3.1.5 基和向量/矩阵 3.1.6 基变换 …...

Java中支持分库分表的框架/组件/中间件简介
文章目录 1 sharding-jdbc2 TSharding3 Atlas4 Cobar5 MyCAT6 TDDL7 Vitess 列举一些比较常见的,简单介绍一下: sharding-jdbc(当当) TSharding(蘑菇街) Atlas(奇虎360) Cobar&#…...

7.2 项目2 学生通讯录管理:文本文件增删改查(C 版本)(自顶向下设计+断点调试) (A)
C自学精简教程 目录(必读) 该作业是 作业 学生通讯录管理:文本文件增删改查(C版本) 的C 语言版本。 具体的作业题目描述,要求,可以参考 学生通讯录管理:文本文件增删改查(C版本)。…...

excel怎么设置任意选一个单元格纵横竖横都有颜色
有时excel表格内容过多的时候,我们通过excel设置任意选一个单元格纵横,竖横背景颜色,这样会更加具有辨识度。设置方式截图如下 设置成功后,预览的效果图...

期货-股票交易规则
交易时间 港股:9:00~9:20 集合竞价,9:3012:00,13:0016:00 持续交易,16:00~16:10 随机收市竞价沪股:9:00~9:25 集合竞价,9:3011:30,13:0015:00 持续交易,11:30~12:00 交易申报深股&a…...

Makefile一些语法
ifneq($(filter true,$(xxx)), )的含义 filter 是过滤的意思,它的原型是:$(filter PATTERN…,TEXT), 意义为:过滤掉字串“TEXT”中所有不符合模式“PATTERN”的单词,保留所有符合此模式的单词做返回值。 结合前面的if…...

0基础可以转行编程行业么
在2022年分行业门类分岗位就业人员年平均工资中,信息传输、软件和信息技术服务业的薪资遥遥领先其他行业,为全国平均薪资水平的 1.78 倍,远超第二名金融行业,其年增长率在9.4%,并成为年收入首个过20 万门槛的行业&…...

【spark】dataframe慎用limit
官方:limit通常和order by一起使用,保证结果是确定的 limit 会有两个步骤: LocalLimit ,发生在每个partitionGlobalLimit,发生shuffle,聚合到一个parttion 当提取的n大时,第二步是比较耗时的…...

基于OpenCV+LPR模型端对端智能车牌识别——深度学习和目标检测算法应用(含Python+Andriod全部工程源码)+CCPD数据集
目录 前言总体设计系统整体结构图系统流程图 运行环境Python 环境OpenCV环境Android环境1. 开发软件和开发包2. JDK设置3. NDK设置 模块实现1. 数据预处理2. 模型训练1)训练级联分类器2)训练无分割车牌字符识别模型 3. APP构建1)导入OpenCV库…...

C++学习6
C学习6 基础知识std::thread 实战boost domain socket server 基础知识 std::thread std::thread是C11标准库中的一个类,用于创建并发执行的线程。它的详细用法如下: 头文件 #include <thread>创建线程 std::thread t(func, args...);其中&am…...

bazel使用中存在的问题
只开远端缓存时。kernel采用的bazel编译,遇到如下问题: 1、Action 详情二进制文件解析为文本文件时报错,无法进一步比较分析导致缓存不命中的原因。--- JDK版本的问题 2、远端缓存全部命中时间收益不明显 ---需分析是否为网络原因 3、$HOM…...

svn软连接和文件忽略
软连接 1)TortoiseSVN->Properties->New->Externals->New 2)填入软连接信息 Local path: 写下软连接后的文件夹的名字 URL: 想要软连接的牡蛎->TortoiseSVN->Repo-browser 复制下填入 文件忽略 以空格隔开就行...

自动驾驶攻城战,华为小鹏先亮剑
点击关注 文|刘俊宏 编|苏扬、王一粟 本文为光锥智能x腾讯科技联合出品 2023年过半,城市NOA(城市领航辅助驾驶)的元年如预期中到来了吗? 8月25日,成都车展开幕,与4个月之前的上海…...

企业供应链数字化怎么做?企业数字化供应链流程落地方式
什么是供应链?简单来说,供应链是围绕客户需求,以提高产品流通各个环节的效率为目标,通过资源整合的方式来实现产品从设计、生产到销售、服务整个环节的组织形态。如同人工智能、区块链、5G等技术的发展带来的各种行业变化…...

java八股文面试[多线程]——synchronized 和lock的区别
其他差别: synchronized是隐式的加锁,lock是显式的加锁; synchronized底层采用的是objectMonitor,lock采用的AQS; synchronized在进行加锁解锁时,只有一个同步队列和一个等待队列, lock有一个同步队列,可以有多个等待队列; synchronized使用了object类的wait和noti…...

实现一个简单的控制台版用户登陆程序, 程序启动提示用户输入用户名密码. 如果用户名密码出错, 使用自定义异常的方式来处理
//密码错误异常类 public class PasswordError extends Exception {public PasswordError(String message){super(message);} }//用户名错误异常类 public class UserError extends Exception{public UserError(String message){super(message);} }import java.util.Scanner;pu…...

Java 大厂八股文面试专题-设计模式 工厂方法模式、策略模式、责任链模式
面试专题-设计模式 前言 在平时的开发中,涉及到设计模式的有两块内容,第一个是我们平时使用的框架(比如spring、mybatis等),第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中ÿ…...

Anaconda Prompt输入jupyter lab无反应
问题:Anaconda Prompt界面输入指令无反应 原因:公司电脑勒索病毒防御工具阻止了进程 解决:找到黑名单恢复进程...

JavaScript Web APIs - 05 Window对象 、本地存储
Web APIs - 05 文章目录 Web APIs - 05js组成window对象定时器-延迟函数location对象navigator对象histroy对象本地存储(今日重点)localStorage(重点)sessionStorage(了解)localStorage 存储复杂数据类型 综…...

Ansible学习笔记6
stat模块:获取文件的状态信息,类似Linux的stat状态。 获取/etc/fstab文件的状态。 [rootlocalhost tmp]# ansible group1 -m stat -a "path/etc/fstab" 192.168.17.106 | SUCCESS > {"ansible_facts": {"discovered_inter…...