Linux-网络基础
一.网络背景
网络的起源与20世纪中期的冷战背景密切相关。美苏争霸期间,美国国防部担心传统集中式通信系统(如电话网络)在核战争中容易被摧毁,因此急需一种去中心化、高容错的通信方式。1969年,美国国防部高级研究计划局(ARPA)主导开发了ARPANET,这是第一个采用分组交换技术的实验性网络,实现了不同计算机之间的数据传输。ARPANET的设计核心是分散控制,即使部分节点被破坏,信息仍能通过其他路径传输,为现代互联网奠定了技术基础。
1970—1980年代,网络技术的关键突破加速了发展。分组交换技术(将数据拆分为小块传输)取代了传统的电路交换,提高了效率;TCP/IP协议(1983年正式成为ARPANET标准)解决了不同网络之间的互联问题,成为互联网的通用语言。同时,学术界和科研机构(如大学、实验室)对资源共享的需求推动了网络扩张。例如,电子邮件(1971年)和文件传输协议(FTP)的发明,使得跨机构协作成为可能。这一时期,NSFNET(美国国家科学基金会网络)的建立进一步将网络从军事用途转向科研与教育领域。
1990年代,互联网迎来大众化转折点。万维网(WWW)的发明(1989年蒂姆·伯纳斯-李提出)通过超文本链接和浏览器技术,让普通用户也能轻松访问网络信息。美国政府逐步放开对互联网的商业限制,私营企业开始投入建设基础设施(如光纤、ISP服务)。随着个人电脑的普及和Windows 95等操作系统内置网络功能,互联网用户数量激增。社交网络、电子商务等应用的出现(如亚马逊、eBay)彻底改变了社会生活方式,标志着网络从技术工具转变为全球性的信息与社交平台。
因为计算机是人的工具,最初计算机虽然没有网络。但人在完成任务时通常需要分工协作,人们使用计算机时,避免不了需要进行计算机数据的交换。所以最初的网络是由人力代行的。显然这种方式效率极低。于是为了方便小区域的通信,便拥有了局域网。随着通信距离的需求变远,就有了广域网。也就是说,计算机网络的发展是由局部到整体的。
计算机是人的工具, 人要协同工作, 注定了网络的产生是必然的。
二.协议
我们先来思考一个问题。数据在计算机世界中均是二进制方式传输的。数据传输的方式我们已经有所了解。但数据为什么能被远端主机所识别呢,这是最重要的。因为数据的传输只是目的,而数据的内容才是结果。数据通过协议来被双方识别,那么,什么是协议呢?
举一个现实中的例子--快递:
在一张快递单子上,往往会详细记录收取人各自的姓名与联系方式,以及快递的内容和其他信息等。快递公司如何知道这件快递是谁发的,要发往哪里。就可以从快递单上得知。而快递到中转站时,也是如此获取消息发往下一个站点。这就是卖家,买家与快递公司之间所约定的一种协议,而网络之间数据识别的方式,也是通过协议完成的,我们发现,协议的本质,就是约定。
所以, 完善的协议, 需要更多更细致的规定, 并让参与的人都要遵守。而计算机网络硬件设备, 有很多很多。如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来, 约定一个共同的标准, 大家都来遵守, 这就是网络协议。
2.1协议分层
协议本质也是软件, 在设计上为了更好的进行模块化, 解耦合, 所以也是被设计成为层状结构的。
软件分层的好处一是各层分工明确,便于维护。软件分层架构的核心优势在于职责分离。以外卖App为例,用户界面层(UI)仅负责展示菜品和收集用户输入,业务逻辑层专注于处理订单规则(如优惠计算),数据访问层则独立管理数据库操作。这种明确的分工使得修改某一层时不会影响其他部分。例如,当需要优化App界面时,开发者只需调整UI层的代码,无需担心业务逻辑或数据存储受到影响。这种隔离性大幅降低了维护成本,尤其适合长期迭代的大型项目,团队成员可以并行开发不同层级而不会互相干扰。
二是复用性强,减少重复代码。分层设计显著提升了代码的可复用性。在分层架构中,每一层的功能模块可以被其他部分多次调用。例如,数据访问层的“用户认证”功能既能用于登录场景,也能用于订单验证;业务逻辑层的“运费计算”规则可以被PC端和移动端共享。这种复用性不仅减少了重复代码,还确保了逻辑的一致性。此外,当需要替换底层技术(如更换数据库)时,只需重写数据访问层,上层业务代码无需改动,极大降低了迁移成本。
三则是分层架构使测试和调试更加高效。每一层可以独立测试:数据访问层通过单元测试验证数据库操作,业务逻辑层检查算法正确性,UI层进行交互测试。这种隔离性让问题定位变得简单——如果订单提交失败,可以快速确定是数据连接异常、业务规则错误,还是界面逻辑缺陷。相比之下,未分层的“ spaghetti code”(面条代码)中,故障可能涉及多个混杂的功能点,排查难度成倍增加。分层后的系统更符合自动化测试的需求,适合持续集成(CI/CD)等现代开发流程。
总而言之,分层可以实现解耦合, 让软件维护的成本更低。那么网络协议有哪些主要的分层模型呢?
2.1.1OSI七层模型
OSI(Open System Interconnection, 开放系统互连) 七层网络模型称为开放式系统互联参考模型, 是一个逻辑上的定义和规范。
把网络从逻辑上分为了 7 层. 每一层都有相关、 相对应的物理设备, 比如路由器, 交换机。其最主要的功能使就是帮助不同类型的主机实现数据传输。它的最大优点是将服务、 接口和协议这三个概念明确地区分开来, 概念清楚,理论也比较完整。 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。
OSI模型设计的十分完美。但为什么广泛应用的却是TCP/IP五层模型呢?第一个原因则是因为对于上三层应用层,表示层,会话层。实际开发中这三层功能往往交织,很难将三者区分为不同的三层。第二个也是因为历史原因,TCP/IP协议早在1970年代由美国国防部研发,1983年成为ARPANET(互联网前身)的官方协议。OSI模型在1984年才推出,此时TCP/IP已在全球大学、军方和科研机构中广泛部署。第三个原因则是OSI七层模型实现过于复杂,标准化流程冗长,而且协议设计追求理论完美,不注重实用性。
上面的原因我们此时了解即可,后面我们会通过介绍TCP/IP模型一步步的解释上面的原因。
2.1.2TCP/IP五层(四层)模型
TCP/IP 通讯协议采用了 5 层的层级结构, 每一层都呼叫它的下一层所提供的网络来完成自己的需求:
物理层我们考虑的比较少, 我们只考虑软件相关的内容。 因此很多时候我们直接称为TCP/IP 四层模型。
一般而言:
- 对于一台主机, 它的操作系统内核实现了从传输层到物理层的内容
- 对于一台路由器, 它实现了从网络层到物理层
- 对于一台交换机, 它实现了从数据链路层到物理层
- 对于集线器, 它只实现了物理层
但是并不绝对. 很多交换机也实现了网络层的转发; 很多路由器也实现了部分传输层的内容(比如端口转发)。
2.2对协议的进一步理解
2.2.1为什么要有TCP/IP协议
首先, 即便是单机, 你的计算机内部, 其实都是存在协议的, 比如: 其他设备和内存通信, 会有内存协议。 其他设备和磁盘通信, 会有磁盘相关的协议, 比如: SATA, IDE, SCSI 等。 只不过我们感知不到罢了。 而且这些协议都在本地主机各自的硬件中, 通信的成本、 问题比较少。
其次, 网络通信最大的特点就是主机之间变远了。 任何通信特征的变化, 一定会带来新的问题。如何在确保数据可以传递远的距离的同时又确保数据的完整性呢,这就是TCP/IP协议存在的原因。
2.2.2什么是TCP/IP协议,宏观上是怎么实现的
TCP/IP存在的原因解释了其本质是一种问题的解决方案。而为什么TCP/IP能够分层,是因为通信远这个问题本身能够分层。它在操作系统上宏观上的实现大致如下图:
我们再来直白的认识下协议,它在操作系统层面具体是什么样子的呢?
对于主机 B 能识别 data, 并且准确提取 a=10, b=20, c=30 吗?答案无疑是可以的,因为双方都有同样的结构体类型 struct protocol。 也就是说,用同样的代码实现协议, 用同样的自定义数据类型, 天然就具有”共识“, 能够识别对方发来的数据,这不就是两台主机通信时的约定吗。
所以我们说,所谓协议, 就是通信双方都认识的结构化的数据类型。因为协议栈是分层的, 所以, 每层都有双方都有协议, 同层之间, 互相可以认识对方的协议。
三.网络传输的基本流程
3.1局域网
局域网相信经常玩我的世界的朋友都知道,和距离近的人想要快速联机,通常需要各自的设备连接同一个网络。然后就可以直接连接进行游戏了。也就是说,两台主机只要在同一个局域网内便可以直接通信。而每台主机在局域网上, 要有唯一的标识来保证主机的唯一性:mac 地址。
MAC地址(Media Access Control Address)是固化在网卡(NIC)中的48位(6字节)物理地址,通常以十六进制表示(如`00:1A:2B:3C:4D:5E`),用于在数据链路层唯一标识网络设备,实现局域网内的直接通信。前24位是厂商标识(OUI),后24位由厂商分配,具有全球唯一性。MAC地址通过ARP协议映射到IP地址,是设备间数据传输的基础(如交换机通过MAC地址转发数据帧),但不可跨网络路由(仅作用于本地网络)。
后面我们详细谈论数据链路层的时候, 会谈 mac 帧协议, 此处我们做一个了解即可。
3.1.1局域网的通信标准及流程
局域网中常见的通信标准有以太网,LAN网和令牌环网。我们这里仅介绍以太网的通信流程,便可以理解后面的两种通信标准了。
主机A想给主机E发一句"你好",但它不知道E在哪,于是扯着嗓子(广播)喊:"MacE!你的快递!"(带着自己的地址MacA和E的地址MacE)。
结果整个办公室(局域网)的主机B、C、D全听到了。B看了眼包裹单:"收件人是MacE?不是我(MacB),扔了!" C和D也直接拒签。只有主机E跳起来:"是我地址!签收!"
这就是以太网最基础的通信方式——吼一嗓子,谁的名字对谁领,其他人自动无视。简单粗暴,但浪费流量(所有机器都得听一遍)。
而以太网的特点如下:
- 以太网中, 任何时刻, 只允许一台机器向网络中发送数据
- 如果有多台同时发送, 会发生数据干扰, 我们称之为数据碰撞
- 所有发送数据的主机要进行碰撞检测和碰撞避免
- 没有交换机的情况下, 一个以太网就是一个碰撞域
- 局域网通信的过程中, 主机对收到的报文确认是否是发给自己的, 是通过目标mac地址判定的
有没有发现,以太网的的数据传递方式,这种"竞争+精准认领"的机制,本质上就是用简单规则避免多人同时说话乱套,和多线程里用锁防止数据冲突的思路一模一样。
所以我们再来简单的认识下令牌环网和LAN网。LAN(局域网)就像一个小办公室里的同事用对讲机聊天——谁想说话就直接喊,但万一两个人同时开口就会撞车(以太网用"听线等重试"解决)。而令牌环网更像传话筒:只有一个"发言令牌"在同事间轮流传递,拿到令牌的人才能说话,说完就传给下家,绝对不抢麦(这不就是线程安全中锁的机制吗?!)。一个像自由辩论(可能吵架),一个像轮流发言(秩序井然),但目标都是让本地设备有序通信。
初步明白了局域网通信原理, 再来看同一个网段内的两台主机进行发送消息的过程:
而其中每层都有协议, 所以当我进行进行上述传输流程的时候, 要进行封装和解包
下面我们明确一下概念:
报头部分, 就是对应协议层的结构体字段, 我们一般叫做报头。除了报头, 剩下的叫做有效载荷故, 报文 = 报头 + 有效载荷。
接下来我们再来明确下不同层完整报文的叫法:
- 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame).
- 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation).
- 首部信息中包含了一些类似于首部有多长, 载荷(payload)有多长, 上层协议是什么等信息.
- 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的 "上层协议字段" 将数据交给对应的上层协议处理
在网络传输的过程中, 数据不是直接发送给对方主机的, 而是先要自定向下将数据交付给下层协议, 最后由底层发送, 然后由对方主机的底层来进行接受, 在自底向上进行向上交付:
对于每层数据还要有分用的过程:
所以从今天开始, 我们学习任何协议, 都要先宏观上建立这样的认识:
- 1. 要学习的协议, 是如何做到解包的? 只有明确了解包, 封包也就能理解
- 2. 要学习的协议, 是如何做到将自己的有效载荷, 交付给上层协议的?
下一篇文章我们再来理解IP地址,并直接上手UDP的ECHO服务的简单实现
相关文章:
Linux-网络基础
一.网络背景 网络的起源与20世纪中期的冷战背景密切相关。美苏争霸期间,美国国防部担心传统集中式通信系统(如电话网络)在核战争中容易被摧毁,因此急需一种去中心化、高容错的通信方式。1969年,美国国防部高级研究计划…...
算法 | 鲸鱼优化算法(WOA)原理,公式,应用,算法改进研究综述,完整matlab代码
===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 鲸鱼优化算法 一、原理与公式二、应用领域三、算法改进研究四、完整MAT…...
[BJDCTF2020]EzPHP
这一道题里面的知识点实在是太多了,即使这道题是我最喜欢的RCE也有点大脑停转了,所以还是做个笔记,以后方便回忆 直接跳过打点,来到源码 <?php highlight_file(__FILE__); error_reporting(0); $file "1nD3x.php"…...
企业微信-自建应用
1. 创建自建应用 2. 配置小程序/H5入口 3. 准备 : CorpId(企业id)、 AgentID(应用id)、 CorpsecretID(应用Secret) 4. 配置企业可信IP 5. 如H5需要授权登录,那么需要配置网页授…...
[FPGA基础] 时钟篇
Xilinx FPGA 时钟管理详细文档 本文档详细介绍 Xilinx FPGA 中的时钟管理,包括时钟资源、时钟管理模块、设计注意事项以及最佳实践。适用于使用 Xilinx 7 系列、UltraScale 和 UltraScale 系列 FPGA 的开发者。 1. 时钟资源概述 Xilinx FPGA 提供丰富的时钟资源&a…...
高德火星坐标(GCJ-02)转WGS84坐标
高德火星坐标(GCJ-02)转WGS84坐标 1 转换算法 import mathdef gcj02_to_wgs84(lon, lat):"""高德火星坐标(GCJ-02)转WGS84坐标"""a 6378245.0 # 长半轴ee 0.00669342162296594323 # 扁率def transform_lon(x, y):ret 300.0 x 2.0 * y …...
基于opencv和PaddleOCR识别身份证信息
1、安装组件 pip install --upgrade paddlepaddle paddleocr 2、完整code import cv2 import numpy as np from paddleocr import PaddleOCR# 初始化 PaddleOCR use_angle_clsTrue, lang"ch", det_db_thresh0.1, det_db_box_thresh0.5)def preprocess_image(image…...
Day-1 漏洞攻击实战
实训任务1 漏洞攻击实战一 使用 御剑 得到网站后台地址 数据库登录与日志配置 使用默认密码 root:root 登录phpMyAdmin,执行 SHOW VARIABLES LIKE general% 查看日志状态。 开启日志功能:set global general_log "ON";(配图&…...
穿透数据迷雾:PR 曲线与 ROC 曲线的深度剖析+面试常见问题及解析
一、混淆矩阵与评价指标基础 混淆矩阵核心构成:混淆矩阵是分类模型性能评估的基石,以 22 矩阵形式呈现分类结果。其中,真正例(TP)表示实际为正类且被正确预测的样本;假正例(FP)是实…...
【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接
从零开始:基于命名管道实现客户端与服务器的实时通信 一. 命名管道1.1 基本概念1.2 创建命名管道1.2.1 创建方法1.2.2 示例代码:1.2.3 注意事项:1.3 与匿名管道区别 1.4 打开原则1.4.1 管道打开顺序1.4.2 阻塞行为1.4.3 管道的关闭1.4.4 关闭…...
快充协议芯片XSP04D支持使用一个Type-C与电脑传输数据和快充取电功能
快充是由充电器端的充电协议和设备端的取电协议进行握手通讯进行协议识别来完成的,当充电器端的充电协议和设备端的取电协议握手成功后,设备会向充电器发送电压请求,充电器会根据设备的需求发送合适的电压给设备快速供电。 设备如何选择快充…...
MySQL的窗口函数(Window Functions)
一、窗口函数核心概念 窗口(Window) 窗口是数据行的集合,由OVER()子句定义。它决定了函数计算的“数据范围”,可以是一个分区的全部行、当前行前后的行,或动态变化的子集。 语法结构 SELECT window_f…...
一个很简单的机器学习任务
一个很简单的机器学习任务 前言 基于线上colab做的一个简单的案例,应用了线性回归算法,预测了大概加州3000多地区的房价中位数 过程 先导入了Pandas,这是一个常见的Python数据处理函数库 用Pandas的read_csv函数把网上一个共享数据集&…...
ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架
25年3月来自华中科技和小米电动汽车的论文“ORION: A Holistic End-to-End Autonomous Driving Framework by Vision-Language Instructed Action Generation”。 由于因果推理能力有限,端到端 (E2E) 自动驾驶方法仍然难以在交互式闭环评估中做出正确决策。当前的方…...
python全栈-flask
python全栈-flask 文章目录 入门上手hello worldflask运行方式测试路由with app.test_request_context():debug模式配置flask参数动态路由数据类型自定义转换器to_pythonPostMan(API测试查询参数的获取请求体参数上传文件其它参数url_for 函数重定向响应内容自定义响…...
Unity中的数字孪生项目:两种输入方式对观察物体的实现
在数字孪生项目中,精确的相机控制至关重要。相机不仅需要灵活地跟随目标,还要能够平滑地旋转和缩放,以便观察和分析物体的各个细节。今天,我将通过 TouchControlCamera 和 CameraRotate 两个脚本,展示如何实现一个适用…...
ECharts散点图-散点图14,附视频讲解与代码下载
引言: ECharts散点图是一种常见的数据可视化图表类型,它通过在二维坐标系或其它坐标系中绘制散乱的点来展示数据之间的关系。本文将详细介绍如何使用ECharts库实现一个散点图,包括图表效果预览、视频讲解及代码下载,让你轻松掌握…...
【教程】Digispark实现串口通信
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 没想到这么老,很多代码都不能用,修了好久。。。 TinySoftwareSerial.cpp #include <stdlib.h> #include <stdio.h&g…...
GPT-4.1 开启智能时代新纪元
GPT-4.1 全解析:开启智能时代新纪元(含费用详解) 2025年4月,OpenAI 正式推出全新一代语言模型——GPT-4.1 系列,包括 GPT-4.1、GPT-4.1 Mini 和 GPT-4.1 Nano。相比以往模型,它在代码生成、指令理解、长文本…...
4.21 spark和hadoop的区别与联系
一、Hadoop 1. 定义 Hadoop是一个由Apache基金会开发的分布式系统基础架构。它最初是为了解决大规模数据存储和处理的问题而设计的。Hadoop的核心组件包括HDFS(Hadoop Distributed File System)和MapReduce。 2. HDFS(Hadoop Distributed Fi…...
Nacos 客户端 SDK 的核心功能是什么?是如何与服务端通信的?
Nacos 客户端 SDK 的核心功能 Nacos 客户端 SDK 是应用程序集成 Nacos 能力的桥梁,它封装了与 Nacos 服务端交互的复杂性,为开发者提供了简单易用的 API。其核心功能主要围绕两大方面:服务发现 和 配置管理。 服务发现 (Service Discovery) …...
servlet-保存作用域
保存作用域 保存作用域:原始情况下,保存作用域我们有四个:page(一般不用了) 、request(一般请求响应范围)、session(一次会话范围)、application(整个应用程序范围)1)request:一般请求响应范围…...
从规则到大模型:知识图谱信息抽取实体NER与关系RE任务近10年演进发展详解
摘要: 本文回顾了关系抽取与实体抽取领域的经典与新兴模型,清晰地梳理了它们的出现时间与核心创新,并给出在 2025 年不同资源与场景下的最佳实践推荐。文章引用了 BiLSTM‑CRF、BiLSTM‑CNN‑CRF、SpanBERT、LUKE、KnowBERT、CasRel、REBEL、…...
【自然语言处理与大模型】模型压缩技术之蒸馏
知识蒸馏是一种模型压缩技术,主要用于将大型模型(教师模型)的知识转移到更小的模型(学生模型)中。在大语言模型领域,这一技术特别重要。 知识蒸馏的核心思想是利用教师模型的输出作为软标签(sof…...
yum如果备份已经安装的软件?
在 CentOS 系统中,你可以通过以下步骤将 yum 下载的组件打包备份到本地: 方法 1:使用 yumdownloader 直接下载 RPM 包 1. 安装 yum-utils 工具 yum install -y yum-utils2. 下载指定软件包及其依赖 yumdownloader --resolve <package-n…...
室外摄像头异常自检指南+视频监控系统EasyCVR视频质量诊断黑科技
室外监控摄像头在安防监控系统运行中,常出现连接不畅、设备互认失败等问题。今天我们来介绍两类安防监控摄像头的典型问题及排查步骤。 问题1:同品牌新摄像头无法被老录像机识别 排查步骤: 1)供电检查 确认摄像头供电线路连接正…...
从本地存档到协作开发的Git简单使用
概念 工作区 : 在本地实际进行文件操作的目录 .暂存区 : 类似于缓冲区 , 用于记录准备进行下一次提交的内容 .本地仓库 : 储存在本地的完整版本库 , 包含项目的提交历史 , 分支信息和标签等 .远程仓库 : 部署在远程服务器的版本库 , 通常用于协作开发 . 文件状态 Untracked …...
在 Android 中实现通话录音
在 Android 中实现通话录音需要处理系统权限、通话状态监听和音频录制等关键步骤。以下是详细实现代码及注释,注意不同 Android 版本和厂商设备的兼容性问题: 1. 添加权限声明(AndroidManifest.xml) <!-- 录制音频权限 -->…...
系统分析师知识点:访问控制模型OBAC、RBAC、TBAC与ABAC的对比与应用
在信息安全领域,访问控制是确保数据和资源安全的关键技术。随着信息系统复杂度的提高,访问控制技术也在不断演进,从早期简单的访问控制列表(ACL)发展到如今多种精细化的控制模型。本文将深入剖析四种主流的访问控制模型:基于对象的…...
网络原理(TCP协议—协议格式,性质(上),状态)
目录 1.TCP协议段格式。 2.TCP协议传输时候的性质。 2.1确认应答。 2.2超时重传。 2.3连接管理。 2.3.1 三次握手。 2.3.2四次挥手。 3.TCP常见的状态。 1.TCP协议段格式。 TCP协议段是由首部和数据两部分构成的。首部包含了TCP通信所需要的各种控制信息,而…...
用全新发布的ChatGPT-o3搜文献写综述、专业审稿、降重润色,四个步骤轻松搞定全部论文难题!
今天和大家聊聊OpenAI近期发布的o系列模型中的两个大成果:o3和o4-mini,这个系列的模型最大特点是经过训练,会在响应之前进行更长时间的思考,给出更深入的回答。 下面文章七哥会为大家深度讲解o3模型在学术研究和论文写作方面的四大优势,并附上实用有效的使用技巧和步骤供…...
多路由器通过RIP动态路由实现通讯(单臂路由)
多路由器通过RIP动态路由实现通讯(单臂路由) R1(开启端口并配置IP) Router>en Router#conf t Router(config)#int g0/0 Router(config-if)#no shu Router(config-if)#no shutdown Router(config-if)#ip add 192.168.10.254 255.255.255.0 Router(c…...
分数线降低,25西电马克思主义学院(考研录取情况)
1、马克思主义学院各个方向 2、马克思主义学院近三年复试分数线对比 学长、学姐分析 由表可看出: 1、马克思主义理论25年相较于24年下降10分,为355分 3、25vs24推免/统招人数对比 学长、学姐分析 由表可看出: 1、 马克思主义学院25年共接…...
反转字符串
344. 反转字符串 题目 思路 双指针 设 s 长度为 n。反转可以看成是交换 s[0] 和 s[n−1],交换 s[1] 和 s[n−2],交换 s[2] 和 s[n−3],依此类推。 代码 class Solution:def reverseString(self, s: List[str]) -> None:""&q…...
乾元通渠道商中标舟山市自然灾害应急能力提升工程基层防灾项目
近日,乾元通渠道商中标舟山市自然灾害应急能力提升工程基层防灾项目(结余资金)装备采购项目,乾元通作为设备厂家,为项目提供通信指挥类装备(多链路聚合设备)QYT-X1。 青岛乾元通数码科技有限公司…...
信号调制与解调技术基础解析
调制解调技术是通信系统中实现基带信号与高频载波信号相互转换的主要技术,通过调整信号特性使其适应不同信道环境,保障信息传输的效率和可靠性。 调制与解调的基本概念 调制(Modulation) 将低频基带信号(如语音或数…...
多源异构网络安全数据(CAPEC、CPE、CVE、CVSS、CWE)的作用、数据内容及其相互联系的详细分析
1. CWE(Common Weakness Enumeration) 作用:CWE 是常见软件和硬件安全弱点的分类列表,用于描述漏洞的根本原因(如代码缺陷、逻辑错误等),为漏洞的根源分析提供框架。数据内容: 弱点…...
02_Flask是什么?
一、视频教程 02_Flask是什么 二、Flask简介 Flask 框架诞生于2010 年,是由 Armin 使用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。Armin 是 Python 编程语言的核心开发者之一,同时也是 Flask 项目的主要贡献者。 Flask主要依赖于两个核…...
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案
突破网页数据集获取难题:Web Unlocker API 助力 AI 训练与微调数据集全方位解决方案 背景 随着AI技术的飞速发展,诸如DeepSeek R1、千问QWQ32、文小言、元宝等AI大模型迅速崛起。在AI大模型训练和微调、AI知识库建设中,数据集的获取已成为不…...
Spark-SQL与Hive集成及数据分析实践
一、Spark-SQL连接Hive的配置 Spark-SQL支持与Hive无缝集成,可通过以下方式操作Hive: 1. 内嵌Hive:无需额外配置,直接使用,但生产环境不推荐。 2. 外部Hive: 将hive-site.xml、core-site.xml、hdfs-site…...
CI/CD
CI/CD 是一种用于软件开发和交付的实践方法,由持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)三个关键环节组成,以下是具体介…...
【橘子大模型】Tools/Function call
一、简介 截止目前,我们对大模型的使用模式仅仅是简单的你问他答。即便是拥有rag,也只是让大模型的回答更加丰富。但是大模型目前为止并没有对外操作的能力,他只是局限于他自己的知识库。 举个例子,到今天4.21为止,你…...
解决Mac 安装 PyICU 依赖失败
失败日志: 解决办法 1、使用 homebrew 安装相关依赖 brew install icu4c 安装完成后,设置环境变量 echo export PATH"/opt/homebrew/opt/icu4c77/bin:$PATH" >> ~/.zshrcecho export PATH"/opt/homebrew/opt/icu4c77/sbin:$PATH…...
Kafka 生产者的幂等性与事务特性详解
在分布式消息系统中,消息的可靠性传输是一个核心问题。Kafka 通过幂等性(Idempotence)和事务(Transaction)两个重要特性来保证消息传输的可靠性。幂等性确保在生产者重试发送消息的情况下,不会在 Broker 端…...
ubuntu--汉字、中文输入
两种输入框架的安装 ibus 链接 (这种方式安装的中文输入法不是很智能,不好用)。 Fcitx 链接这种输入法要好用些。 简体中文检查 fcitx下载和配置 注意:第一次打开fcitx-config-qt或者fcitx configuration可能没有“简体中文”,需要把勾…...
LabVIEW 开发中数据滤波方式的选择
在 LabVIEW 数据处理开发中,滤波是去除噪声、提取有效信号的关键环节。不同的信号特性和应用场景需要匹配特定的滤波方法。本文结合典型工程案例,详细解析常用滤波方式的技术特点、适用场景及选型策略,为开发者提供系统性参考。 一、常用…...
【图像轮廓特征查找】图像处理(OpenCV) -part8
17 图像轮廓特征查找 图像轮廓特征查找其实就是他的外接轮廓。 应用: 图像分割 形状分析 物体检测与识别 根据轮廓点进行,所以要先找到轮廓。 先灰度化、二值化。目标物体白色,非目标物体黑色,选择合适的儿值化方式。 有了轮…...
丝杆升降机蜗轮蜗杆加工工艺深度解析:从选材到制造的全流程技术要点
在机械传动领域,丝杆升降机凭借其高精度、大负载等优势,广泛应用于自动化设备、精密仪器等众多场景。而蜗轮蜗杆作为丝杆升降机的核心传动部件,其加工工艺的优劣直接决定了设备的传动效率、使用寿命及稳定性。本文将深入剖析丝杆升降机蜗轮蜗…...
git远程分支重命名(纯代码操作)
目录 步骤 1:重命名本地分支 步骤 2:推送新分支到远程 简单讲讲: 2.1.-u 和 --set-upstream 的区别 2.2. 为什么需要设置上游(upstream)? 示例对比: 2.3. 如何验证是否设置成功ÿ…...
《AI大模型应知应会100篇》第31篇:大模型重塑教育:从智能助教到学习革命的实践探索
第31篇:大模型重塑教育:从智能助教到学习革命的实践探索 摘要 当北京大学的AI助教在凌晨三点解答学生微积分难题,当Khan Academy的AI导师为每个学生定制专属学习路径,我们正见证教育史上最具颠覆性的技术变革。本文通过真实教育…...