网站推广结束语/男生短期培训就业
来源自小林Coding博客,阅读后部分精简笔记
目录
一、IP 的基本认识
二、DNS
三、ARP
四、DHCP
五、NAT
六、ICMP
七、IGMP
七、ping 的工作原理
ping-----查询报文的使用
traceroute —— 差错报文类型的使用
八、断网了还能 ping 通 127.0.0.1 吗?
8.1、什么是 127.0.0.1 ?
8.2、为什么断网了还能 ping 通 12.0.0.1 ?
8.3、127.0.0.1 和 localhost 以及 0.0.0.0 有区别吗?
一、IP 的基本认识
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层。
网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通信。
有的同学可能分不清 IP(网络层)和 MAC(数据链路层)之间的区别和关系
其实很容易区分,IP 的作用是主机之间通信用的,而 MAC 地址的作用则是实现【直连】的两个设备之间通信,而 IP 则负责在【没有直连】的网络之间进行通信传输。
IP 地址的分类:
最大主机个数,就是要看主机号的位数,如 C 类地址的主机号占 8 位,那么 C 类地址的最大主机个数:
为什么减 2 呢?
因为在 IP 地址中,有两个 IP 是特殊的,分别是主机号全为 1 和全为 0 地址:
- 主机号全为 1 指定为某个网络下的所有主机用于广播
- 主机号全为 0 指定某个网络
广播地址用于什么?
用在同一链路中相互连接的主机之间发送数据包。广播地址分为本地广播和直接广播:
在本网络内广播的叫做本地广播,在不同网络之间的广播叫做直接广播。
IP 分类的缺陷:
同一网络下没有地址层次,缺少地址的灵活性
A,B,C 类网络有个尴尬的处境就是不能很好的与现实网络匹配
- C 类地址能包含的最大主机数量实在太少了,只有 254 个,估计一个网吧都不够
- 而 B 类地址能包含的最大主机数量又太多了,6 万多台机器放在一个网络下面,一般企业达不到这个规模,空闲的就是浪费了
这两个缺点都可以在 CIDR 无分类解决
IP 地址与路由控制
IP 地址的网络地址这一部分是用于进行路由控制,路由控制表中记录着网络地址与下一步应该发送至路由器的地址。在主机和路由器上会有各自的路由器控制表。在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由器控制表中找到与该地址具有相同网络地址的记录,根据该纪录将 IP 包发送给相应的下一个路由器,如果路由器表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就是最长匹配。
注意:环回地址是不会流向网络,环回地址是在同一台计算机上的程序之间进行网络通信时所使用的一个默认地址。计算机使用一个特殊的 IP 地址 127.0.0.1 作为环回地址。与该地址具有相同意义的是一个叫做 localhost 的主机名。使用这个 IP 或主机名时,数据包不会流向网络。
IP 分片与重组
每种数据链路的最大传输单元 MTU 都是不相同的,如 FDDI 数据链路 MTU 4352、以太网的 MTU 是 1500 字节等。
每种数据链路的 MTU 之所以不同,是因为每个不同类型的数据链路的使用目的不同。使用目的不同,可承载的 MTU 也就不同。其中我们最常见数据链路是以太网,它的 MTU 是1500 字节。当 IP 数据包大小大于 MTU 时,IP 数据包就会被分片。经过分片之后的 IP 数据报在被重组的时候,只能由目标主机进行,路由器是不会进行重组的。在分片传输中,一旦某个分片丢失,则会造成整个 IP 数据报作废,所以 TCP 引入了 MSS 也就是在 TCP 层进行分片不由 IP 分片,那么对于 UDP 我们尽量不要发送一个大于 MTU 的数据报文。
二、DNS
我们在上网的时候,通常使用的方式是域名,而不是 IP 地址,因为域名方便人们记忆,那么实现这一技术的就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址。
DNS 中的域名都是用句号隔开的,比如 www.server.com ,这里的句点代表了不同层次之间的界限,在域名中,越靠右的位置表示其层级越高,所有的域名层级关系都类似于一棵树状结构。而 DNS 域名解析的过程蛮有意思的,整个过程就像和我们日常生活中找人问路的过程类似,只指路不带路。
三、ARP
在传输一个 IP 数据报的时候,确定了源 IP 地址和目标 IP 地址后,就会通过主机【路由表】确定 IP 数据包下一跳。然而,网络层的下一层是数据链路层,所以我们还要知道【下一跳】的 MAC 地址。由于主机的路由表中可以找到下一跳的 IP 地址,所以可以通过 ARP 协议,求得下一跳的地址。
ARP 又是如何知道对方的 MAC 地址的呢?
简单的说,ARP 是借助 ARP 请求和 ARP 响应两种类型的包确定 MAC 地址的。
- 主机会通过广播发送 ARP 请求,这个包中包含了想要知道的 MAC 地址的主机 IP 地址
- 当同个链路中的所有设备收到 ARP 请求时,会去拆开 ARP 请求包里的内容,如果 ARP 请求包中的目标 IP 地址与自己的 IP 地址一致,那么这个设备就将自己的 MAC 地址塞入 ARP 响应包返回给主机。
操作系统通常会把第一次通过 ARP 获取的 MAC 地址缓存起来,以便下次直接从缓存中找到对应 IP 地址的 MAC 地址。不过,MAC 地址的缓存是由一定期限的,超过这个期限,缓存的内容将被清除。
RARP 协议是什么你知道不?
RARP 协议与 ARP 协议正好相反,是已知 MAC 地址求 IP 地址。例如将打印机服务器等小型嵌入式设备接入到网络中就经常会用到。通常要架设一台 RARP 服务器,在这个服务器上注册设备的 MAC 地址和 IP 地址,然后再将这个设备接入网络,接着:
- 该设备会发送一条【我的 MAC 地址是 XXXX ,请告诉我,我的 IP 地址应该是什么】的请求信息
- RARP 服务器接到这个消息后返回【MAC地址为 XXXX 的设备,IP 地址为 XXXX】的信息给这个设备
最后设备就根据从 RARP 服务器所收到的应答消息设置自己的 IP 地址
四、DHCP
DHCP 在生活中很常见,电脑通常都是通过 DHCP 动态获取 IP 地址,大大省去了配 IP 信息繁琐的过程。
DHCP 交互中,全程都是用 UDP 广播通信
五、NAT
IPv4 的地址是非常紧缺的,在前面我们也提到可以通过无分类地址来减缓 IPv4 地址耗尽的速度,但是互联网的用户增速是非常惊人的,所以 IPv4 地址依然有被耗尽的危险。
于是提出了一种网络转换 NAT 的方法,缓解了 IPv4 地址耗尽的问题。
两个私有 IP 地址都转换 IP 地址为共有地址,但是是以不同端口号为区分。于是生成了一个 NAPT 路由器表的转换表,就可以正确地转换地址跟端口的组合,令客户端 A、B 同时能与服务端之间进行通信。
缺点:
- 外部无法主动与 NAT 内部服务器建立连接,因为 NAPT 转换表没有转换记录
- 转换表的生成与转换操作都会产生性能开销
- 通信过程中,如果 NAT 路由器重启了,所有的 TCP 连接都将被重置
解决办法:使用 IPv6 地址,NAT 穿透技术
NAT 穿透技术:能够让网络应用程序主动发现自己位于 NAT 设备后,并且会主动获得 NAT 设备的共有 IP ,并为自己建立端口映射条目,注意这些都是 NAT 设备后的应用程序自动完成的。也就是说,在 NAT 穿透技术中,NAT 设备后的应用程序处于主动地位,它已经明确知道 NAT 设备要修改它外发的数据包,于是主动配合 NAT 设备的操作,主动地建立好映射,这样就不会像以前由 NAT 设备来建立映射了。说人话就是,客户端主动从 NAT 设备中获取公有 IP ,然后自己建立端口映射条目,然后用这个条目对外通信,就不需要 NAT 设备来进行转换了。
六、ICMP
ICMP 全称是 Internet Control Message Protocol ,也就是互联网控制报文协议
主要功能包括:确认 IP 包是否成功送达目标地址、报告发送过程中 IP 包被丢弃的原因和改善网络设置等。
在 IP 通信中如果某个 IP 包因为某种原因未能到达目标地址,那么这个原因将由 ICMP 负责通知。
ICMP 大致可以分为两类:
- 一类是用于诊断的查询消息,也就是【查询报文类型】
- 另一类是通知出错原因的错误消息,也就是【差错报文类型】
七、IGMP
IGMP 是因特网组管理协议,工作在主机(组播成员)和最后一跳路由之间:
- IGMP 报文向路由器申请加入和退出组播组,默认情况下路由器是不会转发组播包到连接中的主机,除非主机通过 IGMP 加入到组播组,主机申请加入到组播组时,路由器就会记录 IGMP 路由器表,路由器后续就会转发组播包到对应的主机了。
- IGMP 报文采用 IP 封装,IP 头部的协议号为 2,而且 TTL 字段值通常为 1,因为 IGMP 是工作在主机与连接的路由器之间
七、ping 的工作原理
ping 命令执行的时候,源主机首先会构建一个 ICMP 回送请求消息数据包。
ping-----查询报文的使用
接下来我们重点看 ping 的发送和接收过程
同个子网下的主机 A 和主机 B ,主机 A 执行 ping 主机 B 后我们看看中间发送了什么?
ping 命令执行的时候,源主机首先会构建一个 ICMP 回送请求消息数据包。
ICMP 数据包内包含多个字段,最终的是两个:
- 第一个是类型,对于回送请求消息而言该字段为 8
- 另外一个是序号,主要用于区分连续 ping 的时候发出的多个数据包
每发出一个请求数据包,序号会自动加 1,为了能够计算往返时间 RTT ,他会在报文的数据部分插入发送时间
然后由 ICMP 协议将这个数据包连同这个地址 192.168.1.2 一起交给 IP 层。IP 层将以 192.168.1.2 作为目的地址,本机 IP 地址作为源地址,协议字段设置为 1,表示是 ICMP 协议,再加上一些其他控制信息,构建一个 IP 数据包。
接下来加入 MAC 头。如果在本地 ARP 映射表中查找出 IP 地址 192.168.1.2 所对应的 MAC 地址,则可以直接使用,如果没有,则需要发送 ARP 协议查询 MAC 地址,获得 MAC 地址后,由于数据链路层构建一个数据帧,目的地址是 IP 层传过来的 MAC 地址,源地址则是本机的 MAC 地址,还要附加上一些控制信息,依据以太网的介质访问规则,将他们传送出去。
主机 B 收到这个数据帧后,先检查它的目的 MAC 地址,并和本机的 MAC 地址对比,如符合,则接收,否则就丢弃。接收后检查该数据帧,将 IP 数据包从帧中提取出来,交给本机的 IP 层。同样 IP 层检查后,将有用的信息提取后交给 ICMP 协议。主机 B 会构建一个 ICMP 回送响应消息数据包,回送响应数据包的类型字段为 0,序号为接收到的请求数据包的序号,然后再发送出去给 主机 A。
在规定时间内,源主机如果没有接到 ICMP 的应答包,则说明主机不可达,如果接收到了 ICMP 回送响应消息,则说明目标主机可达。此时源主机会检查,用当前时刻减去该数据包最初从源主机发送出的时刻,就是 ICMP 数据包的时间延迟。
traceroute —— 差错报文类型的使用
traceroute 作用一:故意设置特殊的 TTL ,来追踪去往目的地时沿途的经过的路由器
这是如何工作的呢?
它的原理就是利用 IP 报的生存期限从 1 开始按照顺序递增的同时发送 UDP 包,强制接收 ICMP 超时消息的一种方法。比如将 TTL 设置为 1,则遇到第一个路由器,就牺牲了,接着返回 ICMP 差错报文网络类型,类型是时间超时。接下来将 TTL 设置为 2,第一个路由器过了,遇到第二个路由器也牺牲了,同时也返回了 ICMP 差错报文数据包,如此往复,直到到达目的主机。这样的过程,traceroute 就可以拿到了所有的路由器 IP 。
发送方如何知道发出去的 UDP 包是否到达了目的主机呢?
traceroute 在发送 UDP 包时,会填入一个不可能的端口号,作为 UDP 目标端口号,然后由于每个下一个探针,他都会增加一个,这些端口号都是通常认为不会使用,不过,没有人会知道当某些程序监听此端口会发生什么。当目的主机,收到 UDP 包后,会返回 ICMP 差错报文消息,但这个差错报文消息的类型是【端口不可达】,所以当差错报文类型是端口不可达时,说明发送方发出的 UDP 包到达了目的主机。
作用二:故意设置不分片,从而确定路径的 MTU。
这样做是为了什么?目的是为了路径 MTU 发现。
工作原理如下:首先在发送端主机发送 IP 数据报时,将 IP 包首部的分片禁止标志位设置为 1,根据这个标志位,途中的路由器不会对大数据包进行分片,而是将包丢弃。随后,通过一个 ICMP 的不可到达消息将数据链路上 MTU 的值一起发送给主机,不可到达的消息的类型为【需要进行分片但设置了不分片位】,发送主机端每次收到 ICMP 差错报文时就减少包的大小,以此来定位一个合适的 MTU 值,以便能达到目标主机。
八、断网了还能 ping 通 127.0.0.1 吗?
断网了能 ping 通 127.0.0.1 。
8.1、什么是 127.0.0.1 ?
首先这是个 IPv4 地址,IPv4 地址有 32 位,一个字节有 8 位,共 4 个字节。
其中 127 开头的都属于回环地址,也是 IPv4 的特殊地址,没什么道理,就是人为规定的。而 127.0.0.1 是众多回环地址的一个。之所以不是 127.0.0.2 ,而是 127.0.0.1 ,是因为源码里就是这个定义的,也没什么道理。
8.2、为什么断网了还能 ping 通 12.0.0.1 ?
在有网的情况下,ping 最后是通过网卡将数据发送出去的。在断网的情况下可以看一下工作原理:
从应用层到传输层再到网络层。这段路径跟 ping 外网的时候是几乎是一样的。到了网络层,系统会根据目的 IP,在路由表中获取对应的路由信息,而这其中就包含选择哪个网卡把消息发送出去。当发现目标 IP 是外网的话,会从”真网卡“ 发送出去,当发现目标 IP 是回环地址时,就会选择本地网卡。本地网卡实际上就是个”假网卡“,它不像”真网卡“一样有个 ring buffer 什么的,”假网卡“会把数据推到一个叫做 input_pkt_queue 的链表中。这个链表是所有网卡共享的,上面挂着发给本机的各种消息。消息被发送到这个链表后,会再触发一个软中断。专门处理软中断的工具人是”ksoftrqd“这是个内核线程,它在收到软中断后就会立马去链表里把消息取出,然后顺着数据链路层,网络层等层层网上传递最后到应用程序。
ping 回环地址和通过 TCP 等各种协议发送数据到回环地址都是走这条路径。整条路径从发到收,都没有经过”真网卡“。之所以叫 127.0.0.1 叫本地回环地址,可以理解为,消息发出到这个本地上的话,就不会发出网络,在本机打个转就又回来了。所以断网能 ping 通 127.0.0.1
ping 回环地址和 ping 主机地址没有区别,都是在本机网络协议栈中兜一圈,就发回来了。
8.3、127.0.0.1 和 localhost 以及 0.0.0.0 有区别吗?
是有区别的:
首先 localhost 就不叫 IP ,它是一个域名,就跟 ”baidu.com“,是一个形式的东西,只不过默认会把它解析成 127.0.0.1 ,当然这可以在 /etc/hosts 文件下修改。
所以默认情况下,使用 localhost 跟使用 127.0.0.1 是没有区别的。其次就是 0.0.0.0 ,执行 ping 0.0.0.0 是会失败的,因为它在 IPv4 中是无效地址的目标地址,但是它还是很有用的,我们再启动服务器的时候,一般会 listen 一个IP 和一个端口,等待客户端的连接,如果此时 listen 的是本机的 0.0.0.0 那么它代表的是本机的所有 IPv4 地址(当然,客户端 connect 时,不能使用 0.0.0.0 ,必须要指明连接哪个服务器 IP )
相关文章:

计算机网络之IP篇
来源自小林Coding博客,阅读后部分精简笔记 目录 一、IP 的基本认识 二、DNS 三、ARP 四、DHCP 五、NAT 六、ICMP 七、IGMP 七、ping 的工作原理 ping-----查询报文的使用 traceroute —— 差错报文类型的使用 八、断网了还能 ping 通 127.0.0.1 吗&…...

Java中JDK类库常用的6种设计模式
Java中JDK类库常用的6种设计模式:1、抽象工厂。2、建造者模式。3、工厂模式。4、原型模式。5、单例模式。6、适配器模式。 1、抽象工厂 javax.xml.parsers.DocumentBuilderFactory抽象类。 public static DocumentBuilderFactory newInstance()方法。 类功能&…...

C++ 用法全面剖析
我们知道,参数的传递本质上是一次赋值的过程,赋值就是对内存进行拷贝。所谓内存拷贝,是指将一块内存上的数据复制到另一块内存上。 对于像 char、bool、int、float 等基本类型的数据,它们占用的内存往往只有几个字节,对…...

数据库结构
三级结构 内模式:也称为物理模式,它是数据库中数据的物理存储表示,描述了数据在存储介质上的存储方式和物理结构,通常由数据库管理员进行定义。 概念模式:也称为逻辑模式,它是对数据库中全体数据的逻辑表示…...

什么是HTML以及超链接,特殊符号转义的简单使用
目录 什么是HTML🌸 HTML版本 版本说明🌸 XHTML和HTML的区别 超链接🌸基本语法🌸链接的分类 特殊符号 什么是HTML HTML 不是编程语言,没有逻辑处理能力,没有计算能力,不能动态地生成内容&#x…...

汽车销售技巧培训应该学习哪些内容
汽车销售技巧培训应该学习哪些内容 随着汽车市场的竞争日益激烈,汽车销售技巧培训对于提高销售人员的销售能力和服务水平至关重要。本文将介绍汽车销售技巧培训应该学习哪些内容,并结合案例进行分析。 一、产品知识 作为销售人员,了解所销售…...

机器学习---Adaboost算法
1. Adaboost算法介绍 Adaboost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然 后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。Adaboost算法本身…...

Java网络编程,使用UDP实现TCP(三), 基本实现四次挥手
简介 四次挥手示意图 在四次挥手过程中,第一次挥手中的Seq为本次挥手的ISN, ACK为 上一次挥手的 Seq1,即最后一次数据传输的Seq1。挥手信息由客户端首先发起。 实现步骤: 下面是TCP四次挥手的步骤: 第一次挥手&…...

“百里挑一”AI原生应用亮相,百度智能云千帆AI加速器首个Demo Day来了!
作者简介: 辭七七,目前大二,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖…...

PyTorch深度学习实战(25)——自编码器
PyTorch深度学习实战(25)——自编码器 0. 前言1. 自编码器2. 使用 PyTorch 实现自编码器小结系列链接 0. 前言 自编码器 (Autoencoder) 是一种无监督学习的神经网络模型,用于数据的特征提取和降维,它由一个编码器 (Encoder) 和一…...

靠谱的车- 华为OD统一考试(C卷)
靠谱的车- 华为OD统一考试(C卷) OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题…...

Apache Flink(十一):Flink集群部署-Standalone集群部署
🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录 1. 节点划分...

vue的组件传值
Vue中组件之间的数据传递可以使用props和$emit来实现。 1.使用props传递数据:父组件可以通过子组件的props属性向子组件传递数据。 父组件中: <template><div><child-component :message"parentMessage"></child-comp…...

ue5材质预览界面ue 变黑
发现在5.2和5.1上都有这个bug 原因是开了ray tracing引起的,这个bug真是长时间存在,类似的bug还包括草地上奇怪的影子和地形上的影子等等 解决方法也很简单,就是关闭光追(不是…… 就是关闭预览,在材质界面preview sc…...

【SpringCloud篇】Eureka服务的基本配置和操作
文章目录 🌹简述Eureka🛸搭建Eureka服务⭐操作步骤⭐服务注册⭐服务发现 🌹简述Eureka Eureka是Netflix开源的一个基于REST的服务治理框架,主要用于实现微服务架构中的服务注册与发现。它由Eureka服务器和Eureka客户端组成&#…...

模拟目录管理 - 华为OD统一考试(C卷)
OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 实现一个模拟目录管理功能的软件,输入一个命令序列,输出最后一条命令运行结果。 支持命令: 1)创建目录命令: mkdir 目录名称,如mkdir abc为在当前目录创建abc目录,如果已存在同名目录则不执行任何操作…...

卷王开启验证码后无法登陆问题解决
问题描述 使用 docker 部署,后台设置开启验证,重启服务器之后,docker重启,再次访问系统,验证码获取失败,导致无法进行验证,也就无法登陆系统。 如果不了解卷王的,可以去官网看下。…...

【知识】如何区分图论中的点分割和边分割
转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 以下两个概念在现有中文博客下非常容易混淆: edge-cut(边切割) vertex-partition(点分割)vertex-cut(点切割) edge-partition(边分割) 实际上,初看中文时,真的会搞不清楚。但…...

【华为鸿蒙系统学习】- HarmonyOS4.0开发工具和环境配置问题总结|自学篇
🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 💫个人格言:"没有罗马,那就自己创造罗马~" 目录 官方链接 HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 安装教程 (…...

第78讲:MySQL数据库Binlog日志的核心概念与应用案例
文章目录 1.Binlog二进制日志的基本概念1.1.什么是Binlog二进制1.2.Binlog日志的三种记录格式1.3.Binlog日志中Event事件的概念 2.开启MySQL的Binlog二进制日志3.查看Binlog二进制日志中的Event事件信息3.1.查看当前数据库有那些Binlog日志3.2.产生一些DDL/DML语句3.3.观察Binl…...

MinGW编译Python至pyd踩坑整理
title: MinGW编译Python至pyd踩坑整理 tags: [Python,CC] categories: [开发记录,Python] date: 2023-12-12 13:48:20 description: sidebar: [‘toc’, ‘related’,‘recent’] 注意需要魔法 用scoop自动安装配置MinGw 需要魔法,不需要手动配置mingw scoop in…...

计算机毕业设计 基于SpringBoot的乡村政务办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

命令行参数(C语言)
目录 什么是命令行参数 main函数的可执行参数 不传参打印 传参打印 IDE传参 cmd传参 命令行参数的应用(文件拷贝) 什么是命令行参数 概念:命令行参数指的是在运行可执行文件时提供给程序的额外输入信息。它们通常以字符串形式出现&am…...

WT2003H4-16S语音芯片:扭蛋机新潮音乐,娱乐升级无限
在扭蛋机的乐趣世界里,唯创知音的WT2003H4-16S语音芯片,作为MP3音乐解码播放IC,为扭蛋机带来了更智能、更富有趣味的音乐体验,为玩家打开了娱乐升级的无限可能。 1. 机启音乐,欢迎扭蛋之旅 扭蛋机启动时,…...

Go 语言开发工具
Go 语言开发工具 VSCode VScode 安装教程参见:https://www.kxdang.com/topic//w3cnote/vscode-tutorial.html 然后我们打开 VSCode 的扩展(CtrlShiftP): 搜索 go: 点击安装,安装完成后我们就可以使用代码…...

神经网络是如何工作的? | 京东云技术团队
作为一名程序员,我们习惯于去了解所使用工具、中间件的底层原理,本文则旨在帮助大家了解AI模型的底层机制,让大家在学习或应用各种大模型时更加得心应手,更加适合没有AI基础的小伙伴们。 一、GPT与神经网络的关系 GPT想必大家已…...

C++ Qt开发:RadioButton单选框分组组件
Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍QRadioButton单选框组件以及与之交互的QButto…...

推荐开源项目-网络应用协议框架Socket.D
基于事件和语义消息流的网络应用协议 Socket.D 0 代码仓库地址1 该开源项目特点2 项目结构3 核心理念-协议帧Frame4 结束语 0 代码仓库地址 https://gitee.com/noear/socketd 1 该开源项目特点 代码风格优雅文档说明齐全测试用例非常人性化上手快,代码用例很多代…...

Redis缓存异常问题,常用解决方案总结
前言 Redis缓存异常问题分别是:1.缓存雪崩。2.缓存预热。3.缓存穿透。4.缓存降级。5.缓存击穿,以 及对应Redis缓存异常问题解决方案。 1.缓存雪崩 1.1、什么是缓存雪崩 如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有…...

java开发的智能聊天机器人_超级AI_支持自动绘画功能
支持Web、Android、IOS、H5等多终端应用。它使用OpenAI的ChatGPT模型实现智能聊天机器人,并支持绘图自动生成Vincent图。未来还将接入国内大型AI模型,如文心一言、统一千问、MOSS等模型,并不断更新以满足用户需求。 AI大脑软件中的AI绘画功能…...