汽车总线之----FlexRay总线
Introduction
随着汽车智能化发展,车辆开发的ECU数量不断增加,人们对汽车系统的各个性能方面提出了更高的需求,比如更多的数据交互,更高的传输带宽等。现如今人们广泛接受电子功能来提高驾驶安全性,像ABS防抱死系统,ASR驱动防滑系统,ESP电子稳定系统,但这类辅助驾驶功能涉及汽车主动被动安全领域,对汽车通信系统的可靠性,安全性和实时性提出了非常严格的需求,比如动力总成和底盘系统对数据传输的要求要达到2M/S,而当时传统的CAN总线已满足不了这些需求,而这些需求主要体现在以下四个方面,分别是通信速率(Transmission rate),可扩展性(Extendability),物理层(Physical Layer)及传输可靠性(Transmission reliability),才能适用于汽车主动被动安全功能领域。可扩展性呢体现在车上,增加减少节点时,不影响整车的效果,另外通信的物理连接保持简便并具备鲁棒性,同时通信系统需具备其容错性确定性,通过冗余备份等技术减少或避免出错,基于这些新的需求,因此需要一种具有可组合性的通信系统,其核心属性就是保证具有确定性和容错性的数据通信,不受总线负载的影响。

我们先看一下通信传输的方式,通信传输可以先结合实际生活的例子来理解,我们可以把每个人理解成是一条报文,报文发送到目标地址,相当于人们到达目的地,那人们出行可以有哪几种选择方式呢,主要像有打车,高铁飞机等,其中我们可以根据控制方式的不同分为两大类,第一类事件触发,比如我想去一个地方,通过打车软件打车,打车行为呢相当于触发事件,优点在于时间自由按需触发,缺点是每个人的打车时间是随机的,可能造成部分时段向早晚高峰时期路况拥堵,人们就无法及时到达目的地址,或想半夜时段或郊区地段,司机不能及时响应,其所花费的时间是不可预测的,第二类时间触发,根据时间表来执行,像飞机的航班表,高铁的时刻表,到点起飞或行驶,优点在于所花费的时间是可预测的,不会因交通拥堵而造成延迟的情况,缺点是不合理的,交通资源分配,像交通工具的早晚班机或特殊时期,比如目前的疫情期间,严格的人员流动限制,从而造成交通资源的浪费,

了解了两种通信传输的类型之后,包括CSMA和TDMA访问方式,其中CSMA全称载波监听多路访问方式,基于事件触发,事件出发后,节点尝试往总线上发送报文,比如传统汽车总线CAN就是此类访问方式。TDMA 时分多路访问方式,相当于发送节点的时间都是确定好的,按照时间片为单位划分并周期性发送,比如图中通信时间轴上以时间片段t cycle为单位,逐期发送,一个t cycle可分为四块,每个时间片段里指定一条报文发送,可以理解成高铁的一节车厢,车厢内的座位都是确定好的,每位上车乘客对应自己的座位并前往目的地,FlexRay总线就是基于时间触发的TDMA访问方式。

在传统CAN总线基础上,为满足更高的需求,因此有宝马,戴姆勒等oem和博士,恩智浦等供应商共同成立了FlexRay联盟,该联盟已在开发出具有确定性和容错性的FlexRay通信标准,于2005年推出FlexRay 2.1版本,随后2009年推出FlexRay为3.0版本,并提交为iso标准,iso 17458,该协议描述了FlexRay及其物理层和相应的一致性测试。

FlexRay和CAN一样均参考了iso模型,并定义了物理层和数据链路层规范,其中FlexRay的协议规范定义数据链路层,电气物理层规范定义物理层,另外FlexRay不同层对应的物理器件分别为数据链路层对应通信控制器,简称CC,CC主要任务包括组织总线访问错误检测,对收发报文的解码编码操作和同步总线,物理层对应总线驱动器简称BD, BD主要进行信号转换,包括模数数模转换,目前FlexRay规范仅涵盖iso模型的前两层及物理层和数据链路层,高层协议则由oto萨联盟和assum组织制定。

FlexRay物理层
首先介绍下拓扑结构,FlexRay总线支持多种不同类型的拓扑结构,即不限于任何特定的物理拓扑,先从最简单的拓扑说起,及点对点方式(peer-to-peer),其中FlexRay跟CAN一样,节点1通过两根信号线Bus Plus(BP)和Bus Minus(BM)与节点2连接,两个节点终端分别接了终端电阻,阻值范围是80~110欧姆,其作用过滤高频信号的干扰,另外任意两个节点之间的线长不得超过24米,其目的是为了保持信号完整性,因为随信号长度增加,会导致信号衰减,失真等信号质量变差的情况,从而影响节点通信,当FlexRay网络中存在四个或以上节点时,拓扑结构可选择被动星型和总线型两种拓扑结构中,均在两个相距最远的节点添加终端电阻,并限制节点间的线长不得超过24米。

为避免或减少影响通信情况的出现,FlexRay节点可通过采用主动星型耦合器互联的主动星型拓扑结构,其被动星型节点替换为主动星型节点,该节点与其他ECU节点连接处均添加终端电阻,通过主动星型拓扑结构可提高信号质量以及补偿信号失真,但同时成本价格也会较贵。

而在实际项目中,FlexRay的拓扑结构不会单独仅应用总线型,被动星型,主动星型的某一种,而是通过以组合的形式使用,即混合拓扑结构应用

FlexRay的数据转换,其物理信号基于差分信号传输,前面也提到FlexRay节点是通过BP BM进行数据通信,电气物理层规范定义了四种总线电平,分别为总线空闲电平,总线空闲低功耗电平,Data_1和Data_0电平,其中总线空闲和空闲低功耗的差分电平为零,即隐性电平,两者区别在于空闲低功耗的bp bm电平值均为零,Data_0和Data_1总线电平为显性电平,当节点发送数据至总线上时,Data_0转化为物理电平值,bp 1.5v,bm 3.5v,Data_1转换为物理电平值,bp 3.5v,bm 1.5v,当节点采集总线上数据时,同样也是通过bp bm采集总线物理电平,并求取bp减bm的差分电压值,当差分电压值范围大于600毫伏时,转化为Data_1,当差分电压值范围小于负的600毫伏时,转化为Data_0。

介绍下FlexRay节点的网络组件,包括μC主机,CC通信控制器以及BD总线驱动,其中CC服务mc间数据通信包括组织总线访问和收发报文,BD主要任务是进行信号转换及物理电平和逻辑信号间转换,此外BD除了作为CC接口外,还有一个mc主机接口,该接口主要跟io控制信号有关,除了基本结构外,FlexRay还存在扩展结构,即在CC和BD间添加了总线监控器,简称bg,其作用是为了防止故障节点在未分配给他们的实习内,出现未经授权的传输,简单的说就是防止故障节点在错误时间访问总线。

FlexRay 通信周期
FlexRay以通信周期为一个循环发送指定的数据,其中一个通讯周期中又划分为64cycle,cycle从零开始计数至63,每个cycle中可包含以下四个时间段,静态段,动态段,符号窗口及网络空闲时段。静态段用于确定性的传输报文,动态段用于传输事件驱动的报文,符号窗口传输特殊符号,网络空闲时段,即NIT段期间不会进行数据通信,需要注意的是,在一个周期中,仅静态段和NIT段是必须的,而动态段符号窗口是可选的。因此通讯周期的组合形式一共有四种,分别为静态段加网络空闲段,静态段加动态段加网络空弦段,静态段加符号窗口加网络空闲段,以及四个时段均包含,

首先静态段,静态段基于我们前面提到的TDMA 时分多路访问方式,通信提供确定性的数据传输,发送节点被指定分配到特定的静态slot中,发送静态帧在静态段中可划分为若干个等长的静态slot,可平均划分为2~1023个,静态slot的个数长度,分别由全局变量及number of static slots和gd static slot定义,另外静态段中的静态sd从一开始计数sd范围为2~1023之间,一条静态帧分为三部分,帧头有效负载帧位在静态段中,每条静态报文的长度均是固定等长的静态帧,尾部是CID通信空闲界定符,用于表示静态帧的结束,通俗的理解就是,静态段可以想象成一节火车车厢划分为若干个静态slot,静态slot相当于车厢的座位,座位大小都是相同的,并没有区别对待,每个座位分配给不同的乘客,静态报文可以理解成乘客静态段,发送静态报文则为乘客乘坐火车的过程。

接着动态段,动态段位于静态段之后,用于传输事件驱动报文及动态帧,动态段可分为若干个动态slot,由于动态段基于事件触发,主要用于刷写诊断功能,故长度不一,所以用于存放动态段的动态slot也均不相同,其中每个动态slot最小单位为一个动态mini slot,动态slot可由一到多个mini组成,在动态段中最多可包含2047个动态slot,且最多可划分为7986个mini slot,另外动态mini slot的个数和长度分别由全局变量,the number of mini slot和gd mini slot决定,通俗的理解就是动态段可以想象成火车的货物车厢用于运输货物,但货物的大小不一,动态真相当于货物,动态帧长度越长,所占用的车厢空间就越长,即动态slot越长,要确保放下最大的货物,即动态帧,所以要事先规定好车厢的大小,也就是动态段的长度。

然后FlexRay帧的符号窗口段和网络空闲段,FlexRay符号窗口的长度是固定的,用于传输符号,而非传输报文,数据符号包括三种类型,分别为冲突避免符号,用于表示第一个通讯周期的开始介质,测试符号用于测试总线监控器,唤醒符号用于唤醒FlexRay,网络通信中期的末尾部分是网络空闲段,简称NIT段,用于同步本地时钟,另外NIT段期间不进行数据通信。

FlexRay 帧结构
FlexRay帧的组成部分,分为帧头,有效负载及帧尾,其中帧头存放FlexRay帧的特定属性信息,一共40位,帧尾存放CRC校验求得的校验结果,有效负载Payload最多可支持254个字节的数据内容。首先我们看一下帧头部分,帧头的首位是保留位,默认发送零,第二到第五位是指示位,目的是更加精确的指示报文,根据动态静态报文类型的不同,其含义也随之变化,然后第三位空针指示位用于指示披露的部分是正常的还是无效的,第四位及第五位分别是同步帧指十位和启动针指十位,用于判断该针是否为同步帧。

启动针标示位后面是Frame ID,即表示报文id一共11位。Payload Length为七位,用于表示有效负载的大小,其范围大小是0~127,简单的通过payload length表示报文长度是不可取的,所以FlexRay规定用word为单位表示有效负载的大小,word为单位,1word等于2Byte,127word等于254Byte。Byte后面紧跟着是11位的Header CRC,即帧头CRC序列,只对帧头的同步帧指示位,启动针指示位,Frame ID, Payload length进行CRC校验,帧头的末尾是Cycle Count即周期计数器,由六个位构成,表示报文发送的周期数,范围大小为0~63。

一条FlexRay报文Payload的部分最多传输254个数据字节,数据字节命名从Data_0开始,最大数据字节为Data_253,通过设置帧头的有效负载指示位,在静态动态报文中所表现的作用也是不一样的,在静态报文中,通过设置有效负载指示位,可以将披露的部分前12个字节作为传输网络管理向量,the network management vector,网络管理向量可用于在FlexRay 网络中实现网络管理,而动态报文中设置有效负载指示位,表示payload的部分,前两个字节为报文标识符,即message id,其作用是为了更加精确的指示,有效负载可在接收过滤器中用于实现更精细的区分依据。

最后FlexRay中尾部分是CRC段,一共24位,使用CRC循环冗余校验保护有效负载,校验范围是FlexRay帧头加有效负载区域,CC 即 FlexRay 通信控制器,会根据帧头,有效负载以及FlexRay规定生成的多项式,来计算CRC序列,求得checksum,并在FlexRay报文发送前与接收后将其作为帧尾追加到帧头和有效负载之后。

FlexRay 总线访问
FlexRay总线访问,包括总线访问机制介绍,来自通信调度表,图示为一个FlexRay总线拓扑结构,FlexRay可支持单双通道,即Channel a和Channel b,其中节点K节点L均连接两路通道,节点M节点N节点连接Channel a单通道,节点O连接Channel b单通道,我们以该拓扑结构为例,介绍FlexRay在不同数据时段,即静态段,动态段的总线访问机制,

首先介绍FlexRay ,图示将静态段分为三个静态slot,静态slot id为1,2,3,每个静态slot分配给特定的节点。其中 slot1 分配给节点K,slot2分配给节点M,slot3分配给节点L,节点K同时连接Channel a和Channel b,并在静态 slot1 中分配静态帧b,节点M仅连接单通道Channel a,并在静态slot 2中分配静态帧c,节点L同时连接Channel a和Channel b,分别在两路通道分配静态帧a和d。如果想提高FlexRay的容错性,可以让发送节点在同一静态slot内的两路通道发送两条相同的静态帧,如节点K如果想提高FlexRay的传输带宽,可以让发送节点在同静态slot中发送两条不同的静态帧,如节电l通信速率可实现从10M/S增至20M/S以上,为静态段的总线访问方式。

动态段总线访问方式,其特点是发送节点给予事件驱动发送动态帧,且动态针长度不一。从图示了解到,动态段报文通信较静态段更加灵活,根据事件触发,尝试在总线上发送动态帧,Channel a和Channel b通道相互独立,所以在不同通道的相同slot内可对应不同的发送节点发送动态帧,比如动态slot4 中Channel a节点L发送动态帧n,而Channel b上节点O发送动态帧m。另外存在事件驱动后不能发送动态帧的情况,比如动态帧p,即节点M尝试在动态slot7发送报文,但明显动态段剩余的部分不够容纳该动态帧的长度,所以这条报文不能在该周期内发送,这里就涉及到最迟发送时间的概念。什么是最迟发送时间,它是针对每个发送节点,用于在动态slot内是否允许发送节点发送报文,如果发送节点因事件触发,尝试在动态段发送动态帧时,则需考虑该节点的最迟发送时间,仅当此时动态minislot的id小于或等于支持最迟发送时间点,才允许拥有传输权限。比如说节点M设定它最迟可以在minislot 8 的位置发送,若他尝试在minislot 9的位置发送时,则无法成功,只能等待下一个cycle发送。

根据上述FlexRay总线访问的特点,一个cycle内通过调度表的形式通信,依据调度表的内容分为静态段,动态段不同的slotslot分配给指定的发送节点,发送节点发送报文帧,严格按照调度表发送数据,但实际情况中,为了更加有效地利用带宽,FlexRay可能在不同的cycle中通过复核调度表发送报文,通过这种复合调度表的方式,将更加有效地利用FlexRay带宽,增加了数据吞吐量,并允许每个时间段传输更多的信号值。例如图示,静态段的静态slot 2分配给发送节点M该节点在Channel a通道中,根据复合调度表在不同的cycle中发送不同的静态帧。另外复合调度表对静态段和动态段的影响作用也是不一样的。

静态段内,每个cycle的相同slot中可发送同一节点的不同静态帧,如图所示,Channel a中静态段slot2分配给发送节点M发送静态帧,第n至n+2的三个cycle中,分别发送静态帧c,静态帧x,和静态帧y。

而动态段可实现的复合调度表会有所不同,动态段总线访问方式会更加灵活,每个cycle的相同slot中可分配给不同节点来发送不同的动态帧,动态帧的长度也可以不一样,如图所示,动态slot 7在第n至n+2的三个cycle中分配给发送节点L,发送节点M,以动态帧u,动态帧t,以及动态帧p的顺序发送。

相关文章:
汽车总线之----FlexRay总线
Introduction 随着汽车智能化发展,车辆开发的ECU数量不断增加,人们对汽车系统的各个性能方面提出了更高的需求,比如更多的数据交互,更高的传输带宽等。现如今人们广泛接受电子功能来提高驾驶安全性,像ABS防抱死系统&a…...
前端代替后端做分页操作
如果后端没有分页api,前端如何做分页一、使用computed 这个变量应该是计算之后的值,是一个状态管理变量,跟onMounted类似import {computed} from vue // 定义ref储存rolelist,这里是原始数据 const roleList ref([])// 定义页码…...
L3 逻辑回归
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 在周将使用 LogisticRegression 函数对经典的鸢尾花 (Iris) 数据集进行分类。将详细介绍逻辑回归的数学原理。 1. 逻辑回归的数学原理 逻辑回归是一种线性分…...
Flink系列知识之:Checkpoint原理
Flink系列知识之:Checkpoint原理 在介绍checkpoint的执行流程之前,需要先明白Flink中状态的存储机制,因为状态对于检查点的持续备份至关重要。 State Backends分类 下图显示了Flink中三个内置的状态存储种类。MemoryStateBackend和FsState…...
智算中心动环监控:构建高效、安全的数字基础设施@卓振思众
在当今快速发展的数字经济时代,智算中心作为人工智能和大数据技术的核心支撑设施,正日益成为各行业实现智能化转型的重要基石。为了确保这些高性能计算环境的安全与稳定,卓振思众动环监控应运而生,成为智算中心管理的重要组成部分…...
PyTorch VGG16手写数字识别教程
手写数字识别教程:使用PyTorch和VGG16 1. 环境准备 确保你已安装以下库: pip install torch torchvision2. 导入必要的库 import torch import torch.nn as nn import torch.optim as optim import torchvision.transforms as transforms import tor…...
安卓13删除下拉栏中的设置按钮 android13删除设置按钮
总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 顶部导航栏下拉可以看到,底部这里有个设置按钮,点击可以进入设备的设置页面,这里我们将更改为删除,不同用户通过这个地方进入设置。也就是下面这个按钮。 2.问题分析…...
FDA辅料数据库在线免费查询-药用辅料
在药物制剂的研制过程中,需要确定这些药用辅料的安全用量。而美国食品药品监督管理局(FDA)的辅料数据库(IID)提供了其制剂研发中的关键参考资源,使得更多的医药研发相关人员及企业单位节省试验环节及时间成…...
git pull 报错 refusing to merge unrelated histories
这个对我来说非常常见,因为我都是先由本地项目,再想着传到github上去。 在本地项目中执行 git init git add . git commit -m “xxx” 在github上创建项目,添加了 README.md 文件。 git remote add origin https://github.com/raoxiaoya/x…...
STM32G431RBT6(蓝桥杯)串口(发送)
一、基础配置 (1) PA9和PA10就是串口对应在单片机上的端口 注意:一定要先选择PA9的TX和PA10的RX,再去打开异步的模式 (2) 二、查看单片机的端口连接至电脑的哪里 (1)此电脑->右击属性 (2)找到端…...
使用 typed-rest-client 进行 REST API 调用
typed-rest-client 是一个用于 Node.js 的库,它提供了一种类型安全的方式来与 RESTful API 进行交互。其主要功能包括: 安装 typed-rest-client 要使用 typed-rest-client,首先需要安装它,可以通过 npm 来安装: $ n…...
在Ubuntu 14.04上安装Solr的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 Solr 是基于 Apache Lucene 的搜索引擎平台。它用 Java 编写,并使用 Lucene 库来实现索引。可以通过各种 REST API&am…...
LabVIEW提高开发效率技巧----使用LabVIEW工具
LabVIEW为开发者提供了多种工具和功能,不仅提高工作效率,还能确保项目的质量和可维护性。以下详细介绍几种关键工具,并结合实际案例说明它们的应用。 1. VI Analyzer:自动检查代码质量 VI Analyzer 是LabVIEW提供的一款强大的工…...
Pyspark dataframe基本内置方法(4)
文章目录 Pyspark sql DataFrame相关文章RDDrepartition 重新分区replace 替换sameSemantics dataframe是否相等sample 采样sampleBy 分层采样schema 显示dataframe结构select 查询selectExpr 查询semanticHash 获取哈希值show 展示dataframesort 排序sortWithinPartitions 分区…...
配置win10开电脑时显示可登录账号策略
有1台公用的windows10电脑,电脑上有N多用户,使用人员登录时选择相应的账号登录即可。但在某次使用脚本加固后,发现之前显示的用户都不能显示了。检查加固脚本,是脚本启用了“交互式登录:不显示上次登录”策略。因此&am…...
01-Mac OS系统如何下载安装Python解释器
目录 Mac安装Python的教程 mac下载并安装python解释器 如何下载和安装最新的python解释器 访问python.org(受国内网速的影响,访问速度会比较慢,不过也可以去我博客的资源下载) 打开历史发布版本页面 进入下载页 鼠标拖到页面…...
24 C 语言常用的字符串处理函数详解:strlen、strcat、strcpy、strcmp、strchr、strrchr、strstr、strtok
目录 1 strlen 1.1 函数原型 1.2 功能说明 1.3 案例演示 1.4 注意事项 2 strcat 2.1 函数原型 2.2 功能说明 2.3 案例演示 2.4 注意事项 3 strcpy 3.1 函数原型 3.2 功能说明 3.3 案例演示 3.4 注意事项 4 strcmp 4.1 函数原型 4.2 功能说明 4.3 案例演示 …...
数据驱动农业——农业中的大数据
橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、埃域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…...
学习《分布式》必须清楚的《CAP理论》
分布式的理论基础CAP理论 当学习分布式的redis、mq等中间件时,都会看到有提到CAP。 CAP理论是学习分布式必备的一个概念知识点。 CAP理论由三个特性组成,分别是一致性(Consistency)、可用性(Availability࿰…...
navicat无法连接远程mysql数据库1130报错的解决方法
出现报错:1130 - Host ipaddress is not allowed to connect to this MySQL serve navicat,当前ip不允许连接到这个MySQL服务 解决当前ip无法连接远程mysql的方法 1. 查看mysql端口,并在服务器安全组中放开相应入方向端口后重启服务器 sud…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
ardupilot 开发环境eclipse 中import 缺少C++
目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
