Linux:网络基础
hello,各位小伙伴,本篇文章跟大家一起学习《Linux:网络基础》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 !
如果本篇文章对你有帮助,还请各位点点赞!!!
话不多说,开始正题:
文章目录
- 1. 初识协议
- 2. 协议分层
- 2.1 软件分层的好处
- 2.2 OSI七层模型
- 2.3 TCP/IP 五层(或四层)模型
- 3. 重谈协议
- 3.1 网络和操作系统的关系
- 3.2 到底什么是协议
- 4. 网络基本流程
- 4.1 局域网通信原理
- 4.1.1 问题1 ---- 为什么要做那么多的封装?
- 4.1.2 问题2 ---- 主机2是怎么知道网卡收到数据的?
- 5. 跨网络传输流程图
- 5.1 网络中的地址管理-认识IP 地址
- 5.2 MA vs IP?
- 5.3 为什么要交给路由器?
- 如果路由器也不认识这个IP地址怎么办?
- 5.4 网络里一切皆IP
1. 初识协议
协议就是约定,好比如摩斯密码,约定长短信号,不同组合形成不同信息,对于计算机,通过频率和强弱来表示0和1,要想传递不同的信息,就需要约定好双方的数据格式
每种计算机都不一样,你的网卡和我的网卡未必一样,你是大端机器,我是小端机器,你是以四字节对齐,我是以八字节对齐……等区别,都需要很多协议(约定)来消除差异化,消除硬件和软件上的差异化
所以协议不仅仅是网络协议,硬件上软件上都是有协议的,协议是需要不同的公司在各自的领域上制定,那世界上这么多硬件厂商,凭什么要听你的呢?所以,就必须要有人站出来指定标准,对于网络就是网络协议
抛开网络,计算机自己也有协议,磁盘和内存也存在协议,要怎么读取,读多少,读到什么位置,磁盘里的LBA地址都是需要底层的工程师来帮助我们做驱动程序,这些也是协议,所以协议在计算机里无处不在!
2. 协议分层
协议本质也是软件,在设计上为了更好的模块化、解耦合,也是被设计为层状结构
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协议?
先讲讲我们计算机内部,实际上也是网络,你的键盘、显示器、内存、CPU……交互也是有协议的,但是这些硬件也就几十厘米及厘米的距离,一条线的事情,所以问题就不大,但是我的主机和你的主机进行交互,比如我在广东,你在上海,这个距离就很远了,就会引发新的问题,就好比本来在一个学校谈恋爱的情侣,因为某种原因变成了异地恋,必然会引入新的问题,所以要解决问题就要引入新的协议
TCP/IP协议也就是问题的解决方案
- 可是目标主机和我距离太远了,我要发数据给主机,得先发到路由器吧?怎么办? ---- 物理层问题 ---- 链路层问题
- 网上这么多主机,怎么定位并找到主机呢?怎么办? ---- 网络层问题
- 如果我的数据发出去,丢失了?怎么办? ---- 传输层问题
- 发送数据并不是目的,处理和使用数据才是目的,怎么办? ---- 应用层问题
所以这些不同性质的问题,就要引入不同的解决方案,所以协议就天然是分层的
3. 重谈协议
3.1 网络和操作系统的关系
操作系统可以不同,但是他们实现的网络协议栈必须是服从TCP/IP
协议的,如上图,网卡对应底层硬件,数据链路层对应驱动程序,传输层和网络层对应操作系统内核,应用层对应用户接口操作(传输层往上一律称为应用层)
所有的主机上面安装的操作系统可以不同,事实也就是不同但是所有的主机上面的协议栈必须按照标准进行相同的实现,这就是为什么不同的主机,可以互相通信的秘密!
对于网络协议栈,最核心的就是传输层和网络层,这两层最典型的协议就是TCP/IP协议
,所以整个网络协议栈统称叫做TCP/IP协议
可以看出来,整个协议栈,即涉及到硬件,又涉及到驱动,又涉及到OS,甚至用户,所以,这个协议一定是需要IT各行各业都要进行支持和配合
3.2 到底什么是协议
对于整个操作系统,肯定包含很多种不同的协议,那必须是要管理起来的,怎么管理呢?---- 先描述再组织!
首先我们要明白,不论是什么操作系统,底层的代码都是通过C语言实现的,所以TCP/IP协议
也是C语言写的
假设Windows有这样一层网络代码:
struct protocol
{int a;int b;int c;
};
struct protocol data = {10,20, 30};
Windows要向Linux传输struct protocol data = {10,20, 30};
这么一段数据,Linux要想得到最终结果10,20,30
,是不是也要有上述代码一样的结构体类型
现在说白了TCP/IP协议
就是结构体,但是怎么实现的结构后续再说,所以Windows和Linux的网络代码就是一样的,这就是约定!!
关于协议的朴素理解:所谓协议,就是通信双方都认识的结构化的数据类型
所以将来我们要写协议实际上大部分时间就是写结构体或者类
因为协议栈是分层的,所以,每层都有双方都有协议,同层之间,互相可以认识对方的协议,举个例子:快递
在发快递给别人的时候一般都要填一个单子,这个单子一般要写收货人和收货地址等信息,快递员会通过单子将快递送到对应的人手中,收货人会根据单子确认是否是自己的快递,所以这张单子就是约定好的结构体类型,发送方认识,接收方认识,单子也就是网络通信里的协议报头,快递内容就是报文,接收方会根据协议报头判断是什么内容然后对报文进行解包,当然了解包都是后话了
4. 网络基本流程
4.1 局域网通信原理
在同一个局域网内两台主机是能够直接通信的,是怎么做到的呢?举个例子:
在课堂上老师说:“张三,你的作业怎么没做,你给我站起来?”全班同学都听到了,但是只有一位同学站了起来,那同学就是张三,明明全班同学都听到了,为什么只有张三站了起来,这不废话吗,因为老师叫的是张三,其他同学不是张三,所以不站起来。张三回复老师:“老师,我做作业了,只是你没看,你去看看吧。”老师就把作业拿出来看,全班同学都听到了,为什么其他同学不去看呢?那是因为张三叫的是老师,其他同学并不是老师。
局域网通信实际上所有在局域网的主机都收到信息,但是局域网内每台主机都有唯一标识来标识自己唯一性的MAC地址
,大家会通过MAC地址
判断这个信息的报头是否和自己的一样,不一样就丢弃掉
如图是在Linux下我的MAC地址
- MAC 地址用来识别数据链路层中相连的节点
- 长度为 48 比特位,及6 个字节.一般用 16 进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
- 在网卡出厂时就确定了,不能修改.mac 地址通常是唯一的(虚拟机中的 mac 地址不是真实的 mac 地址,可能会冲突;也有些网卡支持用户配置 mac 地址)
如上图主机a发信息给主机e,实际上就是将蓝色的报文扔到以太网里让各个主机去认领,也就和我上述举的例子:课堂上老师叫张三站起来一样,局域网内所有主机都收到了信息,但是大家在比对MAC地址
的时候发现并不是发给自己的,直接丢弃掉,(是在数据链路层进行判断的,也就是硬件上网卡是收到信息的),由于数据链路层丢弃了,所以上层并不知道收到了信息,用户层就没有感觉
但是整个以太网中只能有一份报文,就像课室里如果大家都在相互通信,那么可是就会变得乱糟糟的,谁也听不见谁说什么,在局域网里就是数据发生了碰撞,所以主机在发送数据会进行碰撞检测和碰撞避免,如果检测到发生碰撞了就会自动休眠一会再发送
这些操作实际上就是保证只有一台主机能够在以太网里进行发送消息,那么我们换个理解,以太网就是临界资源!!!
上图左侧用户A想要发送消息你好
,就要经过应用层、传输层、网络层、数据链路层
进行封装报头,每一层的报头不就是每一层的协议所约定的数据类型吗?我们上述所讲的MAC地址
的判别就是在链路报头判断的,封装完成后就通过网卡发送到局域网内(以太网),主机2的网卡就收到信息,然后向上进行解包分用,最终用户B就收到了你好
信息
认识新定义:报文 = 报头 + 有效载荷
如:传输层报文 = 传输层报头 + 传输层有效载荷、网络报文 = 网络报头 + 网络有效载荷
同层协议是能够相互识别的,所以主机2收到消息第一件事就是报头和有效载荷进行分离,这个操作就是解包
报头内部,必须包含一个字段,叫做交给上层的谁的字段 ---- 分用(即未来要将自己的有效载荷交付给谁)
同层之间都认为在直接跟对方通信
4.1.1 问题1 ---- 为什么要做那么多的封装?
因为我们要将信息交给网卡,让网卡把信息扔到以太网中,网卡是硬件,而操作系统是硬件的管理者,所以就要调用系统接口,也就必然要贯穿整个操作系统
4.1.2 问题2 ---- 主机2是怎么知道网卡收到数据的?
答案:中断
发送中断后就自然要进行解包分用!
5. 跨网络传输流程图
5.1 网络中的地址管理-认识IP 地址
IP 协议有两个版本,IPv4 和 IPv6 ---- 本文章,凡是提到 IP 协议,没有特殊说明的,默认都是指IPv4
- IP 地址是在 IP 协议中,用来标识网络中不同主机的地址;
- 对于 IPv4 来说,IP 地址是一个4 字节,32 位的整数;
- 我们通常也使用点分十进制的字符串表示 IP 地址,例如 192.168.0.1;
- 用点分割的每一个数字表示一个字节,范围是 0-255;
5.2 MA vs IP?
假设小明要从城市A到达城市E,途中要经过B、C、D城市,那么小明到达城市B就问人,我从城市A来,要去城市E,该怎么走,人就回答说:“你下一站是去城市C。”以此类推最终到达城市E,如下图:
每一座城市就相当于一个路由器,下一座城市是哪里就根据路由器的算法决定,如何路由就根据目的IP地址进行的!
城市A和城市B在同一个局域网,所以能够将信息传给城市B,城市B和城市C在同一个局域网,所以能够将信息传给城市C,以此类推,最终能够将城市A的信息传给城市E,那能不能这么理解,相当于有很多个局域网连在一起,然后相互通信?
这样理解并不对,因为我们后面还要涉及广域网和运营商是如何让我们通信的,但是我们目前就这么理解就好了
竟然要在同一个局域网内通信,那必然少不了MAC地址
小明到达城市C的时候,城市C会不会关心小明上一站是在哪里呢?并不关心,城市C只关心你最重要去哪里,也就是关心小明的目的IP地址,所以,一般而言,MAC地址只在局域网中有效! 一般而言,IP地址是不会发生变化的!
跨网段的主机的数据传输,数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器
令牌环协议简单来讲就是在网络中谁拥有令牌环谁才能讲话,就和我们的锁一个道理
如图,左侧为主机A,右侧为主机B,主机A和路由器在同一个局域网,主机B也和路由器在同一个局域网,但是两个主机的网络协议并不一样,所以路由器要同时拥有两种驱动程序,并且因为要在两个局域网内,所以路由器要拥有两张网卡
5.3 为什么要交给路由器?
主机A在局域网内这么多主机,怎么知道要交给路由器?别忘了主机A自己也有网络层,也有路由功能,在子网内有自己的IP地址
在同一个局域网内,IP地址的前缀是一样的!
所以,主机A拿着自己的IP地址和目的IP地址进行比对,发现根本就不相似,所以就交给路由器
主机A是怎么找到路由器的?当我们想要上网的时候,首先第一步就是连接路由器,然后才能上网,所以实际上就是路由器给你上网,你在局域网内的IP地址实际就是路由器给你分配的,是路由器给你搭建的子网,这给我们后续文章子网划分会讲解!
所以你在首次链接路由器的时候会记录下路由器的MAC地址,自然就能够找到路由器
路由器也是一台主机,所以路由器也要对收到的信息进行解包分用
所以,主机A对数据进行封装完毕之后就把信息发送给路由器了,那么路由器得到主机A发送的信息,解包分用后在网络层决定下一跳去往哪里,然后在数据链路层再一次对数据进行封装,再发送给目的IP地址的主机B
网络层,全网同一层拿到的报文是一样的!是统一的!
如果路由器也不认识这个IP地址怎么办?
那就交付给路由器连接的路由器,也就是往更上一层的路由器交付
5.4 网络里一切皆IP
在很久以前,世界上有很多子网,但是每个子网的底层实现都不一样,由于时代需要各个子网能够相互通信,所以新加一层软件来屏蔽底层实现差异,也就是网络层,网络层通过IP进行下一跳,所以能不能这么理解,网络里一切皆IP,IP之下各有差异,IP之上没有差异!
所以为什么要有MAC地址又有IP地址?这是因为历史的发展,实际上我们能够实现直接根据IP来进行跨网络通信,但是要尊重历史,而且没必要,一改就要花费很大功夫,而且没有什么收益
你学会了吗?
好啦,本章对于《Linux:网络基础》的学习就先到这里,如果有什么问题,还请指教指教,希望本篇文章能够对你有所帮助,我们下一篇见!!!
如你喜欢,点点赞就是对我的支持,感谢感谢!!!
相关文章:
Linux:网络基础
hello,各位小伙伴,本篇文章跟大家一起学习《Linux:网络基础》,感谢大家对我上一篇的支持,如有什么问题,还请多多指教 ! 如果本篇文章对你有帮助,还请各位点点赞!…...
C++入门篇(下)
目录 1、引用 1.1 引用概念 1.2 引用特性 1.3 常引用 1.4 使用场景 1.4.1 引用做参数 1.4.2 引用做返回值 1.5 引用和指针的区别 2、内联函数 2.1 概念 2.2 特性 3、auto关键字 4、基于范围的for循环 5、指针空值nullptr 5.1 C98 中的指针空值处理 5.2 C11 …...
QCustomPlot中自定义QCPAbstractPlottable绘图元素
QCPAbstractPlottable 是 QCustomPlot 中所有可绘制图形(如曲线、柱状图等)的基类。要创建自定义的绘图元素,通常需要继承这个类并实现其纯虚函数。 基本步骤 继承 QCPAbstractPlottable 实现必要的纯虚函数 添加自定义属性和方法 注册到 QCustomPlot 系统 完…...
【Bluedroid】蓝牙 HID 设备信息加载与注册机制及配置缓存系统源码解析
本篇解析Android蓝牙子系统加载配对HID设备的核心流程,通过btif_storage_load_bonded_hid_info实现从NVRAM读取设备属性、验证绑定状态、构造描述符并注册到BTA_HH模块。重点剖析基于ConfigCache的三层存储架构(全局配置/持久设备/临时设备)&…...
【计算机视觉】CV实战项目 - PCC-Net 人群计数
PCC-Net 人群计数项目 项目特点项目运行方式与步骤1. 环境准备2. 数据准备3. 模型训练4. 实验结果 常见问题及解决方法 PCC-Net(Perspective Crowd Counting via Spatial Convolutional Network)是一个用于人群计数的深度学习项目,旨在通过空…...
Towards Transferable Targeted 3D Adversarial Attack in the Physical World--阅读笔记
目录 简介: 背景: 挑战: 目的: 技术细节: 贡献: 1. NeRF的核心作用:3D重建与参数化表示 2. 对抗优化的创新:NeRF参数空间的双优化 2.1 传统方法的局限…...
opencv图像库编程
一、下载安装 opencv 1.1 下载安装包 1.2 解压缩 unzip opencv-3.4.11.zip 解压缩以后主目录文件夹如下: 1.3 进入到解压后的文件夹中 cd opencv-3.4.11 二、使用 cmake安装opencv 2.1 进入 root 用户,并更新一下 sudo su sudo apt-get update …...
星拍相机APP:时尚与科技的完美融合,打造你的专属美
在数字时代,手机相机不仅是记录生活的工具,更是表达个性和创意的平台。今天,我们要介绍的 星拍相机APP,就是这样一款匠心制作的手机相机应用。它融合了时尚与科技,提供了多样化的魔法美颜功能,让每一次拍摄…...
puzzle(0531)脑力航迹
目录 脑力航迹 规则 解法 简单模式 中等模式 困难模式 专家模式 脑力航迹 规则 2条航迹会产生一个相对航迹: 根据相对航迹和其中一个航迹推导另外一个航迹。 解法 没有任何需要推理的地方,就是纯粹的2个矢量相加。 简单模式 中等模式 困难模…...
【英语语法】词法---形容词
目录 形容词1. 形容词的核心功能2. 形容词的位置(1) 前置定语(最常见)(2) 后置定语(特殊情况)(3) 表语位置(系动词后) 3. 形容词的比较级与最高级(1) 规则变化(2) 不规则变化(3) 用法对比 4. 多个形容词修饰…...
理解 React 的 useEffect
文章目录 React 的 useEffect一、什么是副作用(Side Effects)?二、useEffect 的基本用法三、依赖数组的三种情况1. 无依赖数组(每次渲染后都执行, 不推荐)2. 空依赖数组(仅在挂载时执行一次)3. …...
2.1 基于委托的异步编程方法
基于委托的异步编程模型是 .NET 早期版本中实现异步操作的一种方式,主要通过 BeginInvoke 和 EndInvoke 方法来实现。这种基于委托的异步模式已被 Task 和 async/await 模式取代,但在维护旧代码时仍可能遇到这种模式。 委托的方法中:Invoke用于同步调用; 而BeginInvoke与E…...
对于在线教育或知识付费类网站视频处理方案
一、视频格式: 1. 推荐格式:HLS(HTTP Live Streaming) 优势: 自适应码率:根据用户网络状况自动切换清晰度,避免卡顿。广泛兼容性:iOS/macOS 原生支持,Android…...
Gen - CDPT举例说明:动态上下文前缀(输入先和标签结合,输出结果会更贴近标签内容)
Gen - CDPT举例说明:动态上下文前缀(输入先和标签结合,输出结果会更贴近标签内容) 目录 Gen - CDPT举例说明:动态上下文前缀(输入先和标签结合,输出结果会更贴近标签内容)输入文本示例Gen - CDPT模型处理过程示例什么是:提示次优动态前缀提示方法生成与这条评论上下文…...
UCSC CTF 2025|MISC
1、USB flag{ebdfea9b-3469-41c7-9070-d7833ecc6102} 2、three part1是图片隐水印 part1:8f02d3e7 part2是2进制变换 -ce89-4d6b-830e- Part3先从pass.pcapng得到密码字典 解压缩密码:thinkbell 3个部分合并得到flag{8f02d3e7-ce89-4d6b-830e-5d0cb5…...
FTP客户端实现(文件传输)
文章目录 🧱 一、FTP 基础架构回顾🚀 二、FTP 客户端的核心结构🔗 三、连接与登录过程📌 1. ftp_create()📌 2. ftp_connect()📌 3. ftp_login() 📁 四、上传文件实现(ftp_upload_fi…...
状态管理最佳实践:Bloc架构实践
状态管理最佳实践:Bloc架构实践 引言 Bloc (Business Logic Component) 是Flutter中一种强大的状态管理解决方案,它基于响应式编程思想,通过分离业务逻辑和UI表现层来实现清晰的代码架构。本文将深入探讨Bloc的核心概念、实现原理和最佳实践…...
嵌入式人工智能应用-第三章 opencv操作 5 二值化、图像缩放
嵌入式人工智能应用 嵌入式人工智能应用-第三章 opencv操作 5 二值化 嵌入式人工智能应用1 二值化1.1 概念介绍1.2 函数介绍1.2 基本应用1.3 参考案例 2 图像缩放2.1 基本概念2.2 函数介绍2.3 基本参考代码2.4 pyrUp 和 pyrDown 函数2.5 函数介绍2.6 参考代码2.7 总结 1 二值化…...
[OS_7] 访问操作系统对象 | offset | FHS | Handle
实验代码可以看去年暑假的这篇文章:【Linux】进程间通信:详解 VSCode使用 | 匿名管道 我们已经知道,进程从 execve 后的初始状态开始,可以通过 mmap 改变自己的地址空间,通过 fork 创建新的进程,再通过 exe…...
【Vulkan 入门系列】创建帧缓冲、命令池、命令缓存,和获取图片(六)
这一节主要介绍创建帧缓冲(Framebuffer),创建命令池,创建命令缓存,和从文件加载 PNG 图像数据,解码为 RGBA 格式,并将像素数据暂存到 Vulkan 的 暂存缓冲区中。 一、创建帧缓冲 createFramebu…...
Linux 进程控制(自用)
非阻塞调用waitpid 这样父进程就不会阻塞,此时循环使用我们可以让父进程执行其他任务而不是阻塞等待 进程程序替换 进程PCB加载到内存中的代码和数据 替换就是完全替换当前进程的代码段、数据段、堆和栈,保存当前的PCB 代码指的是二进制代码不是源码&a…...
FreeSWITCH 简单图形化界面41 - 批量SIP视频呼叫测试
FreeSWITCH 简单图形化界面41 - 批量视频测试 0、界面预览00、安装测试工具1、注册分机2、设置接听选项2.1 上传媒体文件2.2 设置接听设置 3、呼叫测试 0、界面预览 http://myfs.f3322.net:8020/ 用户名:admin,密码:admin FreeSWITCH界面安…...
通过爬虫方式实现头条号发布视频(2025年4月)
1、将真实的cookie贴到代码目录中toutiaohao_cookie.txt文件里,修改python代码里的user_agent和video_path, cover_path等变量的值,最后运行python脚本即可; 2、运行之前根据import提示安装一些常见依赖,比如requests等; 3、2025年4月份最新版; 代码如下: import js…...
《AI大模型应知应会100篇》第28篇:大模型在文本创作中的应用技巧
第28篇:大模型在文本创作中的应用技巧 🧠 摘要 在内容为王的时代,AI大模型正在重塑文本创作的每一个环节。从创意构思到风格润色,从论文报告到小说脚本,AI不仅是创作者的助手,更是灵感的激发器。本文将带你…...
字节跳动发布UI-TARS-1.5,入门AI就来近屿智能
近日,字节跳动在 Hugging Face 平台正式开源了其最新多模态代理模型——UI-TARS-1.5。作为 UI-TARS 系列的革新之作,该模型以视觉语言模型为基础,突破性实现跨平台 GUI 自动化交互,为自动化与智能交互领域注入了强劲动能。无论是开…...
大数据学习栈记——MapReduce技术
本文介绍hadoop中的MapReduce技术的应用,使用java API。操作系统:Ubuntu24.04。 MapReduce概述 MapReduce概念 MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序…...
GO语言入门:常用数学函数2
14.6 大型数值 math/big 包中公开了一些实用 API,用于表示大型整数值和浮点数值。当基础类型无法容纳要使用的数值时,应改用 big 包中提供的新类型。例如 Int、Float 等。 14.6.1 大型整数值之间的运算 若希望让下面两个整数值完成加、减法运算&#…...
Django 使用教程
Django 使用教程 Django 是一个高级的 Python Web 框架,采用了 MTV(Model-Template-View)设计模式,旨在帮助开发者快速构建高效、可维护的 Web 应用。它有着非常丰富的功能,包括 ORM、用户认证、表单处理、管理后台等…...
deepseek + kimi制作PPT
目录 一、kimi简介二、deepseek生成内容三、生成PPT四、编辑PPT 一、kimi简介 kimi是一款只能ppt生成器,擅长将文本内容生成PPT。 在这里,DeepSeek 负责内容生成与逻辑梳理,Kimi 优化表达与提供设计建议。 二、deepseek生…...
C++学习:六个月从基础到就业——内存管理:RAII原则
C学习:六个月从基础到就业——内存管理:RAII原则 本文是我C学习之旅系列的第十九篇技术文章,也是第二阶段"C进阶特性"的第四篇,主要介绍C中的RAII原则及其在资源管理中的应用。查看完整系列目录了解更多内容。 引言 在…...
量子计算与经典计算融合:开启计算新时代
一、引言 随着科技的飞速发展,计算技术正迎来一场前所未有的变革。量子计算作为前沿技术,以其强大的并行计算能力和对复杂问题的高效处理能力,吸引了全球科技界的关注。然而,量子计算并非要完全取代经典计算,而是与经典…...
RV1126网络环境TFTPNFS搭建(二)
二、RV1126 开发板TFTP环境搭建 2.1、Ubuntu下安装和配置 xinetd 执行以下指令,安装 xinetd sudo apt-get install xinetd 执行以下指令创建一个 xinetd.conf 文件 sudo vi /etc/xinetd.conf 修改 xinetd.conf 文件内容如下: # Simple configurat…...
计算机视觉7——齐次坐标与相机内外参
一、透视投影 透视投影(Perspective Projection)是计算机视觉和图形学中描述三维物体在二维平面成像的基础模型,其核心思想是模拟人类视觉系统的成像原理——中心投影。具体而言,三维空间中的点通过一个固定的投影中心࿰…...
学习笔记—C++—string(一)
目录 string 为什么学习string的类 string类的常用接口 string类对象的常见构造 string类对象的访问及遍历操作 operator[] 迭代器 范围for auto 迭代器(二) string类对象的容量操作 size,length,max_size,capacity,clear基本用法 reserve 提…...
Linux命令-Shell编程
Shell是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。 写一个hello.sh脚本: 1.mkdir scripts 2.cd scripts 3.touch hello.sh 4.vim hello.sh #!/bin/bash echo "hello,world" 5.bash hello.sh(…...
基于Django的AI客服租车分析系统
基于Django的AI客服租车分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】AI智能客服与用户交互指导手册 【技术栈】 ①:系统环境:Python 3.8,Django 4.2框架 ②:开发环境&a…...
计算机组成与体系结构:计算机结构的分类(classifications of computer architecture)
目录 Von Neumann Architecture(冯诺依曼结构) Harvard Architecture(哈佛结构) Modified Harvard Architecture(改进哈佛结构) 三种结构对比总结表 💡 从“内存访问结构”角度分类&#x…...
在阿里云和树莓派上编写一个守护进程程序
目录 一、阿里云邮件守护进程 1. 安装必要库 2. 创建邮件发送脚本 mail_daemon.py 3. 设置后台运行 二、树莓派串口守护进程 1. 启用树莓派串口 2. 安装依赖库 3. 创建串口输出脚本 serial_daemon.py 4. 设置开机自启 5. 使用串口助手接收 一、阿里云邮件守护进程 1.…...
Redis 的几种数据类型
Redis 提供了多种数据类型,以支持不同的应用场景。每种数据类型都有其特定的操作方式,并且在内部实现上也有所优化,能够满足不同的业务需求。以下是 Redis 支持的几种常见数据类型: 1. 字符串(String) 描…...
Spring之我见 - Spring Boot Starter 自动装配原理
欢迎光临小站:致橡树 Spring Boot Starter 的核心设计理念是 约定优于配置,其核心实现基于 自动配置(Auto-Configuration) 和 条件化注册(Conditional Registration)。以下是其生效原理: 约定…...
LeRobot 项目部署运行逻辑(二)—— Mobile Aloha 真机部署
LeRobot 在开源项目中详细说明了部署流程,所以首先看一下开源的内容,然后再逐步拆解 首先,LeRobot 开源的硬件是配全部在 examples 文件夹中 包括了 Stretch 3、Aloha and Aloha 2 stationary、SO-100、LeKiwi、Moss v1 等机器人 恰好实验…...
大模型面经 | 介绍一下CLIP和BLIP
大家好,我是皮先生!! 今天给大家分享一些关于大模型面试常见的面试题,希望对大家的面试有所帮助。 往期回顾: 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题一) 大模型面经 | 春招、秋招算法面试常考八股文附答案(RAG专题二) 大模型面经 | 春招、秋招算法…...
Java发生OOM是否必然导致JVM退出
Java发生OOM是否必然导致JVM退出? 核心结论 不一定。OOM是否导致JVM退出取决于以下因素: OOM发生的区域JVM启动参数配置是否捕获了OOM异常 详细分析 1. 不同内存区域的OOM影响 内存区域错误类型默认是否导致JVM退出可恢复性Java堆OutOfMemoryError…...
Docker Compose 外部网络(`external: true`)与内部网络的区别
Docker Compose 外部网络(external: true)与内部网络的区别 在 Docker Compose 中,external: true 声明的外部网络与普通(内部)网络有重要区别,以下是它们的详细对比: 1. 定义与创建方式 特性外部网络 (external: true)内部网络 (默认)创建…...
【Android】Wallpaper学习
从wallpaper的设置来了解相关内容: 一,静态壁纸 静态壁纸设置的原理是在WallpaperManagerService里监听/data/system/users/0/wallpaper_orig相关文件的变化来触发设置,通过相应的组件程序去进行绘制, 相应的组件如:…...
Java基础-第一章、基本数据类型
运算符: 1.算术运算符:加减乘除%等 2.逻辑运算符:与或非等 3.关系运算符:大于、小于... 4.赋值运算符: 这里牵扯运算符的运算先后顺序了。 赋值运算的返回值:就是赋值的变量本身...
《Operating System Concepts》阅读笔记:p748-p748
《Operating System Concepts》学习第 64 天,p748-p748 总结,总计 1 页。 一、技术总结 1.Transmission Control Protocol(TCP) 重点是要自己能画出其过程,这里就不赘述了。 二、英语总结(生词:3) transfer, transport, tran…...
Arduino示例代码讲解:Project 08 - Digital Hourglass 数字沙漏
Arduino示例代码讲解:Project 08 - Digital Hourglass 数字沙漏 Project 08 - Digital Hourglass 数字沙漏程序功能概述功能:硬件要求:输出:代码结构全局变量`setup()` 函数`loop()` 函数计时和点亮LED:读取倾斜开关状态:重置LED和计时器:运行过程注意事项Project 08 - …...
报告总结笔记 | Jeff Dean ETH AI趋势 笔记:AI 的重要趋势:我们是如何走到今天的,我们现在能做什么,以及我们如何塑造 AI 的未来?
报告总结笔记 | Jeff Dean ETH AI趋势 笔记:AI 的重要趋势:我们是如何走到今天的,我们现在能做什么,以及我们如何塑造 AI 的未来? 2025年 4 月 14 日,Google Research 及 Google DeepMind 的首席科学家、A…...
RocketMQ实现基于可靠消息的最终一致性
RocketMQ实现基于可靠消息的最终一致性 文章目录 RocketMQ实现基于可靠消息的最终一致性一、RocketMQ应用场景**应用解耦****流量削峰****数据分发** 二、RocketMQ 基础概念1. 核心组件2. 消费模式3. 消息可靠性 三、消息类型按发送方式分同步发送异步发送单向发送 按使用功能特…...