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

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 3

大家好,我是Q,邮箱:1042484520@qq.com。
今天我们在上一讲的基础上再扩展下 Cabin Wi-Fi 的功能需求,讲讲如何判断 5G TCU 系统中的路由关系。
参考:
  • 实现某海外大型车企(T)Cabin Wi-Fi 需求的概述-CSDN博客
  • 实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 2-CSDN博客
话不多说,我们先直接展示网络架构图,具体如下所示:
如上图所示,我们建立了两路APN的连接,rmnet_data0 和 rmnet_data1,通过如上两路 APN 为 Host machine 和 External STA 提供了访问外网的能力。
如框架图所示,WLAN1 放在 Bridge421 的桥下面,然后 Bridge421 通过路由的方式与 rmnet_data1 进行数据共享,形成了一个通路
另外,Bridge20 桥下面包含了一个 vlan 的接口 eth0.20,然后 Bridge20 与 rmnet_data0 通过路由的方式进行数据共享,同时 eth0.20 优势 eth0 的 vlan节点,eth0 通过以太网与 Host machine 进行连接,Host machine 里面也创建了一个 eth0.20 的 vlan 接口,Host machine 通过 eth0.20 进行外网的访问。
上图中 5G TCU 中,各个 interface 的详细信息如下所示:
/ # ifconfig
bridge0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500  metric 1inet 192.168.90.60  netmask 255.255.255.0  broadcast 192.168.90.255inet6 fe80::84d2:dbff:fe94:1803  prefixlen 64  scopeid 0x20<link>ether 86:d2:db:97:1b:06  txqueuelen 1000  (Ethernet)RX packets 43556  bytes 3303084 (3.1 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 43278  bytes 3857732 (3.6 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0bridge20: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500  metric 1inet 192.168.20.1  netmask 255.255.255.0  broadcast 192.168.20.255inet6 fe80::d48d:c6ff:fe87:2259  prefixlen 64  scopeid 0x20<link>ether d6:8d:c6:8a:25:5c  txqueuelen 1000  (Ethernet)RX packets 862  bytes 71684 (70.0 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 995  bytes 93254 (91.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0bridge21: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500  metric 1inet 192.168.21.1  netmask 255.255.255.0  broadcast 192.168.21.255inet6 fe80::206d:8cff:fe4f:4146  prefixlen 64  scopeid 0x20<link>ether 22:6d:8c:52:44:49  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 47  bytes 5210 (5.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0bridge421: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST>  mtu 1500  metric 1inet 192.168.60.1  netmask 255.255.255.0  broadcast 192.168.60.255inet6 fe80::a004:4bff:fe3c:e6c6  prefixlen 64  scopeid 0x20<link>ether a2:04:4b:3f:e9:c9  txqueuelen 1000  (Ethernet)RX packets 1936  bytes 239971 (234.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 1294  bytes 173282 (169.2 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1inet 169.254.51.1  netmask 255.255.255.0  broadcast 169.254.51.255inet6 fe80::1012:8aff:fe8c:27f0  prefixlen 64  scopeid 0x20<link>ether 12:12:8a:8c:27:f0  txqueuelen 1000  (Ethernet)RX packets 44430  bytes 3313117 (3.1 MiB)RX errors 0  dropped 5  overruns 0  frame 0TX packets 45159  bytes 4029274 (3.8 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0device interrupt 40eth0.20: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1inet6 fe80::1012:8aff:fe8c:27f0  prefixlen 64  scopeid 0x20<link>ether 12:12:8a:8c:27:f0  txqueuelen 1000  (Ethernet)RX packets 806  bytes 65836 (64.2 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 761  bytes 73804 (72.0 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth0.21: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1inet6 fe80::1012:8aff:fe8c:27f0  prefixlen 64  scopeid 0x20<link>ether 12:12:8a:8c:27:f0  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 15  bytes 1226 (1.1 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0eth0.421: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1inet6 fe80::1012:8aff:fe8c:27f0  prefixlen 64  scopeid 0x20<link>ether 12:12:8a:8c:27:f0  txqueuelen 1000  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 70  bytes 5482 (5.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536  metric 1inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (Local Loopback)RX packets 56  bytes 4872 (4.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 56  bytes 4872 (4.7 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0rmnet_data0: flags=65<UP,RUNNING>  mtu 1400  metric 1inet 10.98.112.221  netmask 255.255.255.255unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)RX packets 646  bytes 57134 (55.7 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 623  bytes 51992 (50.7 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0rmnet_data1: flags=65<UP,RUNNING>  mtu 1400  metric 1inet 10.67.215.41  netmask 255.255.255.255unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)RX packets 1111  bytes 141366 (138.0 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 1803  bytes 184960 (180.6 KiB)TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0rmnet_ipa0: flags=65<UP,RUNNING>  mtu 9216  metric 1unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 1000  (UNSPEC)RX packets 1527  bytes 212556 (207.5 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 2426  bytes 256360 (250.3 KiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0wlan0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500  metric 1ether 00:03:7f:12:b6:12  txqueuelen 3000  (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 0wlan1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500  metric 1inet 169.254.1.1  netmask 255.255.255.0  broadcast 169.254.1.255inet6 fe80::203:7fff:fe93:b612  prefixlen 64  scopeid 0x20<link>ether 00:03:7f:93:b6:12  txqueuelen 3000  (Ethernet)RX packets 1936  bytes 239971 (234.3 KiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 1152  bytes 160728 (156.9 KiB)TX errors 0  dropped 1 overruns 0  carrier 0  collisions 0/ #
想必大家都有一个疑问,那就是我怎么判断我的各个 interface 之间数据的路由和桥接是正常的呢?那下面我们就讲一讲具体的判断方法和步骤。
例如,我要确认 bridge20 的数据是通过哪个 rmnet_data 接口访问外网,可以按照以下步骤检查流量的路由路径。具体指令如下:

步骤 1: 查看路由表

首先,你需要确认 bridge20 的数据最终会匹配哪个路由表中的规则。
  • 检查 bridge20 的 IP 地址范围:
    • ip addr show bridge20
    • 确认它的子网,例如:192.168.20.0/24。
  • 检查 ip rule 的标记规则:
    • ip rule show
    • 从输出中查看 fwmark 标记对应的路由表(如 pdn_table_3 或 pdn_table_4)。
  • 查看路由表内容:
    • 如果 bridge20 匹配的是 pdn_table_3,则查看:

      • ip route show table pdn_table_3

    • 如果匹配的是 pdn_table_4,则查看:

      • ip route show table pdn_table_4

通过这些信息,你可以判断 bridge20 的数据最终会被转发到哪个外网接口(rmnet_data0 或 rmnet_data1)。

步骤 2: 动态流量测试

如果你想更精确地追踪实时数据流的路由路径,可以使用以下方法:

方法 1: 使用 ip route get

ip route get 可以用于模拟目标流量,显示其实际的路由路径。
  • 测试从 bridge20 发送的数据包:
    • ip route get 8.8.8.8 from 192.168.20.1
      • 8.8.8.8 是测试目标 IP,可以换成实际的外网地址。
      • 192.168.20.1 是 bridge20 子网的 IP 地址(可以换成具体 IP)。
      • 输出会显示数据包的下一跳和所使用的接口,比如:8.8.8.8 via 10.98.112.221 dev rmnet_data0 src 192.168.20.1
这表明数据包通过 rmnet_data0 发送到 10.98.112.221。

方法 2: 使用 tcpdump 捕获数据

如果有实际流量,你可以通过抓包来确认数据的转发路径。
  • 在 bridge20 上抓包,查看其目的地址:
    • tcpdump -i bridge20 -n
  • 在外网接口(如 rmnet_data0 和 rmnet_data1)上抓包,查看是否转发了流量:
    • tcpdump -i rmnet_data0 -n
    • tcpdump -i rmnet_data1 -n
  • 比对 bridge20 和 rmnet_data* 上的流量,确认数据流的转发路径。

步骤 3: 检查 NAT 规则

在大多数情况下,bridge20 的流量被转发到外网时会经过 NAT 规则,特别是使用 iptables 时。你可以检查 NAT 配置来进一步确认。
  • 查看 NAT 表规则:
    • iptables -t nat -L -n -v
      • 重点查看 POSTROUTING 链,查找 bridge20 的相关规则,例如:
      • MASQUERADE all -- 192.168.20.0/24 0.0.0.0/0 /* 通过 rmnet_data0 出口 */
  • 如果使用 nftables,查看 NAT 规则:
    • nft list ruleset

总结

为了确认 bridge20 的数据通过哪个 rmnet_data 接口访问外网,可以使用以下指令:
  • 确定路由规则:
    • ip rule show
    • ip route show table pdn_table_3
    • ip route show table pdn_table_4
  • 动态路由测试:
    • ip route get 8.8.8.8 from 192.168.20.1
  • 抓包分析:
    • tcpdump -i bridge20 -n
    • tcpdump -i rmnet_data0 -n
    • tcpdump -i rmnet_data1 -n
  • 检查 NAT 配置:
    • iptables -t nat -L -n -v
根据这些步骤,你可以确认 bridge20 的数据是否通过 rmnet_data0 或 rmnet_data1 转发到外网。

相关文章:

实现某海外大型车企(T)Cabin Wi-Fi 需求的概述 - 3

大家好&#xff0c;我是Q&#xff0c;邮箱&#xff1a;1042484520qq.com。 今天我们在上一讲的基础上再扩展下 Cabin Wi-Fi 的功能需求&#xff0c;讲讲如何判断 5G TCU 系统中的路由关系。 参考&#xff1a; 实现某海外大型车企&#xff08;T&#xff09;Cabin Wi-Fi 需求的概…...

Python+OpenCV系列:AI看图识人、识车、识万物

在人工智能风靡全球的今天&#xff0c;用 Python 和 OpenCV 结合机器学习实现物体识别&#xff0c;不仅是酷炫技能&#xff0c;更是掌握未来的敲门砖。本篇博文手把手教你如何通过摄像头或图片输入&#xff0c;识别人、动物、车辆及其他物品&#xff0c;让你的程序瞬间具备 AI …...

全排列..

本节通过对一个全排列的实例,帮助对深度优先算法的理解. 问题描述: 给定一个集合,实现集合中的元素重排列 思路解析: 按照全排列的常规思维,执行过程如下:先确定第一位,将已经确定的元素放入一个数组中,再用一个循环对剩余数组进行全排列.在对剩余数组进行全排列时,就是递归执…...

用户体验与SEO的结合:如何优化网站以提升谷歌排名?

在SEO领域&#xff0c;算法、关键词和技术手段固然重要&#xff0c;但归根结底&#xff0c;谷歌的核心理念是提供最优质的用户体验。无论算法如何变化&#xff0c;用户体验始终是影响谷歌排名的重要因素之一。一个友好、直观的网站不仅能留住用户&#xff0c;还能直接提升搜索引…...

[计算机网络]ARP协议的故事:小明找小红的奇妙旅程

1.ARP小故事 在一个繁忙的网络世界中&#xff0c;每个设备都有自己的身份标识——MAC地址&#xff0c;就像每个人的身份证号码一样。在这个故事里&#xff0c;我们的主角小明&#xff08;主机&#xff09;需要找到小红&#xff08;目标主机&#xff09;的MAC地址&#xff0c;才…...

http的MIME类型

在 HTTP 协议中&#xff0c;MIME 类型&#xff08;Multipurpose Internet Mail Extensions&#xff09;用于描述传输内容的类型和格式。MIME 类型通过 Content-Type 头字段来指定&#xff0c;告知客户端如何处理和显示接收到的数据。 常见的 MIME 类型 以下是一些常见的 MIME…...

【数字信号处理】数字信号处理试题及答案,离散序列,Z变换,傅里叶变换

关注作者了解更多 我的其他CSDN专栏 过程控制系统 工程测试技术 虚拟仪器技术 可编程控制器 工业现场总线 数字图像处理 智能控制 传感器技术 嵌入式系统 复变函数与积分变换 单片机原理 线性代数 大学物理 热工与工程流体力学 数字信号处理 光电融合集成电路…...

信号槽【QT】

文章目录 对象树字符集信号槽QT坐标系信号与槽connect自定义槽自定义信号disconnect 对象树 #ifndef MYLABEL_H #define MYLABEL_H#include<QLabel> class MyLabel : public QLabel { public:// 构造函数使用带 QWidget* 版本的.// 确保对象能够加到对象树上MyLabel(QWi…...

【JAVA】JAVA接口公共返回体ResponseData封装

一、JAVA接口公共返回体ResponseData封装&#xff0c;使用泛型的经典 例子 public class ResponseData<T> implements Serializable { /** * */ private static final long serialVersionUID 7098362967623367826L; /** * 响应状态码 */ …...

如何评估并持续优化AI呼出机器人的使用效果

如何评估并持续优化AI呼出机器人的使用效果 作者&#xff1a;开源呼叫中心FreeIPCC 随着人工智能技术的发展&#xff0c;AI呼出机器人在企业中的应用越来越广泛。这些智能系统不仅提高了工作效率、降低了成本&#xff0c;还改善了客户体验。然而&#xff0c;要确保AI呼出机器…...

SQL注入漏洞详解

SQL注入是一种常见且十分严重的安全漏洞。它利用应用程序对用户输入的验证不充分&#xff0c;从而导致恶意的SQL查询被执行&#xff0c;可能导致数据泄露、篡改、甚至系统被攻陷。本文将详细解析SQL注入攻击的原理&#xff0c;举例说明其实现过程&#xff0c;并提供多种防范方案…...

爬虫逆向学习(十四):分享一下某数通用破解服务开发经验

阅前须知 这篇博客不是教大家怎么实现的&#xff0c;而且告知大家有这个东西&#xff0c;或者说一种趋势&#xff0c;借此分享自己大致的实现经验。具体的实现我也不好整理&#xff0c;毕竟是在别人的基础上缝缝补补。 前言 使用补环境方式破解过某数的同学都知道&#xff0…...

同步升压芯片-FP6276BXR-G1不能工作的原因

电源管理芯片FP6276BXR-G1是一个升压稳压电源&#xff0c;我用来把一节锂电池升压到5V电源 这个芯片是一个神奇的芯片&#xff0c;为什么专门拉出来写一篇文章呢&#xff0c;就是焊接好后&#xff0c;发现点不亮&#xff0c;这个就糟糕了。 这个是网友 memoff的一张图&#…...

Iris简单实现Go web服务器

package mainimport ("github.com/kataras/iris" )func main() {app : iris.New() // 实例一个iris对象//配置路由app.Get("/", func(ctx iris.Context) {ctx.WriteString("Hello Iris")})app.Get("/aa", func(ctx iris.Context) {ct…...

基于Spring Boot的营销项目系统

一、系统背景与意义 随着互联网技术的飞速发展&#xff0c;电子商务已成为现代商业活动的重要组成部分&#xff0c;深刻改变了人们的购物习惯和消费模式。然而&#xff0c;面对日益激烈的市场竞争和消费者需求的多样化&#xff0c;传统的电商管理系统往往存在功能单一、数据处…...

百度飞桨:零基础入门深度学习

目录 前言一、概念&#xff1a;机器学习&深度学习1. 机器学习2. 深度学习 二、实操&#xff1a;波士顿房价预测任务1. 线性回归模型2. 线性回归模型的神经网络结构3. 数据处理4. 模型设计5. 训练配置6. 训练过程6.1. 梯度下降法6.2. 计算梯度6.3. 使用Numpy进行梯度计算6.4…...

架构信息收集(小迪网络安全笔记~

附&#xff1a;完整笔记目录~ ps&#xff1a;本人小白&#xff0c;笔记均在个人理解基础上整理&#xff0c;若有错误欢迎指正&#xff01; 2.2 架构信息收集 引子&#xff1a;一个Web应用的构成&#xff0c;由诸多组件&服务相结合&#xff0c;而域名仅是处于Web架构中最表…...

【Python】pandas库---数据分析

大学毕业那年&#xff0c;你成了社会底层群众里&#xff0c;受教育程度最高的一批人。 前言 这是我自己学习Python的第四篇博客总结。后期我会继续把Python学习笔记开源至博客上。 上一期笔记有关Python的NumPy数据分析&#xff0c;没看过的同学可以去看看&#xff1a;【Pyt…...

天猫魔盒M17/M17S_超级UI 线刷固件包-可救砖(刷机取消双勾)

在智能电视盒子的领域中&#xff0c;天猫魔盒 M17 以其独特魅力占据一席之地&#xff0c;然而&#xff0c;原厂设置有时难以满足进阶用户的多元需求。此刻&#xff0c;刷机成为开启全新体验的关键钥匙&#xff0c;为您的盒子注入鲜活能量。 一、卓越固件特性概览 此款精心打造的…...

【Flink-scala】DataStream编程模型之延迟数据处理

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之水位线 4.【Flink-scala】DataStream编程模型之窗口计算-触发器-…...

samout llm解码 幻觉更低更稳定

这段代码定义了一个简单的对话生成系统&#xff0c;包括模型加载、词汇表加载、以及基于给定提示生成文本的功能。下面是对代码的解析&#xff1a; load_model_and_voc(device"cpu"): 该函数用于加载预训练的模型和词汇表&#xff08;vocabulary&#xff09;。它首先…...

python学opencv|读取图像(十六)修改HSV图像HSV值

【1】引言 前序学习进程中&#xff0c;我们已经掌握了对HSV通道和BGR通道的拆分和合并&#xff0c;并通过自由组合的形式&#xff0c;获得了和初始图像完全不一样的新图像&#xff0c;相关文章可以参考下述链接&#xff1a; python学opencv|读取图像&#xff08;十四&#xf…...

nginx自定义错误页面

一、Nginx 自定义错误页面笔记 error_page 指令 语法&#xff1a;error_page error_code [|answer-code] uri;作用&#xff1a;用于定义当特定的 HTTP 错误发生时&#xff0c;Nginx 应该返回给客户端的自定义页面。error_code 是需要自定义页面的 HTTP 错误码&#xff0c;例如 …...

通过枚举值调用函数

在做业务的时候&#xff0c;需要根据前端传递的不同枚举参数&#xff08;比如说0&#xff0c;1&#xff09;返回对应固定的值。但是这个值需要根据时间又有所变化。我们可以使用if-else去实现对应的逻辑&#xff0c;比如说&#xff0c;当前端传递参数为0是&#xff0c;需要返回…...

[手机Linux] 六,ubuntu18.04私有网盘(NextCloud)安装

一&#xff0c;LNMP介绍 LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Alibaba/Amazon/Mint/Oracle/Rocky/Alma/Kali/UOS/银河麒麟/openEuler/Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQ…...

powershell(1)

免责声明 学习视频来自 B 站up主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下代码、网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 泷羽sec官网&#xff1a;http…...

Message Processing With Spring Integration高级应用:自定义消息通道与端点

一、Spring Integration 简介 Spring Integration 是 Spring 框架的扩展&#xff0c;支持企业集成模式&#xff08;EIP&#xff09;&#xff0c;提供轻量级的消息处理功能&#xff0c;帮助开发者构建可维护、可测试的企业集成解决方案。 核心目标&#xff1a; 提供简单的模型…...

CUDA从入门到精通(六)——CUDA编程模型(二)

1. 核函数类型限定符 CUDA 核函数的常用函数类型限定符及其相关信息的表格&#xff1a; 限定符执行端调用方式备注__global__设备端&#xff08;GPU&#xff09;从主机代码使用 <<<...>>> 调用核函数用于声明核函数&#xff0c;在 GPU 上执行。只能从主机代…...

*【每日一题 基础题】 [蓝桥杯 2023 省 B] 飞机降落

题目描述 N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 Di 个单位时间&#xff0c;即它最早可以于 Ti 时刻开始降落&#xff0c;最晚可以于 Ti Di 时刻开始降落。降落过程需要 Li个单位时间…...

作业Day4: 链表函数封装 ; 思维导图

目录 作业&#xff1a;实现链表剩下的操作&#xff1a; 任意位置删除 按位置修改 按值查找返回地址 反转 销毁 运行结果 思维导图 作业&#xff1a;实现链表剩下的操作&#xff1a; 1>任意位置删除 2>按位置修改 3>按值查找返回地址 4>反转 5>销毁 任意…...

线性规划中的几种逻辑表达式

线性规划中的几种逻辑表达式 注意&#xff1a; 摘录字刘博士的《数学建模与数学规划》&#xff0c; 以便用时可查。 实际上Gurobi API 中自身放啊变的逻辑表达式函数&#xff0c;下面列出自定义的实现方式。 1 逻辑与 如果 x 1 1 x_1 1 x1​1, x 2 1 x_2 1 x2​1, 那…...

NX二次开发通过内部函数获取面的面积MW_face_ask_area

获取动态库libmold.dll的路径 void TcharToChar(const TCHAR* tchar, char* _char) {int iLength; #if UNICODE//获取字节长度 iLength WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL);//将tchar值赋给_char WideCharToMultiByte(CP_ACP, 0, tchar, -…...

初学stm32 ——— 串口通信

目录 STM32的串口通信接口 UART异步通信方式特点&#xff1a; 串口通信过程 STM32串口异步通信需要定义的参数: USART框图&#xff1a; 常用的串口相关寄存器 串口操作相关库函数 ​编辑 串口配置的一般步骤 STM32的串口通信接口 UART&#xff1a;通用异步收发器USART&am…...

分割双声道音频-Audacity和ffmpeg

双声道音频资源&#xff1a; https://download.csdn.net/download/yudelian/90135217 1、ffmpeg分割双声道音频 ffmpeg -i input.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav 2、audacity分割双生音频并且播放 选择分离立体声轨 可以看出分离出了两个音频…...

在 Spring Boot 3 中实现基于角色的访问控制

基于角色的访问控制 (RBAC) 是一种有价值的访问控制模型,可增强安全性、简化访问管理并提高效率。它在管理资源访问对安全和运营至关重要的复杂环境中尤其有益。 我们将做什么 我们有一个包含公共路由和受限路由的 Web API。受限路由需要数据库中用户的有效 JWT。 现在用户…...

MySQL追梦旅途之慢查询分析建议

一、找到慢查询 查询是否开启慢查询记录 show variables like "%slow%";log_slow_admin_statements&#xff1a; 决定是否将慢管理语句&#xff08;如 ALTER TABLE 等&#xff09;记录到慢查询日志中。 log_slow_extra &#xff1a; MySQL 和 MariaDB 中的一个系…...

电子应用设计方案-60:智能床垫系统方案设计

智能床垫系统方案设计 一、引言 智能床垫作为智能家居的一部分&#xff0c;旨在为用户提供更舒适的睡眠体验和健康监测功能。本方案将详细描述智能床垫系统的设计理念、功能模块及技术实现。 二、系统概述 1. 系统目标 - 实时监测睡眠状态&#xff0c;包括心率、呼吸、体动等…...

聊聊航空航天软件中常用的SIFT(Software-Implemented Fault Tolerance)三版本方案

一、SIFT技术 在软件程序控制流程中&#xff0c;特别是在SIFT&#xff08;Software-Implemented Fault Tolerance&#xff09;系统中使用三版本编程&#xff08;Three-Version Programming, 3VP&#xff09;意味着为同一个任务创建三个独立的软件版本。每个版本由不同的开发团…...

智能座舱进阶-应用框架层-Jetpack主要组件

Jetpack的分类 1. DataBinding&#xff1a;以声明方式将可观察数据绑定到界面元素&#xff0c;通常和ViewModel配合使用。 2. Lifecycle&#xff1a;用于管理Activity和Fragment的生命周期&#xff0c;可帮助开发者生成更易于维护的轻量级代码。 3. LiveData: 在底层数据库更…...

2024年底-Sre面试回顾

前言 背景: 2024.11月底 公司不大行了, 裁员收缩, 12月初开始面试, 2周大概面试了十几家公司, 3个2面要去线下, 有1个还不错的offer, 想结束战斗但还没到时候 个人情况: base上海 5年经验(2年实施3年运维半年开发) 面试岗位: Sre、云原生运维、驻场运维、高级运维、实施交付 …...

vue2使用render,js中写html

1、js部分table.js export default {name: "dadeT",data() {return {dades: 6666};},render(h) {return h(div, [h(span, 组件数据&#xff1a;${this.dades}), // 利用data里的dades数据&#xff0c;展示在页面上h(span, 89855545)]);} };2、vue部分 <templat…...

L2tp环境搭建笔记- Openwrt平台

L2tp环境搭建笔记- Openwrt平台 安装L2tp服务配置L2tp serverL2TP客户端配置(使用配置文件)L2TP客户端配置(LUCI)客户端 拔号(命令行方式)defaultroute路由问题L2TP(Layer 2 Tunneling Protocol)是一种工作在二层的隧道协议,是一种虚拟专用网络(VPN)协议。L2TP通常基…...

解决Nginx + Vue.js (ruoyi-vue) 单页应用(SPA) 404问题的指南

问题描述 在使用Vue.js构建的单页应用&#xff08;SPA&#xff09;中&#xff0c;特别是像ruoyi-vue这样的框架&#xff0c;如果启用了HTML5历史记录模式进行路由管理&#xff0c;那么用户直接访问子路径或刷新页面时可能会遇到404错误。这是因为当用户尝试访问一个非根路径时…...

Leetcode打卡:找到稳定山的下标

执行结果&#xff1a;通过 题目&#xff1a; 3258 找到稳定山的下标 有 n 座山排成一列&#xff0c;每座山都有一个高度。给你一个整数数组 height &#xff0c;其中 height[i] 表示第 i 座山的高度&#xff0c;再给你一个整数 threshold 。 对于下标不为 0 的一座山&#xf…...

51c嵌入式~单片机~合集3

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、STM32代码远程升级之IAP编程 IAP是什么 有时项目上需要远程升级单片机程序&#xff0c;此时需要接触到IAP编程。 IAP即为In Application Programming&#xff0c;解释为在应用中编程&#xff0c;用户自己的…...

基于vue3实现小程序手机号一键登录

在Vue 3中实现小程序手机号一键登录&#xff0c;你需要结合小程序的API和Vue 3的框架特性。以下是一个基本的实现步骤和示例代码&#xff1a; 步骤 创建Vue 3项目&#xff1a;如果你还没有Vue 3项目&#xff0c;你需要先创建一个。这可以通过Vue CLI或者其他方式来完成。 集成…...

车辆重识别代码笔记12.19

1、resnet_ibn_a和resnet网络的区别 ResNet-IBN-A 是在 ResNet 基础上进行了一些改进的变种&#xff0c;具体来说&#xff0c;它引入了 Instance Batch Normalization (IBN) 的概念&#xff0c;这在某些任务中&#xff08;如图像识别、迁移学习等&#xff09;有显著的性能提升。…...

c语言---预处理

预处理的概念 预处理是C语言编译过程的第一个阶段。在这个阶段&#xff0c;预处理器会根据预处理指令对源程序进行处理&#xff0c;这些指令以#开头&#xff0c;比如#include、#define等。预处理的主要目的是对源程序进行文本替换和文件包含等操作&#xff0c;为后续的编译步骤…...

Spring Cloud Sleuth 分布式链路追踪入门

您好&#xff0c;我是今夜写代码,今天学习下分布式链路组件Spring Cloud Sleuth。 本文内容 介绍了分布式链路的思想 Sleuth 和 Zipkin 简单集成Demo,并不涉及 Sleuth原理。 为什么要用链路追踪&#xff1f; 微服务架构下&#xff0c;一个复杂的电商应用&#xff0c;完成下…...

无人机航测系统技术特点!

一、无人机航测系统的设计逻辑 无人机航测系统的设计逻辑主要围绕实现高效、准确、安全的航空摄影测量展开。其设计目标是通过无人机搭载相机和传感器&#xff0c;利用先进的飞行控制系统和数据处理技术&#xff0c;实现对地表信息的全方位、高精度获取。 需求分析&#xff1…...