Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
- Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
- 一、背景
- 二、生产环境的服务器部署情况
- 三、拆解一个真实的 ifconfig 输出
- 1、先看 MAC 地址
- 2、再看设备的 interrupt 和 memory
- 3、了解Linux网卡的命名规则
- 四、流量流向的情况
- 五、虚拟机 ifconfig 的情况
- 六、总结
Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
一、背景
2025年4月9号,客户对我们生产环境的接口进行了15000TPS的压力测试,客户在微信群里反馈,只能压测到9000左右,速度上不去了。
看到这个消息之后,我有两个反应:
1、情绪方面,讲真我是有点生气的,想骂人,但还忍住了。
客户在我们不知情的情况下,对生产环境的接口做压力测试,TPS这么高,容易把带宽打满,会影响到其他客户;我能理解客户为什么不提前告知,大概率就是想出其不意,防止我们事先做准备,但这做法确实比较负面和负能量;要么就是我自己想多了,对方的技术人员没有意识到这种问题会产生什么影响。
2、要赶紧查看一下,带宽是否被打满,是不是影响其他客户。
由此涉及到了本次想分享的主题,作为一个 Linux 后端开发,我也经常使用 ifconfig 命令查看一些信息,但从来没有深究过,今天是想总结一下了。
这么多年的开发经验,进过运营商机房、见过机房里面的机架、服务器。大学期间,组装过台式机(算是见过网卡),安装过操作系统(要安装网卡驱动的),也就仅限于此。
所以今天,我想分享一下如何根据 ifconfig 命令理解网卡信息和网卡流量。
二、生产环境的服务器部署情况
客户的流量,经过公网到达我们北京机房,首先是经过防火墙设备、然后到达nginx服务器(10.90.36.248),经过nginx的转发最后到达后端业务程序(10.90.36.117、10.90.36.118)。
这期间,流量还会经过路由器和交换机,我还不太清晰,但不影响理解,也就不列出来了。
1、10.90.36.248 服务器是一台物理机,安装了 nginx,用作负载均衡;
2、10.90.36.117、10.90.36.118 服务器是一台虚拟机,部署业务程序,用作后端服务;
三、拆解一个真实的 ifconfig 输出
下面这段 来自于 10.90.36.248 nginx 服务器的 ifconfig 命令的输出。
可以看到好几个网卡信息,比如:bond1、bond1:1、enp8s0f0、enp8s0f1、enp8s0f2、enp8s0f3、ens2f0、ens2f1、lo,该如何拆解呢?
凭直觉,我们可以给这些网卡进行分类:
1、bond1、bond1:1
2、enp8s0f0、enp8s0f1、enp8s0f2、enp8s0f3
3、ens2f0、ens2f1、
4、lo
大家应该能猜到,这其中有真实的物理网卡、也有虚拟出来的虚拟网卡(或者叫逻辑网卡)。
那怎么区分哪些是物理网卡,哪些是虚拟网卡?
[app@phy01 ~]$ ifconfig
bond1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500inet 10.90.36.248 netmask 255.255.255.0 broadcast 10.90.36.255inet6 fe80::327b:acff:fe77:37d8 prefixlen 64 scopeid 0x20<link>ether 20:6b:ac:67:32:d9 txqueuelen 1000 (Ethernet)RX packets 1391424129086 bytes 401438743483080 (365.1 TiB)RX errors 124693 dropped 17 overruns 124633 frame 60TX packets 1262250505591 bytes 198488434823174 (180.5 TiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0bond1:1: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST> mtu 1500inet 10.90.36.238 netmask 255.255.255.255 broadcast 0.0.0.0ether 20:6b:ac:67:32:d9 txqueuelen 1000 (Ethernet)enp8s0f0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ether 77:ee:cb:75:22:21 txqueuelen 1000 (Ethernet)RX packets 13422608 bytes 1789398012 (1.6 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device memory 0xc7360000-c737ffffenp8s0f1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500ether 77:ee:cb:75:22:22 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device memory 0xc7340000-c735ffffenp8s0f2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500ether 77:ee:cb:75:22:23 txqueuelen 1000 (Ethernet)RX packets 27993427 bytes 10295585352 (9.5 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device memory 0xc7320000-c733ffffenp8s0f3: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500ether 77:ee:cb:75:22:24 txqueuelen 1000 (Ethernet)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device memory 0xc7300000-c731ffffens2f0: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500ether 20:6b:ac:67:32:d9 txqueuelen 1000 (Ethernet)RX packets 1391340237564 bytes 401431888921467 (365.1 TiB)RX errors 124693 dropped 8 overruns 124633 frame 60TX packets 1262250505591 bytes 198488434823174 (180.5 TiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 80 memory 0x23fff000000-23fff7fffffens2f1: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST> mtu 1500ether 20:6b:ac:67:32:d9 txqueuelen 1000 (Ethernet)RX packets 83891522 bytes 6854561613 (6.3 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0device interrupt 100 memory 0x23ffe000000-23ffe7ffffflo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1 (Local Loopback)RX packets 825841 bytes 110153455 (105.0 MiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 825841 bytes 110153455 (105.0 MiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[app@phy01 ~]$
1、先看 MAC 地址
我们知道 MAC 地址是用来唯一标识一个设备的,所以,我们可以通过 MAC 地址来区分物理网卡和虚拟网卡。
在 ifconfig 命令的输出中,ether 指的就是 MAC 地址。

你会发现,bond1、bond1:1、ens2f0、ens2f1 的MAC 地址都是 20:6b:ac:67:32:d9,
那这些都是同一个物理网卡吗?
而 enp8s0f0、enp8s0f1、enp8s0f2、enp8s0f3 的 MAC 地址也有规律,分别是:
77:ee:cb:75:22:21
77:ee:cb:75:22:22
77:ee:cb:75:22:23
77:ee:cb:75:22:24
那这些是不同同的物理网卡吗?
2、再看设备的 interrupt 和 memory
device interrupt 是设备的中断号,而 device memory 是设备的内存地址。
这两个属性,是操作系统分配给硬件的资源,可以用来作为是不是物理网卡的直接证据。

虽然 bond1、bond1:1、ens2f0、ens2f1 的MAC 地址都是 20:6b:ac:67:32:d9,但
ens2f0 的 interrupt 是 80,memory 是 0x23fff000000-23fff7fffff
ens2f1 的 interrupt 是 100,memory 是 0x23ffe000000-23ffe7fffff
而 bond1、bond1:1 是没有interrupt 和 memory 的。
通过这些信息,我们可以知道,
bond1 是一个绑定主接口(有 MASTER 标志),聚合了 ens2f0 和 ens2f1 (有 SLAVE 标志 并且 他们有相同 MAC 地址),
bond1还具有两个 IP 地址,主地址 10.90.36.248 和 别名地址 10.90.36.238(bond1:1 是 bond1 的别名接口)。
所以可以得知, ens2f0 和 ens2f1 大概率是:一个独立的含有2个端口的真实物理网卡。
而 bond1 是基于 ens2f0 和 ens2f1 的虚拟网卡。
bond1:1 又是基于 bond1 的别名。
对 enp8s0f0、enp8s0f1、enp8s0f2、enp8s0f3 的理解就比较简单了,他们都有不同的 MAC地址,也有不同的device memory,
所以大概率是:一个独立的含有4个端口的真实物理网卡。
3、了解Linux网卡的命名规则
从上面的ifconfig输出中,我们看到了各种各样的网卡名称,如ens2f0、enp8s0f0等。这些名称并非随意取的,而是遵循了Linux网卡的命名规则,也称为"可预测网络接口名称"(Predictable Network Interface Names)。
在传统的Linux系统中,网卡命名通常是eth0、eth1这样的格式。但这种命名方式存在一个问题:当系统重启或硬件变更时,网卡的顺序可能会改变,导致eth0变成eth1,反之亦然。为了解决这个问题,现代Linux系统采用了更可预测的命名方案:
-
ens2f0的命名解析:
- en: 表示Ethernet,即以太网设备
- s2: 表示插槽(slot)2
- f0: 表示该插槽上的第一个端口(function 0)
-
enp8s0f0的命名解析:
- en: 表示Ethernet
- p8: 表示PCI总线号8
- s0: 表示该总线上的插槽0
- f0: 表示该插槽上的第一个端口
-
bond1:
- 这是一个虚拟接口,通过将多个物理接口绑定在一起组成的
- 数字1表示这是系统中的第二个bond接口(从0开始计数)
-
lo:
- 代表loopback,即回环接口
- 用于本机通信,IP地址为127.0.0.1
了解这些命名规则有助于我们仅通过网卡名称就能识别出网卡在系统中的物理位置,以及它们的类型和功能。
四、流量流向的情况
我们继续看生产环境,流量是如何流向的情况。

bond1入站、ens2f0入站,都是 101.16Mb/s
bond1出站、ens2f0出站,都是 108.14Mb/s
在绑定模式中,流量默认只通过一个从属接口(ens2f0)接收,另一接口(ens2f1)处于备用状态,因此 ens2f0 的入站流量与 bond1 完全一致。
至于入站流量与出站流量不一致,是因为nginx服务器会添加一些HTTP请求头导致的差异。
五、虚拟机 ifconfig 的情况
在我们的生产环境中,还有很多的虚拟机,它们的 ifconfig 更简单,再来看一个虚拟机下的 ifconfig 的输出。
[root@kundebug ~]$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500inet 172.18.249.178 netmask 255.255.240.0 broadcast 172.18.255.255inet6 fe80::216:3eff:fe08:efe8 prefixlen 64 scopeid 0x20<link>ether 00:16:3e:08:ef:e8 txqueuelen 1000 (Ethernet)RX packets 6651745 bytes 2931130548 (2.7 GiB)RX errors 0 dropped 0 overruns 0 frame 0TX packets 5152881 bytes 3191851949 (2.9 GiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536inet 127.0.0.1 netmask 255.0.0.0inet6 ::1 prefixlen 128 scopeid 0x10<host>loop txqueuelen 1000 (Local Loopback)RX packets 0 bytes 0 (0.0 B)RX errors 0 dropped 0 overruns 0 frame 0TX packets 0 bytes 0 (0.0 B)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@kundebug ~]$
在这台虚拟机的 ifconfig 输出中,看不到 device interrupt 和 device memory 信息。
而根据 MAC 地址 00:16:3e:08:ef:e8 的前3个字节 00:16:3e ,我们可以在IEEE官网上查到这个 MAC 地址的厂商信息,如下:


前3字节 00:16:3e 属于 Xensource(常见于虚拟化环境,如 Xen/KVM)。
所有合法的 MAC 地址都可以通过 IEEE 官网查询到它的厂商信息,每个 MAC 地址为全球唯一。
当然如果你用本文前面 ifconfig 输出的信息中的 MAC 来查询,是查不到的,因为已经被我修改过了,哈哈哈哈。
当然这个很好验证了,我找了我们测试环境的一台物理机,查到的厂商是华为的,这没有问题。

六、总结
通过本文的分析,我们可以得出以下几点关于Linux服务器网卡信息的理解要点:
-
物理网卡与虚拟网卡的区分:
- 物理网卡通常具有唯一的MAC地址,且会分配有device interrupt和device memory
- 虚拟网卡(如bond接口)通常没有device interrupt和memory信息
- 虚拟机中的网卡(如eth0)虽然有MAC地址,但其MAC地址前缀通常表明其为虚拟化厂商分配
-
网卡命名规则:
- ens2f0这类命名通常表示物理网卡接口,其中数字标识不同的插槽和端口
- bond接口是将多个物理网卡绑定为一个逻辑接口,提高吞吐量和冗余性
- 像bond1:1这样的别名接口允许在同一物理接口上配置多个IP地址
-
流量分析:
- 通过RX/TX packets和bytes可以监控网络流量
- 在bond模式下,流量可能只通过一个活跃的从属接口传输,其他接口处于备用状态
- 关注errors、dropped、overruns等计数器可以帮助发现潜在的网络问题
-
实际应用价值:
- 了解网卡信息有助于定位网络瓶颈,如本文开头提到的客户压测场景
- 对于后端开发人员,这些知识在性能优化和问题排查时非常宝贵
- 在高流量环境下,了解网卡配置可以帮助判断是否需要硬件升级或配置调整
-
MAC地址识别:
- MAC地址的前3个字节(OUI)可以标识厂商
- 通过IEEE官网可以查询MAC地址的厂商信息
- 这有助于判断网卡的来源和类型(物理/虚拟)
作为Linux后端开发人员,掌握这些网络基础知识不仅有助于日常运维和问题排查,也能在系统设计和性能优化时做出更明智的决策。在高并发、高流量的生产环境中,这些知识尤为重要,可以帮助我们快速定位问题根源,提供更可靠的服务。
相关文章:
Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战
Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战 Linux服务器网卡深度解析:从ifconfig输出到生产环境性能调优实战一、背景二、生产环境的服务器部署情况三、拆解一个真实的 ifconfig 输出1、先看 MAC 地址2、再看设备的 interrupt 和 me…...
【愚公系列】《Python网络爬虫从入门到精通》048-验证码识别(滑动拼图验证码)
🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…...
SpringBoot分布式项目中实现智能邮件提醒系统
一、应用场景与需求分析 在电商、OA、客服等系统中,邮件提醒是用户触达的重要方式。本文针对以下典型需求进行方案设计: 多类型支持:订单超时、服务到期、待办通知等场景动态内容:支持纯文本/HTML/模板引擎内容格式智能重发:24小时未处理自动升级提醒级别高可用性:分布式…...
对shell脚本敏感命令进行加密执行
我要加密这条命令:rm /root/scripty.sh 如何利用openssl aes-256-cbc 实现加密和解密,并执行命令 加密、解密并执行命令的完整流程 以下是使用 openssl aes-256-cbc 加密命令 rm /root/scripty.sh,解密并执行的详细步骤: 1. 加密…...
《嵌套调用与链式访问:C语言中的函数调用技巧》
🚀个人主页:BabyZZの秘密日记 📖收入专栏:C语言 🌍文章目入 一、嵌套调用(一)定义(二)实现方式(三)优点(四)缺点 二、链式…...
Python-控制语句
控制语句 控制语句和逻辑思维 控制语句:把语句组合成能完成一定功能的小逻辑模块分类:顺序、选择、循环“顺序结构”:代表“先执行a,再执行b”的逻辑“条件判断结构”:代表“如果…,则…”的逻辑“循环结构”:代表“如果…则重复执行…”的逻辑条件判断结构 选择结构通…...
教程:在Typora中显示拼音——附处理工具
原因 因为自己普通话不标准,希望可以制作适合自己的带拼音的文档,可以把平常看到的内容、说过的话作为练习普通话的材料。 在市面上,带拼音的材料、书籍并不多,而且有可能是一些比较生僻的内容。所以希望可以自己制作这样的材料…...
OpenCV 图形API(30)图像滤波-----腐蚀操作函数erode()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 使用特定的结构元素腐蚀图像。 cv::gapi::erode 是 OpenCV 的 G-API 模块中用于执行图像腐蚀操作的函数。腐蚀是一种基本的形态学操作ÿ…...
【KWDB 创作者计划】第二卷:开发者实战篇
KWDB技术白皮书卷二:开发者实战篇 1. 自然语言到量子查询的编译系统 1.1 NL2QSQL翻译引擎架构 运行时流程图解: ┌──────────────────────┐ ┌───────────────────┐ ┌─────────────…...
设计模式:里氏代换原则 - 继承设计的稳定之道
里氏代换原则(Liskov Substitution Principle, LSP)作为面向对象设计的基石之一,为我们提供了解决之道。它指导我们如何构建高扩展性和低维护成本的继承体系,避免代码行为不一致导致的混乱和错误。 一、错误的继承设计如何毁掉系…...
Node.js中fs模块详解
Node.js 中 fs 模块(非 Promise)API 详解 Node.js 的 fs 模块提供了同步和异步的文件系统操作。以下是非 Promise 版本的 API 详解: 1. 文件读取操作 const fs require(fs);// 异步读取文件 fs.readFile(file.txt, utf8, (err, data) >…...
特殊定制版,太给力了!
今天给大家分享一款超棒的免费录屏软件,真的是录屏的好帮手! 这款软件功能可以录制 MP4、AVI、WMV 格式的标清、高清、原画视频,满足你各种需求。 云豹录屏大师 多功能录屏神器 它的界面特别简洁,上手超快,用起来很顺…...
go:实现最简单区块链
1.新建文件夹命名为blockchain,在此文件夹下分别创建两个文件一个为block.go另一个为chain.go如下图所示: 2.写入代码: block.go package blockchainimport ("bytes""crypto/sha256""encoding/gob""log""strconv""ti…...
工业相机使用笔记
目前工业相机有多种分类方式,以下是基于不同原理和特点的类别总结: 按维度分类 2D相机: 原理:通过镜头将二维平面上的物体成像在图像传感器上,传感器上的像素点阵列捕捉物体的光信号,并转换为电信号或数字…...
系分论文《论面向服务开发方法在设备租赁行业的应用》
系统分析师论文系列 【摘要】 2022年5月,我司承接某工程机械租赁企业"智能租赁运营管理平台"建设项目,我作为系统分析师主导系统架构设计。该项目需整合8大类2000余台设备资产,覆盖全国15个区域运营中心与300家代理商,实…...
【Code】《代码整洁之道》笔记-Chapter12-迭进
第12章 迭进 12.1 通过迭进设计达到整洁目的 假使有4条简单的规则,跟着做就能帮助你创建优良的设计,会如何?假使遵循这些规则,你就能洞见代码的结构和设计,更能轻易地应用SRP和DIP之类的原则,便会如何&…...
04--网络属性设置与多路复用
一、TCP可靠性分析 二、 scoket 属性设置 1、socket 属性设置表 NAMEgetsockopt, setsockopt - get and set options on sockets获取 和 设置 套接字属性 SYNOPSIS#include <sys/types.h> /* See NOTES */#include <sys/socket.h>int getsockopt(int so…...
AI领域再突破,永洪科技荣获“2025人工智能+创新案例”奖
在2025年的今天,人工智能已从技术概念全面渗透至产业核心。中国作为全球AI技术应用的前沿阵地,正通过“人工智能”行动加速推进技术与实体经济深度融合。 这一背景下,永洪科技凭借其“国内某头部ICT人力资源板块GenAI项目”荣获“2025全国企业…...
基于疾风大模型的新能源储能优化系统:方法、实现与案例分析
一、引言 随着可再生能源渗透率不断提高,储能系统在电力系统中的重要性日益凸显。传统储能控制方法主要基于规则策略和简单优化算法,难以应对高比例新能源场景下的复杂决策需求。本文将详细介绍如何利用疾风大模型(Gale Model)构建智能化的新能源储能优化系统,包含核心方…...
菊风RTC 2.0 开发者文档正式发布,解锁音视频新体验!
重磅发布! 开发者们,菊风实时音视频2.0文档已正式发布上线,为您提供更清晰、更高效的开发支持!让菊风实时音视频2.0为您的音视频应用加速~ 菊风实时音视频2.0聚焦性能升级、体验升级、录制服务升级,助力视频通话、语…...
12c补丁滚动升级
12c打补丁前置检查 备份文件,可以不做,因为文件可能很大,如果可以备份整个安装文件。 1.check grid: % /u01/app/12.1.0/grid/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir /home/software/27010872/2691…...
OpenCv高阶(一)——图像金字塔(上采样、下采样)
目录 图像金字塔 一、上下采样原理 1、向下取样 2、向上采样 3、图像金字塔的作用 二、案例实现 1、高斯下采样 2、高斯金字塔中的上采样 3、对下采样的结果做上采样,图像变模糊,无法复原 4、拉普拉斯金字塔(图片复原) 图…...
LEARNING DYNAMICS OF LLM FINETUNING【论文阅读笔记】
LEARNING DYNAMICS OF LLM FINETUNING 一句话总结 作者将LLM的学习动力机制拆解成AKG三项,并分别观察了SFT和DPO训练过程中正梯度信号和负梯度信号的变化及其带来的影响,并得到以下结论: SFT通过梯度相似性间接提升无关…...
数据集 | 沥青路面缺陷目标检测
文章目录 一、数据集概述1. 行业痛点与数据集价值2. 数据集技术规格 二、样本类别详解1. 裂缝 (Crack)2. 裂缝修补 (Crack Repair)3. 坑洞 (Pothole)4. 坑洞修补 (Pothole Repair)5. 井盖 (Manhole Cover)6. 其他 (Other) 三、标注工具四、下载地址 一、数据集概述 1. 行业痛点…...
AllData数据中台升级发布 | 支持K8S数据平台2.0版本
🔥🔥 AllData大数据产品是可定义数据中台,以数据平台为底座,以数据中台为桥梁,以机器学习平台为中层框架,以大模型应用为上游产品,提供全链路数字化解决方案。 ✨杭州奥零数据科技官网…...
第二十二: go与k8s、docker相关编写dockerfile
实战演示k8s部署go服务,实现滚动更新、重新创建、蓝绿部署、金丝雀发布-CSDN博客 go 编写k8s命令: 怎么在go语言中编写k8s命令 • Worktile社区 k8s中如何使用go 在K8s编程中如何使用Go-阿里云开发者社区 go build - o : -o:指定输出文件…...
Python及C++中的字典
一、Python中的字典 (一)基本概念 字典(dict)是Python中一种可变容器模型,用于存储键值对(key:value)。字典的键必须是不可变类型(如字符串、数字或元组),而…...
.net Core 和 .net freamwork 调用 deepseek api 使用流输出文本(对话补全)
.net Core 调用 deepseek api 使用流输出文本 简下面直接上代码(.net core):最后再贴一个 .net Freamwork 4 可以用的代码TLS 的代码至关重要的:(下面这个) 简 在官网里面有许多的案例:我们通过…...
[特殊字符] 第十三讲 | 地统计模拟与空间不确定性评估
📘 专栏:科研统计方法实战分享 | 地学/农学人的数据分析工具箱 ✍️ 作者:平常心0715 🎯 关键词:地统计模拟、随机函数、空间不确定性、条件模拟、SGS、R语言 🧠 核心导语 在现实数据有限、空间异质性强的…...
springcloud整理
问题1.服务拆分后如何进行服务之间的调用 我们该如何跨服务调用,准确的说,如何在cart-service中获取item-service服务中的提供的商品数据呢? 解决办法:Spring给我们提供了一个RestTemplate的API,可以方便的实现Http请…...
