【Linux网络】网络基础概念深度解析
📢博客主页:https://blog.csdn.net/2301_779549673
📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson
📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
📢本文由 JohnKi 原创,首发于 CSDN🙉
📢未来很长,值得我们全力奔赴更美好的生活✨
文章目录
- 🏳️🌈一、计算机网络背景
- 1.1 网络发展
- 🏳️🌈二、初始协议
- 2.1 分层协议
- 2.2 OSI 七层模型
- 2.3 TCP/IP 五层(或四层)模型
- 🏳️🌈三、再识协议
- 3.1、为什么要有 TCP/IP 协议
- 3.2 什么是 TCP/IP 协议
- 3.3 TCP/IP 协议与操作系统的关系
- 3.4 所以究竟什么是协议
- 🏳️🌈四、网络传播基本流程
- 4.1、局域网网络传输流程图
- 4.1.1 局域网(以太网为例)通信原理
- 4.1.2 认识 MAC
- 4.1.3 数据包封装和分用
- 4.2 跨网络传输流程图
- 4.2.1 网络中的地址管理 - IP 地址
- 👥总结
🏳️🌈一、计算机网络背景
1.1 网络发展
- 独立模式: 计算机之间相互独立!
- 网络互联: 多台计算机连接在一起, 完成数据共享!
- 局域网 LAN: 计算机数量更多了, 通过交换机和路由器连接在一起!
- 广域网 WAN: 将远隔千里的计算机都连在一起!
所谓 “局域网
” 和 “广域网
” 只是一个相对的概念. 比如, 我们有 “天朝特色” 的广域网, 也可以看做一个比较大的局域网.
计算机是人的工具,人要协同工作,注定了网络的产生是必然的.
🏳️🌈二、初始协议
- “协议” 是 一种约定.
- 打电话约定电话铃响的次数的约定
计算机之间的传输媒介是光信号和电信号,通过"频率"和"强弱"来表示0和1这样的信息,要想传递各种不同的信息,就需要约定好双方的数据格式.
思考: 只要通信的两台主机, 约定好协议就可以了么?
定好协议,但是你用频率表示 01,我用强弱表示 01,就好比我用中国话,你用葡萄牙语一样,虽然大家可能遵守的一套通信规则,但是语言不同,即是订好了基本的协议,也是无法正常通信的
所以,完善的协议,需要更多更细致的规定,并让参与的人都要遵守。
- 计算机生产厂商有很多;
- 计算机操作系统, 也有很多;
- 计算机网络硬件设备, 还是有很多;
如何让这些不同厂商之间生产的计算机能够相互顺畅的通信?
- 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是
网络协议
; - 一般具有定制协议或者标准的资格的组织或者公司都必须是业界公认或者具有江湖地位的组织或者公司,下面是文心一言生成的标准制定组织
问:能定制协议标准的组织或者公司
答:能定制协议标准的组织或公司主要有以下几类:
- 国际标准化组织:
- IEEE(电气和电子工程师协会):这是一个由计算机和工程领域专家组成的庞大技术组织,在通信协议领域贡献突出。IEEE 制定了全世界电子、电气和计算机科学领域 30%左右的标准,包括 IEEE 802 系列标准,这些标准涵盖了从局域网(LAN)到广域网(WAN)等多种网络技术。
- ISO(国际标准化组织):ISO 是由多个国家的标准化团体组成的国际组织,它在开放系统互连(OSI)模型方面的工作尤为著名。OSI 模型定义了网络通信的七层协议结构,尽管在实际应用中,TCP/IP 协议族更为普遍,但 OSI 模型仍然在学术和理论研究中占有重要地位。
- ITU(国际电信联盟):ITU 是联合国下属的专门机构,负责制定电信领域的国际标准。ITU-T 制定的标准涵盖了电话和网络通信,与 ISO 合作确保了通信技术的全球兼容性和互操作性。
- 区域标准化组织:
- ETSI(欧洲电信标准学会):由欧洲共同体各国政府资助,是一个由电信行业的厂商与研究机构参加并从事研究开发到标准制定的组织。
- ASTAP(亚洲与泛太平洋电信标准化协会):1998 年由日本与韩国发起成立的标准化组织,旨在加强亚洲与太平洋地区各国信息通信基础设施及其相互连接的标准化工作的协作。
- 公司:
- 某些公司,如泰凌微,也自研各种标准的软件协议栈,包括低功耗蓝牙、zigbee、thread 及 Matter 等,并可进行定制化改动,这是其核心竞争力之一。泰凌微还计划重点发展智能电子价签、智能遥控、智能家居等市场。
- 民间国际团体:
- IETF(互联网工程师任务组):这是一个负责开发和推广互联网协议(特别是构成 TCP/IP 协议族的协议)的志愿组织,通过 RFC 发布新的或者取代老的协议标准。
- 官方机构:
- FCC(联邦通信委员会):美国对通信技术的管理的官方机构,主要职责是通过对无线电、电视和有线通信的管理来保护公众利益。也对包括标准化在内的通信产品技术特性进行审查和监督。
以上这些组织或公司都能在一定程度上定制协议标准,以满足特定需求或推动技术发展。
2.1 分层协议
协议本质也是软件,在设计上为了更好的进行模块化,解耦合,也是被设计成为层状结构的
- 在这个例子中, 我们的"协议"只有两层: 语言层、通信设备层。
- 但是实际的网络通信协议,设计的会更加复杂, 需要分更多的层
- 但是通过上面的简单例子,我们是能理解,分层可以实现解耦合,让软件维护的成本更低
2.2 OSI 七层模型
OSI(Open System Interconnection,开放系统互连)
七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;- 把网络从逻辑上分为了 7 层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;
- OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;
- 它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;
- 但是, 它既复杂又不实用; 所以我们按照 TCP/IP 四层模型来讲解.
- 其实在网络角度,OSI 定的协议 7 层模型其实非常完善,但是在实际操作的过程中,会话层、表示层是不可能接入到操作系统中的,所以在工程实践中,最终落地的是 5 层协议。
- 但是要理解上面的话,需要我们学习完网络才可以理解,这里就知道就可以。
2.3 TCP/IP 五层(或四层)模型
TCP/IP 是一组协议的代名词,它还包括许多协议,组成了 TCP/IP 协议簇.
TCP/IP 通讯协议采用了 5 层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求.
- 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.
- 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线 LAN 等标准. 交换机(Switch)工作在数据链路层.
- 网络层: 负责地址管理和路由选择. 例如在 IP 协议中, 通过 IP 地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.
- 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.
- 应用层: 负责应用程序间沟通 ,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.
物理层我们考虑的比较少,我们只考虑软件相关的内容. 因此很多时候我们直接称为
TCP/IP 四层模型
.
一般而言
- 对于一台主机, 它的操作系统内核实现了从
传输层
到物理层
的内容; - 对于一台路由器, 它实现了从
网络层
到物理层
; - 对于一台交换机, 它实现了从
数据链路层
到物理层
; - 对于集线器, 它只实现了
物理层
;
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发);
🏳️🌈三、再识协议
上面的内容,我们只是懂了一些基本概念,还是达不到我们的目标,下面我们再次重新理解协议和协议分层。
3.1、为什么要有 TCP/IP 协议
- 首先,即便是单机,你的计算机内部,其实都是存在协议的,比如:其他设备和内存通信,会有内存协议。其他设备和磁盘通信,会有磁盘相关的协议,比如:SATA,IDE,SCSI 等。只不过我们感知不到罢了。而且这些协议都在本地主机各自的硬件中,通信的成本、问题比较少。
- 其次,网络通信最大的特点就是主机之间变远了。任何通信特征的变化,一定会带来新的问题,有问题就得解决问题,所以需要新的协议咯。
可是目标主机C和我距离太远了
- 我要发数据给主机C,得先发到路由器R吧?怎么办?
- 网上这么多主机,怎么定位并找到主机C呢?怎么办?
- 如果我的数据发出去,丢失了?怎么办?
- 发数据不是目的,只是手段,用数据才是目的?
- 主机C怎么知道我发出去的数据该怎么被处理,被使用呢?
所以,为什么要有 TCP/IP 协议? 本质就是通信主机距离变远了
3.2 什么是 TCP/IP 协议
- TCP/IP 协议的本质是一种
解决方案
- TCP/IP 协议能分层,前提是因为问题们本身能分层
3.3 TCP/IP 协议与操作系统的关系
宏观上,怎么实现!
所有的主机上面安装的OS可以不同,事实也就是不同。但是所有的主机上面的协议栈必须按照标准进行相同的实现,这就是为什么不同的主机,可以互相通信的秘密。
传输层
最著名的协议就是TCP
;网络层
最著名的协议就是IP
;
而 传输层(TCP)
和 网络层(IP)
两层必须实现在内核中,无论OS再怎么不同,这部分大家必须遵守协议必须一样!
- 网卡就是底层硬件
- 数据链路层在驱动程序中
- 网络层和传输层被集中在内核中
- 应用层就在OS上层,由用户实现
整个协议栈,既涉及到硬件,又涉及到驱动,又涉及到OS,甚至用户。所以这个协议一定是需要IT各行业都要进行支持和配合的。
3.4 所以究竟什么是协议
截止到目前,我们还没接触过任何协议,但是如何朴素的理解协议,我们已经可以试试了。
OS 源代码一般都是用 C/C++语言写的。
问题:主机 B 能识别 data,并且准确提取 a=10,b=20,c=30 吗
回答:答案是肯定的!因为双方都有同样的结构体类型 struct protocol。也就是说,用同样的代码实现协议,用同样的自定义数据类型,天然就具有”共识“,能够识别对方发来的数据,这不就是约定吗?
关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型
因为协议栈是分层的,所以,每层都有双方都有协议,同层之间,互相可以认识对方的协议。
网络购物,快递单的例子
比如我们在网上买了一个鼠标,其中会经过很多个快递站点,最后到我们手中,为了让快递员和分拣员们知道送往哪里,收件人是谁,商家在发快递的时候会贴一张快递单,这种快递单就相当于是一个协议,双方都能够认识,最后我们也会收到快递单(协议报头)和鼠标(有效载荷)!
🏳️🌈四、网络传播基本流程
4.1、局域网网络传输流程图
4.1.1 局域网(以太网为例)通信原理
- 首先回答,两台主机在同一个局域网,是否能够直接通信? 可以
- 原理类似上课(任意的人都能够互相通信)
- 每台主机在局域网上,要有唯一的标识来保证主机的唯一性:mac 地址
4.1.2 认识 MAC
- MAC 地址用来识别数据链路层中相连的节点;
- 长度为 48 位, 即 6 个字节. 一般用 16 进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
- 在网卡出厂时就确定了, 不能修改. mac 地址通常是唯一的 (虚拟机中的 mac 地址不是真实的 mac 地址, 可能会冲突; 也有些网卡支持用户配置 mac 地址).
Linux中使用命令查看MAC地址:
ifconfig # 查看和配置Linux系统中的网络接口
后面我们详细谈论数据链路层的时候,会谈 mac 帧协议,此处我们做一个了解即可。
- 以太网中,任何时刻,只允许一台机器向网络中发送数据
- 如果有多台同时发送,会发生数据干扰,我们称之为数据碰撞
- 所有发送数据的主机要进行
碰撞检测
和碰撞避免
- 没有交换机的情况下,一个以太网就是一个碰撞域
- 局域网通信的过程中,主机对收到的报文确认是否是发给自己的,是通过目标mac 地址判定
- 这里可以试着从系统角度来理解局域网通信原理
初步明白了局域网通信原理,再来看同一个网段内的两台主机进行发送消息的过程
而其中每层都有协议,所以当我进行进行上述传输流程的时候,要进行封装和解包
注意:每一层往下加报头实际是入栈的过程,每一层往上解包实际是出栈的过程,因此称为网络协议栈!
下面我们明确一下概念
- 报头部分,就是对应协议层的结构体字段,我们一般叫做
报头
- 除了报头,剩下的叫做
有效载荷
- 故,报文 = 报头 + 有效载荷
然后,我们在明确一下不同层的完整报文的叫法
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 “上层协议字段” 将数据交给对应的上层协议处理.
最后,在整体复盘一下:
在网络传输的过程中,数据不是直接发送给对方主机的 ,而是先要自定向下将数据交付给下层协议,最后由底层发送,然后由对方主机的底层来进行接受,在自底向上进行向上交付,上面是一张示意图。
4.1.3 数据包封装和分用
下图为数据封装的过程
下图为数据分用的过程
从今天开始,我们学习任何协议,都要先宏观上建立这样的认识:
-
- 要学习的协议,是如何做到解包的?只有明确了解包,封包也就能理解
-
- 要学习的协议,是如何做到将自己的有效载荷,交付给上层协议的?
4.2 跨网络传输流程图
4.2.1 网络中的地址管理 - IP 地址
IP 协议有两个版本,
IPv4
和IPv6
. 我们整个的博客, 凡是提到 IP 协议, 没有特殊说明的,默认都是指 IPv4
- IP 地址是在 IP 协议中, 用来标识网络中不同主机的地址;
- 对于 IPv4 来说, IP 地址是一个 4 字节, 32 位的整数;
- 我们通常也使用 “点分十进制” 的字符串表示 IP 地址, 例如 192.168.0.1 ; 用点
- 分割的每一个数字表示一个字节, 范围是 0 - 255;
跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.
下面是一张示意图
首先理解一下 IP 地址的意义
- 为什么要去目标主机,先要走路由器?
- 目的 IP 的意义
然后结合封装与解包,体现路由器解包和重新封装的特点
- 网络层(就是IP层) 向上(包括网络层)看到的所有的报文都是一样的;都至少是IP报文!
- IP可以屏蔽底层网络的差异!
- 所有的IP网络都是IP网络!
对比IP 地址和 Mac 地址的区别
- IP 地址在整个路由过程中,一直不变(目前,我们只能这样说明,后面在修正)
- Mac 地址一直在变
- 目的 IP 是一种长远目标,Mac 是下一阶段目标,目的IP 是路径选择的重要依据,mac 地址是局域网转发的重要依
据提炼 IP 网络的意义和网络通信的宏观流程
👥总结
本篇博文对 【Linux网络】网络基础概念深度解析 做了一个较为详细的介绍,不知道对你有没有帮助呢
觉得博主写得还不错的三连支持下吧!会继续努力的~
相关文章:
【Linux网络】网络基础概念深度解析
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
【NLP 61、大模型应用 —— RAG方法】
生活打不败一个大口吃饭的人! —— 25.4.13 一、模型幻觉问题 模型幻觉(AI Hallucination)是指人工智能模型(尤其是大语言模型)生成看似合理但实际不准确、虚构或与事实不符内容的现象。其本质是模型基于统计概…...
UV工具——小试牛刀
背景 MCP开发使用到 为什么MCP更推荐使用uv进行环境管理? MCP 依赖的 Python 环境可能包含多个模块,uv 通过 pyproject.toml 提供更高效的管理方式,并且可以避免 pip 的一些依赖冲突问题。此外,uv 的包管理速度远超 pip…...
vue3+vite 多个环境配置
同一套代码 再也不用在不同的环境里来回切换请求地址了 然后踩了一个坑 就是env的文件路径是在当前项目下 不是在views内 因为公司项目需求只有dev和pro两个环境 虽然我新增了3个 但是只在这两个里面配置了 .env是可以配置一些公共配置的 目前需求来说不需要 所以我也懒得配了。…...
《分布式软总线架构下,设备虚拟化技术的深度剖析与优化策略》
设备之间的互联互通和协同工作已成为一种趋势。分布式软总线架构作为实现这一目标的关键技术,为不同设备之间的通信和协作提供了基础。而设备虚拟化技术则是在分布式软总线架构下,进一步提升设备资源利用效率的重要手段。本文将深入探讨在分布式软总线架…...
MCP 正当时:FunctionAI MCP 开发平台来了!
作者:封崇 MCP:AI 时代的“操作系统接口” 2024 年 11 月,Anthropic 发布模型上下文协议(MCP),这一开放标准迅速引发开发者社区的"协议觉醒"。其本质是通过标准化接口实现 LLM 与外部世界的双向…...
AI Agents系列之AI代理的类型
在本文中,我们将探讨不同类型的 AI 代理,包括它们的实现、实际应用、优势和局限性。从简单反射代理到多代理系统,我们将了解这些模型如何推动自动化、决策制定和智能问题解决。 文章目录 1. AI代理的类型1.1 简单反射代理1.1.1 实现**1.1.2 优势****1.1.3 局限性**1.2 基于…...
Go RabbitMQ基础教程:入门与实践指南,实战代码讲解
简介: RabbitMQ是一款实现高级消息队列协议(AMQP)的消息代理软件,也称为消息队列或消息中间件。它通过解耦应用程序之间的直接通信,支持异步数据交换,增强了系统的可扩展性和灵活性。RabbitMQ能够跨平台运…...
LeetCode详解之如何一步步优化到最佳解法:27. 移除元素
LeetCode详解系列的总目录(持续更新中): LeetCode详解之如何一步步优化到最佳解法:前100题目录(更新中...)-CSDN博客 LeetCode详解系列的上一题链接: LeetCode详解之如何一步步优化到最佳解法…...
c++原子操作
原子操作,顾名思义,该操作不可分割。多线程环境也能保证读写数据不错乱。百度搜索了下,其核心概念如下: 1、不可分割性。原子操作是指一系列不可被CPU上下文交换的机器指令,操作要么完全执行,要么完全不执…...
在 Redis Lua 脚本中,keyCount 参数的作用是明确区分脚本参数中的 KEYS 和 ARGV,具体关系如下:
在 Redis Lua 脚本中,keyCount 参数的作用是**明确区分脚本参数中的 KEYS 和 ARGV**,具体关系如下: --- ### 核心作用 1. **参数分类标识** - keyCount 表示脚本中使用的 Redis KEY 的数量(即 KEYS 数组的长度)…...
小白如何从0学习CSS
以下是针对小白从零开始系统学习 CSS 的完整路径和实用指南,结合核心概念、实践技巧和项目经验,助你掌握网页样式的精髓: 1. 理解 CSS 是什么? 定义:CSS(层叠样式表)用于控制网页的视觉表现&…...
一文掌握RK3568开发板Android13挂载Windows共享目录
在物联网和边缘计算场景中,开发板与PC端的高效文件交互尤为重要。现以iTOP-RK3568开发板为例,详细演示Android13系统如何通过CIFS协议挂载Windows共享目录,实现开发板与PC的无缝文件共享。 RK3568开发板优势 iTOP-3568开发板采用瑞芯微RK3…...
UE5烘培后->为什么C磁盘满了
烘培会产生ddc 需要把路径切换一下,比如切换到游戏空间下。 如何修改,修改如下: 使用记事本打开BaseEngine.ini文件。 将以下内容: textCopy Code Path\"%ENGINEVERSIONAGNOSTICUSERDIR%DerivedDataCache\" 替换为&…...
本地搭建全网可访问的开源音乐服务器Melody结合内网穿透随时听歌
文章目录 前言1. 添加镜像源2. 本地部署Melody3. 本地访问与使用演示4. 安装内网穿透5. 配置Melody公网地址6. 配置固定公网地址 前言 嗨,各位音乐发烧友们!今天我要带你们解锁一个超酷的新技能——在香橙派Zero3上搭建自己的在线音乐平台,并…...
深度学习Y5周:yolo.py文件解读
🍨 本文为🔗365天深度学习训练营中的学习记录博客🍖 原作者:K同学啊 一、前言 文件位置:./models/yolo.py 此文件是实现YOLOv5网络模型的搭建文件,如果想改进YOLOv5,这个文件是必须进行修改的…...
Qt实现文件传输服务器端(图文详解+代码详细注释)
Qt实现文件传输服务器 1、前言2、服务器2.1 服务器UI界面2.2添加网络模块和头文件2.3、创建服务器对象2.4 连接有新连接的信号与槽2.5实现有新连接处理的槽函数2.6 选择文件按钮实现2.6.1 连接按钮点击的信号与槽2.6.2 添加头文件2.6.3 创建所需对象2.6.3 选择文件按钮实现 2.7…...
记录学习的第二十七天
今天效率低下,只做了一道力扣的每日一题。 看了题解才懂的。下面复述一遍吧。 算法就是越长越合法型滑动窗口。 核心: 如果此时窗口中有c个元素x,此时再进一个x,那么相同数对就增加c个。 如果此时窗口有c个元素x,此…...
docker 安装TDengine 时序数据库
TDengine是一个高性能、分布式a的时序数据库,专为物联网(loT)和大数据分析日设计。使用Docker快速地搭建 TDengine 的开发或测试环境。以下技术指南,帮助您通过Docker Compose 安装并运行TDengine 1.拉取镜像 (3.3.6.0版本) docker pull registry.cn-ha…...
如何更好使用呼叫中心系统和语音机器人
要更好地使用呼叫中心系统和语音机器人,需要结合两者的优势,实现自动化、智能化、高效率的客户服务与业务运营。以下是优化策略和具体实践方法: 一、呼叫中心系统优化 1. 智能路由与IVR优化 智能ACD(自动呼叫分配&…...
C复习(主要复习)
指针和数组 指针数组是一个数组,数组的每个元素都是指针。它适用于需要存储多个指针的场景,如字符串数组。数组指针是一个指针,指向一个数组。它适用于需要传递整个数组给函数或处理多维数组的场景。 函数指针:函数指针的定义需要…...
网页五子棋项目测试报告
一、测试概述 网页五子棋项目运用 Java 语言与 Spring 框架开发,具备用户登录注册、人机对战、在线匹配对局、房间邀请对局及积分排行榜等功能。本次测试旨在评估项目各功能的完整性、稳定性与交互性,依据各文章所描述的功能设计和实现细节进行全面测试…...
大模型提示词prompt
系列文章目录 第一章 提示词的引言和指南 文章目录 系列文章目录前言原则1:写清楚具体的说明1、使用分割符2、要求结构化输出3、检查条件是否满足 检查完成任务所需的假设4、少量样例提示给出成功的例子 原则2:给模型足够的时间思考1、给予模型要输出执…...
如何让Agent开发正真可控、可靠?Cursor AI工程化
工程化的目的 不知道你在AI编程的过程中有没有这样的痛点?开发质量不理想、研发进度无法把控… 问题核心在于没有一套属于AI编程的规范,这正是工程化要解决的问题。 如何工程化 参考我们正常研发流程中的步骤,技术方案设计&评审->…...
计算机视觉——基于人工智能视觉注意力的在线广告中评估检测技术
概述 自2023年在线广告行业估计花费了7403亿美元以来,很容易理解为什么广告公司会投入大量资源进行这一特定领域的计算机视觉研究。 尽管这个行业通常较为封闭和保守,但偶尔也会在arxiv等公共存储库中发布一些研究,这些研究暗示了更先进的专…...
opencv函数展示
一、图像基础 I/O 与显示 1.cv2.imread() 2.cv2.imshow() 3. cv2.waitKey() 4. cv2.imwrite() 5. cv2.selectROI() 6. cv2.VideoCapture() 二、颜色空间与转换 1. cv2.cvtColor() 2. cv2.split() 三、阈值处理 1. cv2.threshold() 2. 特殊阈值方法...
Redis 的不同数据结构分别适用于哪些微服务场景
我们一块来分析下Redis 的不同数据结构在微服务场景下的具体应用: 1. String (字符串) 特点: 最基本的数据类型,二进制安全,可以存储任何类型的数据(文本、序列化对象、图片等),最大 512MB。支持原子性的…...
用node编写git钩子hooks的示例
关于 git 钩子函数,就是在 git 进行提交的时候触发一些可执行脚本的功能,详情可以看这篇博客【GIT知识】git进阶-hooks勾子脚本_git hooks-CSDN博客,我这里稍微演示一下怎么用 node 编写钩子的脚本 以 pre-commit 钩子为例,会在用…...
RISC-V架构新生态:鸿道Intewell操作系统×全志D1芯片
在全球化技术博弈与自主可控需求的双重驱动下,RISC-V架构正从开源革命走向产业落地。然而,RISC-V生态的成熟不仅需要硬件层面的突破,更需操作系统与芯片的深度协同。鸿道Intewell操作系统与全志D1(RISC-V架构)芯片的适…...
盈达科技:重新定义GEO优化的技术边界与商业未来
——以硬核技术领跑生成式AI时代的认知主权争夺战 01 技术架构:AICC 2.0智能协同中心 生成式AI优化的「核动力引擎」 盈达科技独创的AICC 2.0(自适应-智能-认知-动态响应)智能协同中心,构建…...
芯片测试工具系统Demo示例
芯片测试工具系统Demo示例 一个简单的芯片测试工具系统Demo示例,包含基础功能和模拟测试流程,使用Python实现: python import time import random import csv from datetime import datetime class VirtualChip: """模…...
从单模态到多模态:五大模型架构演进与技术介绍
前言 1. ResNet — 残差神经网络背景核心问题与解决方案原理模型架构ResNet 系列变体技术创新与影响 2. ViT — Vision Transformer背景核心思想发展历程Transformer的起源:ViT的出现:ViT的进一步发展: 模型架构技术创新与影响 3. Swin Trans…...
基于 Java 的淘宝 API 调用实践:商品详情页 JSON 数据结构解析与重构
一、引言 在电商领域,淘宝拥有海量的商品数据。通过调用淘宝 API 可以获取商品详情页的 JSON 数据,这对于商家进行市场分析、竞品调研等具有重要意义。本文将详细介绍如何使用 Java 调用淘宝 API,获取商品详情页的 JSON 数据,并对…...
Sentinel源码—3.ProcessorSlot的执行过程二
大纲 1.NodeSelectorSlot构建资源调用树 2.LogSlot和StatisticSlot采集资源的数据 3.Sentinel监听器模式的规则对象与规则管理 4.AuthoritySlot控制黑白名单权限 5.SystemSlot根据系统保护规则进行流控 3.Sentinel监听器模式的规则对象与规则管理 (1)Sentinel的规则对象 …...
【C++11】列表初始化、右值引用、完美转发、lambda表达式
📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🌐 C 语言 上篇文章:unordered_map、unordered_set底层编写 下篇文章:C11:新的类功能、模板的可…...
Spring中IOC的重点理解(笔记)
Spring: 出现在2002左右.解决企业级开发的难度.减轻对项目模块 类与类之间的管理帮助开发人员创建对象,管理对象之间的关系. 补充:什么是OCP原则?(面试) (1)是软件七大开发当中最基本的一个原则ÿ…...
数据库系统概论|第三章:关系数据库标准语言SQL—课程笔记4
前言 前面详细介绍了关于SELECT语句的相关使用方法,继续上文的介绍,本文将继续介绍数据查询的其他相关操作,主要包括排序(ORDER BY)子句、分组(GROUP BY)子句。与此同时,介绍完单表…...
【1】CICD持续集成-docker本地搭建gitlab代码仓库社区版
一、gitlab社区版概述 GitLab社区版(Community Edition, CE)是一个开源的版本控制系统,适用于个人开发者、中小团队及大型企业。 GitLab社区版采用MIT许可证,用户可以免费使用和修改源代码。其主要功能包括代码托管、版本控制…...
Verdi工具使用心得知识笔记(一)
Verdi工具使用知识点提炼 本文来源于移知,具体文档请咨询厚台 一、基础概念 波形依赖 Verdi本身无法生成波形,需配合VCS等仿真工具生成.fsdb文件。核心功能模块 • nTrace:代码调试与追踪 • nSchema:原理图分析 • nState&…...
【25软考网工笔记】第二章 数据通信基础(4)数据编码
目录 一、曼彻斯特编码 1. 以太网 2. 题型(考试过的选择题) 1)题目解析 二、差分曼彻斯特编码 三、两种曼彻斯特编码特点 编辑 1. 双相码 2. 将时钟和数据包含在信号数据流中 3. 编码效率低 4. 数据速率是码元速率的一半 5. 应用案例 编辑 1&…...
【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——USB OTG测试
1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 第四章 ATK-DLMP257B功能测试——USB OTG测试…...
现代c++获取linux系统磁盘大小
现代c获取linux系统磁盘大小 前言一、命令获取系统磁盘大小二、使用c获取系统磁盘大小三、总结 前言 本文介绍一种使用c获取linux系统磁盘大小的方法 一、命令获取系统磁盘大小 在linux系统中可以使用lsblk命令显示当前系统磁盘大小,如下图所示 lsblk二、使用c获…...
tcp和udp的数据传输过程以及区别
tcp和udp的数据传输过程以及区别 目录 一、数据传输过程 1.1 UDP 数据报服务图 1.2 TCP 字节流服务图 1.3 tcp和udp的区别 1.3.1 连接特性 1.3.2 可靠性 1.3.3 数据传输形式 1.3.4 传输效率与开销 应用场景 一、数据传输过程 1.1 UDP 数据报服务图 这张图展示了 UDP 数据报服务…...
C++项目-衡码云判项目演示
衡码云判项目是什么呢?简单来说就是这是一个类似于牛客、力扣等在线OJ系统,用户在网页编写代码,点击提交后传递给后端云服务器,云服务器将用户的代码和测试用例进行合并编译,返回结果到网页。 项目最大的两个亮点&…...
C 语言中的 volatile 关键字
1、概念 volatile 是 C/C 语言中的一个类型修饰符,用于告知编译器:该变量的值可能会在程序控制流之外被意外修改(如硬件寄存器、多线程共享变量或信号处理函数等),因此编译器不应对其进行激进的优化(如缓存…...
mysql表类型查询
普通表 SELECT table_schema AS database_name,table_name FROM information_schema.tables WHERE table_schema NOT IN (information_schema, mysql, performance_schema, sys)AND table_type BASE TABLEAND table_name NOT IN (SELECT DISTINCT table_name FROM informatio…...
JavaScript事件循环
目录 JavaScript 执行机制与事件循环 一、同步与异步代码 1. 同步代码(Synchronous Code) 2. 异步代码(Asynchronous Code) 二、事件循环(Event Loop) 1. 核心组成 2. 事件循环基本流程 3. 运行机制…...
Linux》》bash 、sh 执行脚本
通常使用shell去运行脚本,两种方法 》bash xxx.sh 或 bash “xxx.sh” 、sh xxx.sh 或 sh “xxx.sh” 》bash -c “cmd string” 引号不能省略 我们知道 -c 的意思是 command,所以 bash -c 或 sh -c 后面应该跟一个 command。...
Git完全指南:从入门到精通版本控制 ------- Git 查看提交历史(8)
Git提交历史深度解析:从代码考古到精准回退 前言 在软件开发的生命周期中,提交历史是团队协作的时空胶囊。Git作为分布式版本控制系统,其强大的历史追溯能力可帮助开发者: 精准定位引入Bug的提交分析代码演进趋势恢复误删的重要…...
精益数据分析(2/126):解锁数据驱动的商业成功密码
精益数据分析(2/126):解锁数据驱动的商业成功密码 大家好!在如今这个数据爆炸的时代,数据就像一座蕴含无限宝藏的矿山,等待着我们去挖掘和利用。最近我在深入研读《精益数据分析》这本书,收获了…...