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

Gather Statistics AUTO_INVALIDATE 减少db的 library cache lock

这个参数可以用于解决gather statistics 导致的library cache lockOracle 最高效hard parse的办法gather statistics 后不会标记失效不执行不会无效执行一次不会无效执行一次才开始计时计时结束也不会标记无效。再次执行才会再次触发无效hard parse执行。1. 第一次执行不会失效也不会立即再次parse2.第一次执行后开始计算过期过期时间不超过最大 a (pseudo-)random value up to _optimizer_invalidation_period sec from the time of this parse. 大于过期时间后也不会mark 成invlidate3.再次执行才会标记无效并再次hard parse.Applies ToAll UsersSummaryStarting with Oracle10g, the DBMS_STATS package offers the AUTO_INVALIDATE option for the NO_INVALIDATE parameter of its GATHER_xxx_STATS and DELETE_xxx_STATS procedures. This parameter allows the user to specify when to invalidate dependent cursors i.e. cursors cached in the library cache area of the shared pool which reference a table, index, column or fixed object whose statistics are modified by the procedure call.According to the documentation the values NO_INVALIDATE can take are:TRUE: does not invalidate the dependent cursorsFALSE: invalidates the dependent cursors immediatelyAUTO_INVALIDATE (default): have Oracle decide when to invalidate dependent cursorsThis document describes details of how AUTO_INVALIDATE works.This article may be of interest to DBAs interested in the behaviour of DBMS_STATS with respect to cursor invalidations.SolutionWhen statistics are modified by DBMS_STATS, new cursors not yet cached in the shared pool will use them to get execution plans. Existing cursors cached in the shared pool cannot update their execution plans however. Instead, such cursors are invalidated and new versions (children cursors) are created which get execution plans based on the updated statistics. This involves a hard-parse operation which is more expensive in resource consumption than a soft-parse which simply reuses a cached cursor.An important question to consider is: when does this invalidation occur in time after the statistics have been modified ?Cursor Invalidations on Gathering Statistics prior to Oracle10gIn releases prior to Oracle10g gathering statistics using DBMS_STATS resulted in immediate invalidations of dependent cached cursors, unless NO_INVALIDATE was set to TRUE. An invalidation of a cached cursor means it has to be hard-parsed the next time it is executed. If large numbers of such cursors had to be invalidated and immediately re-executed e.g. due to DBMS_STATS being used on a popular object during a time period of heavy user workload, this would result in a hard-parse spike which could have serious effects on performance including high CPU usage, heavy library cache and shared pool latch contention with subsequent slowdown in application user response times.Setting NO_INVALIDATE to TRUE would prevent such spikes but this meant that cursors would not notice the updated object statistics and would continue using existing execution plans until hard-parsed. Such a hard parse could happen on a cursor reload (i.e. on the next execution following the cursor being automatically flushed out of the shared pool due to inactivity and heavy usage of other cursors) or after a manual flushing of the shared pool (which could itself also result in hard-parse spikes as most of the flushed-out cursors would need to do a hard parse on their next execution.)Cursor Invalidations with Oracle10g and AUTO_INVALIDATEWith the AUTO_INVALIDATE option the goal is to spread out the cursor invalidations over a time period long enough for hard-parses not to cause noticeable spikes.In this way a cached cursor depending on an object whose statistics have been modified by DBMS_STATS will be invalidated as follows:when DBMS_STATS modifies statistics for an object, all current cached cursors depending on this object are marked for rolling invalidation. Lets call this time T0.the next time a session executes a cursor marked for rolling invalidation, it sets a timestamp. This timestamp can take a (pseudo-)random value up to _optimizer_invalidation_period sec from the time of this parse. The reason it does this is to randomly distribute the actual invalidation so as to avoid multiple parses occurring at the same time as much as possible.The default for this parameter is 18000 sec i.e. 5 hours. Lets call the time of this parse T1 and the timestamp value Tmax. On this (first) execution and parse we reuse the existing cursor i.e. we do not hard-parse and do not use the modified statistics to generate a new plan (it is a soft parse.)on every subsequent execution and parse of this cursor (which is now marked for rolling invalidation and timestamped) we check whether the current time T2 exceeds the timestamp Tmax. If not, we reuse the existing cursor again, as happened on the first (soft) parse at time T1. If Tmax has been exceeded, we invalidate the cached cursor and create a new version of it (a new child cursor) which uses the new statistics of the object to generate its execution plan. The new child is marked ROLL_INVALID_MISMATCH in V$SQL_SHARED_CURSOR to explain why we could not share the previous child.From the above descriptions, it follows that:a cursor which is never parsed again after being marked for rolling invalidation will not beinvalidated and may eventually be flushed out of the shared pool if memory becomes scarcea cursor which is only parsed once after being marked for rolling invalidation will not be invalidated(it will only be timestamped) and again may be eventually flushed out if memory in the shared pool becomes scarce ---这个标记后还是不会变为失效状态。cursors which are regularly reused will become invalidatedon the next parse that happens after the timestamp Tmax has been exceeded(只有invalidate 才会再次执行时hard parse)It should be clear that the above method is efficient in that it incurs the overhead of invalidations only for frequently reused cursors.Exception:parallel SQL are immediately invalidated in order to ensure consistency between execution plans of slaves and Query Coordinator across multiple RAC instances. This is not a problem as parallel SQL are usually heavy and therefore hard-parse resources are insignificant to their total resource usage.Testcase for Cursor Invalidations using AUTO_INVALIDATEHere is a short testcase demonstrating the above from a 10.2.0.3 database. It creates a simple table, runs a simple query on it, then gathers statistics and monitors what happens to the cached cursor for the query as time passes and the query is re-executed.First connect to the database as SYSDBA using SQL*Plus and set it up to show current time, detailed timestamps and reduce the invalidation parameter to 5 minutes from the default of 5 hours:SQL set time on pages 100015:48:41 SQL alter session set nls_date_formatdd/mm/yyyy hh24:mi:ss;Session altered.15:48:41 SQL alter system set _optimizer_invalidation_period300;System altered.Then create a small table and gather statistics on it:15:48:41 SQL create table X as select * from dba_tables;Table created.15:48:41 SQL exec dbms_stats.gather_table_stats(null,X);PL/SQL procedure successfully completed.15:48:42 SQL select last_analyzed from dba_tables where table_nameX;LAST_ANALYZED-------------------13/03/2008 15:48:42Now run our example query and check its cursor:15:48:42SQL select count(*) from X;COUNT(*)----------159015:48:42 SQL select sql_id from v$sql where sql_textselect count(*) from X;SQL_ID-------------95rckg79jgshh15:48:42 SQL select * from v$sql_shared_cursor where sql_id95rckg79jgshh;SQL_ID ADDRESS CHILD_AD CHILD_NUMBER U S O O S L S E B P I S T A B D L T------------- -------- -------- ------------ - - - - - - - - - - - - - - - - - -R I I R L I O S M U T N F A I T D L D B P C S R P T M B M R O P M F L- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -95rckg79jgshh 3076145C 33EFD654 0 N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N15:48:42 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBER PARSE_CALLSEXECUTIONSFIRST_LOAD_TIME LAST_LOAD_TIME------------ ---------------------------------------- -------------------LAST_ACTIVE_TIME-------------------0 112008-03-13/15:12:47 2008-03-13/15:48:4213/03/200815:48:42We can see a single child cursor parsed executed once at 15:18:42. Lets execute it once more and compare:15:48:53SQL select count(*) from X;COUNT(*)----------159015:48:55 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBER PARSE_CALLSEXECUTIONSFIRST_LOAD_TIME LAST_LOAD_TIME------------ ---------------------------------------- -------------------LAST_ACTIVE_TIME-------------------0 222008-03-13/15:12:47 2008-03-13/15:48:4213/03/200815:48:53We can see now it has 2 executions (and parses) and last execution time has been updated to 15:48:53.Let us gather statistics on the table using the default which will be AUTO_INVALIDATE:15:48:55 SQL exec dbms_stats.gather_table_stats(null,X);PL/SQL procedure successfully completed.15:49:08 SQL select last_analyzed from dba_tables where table_nameX;LAST_ANALYZED-------------------13/03/2008 15:49:0715:49:08 SQL select * from v$sql_shared_cursor where sql_id95rckg79jgshh;SQL_ID ADDRESS CHILD_AD CHILD_NUMBER U S O O S L S E B P I S T A B D L T------------- -------- -------- ------------ - - - - - - - - - - - - - - - - - -R I I R L I O S M U T N F A I T D L D B P C S R P T M B M R O P M F L- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -95rckg79jgshh 3076145C 33EFD654 0 N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N15:49:08 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBER PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME------------ ----------- ---------- ------------------- -------------------LAST_ACTIVE_TIME-------------------0 2 2 2008-03-13/15:12:47 2008-03-13/15:48:4213/03/2008 15:48:53Nothing has changed on the cursor although we know it has been marked behind the scenes for rolling invalidation. Now let us wait for longer than the _optimizer_invalidation_period e.g. 6 minutes, then check the cursor again:15:55:24 SQL select * from v$sql_shared_cursor where sql_id95rckg79jgshh;SQL_ID ADDRESS CHILD_AD CHILD_NUMBER U S O O S L S E B P I S T A B D L T------------- -------- -------- ------------ - - - - - - - - - - - - - - - - - -R I I R L I O S M U T N F A I T D L D B P C S R P T M B M R O P M F L- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -95rckg79jgshh 3076145C 33EFD654 0 N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N15:55:24 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBER PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME------------ ----------- ---------- ------------------- -------------------LAST_ACTIVE_TIME-------------------0 2 2 2008-03-13/15:12:47 2008-03-13/15:48:4213/03/2008 15:48:53Now let us see what happens when we execute it again. This will do the first parse after statistics were gathered and the cursor was marked for rolling invalidation:15:55:35SQL select count(*) from X;COUNT(*)----------159015:55:37 SQL select * from v$sql_shared_cursor where sql_id95rckg79jgshh;SQL_ID ADDRESS CHILD_AD CHILD_NUMBER U S O O S L S E B P I S T A B D L T------------- -------- -------- ------------ - - - - - - - - - - - - - - - - - -R I I R L I O S M U T N F A I T D L D B P C S R P T M B M R O P M F L- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -95rckg79jgshh 3076145C 33EFD654 0 N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N15:55:37 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBER PARSE_CALLSEXECUTIONSFIRST_LOAD_TIME LAST_LOAD_TIME------------ ---------------------------------------- -------------------LAST_ACTIVE_TIME-------------------0 332008-03-13/15:12:47 2008-03-13/15:48:4213/03/200815:55:35We can see that the same cursor has been reused, even though we waited for longer than the invalidation period parameter. This shows that the time period where the cursor will be invalidated does not begin until this first parse after statistics are modified has happened. This parse is what sets the Tmax timestamp.Let us wait another 6 minutes, during this time we expect the timestamp Tmax to run out:16:01:00 SQL select * from v$sql_shared_cursor where sql_id95rckg79jgshh;SQL_ID ADDRESS CHILD_AD CHILD_NUMBER U S O O S L S E B P I S T A B D L T------------- -------- -------- ------------ - - - - - - - - - - - - - - - - - -R I I R L I O S M U T N F A I T D L D B P C S R P T M B M R O P M F L- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -95rckg79jgshh 3076145C 33EFD654 0 N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N N16:01:01 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBER PARSE_CALLS EXECUTIONS FIRST_LOAD_TIME LAST_LOAD_TIME------------ ----------- ---------- ------------------- -------------------LAST_ACTIVE_TIME-------------------0 3 3 2008-03-13/15:12:47 2008-03-13/15:48:4213/03/2008 15:55:35Nothing happens to the cursor until we execute (and parse) it again after Tmax has passed:16:01:08SQL select count(*) from X;COUNT(*)----------159016:01:09 SQL select * from v$sql_shared_cursor where sql_id95rckg79jgshh;SQL_ID ADDRESS CHILD_ADCHILD_NUMBERU S O O S L S E B P I S T A B D L T------------- -------- --------------------- - - - - - - - - - - - - - - - - -R I I R L I O S M U T N F A I T D L D B P C S R P T M B MRO P M F L- - - - - - - - - - - - - - - - - - - - - - - - - - - - --- - - - -95rckg79jgshh 3076145C 33EFD6540N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N NNN N N N N95rckg79jgshh 3076145C 3078DA101N N N N N N N N N N N N N N N N N NN N N N N N N N N N N N N N N N N N N N N N N N N N N N NYN N N N N16:01:10 SQL select child_number,parse_calls,executions,first_load_time,last_load_time,last_active_time from v$sql where sql_id95rckg79jgshh;CHILD_NUMBERPARSE_CALLSEXECUTIONSFIRST_LOAD_TIME LAST_LOAD_TIME---------------------------------------------------- -------------------LAST_ACTIVE_TIME-------------------0 3 3 2008-03-13/15:12:47 2008-03-13/15:48:4213/03/2008 15:55:351112008-03-13/15:12:47 2008-03-13/16:01:0913/03/200816:01:08Here we now see that a new child cursor has been created and has 1 execution while the old cursor remains with its previous 3 executions. This shows that the original cursor was invalidated and a hard parse done. In V$SQL_SHARED_CURSOR the new child has a column set to Y (marked in bold), this corresponds to ROLL_INVALID_MISMATCH and indicates that the child had to be created because the original cursor could not be reused due to having been invalidated with rolling invalidation.This completes the testcase.

相关文章:

Gather Statistics AUTO_INVALIDATE 减少db的 library cache lock

这个参数可以用于解决gather statistics 导致的library cache lockOracle 最高效hard parse的办法:gather statistics 后不会标记失效,不执行不会无效,执行一次不会无效,执行一次才开始计时,计时结束也不会标记无效。再…...

Webhook桥接器:解决内外网通信与格式转换的轻量级解决方案

1. 项目概述:一个轻量级的Webhook转发桥梁如果你在开发微服务、自动化流程,或者正在折腾各种SaaS工具之间的联动,那你一定对Webhook不陌生。简单来说,Webhook就是一个“回调通知”,当A服务发生了某件事(比如…...

手把手拆解Vulnhub Noob靶机:用Kali工具链玩转FTP、HTTP与SSH端口

从零玩转Vulnhub Noob靶机:Kali工具链的实战艺术 第一次接触Vulnhub靶机时,我盯着闪烁的命令行界面,完全不知道从何入手。那些看似简单的工具背后,隐藏着安全工程师的思维密码。本文将带你用Kali Linux的标准工具链,像…...

别再死记硬背了!用Multisim仿真,5分钟搞懂-3dB和截止频率的底层联系

用Multisim破解-3dB与截止频率的工程密码:一场电子工程师的实战演练 在实验室里调试滤波器时,你是否曾被-3dB和截止频率的关系困扰?教科书上的公式推导虽然严谨,但总缺少那种"啊哈"的顿悟时刻。今天,我们将用…...

如何用Python工具突破百度网盘限速?这3个核心技巧让你下载速度提升50倍!

如何用Python工具突破百度网盘限速?这3个核心技巧让你下载速度提升50倍! 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘的蜗牛下载速度…...

PASTA框架:GPU深度学习性能分析的高效解决方案

1. 项目概述:PASTA框架的设计初衷在GPU计算和深度学习领域,性能分析工具就像外科医生的手术显微镜——它们需要同时具备高精度视野和灵活的操作空间。传统工具如NVIDIA Nsight Systems或AMD ROCm Profiler虽然能提供基础性能数据,但就像用固定…...

哪个软件能抠图免费?2026年最实用的免费抠图工具测评

你是不是也经常遇到这样的烦恼:需要换个证件照背景、商品图去掉杂乱的背景、或者给朋友的照片快速抠图,却发现网上推荐的工具要么收费、要么效果差、要么操作复杂? 我之前也被这个问题困扰过。直到用了一段时间的各类抠图工具后,…...

免费音乐解锁工具:3分钟学会在浏览器中解密所有加密音乐文件

免费音乐解锁工具:3分钟学会在浏览器中解密所有加密音乐文件 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址:…...

为Claude Code配置Taotoken作为后端API提供方的步骤

为Claude Code配置Taotoken作为后端API提供方的步骤 1. 准备工作 在开始配置前,请确保已安装Claude Code CLI工具或桌面应用,并拥有有效的Taotoken API Key。API Key可在Taotoken控制台的「API密钥」页面创建。同时,建议在模型广场查看当前…...

如何快速掌握艾尔登法环调试工具:面向初学者的完整指南

如何快速掌握艾尔登法环调试工具:面向初学者的完整指南 【免费下载链接】Elden-Ring-Debug-Tool Debug tool for Elden Ring modding 项目地址: https://gitcode.com/gh_mirrors/el/Elden-Ring-Debug-Tool 艾尔登法环调试工具(Elden Ring Debug T…...

告别命令行恐惧:用iStoreOS可视化面板管理你的OpenWrt服务器(CentOS迁移实录)

告别命令行恐惧:用iStoreOS可视化面板管理你的OpenWrt服务器(CentOS迁移实录) 如果你曾经因为Linux命令行复杂的操作而望而却步,却又渴望拥有OpenWrt强大的网络功能,那么iStoreOS可能是你一直在寻找的解决方案。本文将…...

3分钟解锁Windows触控板三指拖拽:告别繁琐操作,提升效率300%

3分钟解锁Windows触控板三指拖拽:告别繁琐操作,提升效率300% 【免费下载链接】ThreeFingersDragOnWindows Enables macOS-style three-finger dragging functionality on Windows Precision touchpads. 项目地址: https://gitcode.com/gh_mirrors/th/T…...

基于RAG与Live2D的AI虚拟伙伴:从语音交互到长期记忆的桌面应用开发

1. 项目概述:打造你的个人AI虚拟伙伴 如果你对VTuber(虚拟主播)感兴趣,或者一直想拥有一个能说会道、能记住你喜好的桌面AI伙伴,那么这个项目可能就是为你量身定做的。 Vtuber-Companion-RUS 是一个集成了Live2D动态…...

别再到处找了!2024年最全的开源工业以太网协议栈清单(EtherCAT/Profinet/Modbus)

2024年开源工业以太网协议栈全景指南:从选型到实战 工业自动化领域正经历着数字化转型的浪潮,而开源协议栈的成熟让中小企业和开发者能够以更低成本实现专业级工业通信。作为一名在工控领域摸爬滚打多年的工程师,我深刻理解选择合适协议栈时…...

如何实现全平台网盘高速下载:免费开源工具的终极指南

如何实现全平台网盘高速下载:免费开源工具的终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

无线通信数学推理引擎WirelessMathLM设计与实践

1. 项目背景与核心价值去年在优化5G基站参数时,我深刻体会到传统通信系统中数学建模的局限性——当遇到多用户调度或抗干扰场景时,工程师往往需要手动推导复杂的不等式组。这种人工推导不仅效率低下,更可能因人为疏忽导致性能损失。WirelessM…...

langgraph零基础入门指南:用快马平台生成你的第一个工作流应用

最近在学习langgraph这个工作流管理工具,作为一个刚入门的新手,我发现用InsCode(快马)平台来实践特别方便。不需要配置任何环境,输入简单的需求就能生成可运行的代码,还能直接看到执行结果。下面分享下我的学习过程,希…...

Go语言开源代理工具openfox:轻量配置驱动,解决Web开发跨域与API调试难题

1. 项目概述:一个为现代Web应用量身定制的开源代理工具如果你是一名Web开发者,尤其是在处理前后端分离、跨域请求、API接口调试或本地开发环境模拟时,一定对“代理”这个概念不陌生。我们常常需要将本地开发服务器的请求,转发到另…...

Win11下MinGW-w64安装保姆级教程:从下载x86_64-13.2.0到配置环境变量

Win11下MinGW-w64安装配置全攻略:从零开始搭建C/C开发环境 在Windows平台上进行C/C开发,MinGW-w64无疑是最受欢迎的工具链之一。不同于Visual Studio的庞大体积和复杂配置,MinGW-w64以其轻量级和跨平台特性赢得了众多开发者的青睐。本文将带你…...

新手福音:用快马平台一键生成代码,轻松入门数据集分析

作为一个刚接触Python数据分析的新手,第一次看到鸢尾花数据集时完全不知道从何下手。后来在InsCode(快马)平台上发现可以一键生成分析代码,终于找到了入门捷径。下面分享我的学习笔记,记录如何用最简单的代码完成基础数据分析。 加载数据集 新…...

如何快速将图像转为C代码?image_to_c工具的完整使用指南

如何快速将图像转为C代码?image_to_c工具的完整使用指南 【免费下载链接】image_to_c Convert image files into C arrays of uint8_t for compiling into your project 项目地址: https://gitcode.com/gh_mirrors/im/image_to_c 在嵌入式开发和资源受限项目…...

Yo‘City:基于多智能体的3D城市动态生成框架解析

1. 项目概述YoCity是一个革命性的3D城市生成框架,它通过多智能体系统实现了城市环境的无限扩展和动态生成。这个框架的核心创新点在于将传统静态的城市建模转变为由自主智能体驱动的有机生长过程。我在参与智慧城市项目时,发现传统3D建模存在两个致命缺陷…...

从“Could not resolve hostname”到成功Clone:一个OpenHarmony开发者的踩坑实录与效率工具推荐

从“Could not resolve hostname”到成功Clone:一个OpenHarmony开发者的踩坑实录与效率工具推荐 作为一名长期深耕OpenHarmony生态的开发者,我清楚地记得第一次尝试为开源项目贡献代码时的挫败感——当我在终端输入git clone命令后,屏幕上赫然…...

零基础也能抓住风口!月薪5万的AI大模型应用开发工程师,你值得收藏!

文章指出,2026年可能成为“人形机器人打工元年”,市场需求旺盛。小米机器人已在汽车车间成功上岗,展示了AI的强大能力。文章强调,智能化的核心是AI,而AI大模型应用开发工程师是一个低门槛、高回报的职业方向&#xff0…...

大语言模型推理中的动态计算资源分配优化实践

1. 项目背景与核心挑战大语言模型推理过程中的计算资源分配一直是工业界和学术界关注的焦点问题。传统静态分配方案往往面临两大困境:一方面,固定分配的计算资源无法适应输入序列长度的动态变化,导致短文本推理时资源闲置;另一方面…...

终极指南:如何在Photoshop中无缝集成AI绘图能力

终极指南:如何在Photoshop中无缝集成AI绘图能力 【免费下载链接】sd-ppp A Photoshop AI plugin 项目地址: https://gitcode.com/gh_mirrors/sd/sd-ppp 在数字创意设计领域,Photoshop一直是行业标杆,但面对AI绘图技术的迅猛发展&#…...

ZYNQ裸机双网口实战:黑金7035开发板上跑通PS+PL网络的那些‘坑’与解决方案

ZYNQ裸机双网口实战:黑金7035开发板上跑通PSPL网络的那些‘坑’与解决方案 在嵌入式网络开发中,ZYNQ系列芯片因其独特的PSPL架构,为工程师提供了极大的设计灵活性。特别是在需要多网口的场景下,通过合理利用PL资源扩展网络接口&am…...

基于反电势观测器(Back-EMF)+锁相环(PLL)的中、高速区域永磁同步电机无感控制研究(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

HS2-HF_Patch终极指南:如何为Honey Select 2解锁完整游戏体验

HS2-HF_Patch终极指南:如何为Honey Select 2解锁完整游戏体验 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch HS2-HF_Patch是专为《Honey Select 2》…...

【复现】基于DoS攻击+二次控制+下垂控制和事件触发式负荷控制的四机并联孤岛微电网(实现电压、频率恢复与功率共享分配)(Simulink仿真实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...