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

MATLAB | R2023a更新了哪些好玩的东西

R2023a来啦!!废话不多说看看新版本有啥有趣的玩意和好玩的特性叭!!把绘图放最前面叭,有图的内容看的人多。。

1 区域填充

可以使用xregion及yregion进行区域填充啦!!

x = -10:0.25:10;
y = x.^2;
plot(x,y)
xregion(-5,5)

Count = randn(1,1000);
histogram(Count)
xr = xregion([-2 1],[-1 2]);

Count = randn(1,1000);
histogram(Count)
xr = xregion([-2 1],[-1 2]); xr(1).FaceColor = "r";
xr(1).DisplayName = "Low";
xr(2).FaceColor = "#0073FD";
xr(2).DisplayName = "High";
legend

x = 0:0.1:50;
y = 2*x .* (sin(x) + cos(2*x));
plot(x,y)
yregion(0,106)

再提一句哈哈哈几个月前在《MATLAB | 两个较新版本中的坐标区域小技巧》这篇里,当时是R2022b出了tightPosition这个函数,我推送里说可以用这个函数实现个类似区域覆盖的功能,结果没想到下一版就接着就出了。https://mp.weixin.qq.com/s/E7bJ0-o4qwAH87yyD0CuQg


2 新配色sky

这么多年了终于出了个新配色,这个就是heatmap函数使用的默认配色:

展示一下叭:

X=rand(10);
CF=contourf(X);
colormap(sky)
colorbar 

X=linspace(0,1,200)';
CL=(-cos(X*2*pi)+1).^.2;
r=(X-.5)'.^2+(X-.5).^2;
surf(X,X',abs(ifftn(exp(7i*rand(200))./r.^.9)).*(CL*CL')*30,'EdgeColor','none')colormap(sky)
light
material dull
view(59.1823,56.1559)
colorbar% 修饰一下
ax=gca;
ax.Projection='perspective';
ax.LineWidth=.8;
ax.XMinorTick='on';
ax.YMinorTick='on';
ax.ZMinorTick='on';
ax.GridLineStyle=':';
ax.FontName='Cambria';

t=linspace(0,5*pi,200); 
C=sky(70);
ax=gca;hold on 
for i=1:70plot(t,sin(t+i.^2./700)./(10+i).*20+i.*.1,'Color',C(i,:),'LineWidth',2);
end% 坐标区域修饰
ax.YLim=[0,7];
ax.XLim=[0,5*pi];
ax.YTick=0:.5:5;
ax.XTick=0:1:15;
% ax.XGrid='on';
ax.YGrid='on';
ax.GridLineStyle='-.';
ax.LineWidth=1.2;
ax.XMinorTick='on';
ax.YMinorTick='on';
ax.Box='on';
ax.FontName='Cambria';
ax.FontWeight='bold';
ax.FontSize=12;


3 tiledlayout水平或竖直布局

不需要预定义几行几列,设置为horizontalvertical之后,就一直往上加就完事:

tiledlayout("horizontal")
x = 1:5;
nexttile
plot(x)
nexttile
bar(x);
nexttile
contourf(peaks)


4 网格粗细

网格粗细可以不和坐标轴粗细相同啦,通过设置GridLineWidth属性设置网格粗细:

t=linspace(0,4*pi,300);
ax1=axes(gcf,'Position',[0+.05,.05,1/2-.05,.95]);
grid on;hold on;box on;axis tight
ax1.LineWidth=4;
plot(t,sin(t),'LineWidth',2)ax2=axes(gcf,'Position',[1/2+.05,.05,1/2-.05,.95]);
grid on;hold on;box on;axis tight
ax2.LineWidth=4;
ax2.GridLineWidth=1;
plot(t,sin(t),'LineWidth',2)


5 轴标签旋转

轴标签可以旋转了,比如编写了如下代码:

plot([0 3 1 6 4 10],'LineWidth',2)
ylab = ylabel("Y Data");

ylab.Rotation = 0;


6 颜色与线形

可以同时变,可以线条先变可以颜色先变,通过设置LineStyleCyclingMethod 属性来控制:

  • “withcolor”— 同时进行
  • “beforecolor”— 先线条循环
  • “aftercolor”— 先颜色循环
t=linspace(0,2.5*pi,200)+1*pi;tiledlayout("horizontal",'TileSpacing','tight','Padding','tight')
ax1=nexttile();hold on;axis tight;box on
ax1.Title.String='withcolor';
ax1.Title.FontWeight='bold';
ax1.Title.FontSize=25;
ax1.LineWidth=1;
ax1.LineStyleOrder={'-','--',':'};
ax1.LineStyleCyclingMethod='withcolor';
for i=1:4plot(t,sin(t-pi/3*(i-1)),'LineWidth',2)
endax2=nexttile();hold on;axis tight;box on
ax2.Title.String='beforecolor';
ax2.Title.FontWeight='bold';
ax2.Title.FontSize=25;
ax2.LineWidth=1;
ax2.LineStyleOrder={'-','--',':'};
ax2.LineStyleCyclingMethod='beforecolor';
for i=1:4plot(t,sin(t-pi/3*(i-1)),'LineWidth',2)
endax3=nexttile();hold on;axis tight;box on
ax3.Title.String='aftercolor';
ax3.Title.FontWeight='bold';
ax3.Title.FontSize=25;
ax3.LineWidth=1;
ax3.LineStyleOrder={'-','--',':'};
ax3.LineStyleCyclingMethod='aftercolor';
for i=1:4plot(t,sin(t-pi/3*(i-1)),'LineWidth',2)
end


7 通过addStyle往app列表框增添图标

fig = uifigure('Position',[200,200,200,200]);
lb = uilistbox(fig,"Items",["Peppers","Nebula","Street"],'Position',[0,0,200,200]);s1 = uistyle("Icon","peppers.png");
s2 = uistyle("Icon","ngc6543a.jpg");
s3 = uistyle("Icon","street1.jpg");addStyle(lb,s1,"item",1);
addStyle(lb,s2,"item",2);
addStyle(lb,s3,"item",3);


8 app uistack排序

创建五个具有不同标题和背景颜色的重叠面板。

f = figure;a = uipanel(f,'Title','A','BackgroundColor','white');
b = uipanel(f,'Title','B','BackgroundColor','cyan');
c = uipanel(f,'Title','C','BackgroundColor','green');
d = uipanel(f,'Title','D','BackgroundColor','yellow');
e = uipanel(f,'Title','E','BackgroundColor','magenta');a.Position = [0.35 0.50 0.30 0.35];
b.Position = [0.18 0.40 0.30 0.35];
c.Position = [0.08 0.21 0.30 0.35];
d.Position = [0.25 0.33 0.32 0.35];
e.Position = [0.30 0.27 0.30 0.35];

figChildren = f.Children
% figChildren = 
% 
%   5×1 Panel array:
% 
%   Panel    (E)
%   Panel    (D)
%   Panel    (C)
%   Panel    (B)
%   Panel    (A)

将c d上移

comp = [c d];
uistack(comp,'up');

figChildren = f.Children
% figChildren = 
% 
%   5×1 Panel 数组:
% 
%   Panel    (D)
%   Panel    (C)
%   Panel    (E)
%   Panel    (B)
%   Panel    (A)

当然uistack可以设置参数为up,down,top,bottom


9 uipanel border

通过BorderColor,BorderWidth可设置uibuttongroup及uipanel边框颜色和粗细:

f = figure();a=uipanel(f,'Title','A','BorderColor',[.8,0,0],'BorderWidth',8);
b=uipanel(f,'Title','B','BorderColor',[0,0,.8],'BorderWidth',8);a.Position = [0.2 0.4 0.7 0.4];
b.Position = [0.1 0.2 0.5 0.4];


10 uiimage 动图及链接

fig = uifigure('Position',[100,100,300,300]);
im = uiimage(fig,'ImageSource','test.gif','Position',[0,0,200,200]);
im.ScaleMethod = 'scaledown';


将图像配置为点击时打开链接:

fig = uifigure;
im = uiimage(fig);
im.ImageSource = "membrane.png";
im.URL = "https://www.mathworks.com/";
im.Tooltip = "Go to www.mathworks.com";


11 app uifigure 鼠标指针

uifigure 鼠标指针的鼠标指针可以自定义啦。

fig = uifigure;
fig.Pointer='watch';

光标能设置的类型不多:

但也能自定义为一些其他形状,看看这篇叭~:https://mp.weixin.qq.com/s/wEAOEVUNEsIDysWRce29kg


12 默认不再安装本地文档

就是说本地默认不会再存储函数的介绍文档了,一些函数介绍需要联网才能看,以下在断网的时候分别在R2022b及R2023a命令行窗口运行:

doc plot

可以看到R2022b能够调出本地文档,R2023a只会提醒你没联网,有好有坏吧,好处是能减小MATLAB的安装大小,统计了一些常用的包都不安装文档可以节省10G左右空间,我装R2023a总体积15G左右。

当然如果经常在没网的地方默默敲代码,还是可以手动装文档的:https://ww2.mathworks.cn/help/install/ug/install-documentation.html


13 实时编辑器更新

实时编辑器增添了文件选择控件:

隐藏代码时对齐部分控件,这确实是没啥用的小更新,比如我控件名字BBBBBBB比A长很多也会自动对齐:


14 代码自动修复

逻辑复杂的代码就别想了,官方给的简单例子:假设编写了名为exampleScript.m的m文件,其中内容为:

x = [1 2 3]
for n = 1:3y(n) = x
end

命令行窗口运行如下代码就能获得问题列表:

issues=codeIssues("exampleScript")

"exampleScript.m" info auto "在语句后添加分号以隐藏脚本输出。" 
"exampleScript.m" info manual "变量似乎要更改脚本中每个循环迭代的大小。请考虑对速度进行预分配。"
"exampleScript.m" info auto "在语句后添加分号以隐藏脚本输出。"

只有标注auto的才能自动修复:
再在命令行窗口运行如下代码:

fix(issues,"NOPTS")

emmmmmmmmm发现MATLAB自动帮你加了俩分号哈哈哈哈哈哈,关于没预定义y管都没管。。。。。目前来看估计得等好几代后才会有真正有用的自动代码修复。。。


15 获取所有元素的组合

一个非常有用的函数combinations

ID = ["A" "B" "C"];
color = ["red" "blue" "green"];
sz = ["small" "large"];T = combinations(ID,color,sz)

运行结果:

T = 18×3 tableID      color       sz   ___    _______    _______"A"    "red"      "small""A"    "red"      "large""A"    "blue"     "small""A"    "blue"     "large""A"    "green"    "small""A"    "green"    "large""B"    "red"      "small""B"    "red"      "large""B"    "blue"     "small""B"    "blue"     "large""B"    "green"    "small""B"    "green"    "large""C"    "red"      "small""C"    "red"      "large""C"    "blue"     "small""C"    "blue"     "large""C"    "green"    "small""C"    "green"    "large"

16 数据去除NaN

一个很有用的函数fillmissing2,可以将二维数据中NaN部分数值用周围数的插值替代:

A = magic(5);
A(1,2) = NaN;
A(3:4,3:4) = NaN

构建的矩阵展示:

A = 5×517   NaN     1     8    1523     5     7    14    164     6   NaN   NaN    2210    12   NaN   NaN     311    18    25     2     9

去除NaN值:

F = fillmissing2(A,"nearest")
F = 5×517     1     1     8    1523     5     7    14    164     6     7    22    2210    12    25     3     311    18    25     2     9

官方给了一个填充效果可视化的例子:

n = 51;
[x,y] = meshgrid(linspace(-2,2,n));
f = x.^2-y.^2;NaNPercent = 0.05;
randEntries = randperm(n^2,round(NaNPercent*n^2));
f(randEntries) = NaN;F = fillmissing2(f,"linear");
x = reshape(x,n^2,1);
y = reshape(y,n^2,1);
f = reshape(f,n^2,1);
F = reshape(F,n^2,1);filledData = scatter3(x,y,F,24,"red","filled",...MarkerEdgeColor="black");
hold on
originalData = scatter3(x,y,f,24,"green","filled",...MarkerEdgeColor="black");
legend([filledData,originalData],...{"Filled","Original"},Location="north")

当然一维补全也有fillmissing函数:

x = [-4*pi:0.1:0, 0.1:0.2:4*pi];
A = sin(x);A(A < 0.75 & A > 0.5) = NaN;[F,TF] = fillmissing(A,'linear','SamplePoints',x);scatter(x,A,'filled')
hold on
scatter(x(TF),F(TF),'filled')
legend('Original Data','Filled Data')


17 随机逻辑数组构建

目前来看还是比较鸡肋,以下两种写法说实话区别不大,可能也就速度略快:

tic
A1=randi([0 1],5)>0;
toctic
A2=randi([0 1],5,"logical");
toc

小数组时新写法创建速度是旧写法的两倍,但是对于比较大的数组来说,俩速度几乎完全一致。


以上是本次更新中比较有趣的内容,更的属实不少,反正才15G左右,这不赶快进行一波新版本的安装?

相关文章:

MATLAB | R2023a更新了哪些好玩的东西

R2023a来啦&#xff01;&#xff01;废话不多说看看新版本有啥有趣的玩意和好玩的特性叭&#xff01;&#xff01;把绘图放最前面叭&#xff0c;有图的内容看的人多。。 1 区域填充 可以使用xregion及yregion进行区域填充啦&#xff01;&#xff01; x -10:0.25:10; y x.^…...

Python Module — OpenAI ChatGPT API

目录 文章目录目录OpenAI Python SDKopenai.ChatCompletion 模块openai.ChatCompletion.create 函数OpenAI Python SDK 官方文档&#xff1a;https://platform.openai.com/docs/api-reference/introduction OpenAI Python SDK 用于开发与 OpenAI RESTful API 进行交互的客户端…...

Docker学习记录

阅读前请看一下&#xff1a;我是一个热衷于记录的人&#xff0c;每次写博客会反复研读&#xff0c;尽量不断提升博客质量。文章设置为仅粉丝可见&#xff0c;是因为写博客确实花了不少精力。希望互相进步谢谢&#xff01;&#xff01; 文章目录阅读前请看一下&#xff1a;我是一…...

Linux-VIM使用

文章目录前言VIM使用1、切换模式2、跳转(1) 跳转到指定行(2) 跳转到首行(3) 跳转到末行3、自动格式化程序4. 大括号对应5. 删除&#xff08;1&#xff09;删除一个单词&#xff08;2&#xff09;删除光标位置至行尾&#xff08;3&#xff09;删除光标位置至行首&#xff08;4&a…...

Windows安全中心内存完整性无法打开问题的处理方法

Windows11安全中心内存完整性无法打开 今天电脑使用过程中突然看到系统桌面右下角任务栏中 windows安全中心图标出现了警告信息&#xff0c;如下图红框所示&#xff1a; 点击该图标进入windows安全中心的 安全性概览 界面&#xff0c;如下图&#xff1a; 在该界面可以看到出现安…...

在芯片设计行业,从项目的初期到交付,不同的岗位的工程师主要负责什么?

大家都知道在芯片设计行业&#xff0c;项目是至关重要的一环。从项目的初期到交付&#xff0c;不同的岗位的工程师在项目的各环节主要负责什么?他们是怎样配合的?下面看看资深工程师怎么说。 一个项目&#xff0c;从初期到交付的过程是比较漫长的。我们知道最早的时候&#…...

Spring Cloud Alibaba全家桶(七)——Sentinel控制台规则配置

前言 本文小新为大家带来 Sentinel控制台规则配置 相关知识&#xff0c;具体内容包括流控规则&#xff08;包括&#xff1a;QPS流控规则&#xff0c;并发线程数流控规则&#xff09;&#xff0c;BlockException统一异常处理&#xff0c;流控模式&#xff08;包括&#xff1a;直…...

mysql-installer安装教程(详细图文)

目录 1.安装 2.配置系统环境变量 3.配置初始化my.ini文件 4.MySQL彻底删除 5.Navicat 安装 1.安装 先去官网下载需要的msi&#xff0c;在这放出官网下载地址下载地址 这里我具体以8.0.28 为安装例子&#xff0c;除了最新版安装界面有些变动以往的都是差不多的。 过去的版本…...

微服务架构第一阶段(nacos,gateWay,RPC)

最近在学习完 springcloud 微服务架构之后&#xff0c;自己用了之前的一个项目计划拆分成微服务的项目&#xff0c;第一阶段要求整合 nacos&#xff0c;RPC以及gateWay&#xff0c;首先来看一下几个技术组件的概念 RPC RPC 框架 —— 远程过程调用协议RPC&#xff08;Remote …...

【Azure 架构师学习笔记】-Azure Data Factory (5)-Managed VNet

本文属于【Azure 架构师学习笔记】系列。 本文属于【Azure Data Factory】系列。 接上文【Azure 架构师学习笔记】-Azure Data Factory (4)-触发器详解-事件触发器 前言 PaaS服务默认都经过公网传输&#xff0c; 这对很多企业而言并不安全&#xff0c;那么就需要对其进行安全改…...

ActiveMQ(三)

协议配置 ActiveMQ 支持的协议有 TCP 、 UDP、NIO、SSL、HTTP(S) 、VM 这是activemq 的activemq.xml 中配置文件设置协议的地方 <transportConnector name"openwire" uri"tcp://0.0.0.0:61616?maximumCon nections1000&amp;wireFormat.maxFrameSiz…...

区块链多方计算 人工智能学习笔记

区块链&#xff1a;让数据不被篡改&#xff0c;但需要复制数据给每一块&#xff0c;造成数据泄露 多方计算 &#xff1a; 让数据用途可控。数控可用但不可见。 人工智能&#xff1a;数据更难造假 主讲人简介&#xff1a; 徐葳&#xff0c;宾夕法尼亚大学学士&#xff08;在清华…...

基于opencv的边缘检测方法

1、梯度运算 用OpenCV的形态变换&#xff08; 膨胀、腐蚀、开运算和闭运算&#xff09;函数morphologyEx 梯度运算即膨胀结果-腐蚀结果&#xff1a; 【注意】对于二值图像来说&#xff0c;必须是前景图像为白色&#xff0c;背景为黑色&#xff0c;否则需要进行反二值化处理 …...

视频封装格式篇(TS)

本篇介绍下TS的封装格式。 1.什么是TS&#xff1f; TS&#xff08;Transport Stream&#xff0c;传输流&#xff09;&#xff0c;一种常见的视频封装格式&#xff0c;是基于MPEG-2的封装格式&#xff08;所以也叫MPEG-TS&#xff09;&#xff0c;后缀为.ts。 2.TS的分层结构 …...

静态路由+DHCP实验(四路由器八PC)

一.200.1.1.0/24子网划分 1.划分八个子网 2.选用前5个&#xff0c;第五个子网再划分4个子网作为骨干 二.规划路由 三.配置&#xff08;下一跳&#xff09; 1.先依次实现四个路由器之间全网可通 2.为路由器配置地址池&#xff0c;使用全局模式获取dhcp&#xff0c;指定网关…...

数据挖掘(作业汇总)

目录 环境配置 实验1 数据 作业2 环境配置 实验开始前先配置环境 以实验室2023安装的版本为例&#xff1a; 1、安装anaconda&#xff1a;&#xff08;anaconda自带Python,安装了anaconda就不用再安装Python了&#xff09; 下载并安装 Anaconda3-2022.10-Windows-x86_64.ex…...

基于微信小程序的图书馆选座系统源码

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习&#xff08;…...

K8S 三种探针 readinessProbe、livenessProbe和startupProbe

一、POD状态 Pod 常见的状态 Pending&#xff1a;挂起&#xff0c;我们在请求创建pod时&#xff0c;条件不满足&#xff0c;调度没有完成&#xff0c;没有任何一个节点能满足调度条件。已经创建了但是没有适合它运行的节点叫做挂起&#xff0c;这其中也包含集群为容器创建网络…...

Android 设置背景颜色透明度

前言 本章是对设计给出的颜色做透明度的处理 原因 一般情况下我们是不需要做处理的&#xff0c;那为什么又需要我们做透明度呢&#xff0c;原因就是咱们的设计小哥哥、小姐姐们没有自己做处理&#xff0c;如果处理了的话&#xff0c;我们直接使用设计标注的AHEX颜色就行&a…...

聚类算法层次聚类

###cluster.py #导入相应的包 import scipy import scipy.cluster.hierarchy as sch from scipy.cluster.vq import vq,kmeans,whiten import numpy as np import matplotlib.pylab as plt #生成待聚类的数据点,这里生成了20个点,每个点4维: pointsscipy.randn(20,4) #加一…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业&#xff0c;其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进&#xff0c;需提前预防假检、错检、漏检&#xff0c;推动智慧生产运维系统数据的流动和现场赋能应用。同时&#xff0c;…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

代码随想录刷题day30

1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币&#xff0c;另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额&#xff0c;返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

第7篇:中间件全链路监控与 SQL 性能分析实践

7.1 章节导读 在构建数据库中间件的过程中&#xff0c;可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中&#xff0c;必须做到&#xff1a; &#x1f50d; 追踪每一条 SQL 的生命周期&#xff08;从入口到数据库执行&#xff09;&#…...