OceanBase 金融项目优化案例

领导让我帮忙支持下其他项目的SQL优化工作,呦西,是收集案例的好机会。😍

下面SQL都是在不能远程的情况下,按照原SQL的逻辑等价改写完成发给现场同学验证。


案例一

慢SQL,4.32秒:

SELECT MY_.*, RM
FROM (SELECT ROWNUM RM, V_.*
      FROM (SELECT *
            FROM (select count(1)        processidnum,
                         t.processid,
                         t.proc_name_ as procname
                  FROM tkdkdkdk t
                  WHERE 1 = 1
                    and (t.ASSIGNEE_ = 'server' or exists(select 1
                                                          FROM pepepep p
                                                          WHERE p.task_ = t.ID_
                                                            and (p.agent_userid_ = 'server' or
                                                                 (substr(p.groupid_, 6) in
                                                                  (select role_code
                                                                   FROM upupupup
                                                                   WHERE user_code = 'server') or
                                                                  p.userid_ = 'server'))))
                  GROUP BY t.processid, t.proc_name_)) V_
      WHERE ROWNUM <= 100000) MY_
WHERE RM >= 1;

慢SQL执行计划:


 改写优化,445ms:

SELECT *
FROM (SELECT *
      FROM (SELECT a.*,
                   rownum rn
            FROM (SELECT count(1)        processidnum,
                         t.processid,
                         t.proc_name_ AS procname
                  FROM tkdkdkdk t
                           LEFT JOIN
                       (SELECT distinct p.task_
                        FROM pepepep p
                                 LEFT JOIN
                             (SELECT role_code
                              FROM upupupup
                              WHERE user_code = 'server'
                              GROUP BY role_code) tsu
                             ON (substr(p.groupid_, 6) = tsu.role_code)
                        WHERE (p.agent_userid_ = 'server'
                            OR (tsu.role_code is NOT null
                                OR p.userid_ = 'server'))) x
                       ON t.ID_ = x.task_
                  WHERE 1 = 1
                    AND (t.ASSIGNEE_ = 'server'
                      OR x.task_ is NOT NULL)
                  GROUP BY t.processid, t.proc_name_) a)
      WHERE rownum <= 100000)
WHERE rn >= 1; 

改写优化后执行计划:

 优化思路:

  1、原SQL有很多子查询,可能会导致计划走NL,改成JOIN后让CBO自动判断是否走HASH还是NL。

  2、换了个标准的分页框架。


 案例二

慢SQL,2.6秒:

SELECT MY_.*, RM
FROM (SELECT ROWNUM RM, V_.*
      FROM (SELECT *
            FROM (select t.*, t.org_code || '-' || t.org_name as codename
                  FROM (select tc.*
                        FROM tgtgtgtg tc
                        start with TC.ORG_ID = '6000001'
                        connect by prior ORG_ID = tc.parent_id) t
                  WHERE org_level <= 3
                  ORDER BY CASE
                               WHEN ',' || nvl(null, 'fingard') || ',' like '%,' || ORG_ID || ',%' THEN CASE
                                                                                                            WHEN length(nvl(org_order, '')) = '9'
                                                                                                                then org_order || ''
                                                                                                            else '1' || org_code end
                               when length(nvl(org_order, '')) = '9' then '99999999' || org_order || ''
                               else '999999991' || org_code end)) V_
      WHERE ROWNUM <= 10) MY_;
WHERE RM >= 1;

改写优化一,3.4秒:

SELECT MY_.*, RM
FROM (SELECT ROWNUM RM, V_.*
      FROM (SELECT *
            FROM (select a.*, a.org_code || '-' || a.org_name as codename
                  FROM (WITH t(
                               lv,
                               codename,
                               ORG_ID,
                               parent_id,
                               org_order,
                               org_code,
                               org_name,
                               org_level
                      ) AS (SELECT 1                                 as lv,
                                   tc.org_code || '-' || tc.org_name AS codename,
                                   tc.org_name,
                                   tc.ORG_ID,
                                   tc.parent_id,
                                   tc.org_order,
                                   tc.org_code,
                                   tc.org_level
                            FROM tgtgtgtg tc
                            WHERE tc.ORG_ID = '6000001'
                            UNION ALL
                            SELECT t.lv + 1,
                                   e.org_code || '-' || e.org_name AS codename,
                                   e.org_name,
                                   e.ORG_ID,
                                   e.parent_id,
                                   e.org_order,
                                   e.org_code,
                                   e.org_level
                            FROM tgtgtgtg e
                                     INNER JOIN t ON t.ORG_ID = e.parent_id)
                        SELECT *
                        FROM t) a
                  WHERE a.org_level <= 3
                  ORDER BY CASE
                               WHEN ',' || nvl(null, 'fingard') || ',' like '%,' || ORG_ID || ',%' THEN CASE
                                                                                                            WHEN length(nvl(org_order, '')) = '9'
                                                                                                                then org_order || ''
                                                                                                            else '1' || org_code end
                               when length(nvl(org_order, '')) = '9' then '99999999' || org_order || ''
                               else '999999991' || org_code end)) V_
      WHERE ROWNUM <= 10) MY_;
WHERE RM >= 1;

使用CTE递归改写方案在PostgreSQL上是个通用的做法,也能取得比较好的性能效果。

但是在OB上反而效果更差点,NL算子性能不够强,使用NESTED-LOOP JOIN 性能反而没有NESTED-LOOP CONNECT BY 算子好。

OB研发在NESTED-LOOP JOIN算子上还有继续优化的空间。


 改写优化二,1.5秒:

既然使用NL性能不够理想的情况下,就要想办法使用HASH来优化SQL整体的执行效率。

将自动递归的方式改成手动。

1、首先需要知道数据整体的层级有多少。

SELECT DISTINCT lv
FROM (SELECT level lv
      FROM tgtgtgtg tc
      START WITH TC.ORG_ID = '6000001'
      CONNECT BY PRIOR ORG_ID = tc.parent_id) t; 

2、了解到整体的数据是13层,然后使用self join 将不同层级的数据关联起来。

  1 SELECT *
  2 FROM (SELECT *
  3       FROM (SELECT a.*, rownum rn
  4             FROM (SELECT x.*
  5                   FROM (WITH tgtgtgtg AS
  6                                  (SELECT org_code, org_name, org_id, parent_id, org_order, org_level
  7                                   FROM tgtgtgtg)
  8 
  9                         SELECT 1                                 AS lv,
 10                                v1.org_code || '-' || v1.org_name AS codename,
 11                                v1.ORG_ID,
 12                                v1.parent_id,
 13                                v1.org_order,
 14                                v1.org_code,
 15                                v1.org_level
 16                         FROM tgtgtgtg v1
 17                         WHERE v1.ORG_ID = '6000001'
 18 
 19                         UNION ALL
 20 
 21                         SELECT 2                                 AS lv,
 22                                v2.org_code || '-' || v2.org_name AS codename,
 23                                v2.ORG_ID,
 24                                v2.parent_id,
 25                                v2.org_order,
 26                                v2.org_code,
 27                                v2.org_level
 28                         FROM tgtgtgtg v1
 29                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
 30                         WHERE v1.ORG_ID = '6000001'
 31 
 32                         UNION ALL
 33 
 34                         SELECT 3                                 AS lv,
 35                                v3.org_code || '-' || v3.org_name AS codename,
 36                                v3.ORG_ID,
 37                                v3.parent_id,
 38                                v3.org_order,
 39                                v3.org_code,
 40                                v3.org_level
 41                         FROM tgtgtgtg v1
 42                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
 43                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
 44                         WHERE v1.ORG_ID = '6000001'
 45 
 46                         UNION ALL
 47 
 48                         SELECT 4                                 AS lv,
 49                                v4.org_code || '-' || v4.org_name AS codename,
 50                                v4.ORG_ID,
 51                                v4.parent_id,
 52                                v4.org_order,
 53                                v4.org_code,
 54                                v4.org_level
 55                         FROM tgtgtgtg v1
 56                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
 57                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
 58                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
 59                         WHERE v1.ORG_ID = '6000001'
 60 
 61                         UNION ALL
 62 
 63                         SELECT 5                                 AS lv,
 64                                v5.org_code || '-' || v5.org_name AS codename,
 65                                v5.ORG_ID,
 66                                v5.parent_id,
 67                                v5.org_order,
 68                                v5.org_code,
 69                                v5.org_level
 70                         FROM tgtgtgtg v1
 71                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
 72                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
 73                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
 74                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
 75                         WHERE v1.ORG_ID = '6000001'
 76 
 77                         UNION ALL
 78 
 79                         SELECT 6                                 AS lv,
 80                                v6.org_code || '-' || v6.org_name AS codename,
 81                                v6.ORG_ID,
 82                                v6.parent_id,
 83                                v6.org_order,
 84                                v6.org_code,
 85                                v6.org_level
 86                         FROM tgtgtgtg v1
 87                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
 88                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
 89                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
 90                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
 91                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
 92                         WHERE v1.ORG_ID = '6000001'
 93 
 94                         UNION ALL
 95 
 96                         SELECT 7                                 AS lv,
 97                                v7.org_code || '-' || v7.org_name AS codename,
 98                                v7.ORG_ID,
 99                                v7.parent_id,
100                                v7.org_order,
101                                v7.org_code,
102                                v7.org_level
103                         FROM tgtgtgtg v1
104                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
105                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
106                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
107                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
108                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
109                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
110                         WHERE v1.ORG_ID = '6000001'
111 
112                         UNION ALL
113 
114                         SELECT 8                                 AS lv,
115                                v8.org_code || '-' || v8.org_name AS codename,
116                                v8.ORG_ID,
117                                v8.parent_id,
118                                v8.org_order,
119                                v8.org_code,
120                                v8.org_level
121                         FROM tgtgtgtg v1
122                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
123                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
124                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
125                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
126                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
127                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
128                                  JOIN tgtgtgtg v8 ON v7.ORG_ID = v8.parent_id
129                         WHERE v1.ORG_ID = '6000001'
130 
131                         UNION ALL
132 
133                         SELECT 9                                 AS lv,
134                                v9.org_code || '-' || v9.org_name AS codename,
135                                v9.ORG_ID,
136                                v9.parent_id,
137                                v9.org_order,
138                                v9.org_code,
139                                v9.org_level
140                         FROM tgtgtgtg v1
141                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
142                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
143                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
144                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
145                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
146                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
147                                  JOIN tgtgtgtg v8 ON v7.ORG_ID = v8.parent_id
148                                  JOIN tgtgtgtg v9 ON v8.ORG_ID = v9.parent_id
149                         WHERE v1.ORG_ID = '6000001'
150 
151                         UNION ALL
152 
153                         SELECT 10                                  AS lv,
154                                v10.org_code || '-' || v10.org_name AS codename,
155                                v10.ORG_ID,
156                                v10.parent_id,
157                                v10.org_order,
158                                v10.org_code,
159                                v10.org_level
160                         FROM tgtgtgtg v1
161                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
162                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
163                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
164                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
165                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
166                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
167                                  JOIN tgtgtgtg v8 ON v7.ORG_ID = v8.parent_id
168                                  JOIN tgtgtgtg v9 ON v8.ORG_ID = v9.parent_id
169                                  JOIN tgtgtgtg v10 ON v9.ORG_ID = v10.parent_id
170                         WHERE v1.ORG_ID = '6000001'
171 
172                         UNION ALL
173 
174                         SELECT 11                                  AS lv,
175                                v11.org_code || '-' || v11.org_name AS codename,
176                                v11.ORG_ID,
177                                v11.parent_id,
178                                v11.org_order,
179                                v11.org_code,
180                                v11.org_level
181                         FROM tgtgtgtg v1
182                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
183                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
184                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
185                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
186                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
187                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
188                                  JOIN tgtgtgtg v8 ON v7.ORG_ID = v8.parent_id
189                                  JOIN tgtgtgtg v9 ON v8.ORG_ID = v9.parent_id
190                                  JOIN tgtgtgtg v10 ON v9.ORG_ID = v10.parent_id
191                                  JOIN tgtgtgtg v11 ON v10.ORG_ID = v11.parent_id
192                         WHERE v1.ORG_ID = '6000001'
193 
194                         UNION ALL
195 
196                         SELECT 12                                  AS lv,
197                                v12.org_code || '-' || v12.org_name AS codename,
198                                v12.ORG_ID,
199                                v12.parent_id,
200                                v12.org_order,
201                                v12.org_code,
202                                v12.org_level
203                         FROM tgtgtgtg v1
204                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
205                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
206                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
207                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
208                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
209                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
210                                  JOIN tgtgtgtg v8 ON v7.ORG_ID = v8.parent_id
211                                  JOIN tgtgtgtg v9 ON v8.ORG_ID = v9.parent_id
212                                  JOIN tgtgtgtg v10 ON v9.ORG_ID = v10.parent_id
213                                  JOIN tgtgtgtg v11 ON v10.ORG_ID = v11.parent_id
214                                  JOIN tgtgtgtg v12 ON v11.ORG_ID = v12.parent_id
215                         WHERE v1.ORG_ID = '6000001'
216 
217                         UNION ALL
218 
219                         SELECT 13                                  AS lv,
220                                v13.org_code || '-' || v13.org_name AS codename,
221                                v13.ORG_ID,
222                                v13.parent_id,
223                                v13.org_order,
224                                v13.org_code,
225                                v13.org_level
226                         FROM tgtgtgtg v1
227                                  JOIN tgtgtgtg v2 ON v1.ORG_ID = v2.parent_id
228                                  JOIN tgtgtgtg v3 ON v2.ORG_ID = v3.parent_id
229                                  JOIN tgtgtgtg v4 ON v3.ORG_ID = v4.parent_id
230                                  JOIN tgtgtgtg v5 ON v4.ORG_ID = v5.parent_id
231                                  JOIN tgtgtgtg v6 ON v5.ORG_ID = v6.parent_id
232                                  JOIN tgtgtgtg v7 ON v6.ORG_ID = v7.parent_id
233                                  JOIN tgtgtgtg v8 ON v7.ORG_ID = v8.parent_id
234                                  JOIN tgtgtgtg v9 ON v8.ORG_ID = v9.parent_id
235                                  JOIN tgtgtgtg v10 ON v9.ORG_ID = v10.parent_id
236                                  JOIN tgtgtgtg v11 ON v10.ORG_ID = v11.parent_id
237                                  JOIN tgtgtgtg v12 ON v11.ORG_ID = v12.parent_id
238                                  JOIN tgtgtgtg v13 ON v12.ORG_ID = v13.parent_id
239                         WHERE v1.ORG_ID = '6000001') x
240                   WHERE org_level <= 3
241                   ORDER BY CASE
242                                WHEN ',' || NVL(NULL, 'fingard') || ',' LIKE '%,' || ORG_ID || ',%' THEN
243                                    CASE
244                                        WHEN LENGTH(NVL(org_order, '')) = '9' THEN
245                                            org_order || ''
246                                        ELSE '1' || org_code
247                                        END
248                                WHEN LENGTH(NVL(org_order, '')) = '9' THEN
249                                    '99999999' || org_order || ''
250                                ELSE '999999991' || org_code END ) a)
251       WHERE rownum <= 10)
252 WHERE rn >= 1;

现场同学差集比较,确认改写后的SQL是等价的,执行时间从2.6秒降低到1.5秒能跑出结果。

原来18行的SQL改成了250多行后才优化了1秒的执行时间,实在没其他办法了,希望OB产研后续能CBO算子继续优化下。😂😂😂

文章转载自:小至尖尖

原文链接:https://www.cnblogs.com/yuzhijian/p/18244465

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/714185.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【MATLAB】(高数)

参考文章 函数极限 导数与偏导 极值和最值 局部范围的最值 局部范围内的最值&#xff0c;相当于函数的极值 离散数据的最值 多元函数的极值 fminunc [x, fval] fminunc(fun, x0)fun为代求极值的函数&#xff1b;x0为起始点&#xff0c;即从这个点开始寻找极值&#xff0c;…

Ui学习--UITableView

UI学习 UITableView基础UITableView协议UITableView高级协议与单元格总结 UITableView基础 UITableView作为iOS中的一个控件&#xff0c;用于以表格形式展示数据。例如通讯录好友&#xff0c;朋友圈信息等&#xff0c;都是UITableView的实际运用场景。 首先我们先要加入两个协…

苹果加大AI布局,上海新店开业昭示中国市场新动向

随着全球科技巨头纷纷进军人工智能领域&#xff0c;苹果公司亦不甘示弱&#xff0c;近期在上海静安新店的开业以及CEO蒂姆库克的一系列动作&#xff0c;都显示出苹果在AI方面的雄心壮志。这不仅是对未来技术趋势的积极回应&#xff0c;更是对市场竞争态势的精准把握。 库克的访…

CSS从入门到精通——动画:CSS3动画延迟和完成后状态的保持

目录 任务描述 相关知识 动画状态 动画完成时的状态 动画延迟 编程要求 任务描述 本关任务&#xff1a;用 CSS3 实现小车等待红绿灯的效果。效果图如下&#xff1a; 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;1.动画状态&#xff0c;2.动画完成时的状…

奥特曼谈AI的机遇、挑战与人类自我反思:中国将拥有独特的大语言模型

奥特曼在对话中特别提到&#xff0c;中国将在这个领域扮演重要角色&#xff0c;孕育出具有本土特色的大语言模型。这一预见不仅彰显了中国在全球人工智能领域中日益增长的影响力&#xff0c;也预示着未来技术发展的多元化趋势。 ①奥特曼认为AI在提升生产力方面已显现积极作用&…

一文了解Redis

一.什么是Redis 与MySQL一样&#xff0c;Redis也是客户端服务器结构的程序&#xff0c;是基于内存的键值对存储系统&#xff0c;属于NoSQL的一种。与很多键值对数据库不同的是&#xff0c;Redis 中的值可以是由 string&#xff08;字符串&#xff09;、hash&#xff08;哈希&a…

探索Chrome DevTools的高级技巧与隐藏功能

Chrome DevTools是网页开发者不可或缺的调试工具&#xff0c;它提供了丰富的功能&#xff0c;帮助开发者快速诊断和解决问题。然而&#xff0c;除了常见的功能&#xff0c;如元素检查、网络监控和JavaScript调试之外&#xff0c;DevTools还有许多不为人知的强大功能和技巧。本文…

Paragon NTFS for Mac 15软件下载-详细安装教程视频

​Paragon NTFS for Mac是Mac平台上一款非常优秀的读写工具&#xff0c;可以在Mac OS X中完全读写、修改、访问NTFS硬盘、U盘等外接设备的文件。这款软件最大的亮点简书可以让我们读写 NTFS 分区&#xff0c;因为在Mac OS X 系统上&#xff0c;默认状态下我们只能读取NTFS 分区…

有趣的傅里叶变换与小波变换对比(Python)

不严谨的说&#xff0c;时域和频域分析就是在不同的空间看待问题的&#xff0c;不同空间所对应的原子(基函数)是不同的。你想一下时域空间的基函数是什么&#xff1f;频域空间的基函数是什么&#xff1f;一般的时-频联合域空间的基函数是什么&#xff1f;小波域空间的基函数是什…

Win11安装WSA 安卓系统,然后再电脑安装APK文件

参考文章&#xff1a; https://blog.csdn.net/m0_56076343/article/details/122334759 https://blog.csdn.net/u012514495/article/details/120885242 在微软的网站下载 打开&#xff1a;https://store.rg-adguard.net/ &#xff0c;如下图&#xff1a; 在 1 的那个地方&am…

二维数组与指针【C语言】

二维数组与指针 一维数组一维数组与指针二维数组二维数组与指针总结补充判断以下方式是否正确打印二维数组一维数组 int arr[] = {11, 22, 33, 44};arr:首地址(第一个元素的地址) 一维数组与指针 int arr[] = {11, 22, 33, 44};因为,arr表示的是首地址,等价于 int* p =…

谷粒商城实战(033 业务-秒杀功能4-高并发问题解决方案sentinel 2)

Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强 总时长 104:45:00 共408P 此文章包含第332p-第p335的内容 熔断降级 开启对Feign远程服务的熔断保护机制 feign.sentinel.enabletrue 这里我们只是调用方加就行 被调用方不用加 正常…

PD19 Parallels Desktop 虚拟机 安装Windows10系统 操作步骤(保姆级教程,轻松上手)

Mac分享吧 文章目录 效果一、准备工作二、开始安装1、打开pd 19 虚拟机&#xff0c;点击右上角文件&#xff0c;新建2、通过下载好的镜像安装Windows10系统。找到镜像文件位置&#xff0c;安装&#xff0c;配置2、显示安装完成&#xff0c;打开Windows10系统 三、运行测试1、打…

SQLAlchemy:filter()和filter_by()的微妙差异

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在Python编程中&#xff0c;SQLAlchemy是一个强大的ORM&#xff08;对象关系映射&#xff09;工具&#xff0c;它允许使用Python代码来操作数据库。然而&#xff0c;对于新手来说&#xff0c;SQLAlchemy中的一些函数…

cocos开发的时候 wx.onShow在vscode里面显示红色

这个函数是在微信小游戏平台才会用到。 cocos识别不到wx这个变量。 可以改成下面的写法。 只要在变量前面加一个globalThis.就能识别这个变量了。也不报错了。 搞死强迫症了。orz 欢迎大家来玩我的微信小游戏。多多提意见啊。

【Java】图的初识

文章目录 【Java】图的初识图是什么图的基本组成部分图的类型图的表示方法图的常见操作 Java中图的表示方法邻接矩阵邻接表 常见操作图的遍历深度优先搜索&#xff08;DFS&#xff09;广度优先搜索&#xff08;BFS) 结论 【Java】图的初识 图是什么 图是一种数学概念&#xf…

[Linux] TCP协议介绍(1): TCP协议 数据格式、可靠性的控制、标记位... 简单介绍

上一篇文章, 针对UDP协议的格式、数据等内容做了一些简单的介绍. 并且提到, 在网络协议栈TCP/IP模型的传输层中, 有两个最具代表性的协议: UDP和TCP 下面就简单介绍分析一下TCP协议 TCP协议, 完整的称呼其实叫: 传输控制协议(Transmission Control Protocol) 从名字就可以看出…

Vue51-插件

一、插件的定义 vue里面的插件&#xff0c;类似于游戏的外挂。 vue中插件的本质&#xff1a;一个对象&#xff0c;里面必须包含install方法。 二、插件的使用 2-1、创建一个插件js文件&#xff08;写在src中plugins.js&#xff09; 2-2、应用插件&#xff1a;Vue.use(插件) …

基于Python+OpenCV高速公路行驶车辆的速度检测系统

简介&#xff1a; 基于Python和OpenCV的高速公路行驶车辆的速度检测系统旨在实时监测高速公路上的车辆&#xff0c;并测量它们的速度。该系统可以用于交通监控、道路安全管理等领域&#xff0c;为相关部门提供重要的数据支持。 系统实现&#xff1a; 视频流输入&#xff1a;系…

Python学习打卡:day07

day7 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day753、列表的常用操作课后练习题54、列表的循环遍历列表的遍历—— while 循环列表的遍历—— for 循环while 循环和 for 循环的对比练习 55、元组…