网络编程核心概念解析:IP地址、端口号与网络字节序深度探讨
⭐小白苦学IT的博客主页
⭐初学者必看:Linux操作系统入门
⭐代码仓库:Linux代码仓库
❤关注我一起讨论和学习Linux系统
本节重点
认识IP地址, 端口号, 网络字节序等网络编程中的基本概念;
1.前言
网络编程,作为现代信息社会中的一项核心技术,不仅支撑着互联网应用的蓬勃发展,更深刻地影响着我们的日常生活与工作方式。在探索网络编程的奥秘时,我们会发现一些基础而重要的概念,如IP地址、端口号和网络字节序,它们如同构建网络世界的基石,支撑起整个网络通信的大厦。
IP地址,作为网络世界中每个设备的唯一标识,为信息的准确传递提供了基础。端口号,则进一步细化了通信的目标,确保数据能够到达正确的应用程序。而网络字节序,则是网络通信中数据格式化的关键,它确保了不同系统间能够正确地解析和传递数据。
在这篇博客中,我们将深入解析这些网络编程中的核心概念,探讨它们的原理、作用以及在实际应用中的重要意义。通过理解这些基础概念,我们不仅能够更好地掌握网络编程的技术,更能为构建高效、稳定的网络系统提供坚实的理论支撑。
2.理解源IP地址和目的IP地址
在IP数据包头部中, 有两个IP地址, 分别叫做源IP地址, 和目的IP地址.
源IP地址,顾名思义,就是数据包的起始地址,它告诉网络中的路由器这个数据包是从哪个设备发出的。这就像唐僧系统取经的故事中,唐僧和他的徒弟们从大唐(源地址)出发去西天取经。在这个比喻中,大唐就可以看作是源IP地址,代表了旅程的起点。
目的IP地址则是数据包的目标地址,它告诉网络中的路由器这个数据包应该送到哪个设备。在唐僧西天取经故事中,西天(灵山)就是他们的目的地,代表了他们想要达到的目标。因此,灵山在这个比喻中就对应着目的IP地址。
在网络通信中,路由器就像故事中的指路者,它们根据数据包中的源IP地址和目的IP地址,决定数据包应该经过哪条路径,最终到达正确的目的地。就像唐僧他们一路上需要经过多个国家和城市,最终才能到达西天一样,数据包在网络中也需要经过多个路由器和交换机,才能从源IP地址到达目的IP地址。
思考: 我们光有IP地址就可以完成通信了嘛? 想象一下发qq消息的例子, 有了IP地址能够把消息发送到对方的机器上,但是还需要有一个其他的标识来区分出, 这个数据要给哪个程序进行解析.
3.认识端口号
端口号(port)是传输层协议的内容.
- 端口号是一个2字节16位的整数;
- 端口号用来标识一个进程, 告诉操作系统, 当前的这个数据要交给哪一个进程来处理;
- IP地址 + 端口号能够标识网络上的某一台主机的某一个进程;
- 一个端口号只能被一个进程占用.
用一个故事理解端口号:
想象一下,10086是中国移动的客服电话,它就像一个网络中的服务端口,等待着客户的来电。这个电话号码(10086)就类似于一个端口号,它在中国移动的网络服务中起到了标识和定位的作用。
在中国移动的网络中,可能有许多不同的服务,比如话费查询、套餐变更、故障报修等。这些服务都需要一个特定的“通道”或“接口”来接收和处理来自客户的请求。端口号就像是这样的一个“通道”或“接口”,它确保客户的请求能够准确地被发送到相应的服务部门。
当客户拨打10086时,电话网络会根据这个电话号码(端口号)将客户的请求路由到中国移动的客服中心。在客服中心,可能有多个接线员(或者说,多个处理请求的线程或进程)负责处理不同的服务请求。但是,由于客户的电话是通过10086这个端口号接入的,客服中心就能够知道这个请求是来自于拨打10086的客户,从而将其分配到相应的服务部门进行处理。
同样的,如果中国移动还提供了其他的客服电话,比如10085用于推销新业务,10088用于VIP客户服务等,那么这些电话号码就对应着不同的端口号。每个端口号都负责接收和处理特定类型的请求,确保了服务的准确性和高效性。
理解 "端口号" 和 "进程ID"
我们之前在学习系统编程的时候, 学习了 pid 表示唯一一个进程; 此处我们的端口号也是唯一表示一个进程. 那么这两者之间是怎样的关系?
在系统编程和网络编程中,PID(进程标识符)和端口号都扮演着标识特定实体的角色,但它们标识的对象和用途有所不同。
PID是操作系统用来唯一标识每个正在运行的进程的数字。操作系统会为每个新启动的进程分配一个唯一的PID,用于内部管理和控制,如启动、停止、暂停、恢复和终止进程等操作。PID保证了在操作系统层面,每个进程都可以被准确地识别和操作。
端口号则主要用于网络通信,用于标识运行在同一台计算机上的不同应用程序或服务。每个网络服务或应用程序都可以绑定到一个或多个特定的端口号上,这样网络数据包就能够根据目标端口号被正确地路由到对应的应用程序。端口号确保了在网络层面,数据能够准确地传输到目标应用程序。
简而言之,PID是操作系统内部用来唯一标识和管理进程的,而端口号则是在网络通信中用来标识和区分不同应用程序或服务的。一个进程可以有一个或多个与之关联的端口号(如果该进程涉及网络通信),但PID和端口号并不是一一对应的关系。一个进程可以有PID但没有绑定任何端口(如果它不涉及网络通信),而一个端口号则可以对应多个进程(例如,多个进程可以监听同一个端口,但通常这需要特殊的配置和处理)。
因此,PID和端口号虽然都是用来唯一标识某种实体,但它们标识的对象和使用的上下文是不同的。PID是操作系统层面的进程标识,而端口号是网络通信层面的应用程序或服务标识。
理解源端口号和目的端口号
传输层协议(TCP和UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口号. 就是在描述 "数据是谁发的, 要发给谁";
想象一下,送快递就像网络中的数据传输,而源端口号和目的端口号就像是快递单上的发货地址和收货地址。
首先,我们来看源端口号。假设你是一家网店,当你需要给顾客发货时,你会将商品打包好,并填写快递单。在这个快递单上,发货地址就是你的店铺地址,对应到网络通信中,这个发货地址就相当于是源端口号。源端口号标识了数据是从哪个应用程序或服务发出的,它告诉网络:“这些数据是从我这里发出去的,请把它们送到正确的目的地。”
接下来,我们看目的端口号。在快递的例子中,你填写快递单时还需要写上顾客的收货地址。这个收货地址就是快递的目的地,对应到网络通信中,就是目的端口号。目的端口号标识了数据应该被发送到哪个应用程序或服务,它告诉网络:“这些数据是送给那个特定的接收者的,请确保它们能够准确地送达。”
在送快递的过程中,快递公司会根据快递单上的发货地址和收货地址来安排快递的路线和投递。同样地,在网络通信中,路由器和交换机等网络设备会根据数据包中的源端口号和目的端口号来确定数据的传输路径,确保数据能够准确地从发送方到达接收方。
总结来说,源端口号就像快递单上的发货地址,标识了数据的发送源;而目的端口号就像收货地址,标识了数据的接收目标。通过这两个端口号,网络通信能够像送快递一样,将数据准确地发送到目标应用程序或服务。
4.认识TCP协议
此处我们先对TCP(Transmission Control Protocol 传输控制协议)有一个直观的认识;
- 传输层协议
- 有连接
- 可靠传输
- 面向字节流
TCP协议(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。它的主要作用是在网络应用中建立可靠的数据传输通道,确保数据按照发送的顺序到达接收端,并进行流量控制以防止发送速度过快导致接收端无法处理。
TCP协议之所以被广泛使用,主要是因为其能保证数据的可靠传输。在传输数据时,TCP协议会对数据进行分片、编号、校验等处理,同时还会进行数据的确认和重传等操作,确保数据的完整性和顺序性。此外,TCP协议还能通过窗口机制控制发送端的发送速度,实现流量控制,防止网络拥塞。
理解TCP协议,首先要了解其工作原理。TCP协议的工作过程主要包括建立连接、数据传输和可靠传输三个步骤。在建立连接时,通信双方会进行三次握手,确认连接的建立。然后,在数据传输阶段,发送方会将数据划分成小块(称为报文段),并添加头部和校验等信息,通过TCP协议发送给接收方。接收方收到报文段后,会进行校验并重新组装成完整的数据流。最后,TCP协议通过各种机制保证数据的可靠传输,如使用序列号对报文段进行标记,确保接收方按正确顺序重组数据;在发现报文段丢失或未收到确认时,会重新发送报文段。
TCP协议的应用场景非常广泛,包括Web浏览、电子邮件、文件传输、远程登录以及即时通讯等。在这些应用中,TCP协议都发挥着确保数据可靠传输的重要作用。
总的来说,TCP协议是一种高效且可靠的传输层协议,它通过一系列复杂的机制保证了数据的完整性、顺序性和流量控制,为各种网络应用提供了稳定的数据传输服务。
后面我们再详细讨论TCP的一些细节问题.
5.认识UDP协议
UDP(User Datagram Protocol)协议是一种无连接的传输层协议,它基于IP协议,为应用程序提供了一种简单的、不可靠的数据传输方式。UDP协议的主要特点如下:
- 无连接性:UDP在发送数据之前不需要建立连接,发送方可以直接将数据报发送给接收方,无需进行握手和协商,从而减少了开销和发送数据之前的时延。
- 不可靠性:UDP不保证数据包的可靠性、顺序性和完整性。它采用尽力交付的方式,即发送方只负责尽力将数据传输给接收方,而不保证接收方是否正确接收。这种特性使得UDP在传输过程中的开销较小,传输更加高效。
- 面向报文:UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界,并在添加首部后直接向下交付IP层。
- 无拥塞控制:UDP没有拥塞控制机制,网络出现的拥塞不会使源主机的发送速率降低。这对于某些实时应用(如在线游戏、实时音视频传输等)非常重要,因为它们需要高传输效率,尽管可能会牺牲一些数据的可靠性。
- 支持多种交互通信:UDP支持一对一、一对多、多对一和多对多的交互通信模式。
- 首部开销小:UDP的首部只有8个字节,比TCP的20个字节的首部要短,进一步降低了传输开销。
基于以上特点,UDP协议在多个领域有广泛的应用,包括但不限于实时流媒体传输(如在线游戏、视频会议和直播等)、DNS域名解析查询、SNMP网络设备管理和监控等。在这些应用中,UDP协议能够高效地处理大量的小数据包,满足实时性和高效率的要求。
此处我们也是对UDP(User Datagram Protocol 用户数据报协议)有一个直观的认识; 后面再详细讨论.
6.网络字节序
我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢?
- 发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出;
- 接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存;
- 因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址.
- TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节.
- 不管这台主机是大端机还是小端机, 都会按照这个TCP/IP规定的网络字节序来发送/接收数据;
- 如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可;
为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。
- 这些函数名很好记,h表示host,n表示network,l表示32位长整数,s表示16位短整数。
- 例如htonl表示将32位的长整数从主机字节序转换为网络字节序,例如将IP地址转换后准备发送。
- 如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回 ;
- 如果主机是大端字节序,这些 函数不做转换,将参数原封不动地返回。
网络字节序是什么?
网络字节序是TCP/IP中规定好的一种数据表示格式,它与具体的CPU类型、操作系统等无关,这样可以确保数据在不同主机之间传输时能够被正确解释。这种格式采用的是big-endian(大端)排序方式,也就是高位在前,低位在后。
为什么要有网络字节序?
至于网络字节序的由来,我们可以从一个有趣的故事说起。这个词“endian”其实出自于《格列佛游记》。书中描述的小人国的内战竟然源于一个看似微不足道的问题:吃鸡蛋时是究竟从大头(Big-Endian)敲开还是从小头(Little-Endian)敲开。这个问题竟然导致了六次叛乱,其中一个皇帝因此丧命,另一个则丢掉了王位。虽然这只是一个虚构的故事,但它生动地展示了“顺序”的重要性。
在计算机网络中,这种“顺序”问题同样存在。由于不同的主处理器和操作系统对大于一个字节的变量在内存中的存放顺序可能会有所不同,这就产生了字节序的问题。而为了保证数据的正确传输和解释,网络字节序作为一种统一的规定就显得尤为重要。它确保了在不同的主机和系统之间,数据的传输和解析都能够准确无误。
所以,网络字节序的存在,就像是计算机网络世界中的一个“和平条约”,它使得不同主机和系统能够和谐共处,共同维护着网络数据的正确性和完整性。
7.总结
IP地址是互联网协议地址,用于在网络中唯一标识不同的主机或设备。它是网络通信的基础,使得数据能够准确地发送到目标设备。IP地址分为IPv4和IPv6两个版本,分别具有不同的位数和表示方式。IPv4地址是一个4字节、32位的整数,通常用点分十进制的方式表示;而IPv6地址则是一个16字节、128位的整数,提供了更大的地址空间。
其次,端口号用于在一台主机上唯一标识一个网络通信进程。虽然IP地址可以指定网络传输的目标设备,但同一台设备上可能运行着多个应用程序,因此需要端口号来区分不同的通信进程。端口号是一个2字节、16位的整数,其范围通常为1到65535。通过指定源端口和目的端口,可以确保数据被正确地发送到目标主机上的对应进程。
最后,网络字节序是TCP/IP协议中规定的一种数据表示格式,用于确保数据在不同主机之间传输时能够被正确解释。由于不同的主机可能有不同的字节序(大端或小端),因此需要将数据转换为统一的网络字节序(大端序)进行传输。这样,接收方在收到数据后,可以按照相同的格式进行解析,从而避免数据解析错误。
综上所述,IP地址、端口号和网络字节序是网络编程中的基本概念,它们共同构成了网络通信的基础。IP地址负责标识网络中的设备,端口号用于区分同一设备上的不同通信进程,而网络字节序则确保了数据的正确传输和解析。
相关文章:

网络编程核心概念解析:IP地址、端口号与网络字节序深度探讨
⭐小白苦学IT的博客主页 ⭐初学者必看:Linux操作系统入门 ⭐代码仓库:Linux代码仓库 ❤关注我一起讨论和学习Linux系统 本节重点 认识IP地址, 端口号, 网络字节序等网络编程中的基本概念; 1.前言 网络编程,作为现代信息社会中的一项核心技术&…...
突破编程_C++_网络编程(TCPIP 四层模型(网络层(1))
1 网络层概述 TCP/IP 四层模型中的网络层是模型中的核心组成部分,它主要负责处理数据包的路由和转发,确保数据能够在源主机和目标主机之间准确地传输。 一、主要功能 网络层的主要功能是实现数据包的选路和转发。当数据从应用层传输到传输层后&#x…...

Java | Leetcode Java题解之第9题回文数
题目: 题解: class Solution {public boolean isPalindrome(int x) {// 特殊情况:// 如上所述,当 x < 0 时,x 不是回文数。// 同样地,如果数字的最后一位是 0,为了使该数字为回文࿰…...

极简云验证 download.php 文件读取漏洞复现
0x01 产品简介 极简云验证是一款开源的网络验证系统,支持多应用卡密生成:卡密生成 单码卡密 次数卡密 会员卡密 积分卡密、卡密管理 卡密长度 卡密封禁 批量生成 批量导出 自定义卡密前缀等;支持多应用多用户管理:应用备注 应用版…...

红黑树路径长度分析:证明与实现
红黑树路径长度分析:证明与实现 一、红黑树的基本性质二、证明:最长路径至多是最短路径的2倍2.1 证明思路2.2 证明过程 三、伪代码实现四、 C语言代码实现5、 结论 红黑树作为一种高效的自平衡二叉搜索树,在计算机科学领域中被广泛应用于各种…...
esp32 gpio初识(一)
目录 功能介绍 实操 功能介绍 引脚又叫管脚,英文叫 Pin, 就是从集成电路(芯片以及一些电子元件)内部电路引出与外围电路的接线的接口。 在我们的 ESP32 开发板上, 我们可以把这些称为引脚, 这些引脚其实是从 ESP32 芯片内部引出来的, 我们…...
python 自制黄金矿工游戏(设计思路+源码)
1.视频效果演示 python自制黄金矿工,细节拉满沉浸式体验,看了你也会 2.开发准备的工具 python3.8, pygame库(python3.5以上的版本应该都可以) 图片处理工具,美图秀秀 截图工具,电脑自带的 自动抠图网页:https://ko…...

Splunk Attack Range:一款针对Splunk安全的模拟测试环境创建工具
关于Splunk Attack Range Splunk Attack Range是一款针对Splunk安全的模拟测试环境创建工具,该工具完全开源,目前由Splunk威胁研究团队负责维护。 该工具能够帮助广大研究人员构建模拟攻击测试所用的本地或云端环境,并将数据转发至Splunk实例…...

OpenCV入门例程:裁剪图片、模糊检测、黑屏检测
初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 本例程运行环境为CentOS7&…...
opencv-python库 cv2边界填充resize图片
文章目录 边界填充改变图片大小 边界填充 在OpenCV中,边界填充(Border Padding)是指在图像周围添加额外的像素,以扩展图像的尺寸或满足某些算法(如卷积)的要求。OpenCV提供了cv2.copyMakeBorder()函数来进…...

Java代码基础算法练习-负数个数统计-2024.04.04
任务描述: 从键盘输入任意10个整型数(数值范围-100000~100000),统计其中的负数个数 任务要求: 代码示例: package April_2024;import java.util.Scanner;// 从键盘输入任意10个整型数(数值范围…...
【算法刷题day17】Leetcode:110.平衡二叉树 257. 二叉树的所有路径 404.左叶子之和
110.平衡二叉树 文档链接:[代码随想录] 题目链接::110.平衡二叉树 题目: 给定一个二叉树,判断它是否是 平衡二叉树 注意: 判断两棵子树高度差是否大于1 class Solution { public:int result;bool isBalanced(TreeNode…...

C++ | Leetcode C++题解之第10题正则表达式匹配
题目: 题解: class Solution { public:bool isMatch(string s, string p) {int m s.size();int n p.size();auto matches [&](int i, int j) {if (i 0) {return false;}if (p[j - 1] .) {return true;}return s[i - 1] p[j - 1];};vector<…...
职场迷航?MBTI测试为你指明方向,找到最匹配的职业!
MBTI简介 MBTI的全名是Myers-Briggs Type Indicator。它是一种迫选型、自我报告式的性格评估工具,用以衡量和描述人们在获取信息、作出决策、对待生活等方面的心理活动规律和性格类型。 类型指标 美国的凯恩琳布里格斯和她的女儿伊莎贝尔布里格斯迈尔斯研制了迈尔…...

hive 慢sql 查询
hive 慢sql 查询 查找 hive 执行日志存储路径(一般是 hive-audit.log ) 比如:/var/log/Bigdata/audit/hive/hiveserver/hive-audit.log 解析日志 获取 执行时间 执行 OperationId 执行人 UserNameroot 执行sql 数据分隔符为 \001 并写入 hiv…...

Vue - 2( 10000 字 Vue 入门级教程)
一:Vue 1.1 绑定样式 1.1.1 绑定 class 样式 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><title>绑定样式</title><style>......</style><script type"text/javascript" src&…...

Cisco交换机安全配置
Cisco交换机安全配置 前提 我们以下命令一般都要先进入Config模式 S1> enable S1# conf t S1(config)#端口安全保护 禁用未使用的端口 以关闭fa0/1到fa0/24的端口为例 S1(config)# interface range fa0/1-24 S1(config-if-range)# shutdown缓解MAC地址表攻击 防止CAM…...

LLM大模型可视化-以nano-gpt为例
内容整理自:LLM 可视化 --- LLM Visualization (bbycroft.net)https://bbycroft.net/llm Introduction 介绍 Welcome to the walkthrough of the GPT large language model! Here well explore the model nano-gpt, with a mere 85,000 parameters. 欢迎来到 GPT 大…...
【layui-table】转静态表格时固定表格列处理行高和单元格颜色
处理思路:覆盖layui部分表格样式 行高处理:获取当前行数据单元格的最高高度,将当前行所有数据单元格高度设置为该最高高度 单元格颜色处理:将原生表格转换为layui表格后,因为原生表格的表格结构和生成的layui表格结构…...

如何同时安全高效管理多个谷歌账号?
您的业务活动需要多个 Gmail 帐户吗?出海畅游,Gmail账号是少不了的工具之一,可以关联到Twitter、Facebook、Youtube、Chatgpt等等平台,可以说是海外网络的“万能锁”。但是大家都知道,以上这些平台注册多账号如果产生关…...
synchronized 学习
学习源: https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖,也要考虑性能问题(场景) 2.常见面试问题: sync出…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...