当前位置: 首页 > news >正文

【Linux跬步积累】—— 网络基础

🌏博客主页:PH_modest的博客主页
🚩当前专栏:Linux跬步积累
💌其他专栏:
🔴 每日一题
🟡 C++跬步积累
🟢 C语言跬步积累
🌈座右铭:广积粮,缓称王!

文章目录

  • 一、认识“协议”
    • 什么是“协议”
  • 二、网络协议初识
    • 网络的分层结构——网络 vs OS之间的关系
      • 为什么要进行网络分层?
      • 为什么要存在网络?主要解决什么问题?
    • OSI七层模型
    • 网络和操作系统之间的关系
    • 站在语言角度理解,什么是协议?
  • 三、网络传输基本流程
    • 局域网通信
    • 如何查看Mac地址
    • 通信过程
      • 什么是封装?
      • **什么是报文?**
      • **什么是协议报头?**
    • 跨路由器传输
      • 传输过程
      • **Mac地址和IP地址的区别?**
      • **屏蔽底层差异**
  • 四、网络中的地址管理
    • 认识IP地址
    • 认识MAC地址


一、认识“协议”

什么是“协议”

“协议”是一种约定,这个约定的作用就是用来减少通信成本和沟通成本

计算机协议就是计算机之间的约定;

例如:

计算机生产厂商有很多,计算机操作系统也有很多,计算机网络硬件设备还是有很多。那么如何让这些不同厂商之间生产的计算机能够相互顺畅的通信呢?就需要有人站出来,约定一个共同的标准,大家都在遵守,这就是网络协议

二、网络协议初识

网络的分层结构——网络 vs OS之间的关系

为什么要进行网络分层?

答:层和层之间是松耦合的,可以随时替换或者方便维护。

为什么要存在网络?主要解决什么问题?

首先我们需要知道一个客观事实,就是主机通信距离变远,一旦通信距离变远,必定会引发新的问题:

  1. 如何使用数据的问题
  2. 可靠性问题
  3. 主机定位的问题
  4. 数据包局域网转发的问题

有了以上的问题之后我们就需要解决这些问题,那么我们如何解决呢?

使用网络协议(tcp/ip协议),这些协议是为了解决在网络通信当中,因为通信距离变远而引发的一系列问题。网络协议其实就是一种解决方案,既然是一个解决方案,就可以有好的解决方案和坏的解决方案。


衡量解决方案的标注是什么呢?

可扩展,方便维护。


所以为了满足可扩展和可维护,大佬们就将网络协议设计成了层状结构。

那么为什么要将网络协议设计成层状结构呢?

原因是层状结构可以减少层与层之间的耦合度,松耦合度就可以实现随时替换、随时扩展、方便维护,一层不影响另一层,所以最终网络协议就表现成一种层状结构了

OSI七层模型

OSI七层模型是一种框架性的设计方法,其中最主要的功能就是帮助不同的主机之间实现数据传输,但是它既复杂又不实用,所以我们按照TCP/IP四层模型来讲解。

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.

在这里插入图片描述

物理层我们考虑的比较少,因此很多时候也可以称为TCP/IP四层模型。

一般而言:

  • 对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
  • 对于一台路由器,它实现了从网络层到物理层;
  • 对于一台交换机,它实现了从数据链路层到物理层;
  • 对于集线器,它只实现了物理层;
  • 应用层对应shell、应用程序

  • 传输层和网络层对应着操作系统

  • 数据链路层对应着驱动板块

  • 物理层对应着硬件

网络和操作系统之间的关系

在这里插入图片描述

Windows和Linux系统之间,操作系统的设计是不一样的,因为如果一样的话,系统调用也肯定都是一样的,那么就不需要搞什么语言级别的跨平台性了。所以操作系统本身是不一样的,但是无论你是Windows还是Linux,他们的网络协议都是一样的,因为需要遵守OSI定出来的标准。

这就是为什么Windows和Linux操作系统不一样,但是可以直接进行通信的原因。

站在语言角度理解,什么是协议?

在这里插入图片描述

协议就是

双方都能认识的结构体数据类型!!!

三、网络传输基本流程

局域网通信

在这里插入图片描述

在这里插入图片描述

在同一个局域网中的主机,能不能直接通信呢?原理(以太网的通信原理)是什么?

答:能。如果A传输数据给C,每一个主机都能接收到数据,但是不会处理,会丢弃。但是只有C接收到之后,才会保留处理。

那么如何才能保证只有C接收到之后才会保留处理呢?

我们给每一个局域网的主机设置一个唯一标识符:Mac地址,这样我们就能知道是哪个主机发送给哪个主机了。

那么如果A给C传输数据的时候,主机X在不断的给我们对应的局域网里发送垃圾数据呢?那么有可能两条数据会混在一起,此时这个数据就识别不出来了。所以在这种以太网通信的时候,存在一个问题,叫做数据碰撞

发生数据后,主机A会进行碰撞的检测和避免,如果发生碰撞,主机A会进行等待发送。

所以我们会把一个局域网称之为碰撞域

所以在任何时刻,只允许一台主机在局域网中发送消息,这种网络就叫做以太网。因此在局域网中,主机越少越好。

网络与OS一统:

我们将A主机和C主机看成两个进程,所谓的A给C发数据,第一件事情就是A把数据交到局域网上,而这个局域网很明显就是被ABCDX所共享的一个网络,所以这个网络我们可以称之为它就是多个不同主机之间的公共资源。

所以局域网本质就是一个临界资源!

那么我们如果想要黑掉一个局域网,我该怎么做呢?

一直发送垃圾数据,产生碰撞。

如何查看Mac地址

我们可以使用ifconfig进行查看

其中ether的意思就是以太

在这里插入图片描述

通信过程

在这里插入图片描述

什么是封装?

我们所谓的添加报头,就是给一串二进制数据前面再拷贝一个结构体对象,这个过程我们叫做封装。

报文在不同层有着不同的名称:

  • 应用层:request/response
  • 传输层:数据段
  • 网络层:数据报
  • 链路层:数据帧

什么是报文?

“报文” = 协议报头 + 有效载荷

什么是协议报头?

上层数据向下传送时,会在有效载荷前面加上一个协议报头,目的就是为了在对方主机的同一层可以正确的解析和处理数据。每一层都会有不同的协议,所以在报头中需要包含上层的协议是谁。

可以理解成快递单子和鞋子,你买了一个鞋子,商家发货时是不是会粘贴一个快递单,上面有发货地址和收货地址,快递就通过这个信息送到你手上。快递单就可以理解成协议报头,而鞋子就是有效载荷。

对方主机收到后就需要自底向上开始解包和分用,先将报头和有效载荷分离开,因为是同层协议,所以两个报头的源代码都是一样的,就可以正常解析,然后将有效载荷发送给上一层的协议。

协议的共性:

  1. 将报头和有效载荷进行分离; ——> 解包
  2. 将自己的有效载荷交付给上一层的哪个协议;——> 分用

以上的过程是在物理层面的过程。

但是在逻辑上:同层协议,都可以认为自己在和对方直接通信。

那么如何理解呢?

逻辑层面就可以看成你在给室友打电话,那么你是不是认为你在跟室友直接沟通。但实际上,你是在跟你手机说的,你把声音录给了手机,手机通过基站将声音打包转到你室友的手机上,你室友的手机再进行解压,然后把声音播放。

跨路由器传输

在这里插入图片描述

传输过程

当数据要从局域网1发送数据到局域网2时,自定向下封装时,在网络层的报头中会添加两个信息:源IP地址(IPA)和目的IP地址(IPB),在数据链路层的报头中会有源Mac地址(MacA)和目的Mac地址(Mac_left)

路由器接收到局域网1的数据后,会将以太网对应的报头进行解包,然后将剩下的数据向上交付给网络层网络层此时对报头进行分析,因为报头中包含源IP地址和目的IP地址,所以网络层分析之后就知道将有效载荷发给哪台计算机了,因为每个计算机都有自己唯一的IP地址。

然后再将数据交付给链路层,此时在链路层当中就会给数据添加上令牌环对应的报头信息:源Mac地址(Mac_right)和目的Mac地址(MacB),然后再将该数据发送到局域网2当中,此时该数据就能够在令牌环网当中传输了。

总结一下:路由器为什么能够知道数据应该转发给哪个局域网

路由器是通过IP地址来确定数据的转发方向的,因特网上的每台计算机都有一个唯一的IP地址,在数据向下封装时,在网络层封装的报头中会包含两个字段:源IP地址和目的IP地址。

当路由器需要将一个局域网中的数据转发到另外一个局域网时,在路由器的链路层会先将当前局域网对应的底层报头去掉,然后将剩下的数据上交给网络层,此时网络层就可以获取当前的报头信息了:源IP地址和目的IP地址,也就知道数据是哪台机器发送的,以及发送给谁。然后路由器就可以根据IP地址在路由表中查找,最终就能确定该数据应该发送到哪一个局域网中的哪台机器了。

具体过程如下图所示:

在这里插入图片描述

Mac地址和IP地址的区别?

  • Mac地址只能作用在局域网当中,每经过一个路由器,它都会被路由器解包,再重新封装
  • IP地址则是一直不变的

屏蔽底层差异

IP地址的存在除了帮助数据“路由”之外,还有一个很重要的作用,就是屏蔽了底层网络的差异。对与通信双方主机的IP地址以及往上的协议来说,他们不需要过多关心底层采用的是以太网还是令牌环网,因为有路由器帮我们适配两个局域网之间的不同,他们只需要知道源IP地址和目的IP地址就可以将数据正确的发送出去,因此现在主流的网络也叫做IP网络。

四、网络中的地址管理

认识IP地址

IP协议有两个版本,IPv4和IPv6,IPv4用32个比特位来标识IP地址,而IPv6用128个比特位来标识IP地址。

  • IP地址是在IP协议中,用来标识网络中不同主机的地址。
  • 对于IPv4来说,IP地址是一个4字节,32位的整数。
  • 我们通常也使用“点分十进制”的字符串标识IP地址,例如192.160.0.1,用点分割的每一个数字表示一个字节,范围是0-255。

认识MAC地址

  • MAC地址用来识别数据链路层中相连的节点。
  • 长度为48位,及6个字节,一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)。
  • 在网卡出厂时就确定了,不能修改。MAC地址通常是唯一的(虚拟机中的MAC地址不是真实的MAC地址,可能会冲突,也有些网卡支持用户配置MAC地址)。

相关文章:

【Linux跬步积累】—— 网络基础

🌏博客主页:PH_modest的博客主页 🚩当前专栏:Linux跬步积累 💌其他专栏: 🔴 每日一题 🟡 C跬步积累 🟢 C语言跬步积累 🌈座右铭:广积粮&#xff0…...

【银河麒麟高级服务器操作系统实例】虚拟机桥接网络问题分析及处理

更多银河麒麟操作系统产品及技术讨论,欢迎加入银河麒麟操作系统官方论坛 https://forum.kylinos.cn 了解更多银河麒麟操作系统全新产品,请点击访问 麒麟软件产品专区:https://product.kylinos.cn 开发者专区:https://developer…...

深入剖析Android Service:原理、生命周期与实战应用

一、引言:开启 Service 探索之旅 在 Android 开发的广袤天地中,Service 堪称一颗璀璨的明星,占据着举足轻重的地位。它宛如一位幕后英雄,默默地在后台辛勤劳作,执行着各种至关重要的任务,却无需与用户进行…...

MLT媒体程序框架03:滤镜——loudness

EBU R.128协议 引用链接 EBU的全称为European Broadcasting Union ,既欧洲广播联盟,为欧洲与北非各广播业者(包含广播电台与电视台)的合作组织,成立于1950年2月12日,有五十多个正式加盟国,总部位于瑞士日内瓦,目前中国…...

FreeRTOS第15篇:FreeRTOS链表实现细节03_List_t与ListItem_t的奥秘

文/指尖动听知识库-星愿 文章为付费内容,商业行为,禁止私自转载及抄袭,违者必究!!! 文章专栏:深入FreeRTOS内核:从原理到实战的嵌入式开发指南 1 FreeRTOS列表的核心数据结构 FreeRTOS的列表实现由两个关键结构体组成:List_t(列表)和ListItem_t(列表项)。它们共同…...

Spring Boot静态资源访问顺序

在 Spring Boot 中,static 和 public 目录都用于存放静态资源(如 HTML、CSS、JavaScript、图片等文件),但它们在使用上有一些细微的区别。以下是它们的详细对比: 1. 默认优先级 Spring Boot 会按照以下优先级加载静态…...

什么是 spring 的循环依赖?

什么是 spring 的循环依赖? 首先,认识一下什么是循环依赖,举个例子:A 对象被 Spring 管理,并且引入的 B 对象,同样的 B 对象也被 Spring 管理,并且也引入的 A 对象。这种相互被引用的情况&#…...

RSA的理解运用与Pycharm组装Cryptodome库

1、RSA的来源 RSA通常指基于RSA算法的密码系统,令我没想到的是,其名字的来源竟然不是某个含有特别意义的单词缩写而成(比如PHP:Hypertext Preprocessor(超文本预处理器)),而是由1977年提出该算法的三个歪果…...

AI数据分析:deepseek生成SQL

在当今数据驱动的时代,数据分析已成为企业和个人决策的重要工具。随着人工智能技术的快速发展,AI 驱动的数据分析工具正在改变我们处理和分析数据的方式。本文将着重介绍如何使用 DeepSeek 进行自动补全SQL 查询语句。 我们都知道,SQL 查询语…...

git的坑

不小心把工作区的代码全删掉了 首先是名字出错,不知为何gitee任意把我的名字更改。 导致无法push验证 git push -u origin "master 显示:fatal: Authentication failed for https://gitee.com/zhang-great/stm32-smart-security-system.git/ 我…...

小程序事件系统 —— 32 事件系统 - 事件分类以及阻止事件冒泡

在微信小程序中,事件分为 冒泡事件 和 非冒泡事件 : 冒泡事件:当一个组件的事件被触发后,该事件会向父节点传递;(如果父节点中也绑定了一个事件,父节点事件也会被触发,也就是说子组…...

‌PLC数据类型和‌C#数据类型的数据类型映射表

数据类型映射表 ‌PLC数据类型‌C#数据类型读取方式‌补充说明BitboolDBX布尔值BytebyteDBB单字节无符号整数WordushortDBW16位无符号整数DWorduintDBD32位无符号整数Intshort16位有符号整数DIntint32位有符号整数RealfloatDBR单精度浮点数LRealdoubleDBL双精度浮点数Stringstr…...

全球首创!微软发布医疗AI助手,终结手写病历时代

今天凌晨,微软发布了医疗界首个用于临床工作流程的AI助手Microsoft Dragon Copilot。 Dragon Copilot是基于语音文本的混合架构,能够将医生的语音或临床口述内容实时转换为文本。例如,医生可以通过语音输入患者的病历信息、医嘱或诊断结果&a…...

每日一题----------异常处理

总结: NullPointerException:尝试使用一个空引用进行操作时抛出。 ArrayIndexOutOfBoundsException:数组下标越界时抛出。 ClassCastException:类型转换失败时抛出。 ArithmeticException:数学运算错误时抛出&#…...

HTML 属性(详细易懂)

HTML(超文本标记语言)是用于创建网页和其他可在浏览器中查看的内容的基础标记语言。HTML 属性是 HTML 元素的额外信息,它们提供了元素的更多细节,如元素的标识符、样式、行为等。在本文中,将详细介绍 HTML 属性&#x…...

基于火山引擎的DeepSeek-V3 api实现简单的数据查询功能

前言 现在ai比较火,ai可以极大的提高大家的工作效率,所以有空的话要学习下ai的使用 火山引擎大模型 火山引擎大模型广场,聚集了市面上常见的基座大模型,每个模型都有50Wtokens的免费调用量,可以方便大家调用 账号登…...

AI入门1:关键概念

1. 基础概念 ​AI(Artificial Intelligence,人工智能)​ 模拟人类智能的机器系统,具备学习、推理、决策等能力。 ​Machine Learning(机器学习,ML)​ 让计算机通过数据自动学习规律&#xff0c…...

WPS工具栏添加Mathtype加载项

问题描述: 分别安装好WPS和MathType之后,WPS工具栏没直接显示MathType工具,或者是前期使用正常,由于WPS更新之后MathType工具消失,如下图 解决办法 将文件“MathType Commands 2016.dotm”和“MathPage.wll”从Matht…...

【MySQL-数据类型】数据类型分类+数值类型+文本、二进制类型+String类型

一、数据类型分类 二、数值类型 1.bit类型 测试环境ubuntu 基本语法: bit[(M)]:位字段类型,M表示每个值的位数,范围从1~64;如果M被忽略,默认为1举例: create table testBit(id i…...

cuda矩阵转置算子(共享内存)

cpu版本 即为按行遍历行列互换 // 主机上的矩阵转置函数&#xff0c;用于验证结果 void cpuTranspose(const float *input, float *output, int n) {for (int row 0; row < n; row){for (int col 0; col < n; col){output[col * n row] input[row * n col];}} }gp…...

GB28181视频监控流媒体平台LiveGBS如何自定义收流端口区间以便减少收流端口数或解决端口冲突问题

LiveGBS GB28181流媒体服务在接收视频的时候默认是使用30000-30249&#xff0c; webrtc流播放端口区间默认是UDP的30250-30500区间。有些网络环境不方便开放这么大的端口区间&#xff0c;下面介绍下如何修改配置这个区间。 从页面上修改这个区间&#xff0c;端口区间尽量设置大…...

在Go语言中,判断变量是否为“空”(零值或未初始化状态)的方法总结

在Go语言中,判断变量是否为“空”(零值或未初始化状态)的方法因数据类型而异。以下是各类型变量的判断方法总结: 1. 基本类型 整数(int) 判断是否等于零值 0。 var i int if i == 0 { // 空 } 字符串(string) 判断是否等于空字符串 ""。 var s string if s =…...

VUE3开发-9、axios前后端跨域问题解决方案

VUE前端解决跨域问题 前端页面需要改写 如果无效&#xff0c;记得重启服务器 后端c#解决跨域问题 前端js取值&#xff0c;后端c#跨域_c# js跨域-CSDN博客...

利用 requestrepo 工具验证 XML外部实体注入漏洞

1. 前言 在数字化浪潮席卷的当下&#xff0c;网络安全的重要性愈发凸显。应用程序在便捷生活与工作的同时&#xff0c;也可能暗藏安全风险。XXE&#xff08;XML外部实体&#xff09;漏洞作为其中的典型代表&#xff0c;攻击者一旦利用它&#xff0c;便能窃取敏感信息、掌控服务…...

嵌入式开发之串行数据处理

前题 前面几篇文章写了关于嵌入式软件开发时&#xff0c;关于串行数据处理的一些相关内容&#xff0c;有兴趣的可以看看《嵌入式开发&#xff1a;软件架构、驱动开发与串行数据处理》、《嵌入式软件开发之生产关系模型》和《嵌入式开发之Modbus-RTU协议解析》相关的内容。从业十…...

深入解析 JVM —— 从基础概念到实战调优的全链路学习指南

文章目录 一、为什么要学习 JVM&#xff1f;1. 面试必备与技能提升2. 性能优化与问题诊断3. 编写高质量代码 二、JVM 基础概念与体系结构1. JVM 简介2. JDK、JRE 与 JVM 三、JVM 内存模型1. 线程私有区2. 线程共享区 四、类加载机制与双亲委派1. 类加载过程2. 双亲委派模型3. 动…...

LTC6804、LTC6811、LTC6813的使用

FSEC自制BMS第一步&#xff1a;从零开发使用LTC6804采集电池电压 LTC6811特性 LTC6811 是 LTC6804 的引脚兼容型升级器件&#xff0c;LTC6804官方已经不推荐选用 可测量多达 12 节串联电池 1.2mV 最大总测量误差 可堆叠式架构能支持几百个电池 内置 isoSPI™ 接口 可在 290μ…...

Spring 构造器注入和setter注入的比较

一、比较说明 在 Spring 框架中&#xff0c;构造器注入&#xff08;Constructor Injection&#xff09;和 Setter 注入&#xff08;Setter Injection&#xff09;是实现依赖注入&#xff08;DI&#xff09;的两种主要方式。它们的核心区别在于依赖注入的时机、代码设计理念以及…...

【LangChain】对话历史管理

1 历史记录的剪裁 trimmed_messages from langchain_core.messages import (AIMessage,HumanMessage,SystemMessage,trim_messages, ) from langchain_openai import ChatOpenAImessages [SystemMessage("youre a good assistant, you always respond with a joke."…...

【无人机三维路径规划】基于CPO冠豪猪优化算法的无人机三维路径规划Maltab

代码获取基于CPO冠豪猪优化算法的无人机三维路径规划Maltab 基于CPO冠豪猪优化算法的无人机三维路径规划 一、CPO算法的基本原理与核心优势 冠豪猪优化算法&#xff08;Crested Porcupine Optimizer, CPO&#xff09;是一种新型元启发式算法&#xff0c;其灵感来源于冠豪猪的…...

CAN协议介绍

目录 一、CAN协议 1.1 CAN协议简介 1.2 CAN物理层 1.3 CAN协议层 二、CAN控制器 2.1 CAN控制内核 2.2 CAN发送邮箱 2.3 CAN接收FIFO 2.4 CAN验收筛选器 一、CAN协议 1.1 CAN协议简介 CAN 是控制器局域网络 (Controller Area Network) 的简称&#xff0c;它是由研发和生…...

树莓派 Interface Option 中没有camera选项

最近重温树莓派的视觉&#xff0c;烧录了树莓派的新系统后发现在 raspi-config 中的 Interface Option 没有 camera 选项&#xff0c;同时在终端用 vcgencmd get_camera 查看摄像头时没有检测到树莓派的 CSI 摄像头&#xff0c;在 Thonny 中调用树莓派摄像头出现报错&#xff1…...

大数据学习(55)-BI工具数据分析的使用

&&大数据学习&& &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 承认自己的无知&#xff0c;乃是开启智慧的大门 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一下博主哦&#x1f91…...

轻松上手 —— 通过 RPM 包快速部署 NebulaGraph

前言 在当今大数据时代&#xff0c;处理复杂关系数据的需求与日俱增&#xff0c;图数据库应运而生并逐渐崭露头角。NebulaGraph 作为一款高性能、分布式且易扩展的图数据库&#xff0c;专为应对大规模图数据处理而精心打造。它不仅具备丰富的查询语言&#xff0c;还拥有强大高效…...

nginx作为下载服务器配置

一、Nginx 作为下载服务器配置笔记 基本配置指令 server块配置&#xff1a; 在 Nginx 的配置文件&#xff08;通常是/etc/nginx/nginx.conf或在/etc/nginx/conf.d/目录下的特定配置文件&#xff09;中&#xff0c;首先需要定义一个server块来监听特定的端口并处理下载请求。例如…...

第六课:数据存储三剑客:CSV/JSON/MySQL

在Python的数据存储与处理领域&#xff0c;CSV、JSON和MySQL被广大开发者誉为“数据存储三剑客”。它们各自在不同的场景下发挥着重要作用&#xff0c;无论是简单的数据交换、轻量级的数据存储&#xff0c;还是复杂的关系型数据库管理&#xff0c;都能找到它们的身影。本文将详…...

Dify 开源大语言模型应用开发平台使用(一)

文章目录 一、创建锂电池专业知识解答应用1.1 应用初始化二、核心功能模块详解2.1 知识库构建2.2 工作流与节点编排节点类型说明工作流设计示例:锂电池选型咨询2.3 变量管理三、测试与调试3.1 单元测试3.2 压力测试3.3 安全验证四、部署与优化建议4.1 部署配置4.2 持续优化结论…...

PyQt高亮代码

PyQt高亮代码 安装 Pygments支持的格式支持的样式详解参考 Qt中使用 安装 Pygments Pygments 是Python中的一个高亮代码的包&#xff0c;挺好用的 pip install Pygments支持的格式 支持的格式比较多&#xff0c;不列出来了 # coding:utf-8 from pygments.lexers import get_all…...

小白学Agent技术[1]

文章目录 课程地址Agent介绍原理架构任务规划记忆工具使用程序开发范式的变化Agent开发注意事项 课程地址 Agent课程地址 Agent介绍 AI Agent&#xff08;人工智能代理、AI智能体&#xff09;&#xff0c;一种模拟人类智能行为的人工智能系统&#xff0c;以大模型语言&#…...

以商业思维框架为帆,驭创业浪潮前行

创业者踏入商海&#xff0c;如同航海家奔赴未知海域&#xff0c;需有清晰的思维罗盘指引方向。图中“为什么—用什么—怎么做—何人做—投入产出”的商业框架&#xff0c;正是创业者破解商业谜题的密钥&#xff0c;从需求洞察到落地执行&#xff0c;为创业之路铺就逻辑基石。 …...

开源宝藏 Tigshop,开启电商新征程

在电商竞争愈发激烈的当下&#xff0c;一个强大且适配的商城系统是商家制胜的法宝。 Tigshop官网&#xff1a;Tigshop官网 - 开源商城系统Tigshop开源商城系统&#xff0c;支持b2b2c、多商户、多店铺、商家入驻、分销系统、跨境电商、连锁商城等解决方案&#xff0c;免费下载&…...

java多线程实现方式

目录 1. 继承 Thread 类 2. 实现 Runnable 接口 3. 实现 Callable 接口 4. 使用线程池 5. 使用 CompletableFuture&#xff08;Java 8&#xff09; 6. 使用 ForkJoinPool&#xff08;Java 7&#xff09; 7. 使用 Timer 和 TimerTask 8. 使用 ScheduledExecutorService …...

windows:curl: (60) schannel: SEC_E_UNTRUSTED_ROOT (0x80090325)

目录 1. git update-git-for-windows 报错2. 解决方案2.1. 更新 CA 证书库2.2. 使用 SSH 连接&#xff08;推荐&#xff09;2.3 禁用 SSL 验证&#xff08;不推荐&#xff09; 1. git update-git-for-windows 报错 LenovoLAPTOP-EQKBL89E MINGW64 /d/YHProjects/omni-channel-…...

python:pymunk + pygame 模拟六边形内小球弹跳运动

向 chat.deepseek.com 提问&#xff1a;编写 python 程序&#xff0c;用 pymunk, 有一个正六边形&#xff0c;围绕中心点缓慢旋转&#xff0c;六边形内有一个小球&#xff0c;六边形的6条边作为墙壁&#xff0c;小球受重力和摩擦力、弹力影响&#xff0c;模拟小球弹跳运动&…...

vulnhub靶场之【digitalworld.local系列】的vengeance靶机

前言 靶机&#xff1a;digitalworld.local-vengeance&#xff0c;IP地址为192.168.10.10 攻击&#xff1a;kali&#xff0c;IP地址为192.168.10.6 kali采用VMware虚拟机&#xff0c;靶机选择使用VMware打开文件&#xff0c;都选择桥接网络 这里官方给的有两种方式&#xff…...

shiro550-cve-2016-4437复现

shiro550-cve-2016-4437 复现环境&#xff1a;docker desktop idea远程调试jdk版本必须与容器里的jdk1.8.0_102 匹配上&#xff0c;下载资源翻我CC1链那篇文章 注意burpsuite的proxy listeners端口改一下别跟docker容器的重了。 ysoserial工具&#xff1a;https://github.c…...

【DeepSeek】Ubuntu快速部署DeepSeek(Ollama方式)

文章目录 人人都该学习的DeepSeekDeepSeek不同版本功能差异DeepSeek与硬件直接的关系DeepSeek系统兼容性部署方式选择部署步骤&#xff08;Ollama方式&#xff09;1.选定适合的deepseek版本2.环境准备3.安装Ollama4.部署deepseek5.测试使用 人人都该学习的DeepSeek DeepSeek 作…...

Windows 版本Nmap使用报错“无法打开device eth0”

背景 使用nmap在win10上进行扫描工作正常&#xff0c;换到win server 2012 r2以后&#xff0c;扫描报错“无法打开device eth0” 使用了重装、重启大法&#xff0c;未彻底解决 PS&#xff1a;这台服务器之前完装过wireshark&#xff0c;实际已经安装了npcap 解决步骤 查询了…...

java字符串

字符串构造 1.使用常量串构造 String h1 "hello";System.out.println(h1); 2.new对象 String h2 new String("hello");System.out.println(h2); 3.使用字符数组构造 char[] array {h,e,l,l,o};String h3 new String(array);System.out.println(h3);…...

Uniapp 页面返回不刷新?两种方法防止 onShow 触发多次请求!

目录 前言1. 变量&#xff08;不生效&#xff09;2. 延迟&#xff08;生效&#xff09; 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 在 Uniapp 中&#xff0c;使用 onShow() 钩子来监听页面显示&#xff0…...