网络其他重要协议(DNS、ICMP、NAT)
1.DNS
DNS是一整套从域名映射到IP的系统
1.1 DNS背景
TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆,例如我们想访问百度就会在浏览器中输入baidu.com而不是百度的IP地址。于是人们发明了一种叫主机名的东西, 是一个字符串, 并且使用hosts文件来描述主机名和IP地址的关系。
最初, 通过互连网信息中心(SRI-NIC)来管理这个hosts文件的.
- 如果一个新计算机要接入网络, 或者某个计算机IP变更, 都需要到信息中心申请变更hosts文件.
- 其他计算机也需要定期下载更新新版本的hosts文件才能正确上网
这样就太麻烦了, 于是产生了DNS系统.
- 一个组织的系统管理机构, 维护系统内的每个主机的IP和主机名的对应关系
- 如果新计算机接入网络, 将这个信息注册到数据库中;
- 用户输入域名的时候, 会自动查询DNS服务器, 由DNS服务器检索数据库, 得到对应的IP地址.
至今, 我们的计算机上仍然保留了hosts文件. 在域名解析的过程中仍然会优先查找hosts文件的内容
我们可以使用cat /etc/hosts命令来查看我们的hosts文件
1.2 域名简介
主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称例如www.baidu.com
- com: 一级域名. 表示这是一个企业域名. 同级的还有 "net"(网络提供商), "org"(非盈利组织) 等.
- baidu: 二级域名, 公司名.
- www: 只是一种习惯用法. 之前人们在使用域名时, 往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式, 来表示主机支持的协议.
1.3 域名解析过程
当我们使用浏览器输入一个url时,如何完成域名解析的过程。
- 1.本地电脑会检查浏览器的DNS缓存中是否有这个url对应的IP地址,如果有整个解析过程结束。
- 2.当浏览器中DNS缓存中没有找到,计算机就会到操作系统的DNS缓存(如内存中的DNS缓存或本地的hosts文件)中去找,如果能找到,整个解析过程结束。
- 3.浏览器向本地配置的域名解析服务器发送查询请求。域名解析服务器一般由运营商提供,如果本地域名解析服务器中能找到,整个解析过程结束。本地域名解析服务器的地址通常通过DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)或手动设置获得。
- 4.如果本地的域名解析服务器没有找到,那么就向根域名服务器发起查询请求。根域名服务器虽然不存储每个域名的具体信息,但它知道每个顶级域名(如.com, .net, .org等)的权威DNS服务器的地址。
- 5.根DNS服务器会告诉本地DNS顶级域名服务器的IP地址。
- 6.本地域名解析服务器根据根域名服务器返回的顶级域名服务器的地址,继续查询该顶级域名服务器。
- 7.顶级域名服务器会返回该域名对应的权威DNS服务器的地址。
- 8.本地域名解析服务器再向权威DNS服务器发起查询。
- 9.得到该域名的IP地址。
- 10.本地域名解析服务器将查询到的IP地址返回给操作系统,并同时缓存该结果,以便下次快速查询。操作系统将IP地址返回给浏览器,浏览器使用该IP地址进行网站访问。
1.4 dig分析DNS解析
- 1. 开头位置是 dig 指令的版本号
- 2. 第二部分是服务器返回的详情, 重要的是 status 参数, NOERROR 表示查询成功
- 3. QUESTION SECTION 表示要查询的域名是什么
- 4. ANSWER SECTION 表示查询结果是什么. 这个结果先将 www.baidu.com 查询成了 www.a.shifen.com, 再将www.a.shifen.com 查询成了两个 ip 地址.
- 5. 最下面是一些结果统计, 包含查询时间和 DNS 服务器的地址等
2. ICMP协议
ICMP协议是一个 网络层协议
一个新搭建好的网络, 往往需要先进行一个简单的测试, 来验证网络是否畅通; 但是IP协议并不提供可靠传输. 如果丢包了, IP协议并不能通知传输层是否丢包以及丢包的原因
例如上图的主机A想要给主机B发送消息,如果主机B关机了,当数据到达主机B所在的局域网的路由器中时,路由器首先会在数据链路层构建ARP请求,问局域网中哪一台主机叫做主机B。但是主机B已经下线了,所以路由器注定是收不到ARP响应的,多次之后,路由器就会将zhujiA发送的消息丢弃了。
但是站在主机A的角度上来看,他并不会收到响应,如果传输层使用的是TCP协议,他会认为报文丢失了,或者网络发生拥塞了。于是继续重传报文。但是无论怎么传送都无济于事,因为对方已经下线了。
所以有了ICMP协议,当路由器多次ARP请求无果时,就会给主机A返回一个ICMP包,其中包含了数据包丢失的原因,主机A知道主机B已经下线了,就不会重发浪费资源了。
2.1 ICMP功能
- 确认IP包是否成功到达目标地址.
- 通知在发送过程中IP包被丢弃的原因.
- ICMP也是基于IP协议工作的. 但是它并不是传输层的功能, 因此人们仍然把它归结为网络层协议;
- ICMP只能搭配IPv4使用. 如果是IPv6的情况下, 需要是用ICMPv6
上图就是之前说的例子,主机A发送的数据到达主机B所在局域网的路由器2上,路由器2发起多次ARP请求,多次之后收不到响应就会给A返回一个ICMP包告诉主机A,主机B已经下线了。
2.2 ping命令
ping命令是基于ICMP协议实现的,通常用于测试本地主机与另一台主机之间的通信信道是否正常。
我们可以使用ping命令来测试一下与百度直接的通信信道。
- 注意, 此处 ping 的是域名, 而不是url! 一个域名可以通过DNS解析成IP地址.
- ping命令不光能验证网络的连通性, 同时也会统计响应时间和TTL(IP包中的Time To Live, 生存周期).
- ping命令会先发送一个 ICMP Echo Request给对端;
- 对端接收到之后, 会返回一个ICMP Echo Reply;
telnet是23端口, ssh是22端口, 那么ping是什么端口?
我们要明白,ping虽然是一个应用层服务,但是他其实是基于ICMP,也就是网络层的,也就是说他不会经过传输层,而是从应用层直接到达网络层(Linux网络编程中使用原始套接字)。
而端口号其实是传输层的概念(传输层为了区分该报文来自哪个进程已经将报文交给哪个进程),所以ping不会有端口号。
3. NAT技术
3.1 技术背景
IPv4协议中, IP地址数量严重不充足,NAT技术当前解决IP地址不够用的主要手段, 是路由器的一个重要功能。
- NAT能够将私有IP对外通信时转为全局IP. 也就是就是一种将私有IP和全局IP相互转化的技术方法:
- 很多学校, 家庭, 公司内部采用每个终端设置私有IP, 而在路由器或必要的服务器上设置全局IP;
- 全局IP要求唯一, 但是私有IP不需要; 在不同的局域网中出现相同的私有IP是完全不影响的;
3.2 NAT转换
现在客户端A想要给服务器发送消息,在局域网中A的IP地址为10.0.0.10,经过NAT路由器时,路由器会将10.0.0.10转化成一个公网IP202.244.174.37。
当服务器接受到该报文后,可以知道发送端的公网IP,也就可以知道响应时应该交给互联网上的哪一台主机了,服务器将响应发送给202.244.174.37.当数据包到达NAT路由器后,又会被转化回10.0.0.10了。
为什么不将10.0.0.10直接发送到公网,而是经过转换的过程
10.0.0.10属于私网,而私网是不能发送到公网当中的,因为在公网之下有很多个局域网,每个局域网中都可能存在一个10.0.0.10,如果直接发送到公网当中,那么无法分辨出这个数据属于谁的了。
为什么要使用私网,直接使用公网不行吗?
理论上来说,所有主机使用不同的IP地址就不要进行转换了,但是问题是IP地址严重不足了,IPV4的ip地址是32位的,也就是说最多能表示2的32次方个IP地址,也就是42亿9千万,但是仅仅中国目前14亿人口,每个人可能上网设备都不止一个。
为了解决IP不足的问题,才有了NAT技术,将IP地址分为公网IP和私网IP,私网IP可以相同。我们只需要给进入公网的路由器分配一个公网IP即可,这个路由器下的局域网使用私网IP,要访问外网直接通过路由器转换即可。
服务端响应IP为202.244.174.37,如何确定是哪一台主机发送的数据?
NAT路由器后会形成一张表,例如当 10.0.0.10 第一次向 163.221.120.9 发送数据时就会生成表中的映射关系,当数据回来时,只需要判断发送端的IP是163.221.120.9,就知道这个报文是发送给10.0.0.10这台主机的。
并且此表中不一定只存放IP,必要时会将端口号也保存起来。
我们会在下面的NAPT详谈
3.3 NAPT
如果局域网内, 有多个主机都访问同一个外网服务器, 那么对于服务器返回的数据中, 目的IP都是相同的. 那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了. 使用IP+port来建立这个关联关系
这种关联关系也是由NAT路由器自动维护的. 例如在TCP的情况下, 建立连接时, 就会生成这个表项; 在断开连接后, 就会删除这个表项。
路由器接收到一个报文后,如何判断该报文交给哪个主机
因为NAT路由器生成了一张转化表,所以当收到一个报文后,我们只需要判断响应报文的发送端的IP地址和之前我请求报文的接受端地址是否相同即可。
比如10.0.0.10给163.221.120.9发送了一个请求报文,路由器就会记录下来,当收到一个报文,且他的发送端的IP是163.221.120.9,那我们就可以知道这个报文应该是发送给10.0.0.10这台主机的。
如果局域网中多台主机访问同一个服务器,响应报文中的发送端IP都相同,那么此时如何分辨出这个报文是谁请求的。
NAT转化表中不仅仅会保存IP还会保存端口号,端口号的作用就体现在这里了,我们仔细观察一下转化表。
- 若主机A发送的报文先到达路由器,那么路由器会将报文的源IP地址替换成自己的WAN口IP地址,由于路由器用于访问该服务器的1025号端口没有被使用,因此该数据包的源端口号可以不变。
- 当主机B发来的数据包到达路由器时,路由器同样将数据包的源IP地址替换成自己的WAN口IP地址,但此时路由器用于访问该服务器的1025号端口已经被主机A使用了,因此路由器会重新选定一个端口号对数据包的源端口号进行替换。
3.4 NAT的缺陷
由于NAT依赖这个转换表, 所以有诸多限制:
- 无法从NAT外部向内部服务器建立连接;
- 装换表的生成和销毁都需要额外开销;
- 通信过程中一旦NAT设备异常, 即使存在热备, 所有的TCP连接也都会断开
虽然说这是NAT的缺陷,但是也在一定程度上保护了内网的主机,因为内网主机不访问外网,外网是无法访问到内网的。
3.5 NAT和代理服务器
正向代理
正向代理,是一个位于客户端和目标服务器之间的服务器,客户端并不直接访问目标服务器,而是先访问代理服务器,由代理服务器代替客户端去访问对应的目标服务器,并将目标服务器的响应结果返回给客户端。
正向代理服务器的好处就是加快了访问速度,正向代理服务器可以把服务器资源提前缓存一部分,下次客户端再来请求这个资源时,直接从正向代理服务器中拿,而不需要再到服务器了。
反向代理
反向代理,也是一个位于客户端和目标服务器之间的服务器,客户端直接向反向代理服务器发起数据请求,然后再由反向代理服务器将客户端的数据请求转发给真正的目标服务器进行处理,数据处理完毕后反向代理服务器再将数据结果返回给客户端。
例如我们熟知的baidu.com其实就是访问反向代理服务器。当这台反向代理服务器收到客户端的数据请求后,就会将我们的数据请求转发给百度内部的某台服务器进行数据处理,然后再将数据处理的结果返回给客户端。
反向代理服务器的好处:
- 负载均衡:反向代理服务器可以将客户端请求分发到多个实际服务器上,从而平衡服务器的负载,提高系统的可伸缩性和可靠性。
- 安全性::通过在反向代理服务器上配置防火墙和安全策略,可以保护实际服务器免受未经授权的访问和攻击。
代理服务器的主要工作只是对数据进行转发,因此代理服务器处理数据的压力不会特别大,并且代理服务器也可以有多个,因此不必担心代理服务器过载的情况。
正向代理和反向代理
相同点:
- 正向代理和反向代理都位于客户端和真实服务器之间
- 它们的主要作用都是将客户端的请求转发给服务器,并将服务器的响应转发回客户端。
不同点:
- 正向代理:代表客户端执行请求,接收来自客户端的请求,并转发这些请求到目标服务器,然后再将服务器返回的结果返回给客户端。客户端知道实际请求的目标服务器地址,而目标服务器并不知道请求的来源。
- 反向代理:代表服务器接收请求,接收来自客户端的请求,并转发这些请求到内部网络中的某个服务器(如Web服务器),然后将服务器的响应返回给客户端。客户端并不知道实际响应的服务器地址,只知道它正在与反向代理服务器交互。
- 正向代理使用场景::通常用于客户端需要访问无法直接访问的网络资源时,如VPN(虚拟私人网络)服务,或者出于安全和隐私考虑,隐藏客户端的真实IP地址。
- 反向代理使用场景::常用于负载均衡、内容缓存、安全过滤等场景。例如,多个Web服务器可以使用反向代理进行负载均衡,确保请求被均匀地分发到各个服务器上。
NAT和代理服务器
路由器往往都具备NAT设备的功能, 通过NAT设备进行中转, 完成子网设备和其他子网设备的通信过程.
代理服务器看起来和NAT设备有一点像. 客户端像代理服务器发送请求, 代理服务器将请求转发给真正要请求的服务器; 服务器返回结果后, 代理服务器又把结果回传给客户端.
那么NAT和代理服务器的区别有哪些呢?
- 从应用上讲, NAT设备是网络基础设备之一, 解决的是IP不足的问题. 代理服务器则是更贴近具体应用, 比如通过代理服务器进行翻墙, 另外像迅游这样的加速器, 也是使用代理服务器.
- 从底层实现上讲, NAT是工作在网络层, 直接对IP地址进行替换. 代理服务器往往工作在应用层.
- 从使用范围上讲, NAT一般在局域网的出口部署, 代理服务器可以在局域网做, 也可以在广域网做, 也可以跨网.
- 从部署位置上看, NAT一般集成在防火墙, 路由器等硬件设备上, 代理服务器则是一个软件程序, 需要部署在服务器上.
4. 网络协议总结
4.1 应用层
- 应用层的作用: 满足我们日常需求的网络程序, 都是在应用层能
- 够根据自己的需求, 设计应用层协议.
- 了解HTTP协议.
- 理解DNS的原理和工作流程
4.2 传输层
- 传输层的作用:负责为两个网络通信进程之间的通信提供服务,更多的是为数据的传输提供一些策略。
- 理解端口号的概念。
- 认识TCP协议,理解TCP协议的可靠性,理解TCP协议的状态转化。
- 掌握TCP的连接管理、确认应答、超时重传、滑动窗口、流量控制、拥塞控制、延迟应答、捎带应答特性。
- 理解TCP面向字节流,理解粘包问题和解决方案。
- 能够基于UDP实现可靠传输。
- 理解MTU对UDP/TCP的影响。
4.3 网络层
- 网络层的作用:在复杂的网络环境中确定一条合适的路径。
- 理解IP地址,理解IP地址和MAC地址的区别。
- 理解IP协议格式。
- 理解如何解决IP数目不足的问题,掌握网段划分的两种方案,理解私有IP和公网IP。
- 理解网络层的IP地址路由过程,理解一个数据包如何跨网段到达最终目的地。
- 理解IP数据包分片的原因。
- 了解ICMP协议。
- 了解NAT设备的工作原理。
4.4 数据链路层
- 数据链路层的作用:负责局域网内两个设备之间的数据传递。
- 理解以太网通信原理
- 以太网帧格式。
- 理解MAC地址。
- 理解ARP协议。
- 理解MTU。
相关文章:

网络其他重要协议(DNS、ICMP、NAT)
1.DNS DNS是一整套从域名映射到IP的系统 1.1 DNS背景 TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆,例如我们想访问百度就会在浏览器中输入baidu.com而不是百度的IP地址。于是人们发明了一种叫主机名的东西, 是…...
利用PyCSP3库(含大量全局约束)进行组合约束建模
文章目录 1. 什么是 PyCSP3 ?2. 安装方法(Windows)2.1 通过 Google_colab 直接运行2.2 通过 pip 进行安装3. 快速入门3.1 声明变量3.2 更新约束3.3 定义目标3.4 常用的全局约束1. 什么是 PyCSP3 ? PyCSP3 是 Python 中的一个库,用于对组合约束问题进行建模,包括 约束满足…...

解决updateByExample时属性值异常的问题(部分属性值没有使用占位符?进行占位,而是变成了属性的名称)
目录 场景简介代码片断实体类 报错信息排查原因解决测试过程解决方案 场景简介 1、程序将mybatis框架升级为3.5.9版本后执行updateByExample方法时报错 代码片断 Condition condition new Condition(MbCcsSessionConfig.class); condition.createCriteria().andEqualTo(&quo…...
[C++][algorithm][Eigen] 基于Eigen实现Softmax函数
1 简介 Softmax函数是机器学习和深度学习中一个非常重要的激活函数,它在多分类问题中尤其关键。Softmax函数能够将一个向量或一组实数转换成概率分布,使得每个元素的值都在0到1之间,并且所有元素的和为1。本博客文章《【Eigen】基于Eigen实现…...

一招教大家,如何移除受保护的excel工作表的编辑权限限制?
有时候,我们打开工作表发现只有部分单元格可以编辑,点击其他单元格都显示“您试图更改的单元格或图标受保护”,既没法正常编辑或下拉填充,也没有办法快捷筛选。这时候我们可以通过输入密码解除保护,就可以正常编辑了。…...

Python 全栈体系【四阶】(五十三)
第五章 深度学习 十二、光学字符识别(OCR) 2. 文字检测技术 2.3 DB(2020) DB全称是Differentiable Binarization(可微分二值化),是近年提出的利用图像分割方法进行文字检测的模型。前文所提…...

民国漫画杂志《时代漫画》第27期.PDF
时代漫画27.PDF: https://url03.ctfile.com/f/1779803-1248635258-b6a842?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了,截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!...

图论(四)—最短路问题(Dijkstra)
一、最短路 概念:从某个点 A 到另一个点B的最短距离(或路径)。从点 A 到 B 可能有多条路线,多种距离,求其中最短的距离和相应路径。 最短路径分类: 单源最短路:图中的一个点到其余各点的最短路径…...

用友NC linkVoucher SQL注入漏洞复现
0x01 产品简介 用友NC是由用友公司开发的一套面向大型企业和集团型企业的管理软件产品系列。这一系列产品基于全球最新的互联网技术、云计算技术和移动应用技术,旨在帮助企业创新管理模式、引领商业变革。 0x02 漏洞概述 用友NC /portal/pt/yercommon/linkVoucher 接口存在…...

部署Prometheus + Grafana实现监控数据指标
1.1 Prometheus安装部署 Prometheus监控服务 主机名IP地址系统配置作用Prometheus192.168.110.27/24CentOS 7.94颗CPU 8G内存 100G硬盘Prometheus服务器grafana192.168.110.28/24CentOS 7.94颗CPU 8G内存 100G硬盘grafana服务器 监控机器 主机名IP地址系统配置k8s-master-0…...

GEE27:遥感数据可用数据源计算及条带号制作
1.写在前面 🌍✨今天读了一篇关于遥感数据可用数据源计算及条带号制作的文章,结合着自己的理解,添加了一些内容。 2.GEE代码 📚📚这段代码的主要作用是利用Google Earth Engine平台,通过分析Landsat 8影…...
FURNet问题
1. 为什么选择使用弱监督学习? 弱监督学习减少了对精确标注数据的依赖,这在医学图像处理中尤为重要,因为高质量标注数据通常需要大量专业知识和时间。弱监督学习通过利用少量标注数据或粗略标注数据来训练模型,降低了数据准备的成…...

抖音小店怎么对接达人合作?达人带货的细节分享,附邀约达人话术
大家好,我是电商花花 人有多大胆,地就有多大产,做抖店想要出单,爆单,那必须要对接大量的达人来帮我们带货,抖音小店就是直播电商,帮我们对接的达人越多,出单就越多。 所以做抖店如…...

迈向未来:Web3 技术开发的无限可能
在当今的数字时代,互联网技术日新月异,推动着各行各业的变革与发展。从Web1.0的信息发布,到Web2.0的社交互动,互联网的每一次进化都为人们的生活带来了深远的影响。如今,Web3的到来正在开启一个全新的时代,…...
Python应用开发——30天学习Streamlit Python包进行APP的构建(2)
🗓️ 天 14 Streamlit 组件s Streamlit 组件s 是第三方的 Python 模块,对 Streamlit 进行拓展 [1]. 有哪些可用的 Streamlit 组件s? 好几十个精选 Streamlit 组件s 罗列在 Streamlit 的网站上 [2]. Fanilo(一位 Streamlit 创作者)在 wiki 帖子中组织了一个很棒的 St…...

Leecode热题100---46:全排列(递归)
题目: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 思路: 元素交换函数递归: 通过交换元素来实现全排列。即对于[x, nums.size()]中的元素,for循环遍历每个元素分别成…...
Android 多语言
0. Locale方法 Locale locale Locale.forLanguageTag("zh-Hans-CN"); 执行如下方法返回字符串如下: 方法 英文下执行 中文下执行 备注 getLanguage()zhzhgetCountry()CNCNgetDisplayLanguage()zh中文getDisplayCountry()CN中国getDisplayName()zh (…...

Thingsboard规则链:Message Type Filter节点详解
一、Message Type Filter节点概述 二、具体作用 三、使用教程 四、源码浅析 五、应用场景与案例 智能家居自动化 工业设备监控 智慧城市基础设施管理 六、结语 在物联网(IoT)领域,数据处理与自动化流程的实现是构建智能系统的关键。作…...

SQLI-labs-第二十五关和第二十五a关
目录 第二十五关 1、判断注入点 2、判断数据库 3、判断表名 4、判断字段名 5、获取数据库的数据 第二十五a关 1、判断注入点 2、判断数据库 第二十五关 知识点:绕过and、or过滤 思路: 通过分析源码和页面,我们可以知道对and和or 进…...
Windows、Linux添加路由
目录 一、Windows添加路由 1. 查看路由规则 2. 添加路由规则 3. 添加默认路由 4. 删除路由规则 二、Linux添加路由 1. 查看路由 2. 添加路由 3. 删除路由 4. 修改路由 5. 临时路由 6. 默认网关设置 一、Windows添加路由 1. 查看路由规则 route print 2. 添加…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
[Java恶补day16] 238.除自身以外数组的乘积
给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...