修正执行计划的利器,SQL PROFILE脚本


点击这里下载 sql profile 脚本 fj.pngprofile.sql

我们先来看下如何手工创建sql profile来修正执行计划。
创建两张表test1、test2,在表test2的列object_id 上创建索引,分析两张表。

create table test1 as select * from dba_objects;

create table test2 as select * from dba_objects;

create index test2_oi_ind on test2(object_id);

begin

  dbms_stats.gather_table_stats(ownname          =>'test',

                                tabname          => 'test1',

                                no_invalidate    => FALSE,

                                estimate_percent => 100,

                                force            => true,

                                degree         => 5,

                                method_opt       => 'for  all columns  size 1',

                                cascade          => true);

end;

/

 

begin

  dbms_stats.gather_table_stats(ownname          =>'test',

                                tabname          => 'test2',

                                no_invalidate    => FALSE,

                                estimate_percent => 100,

                                force            => true,

                                degree         => 5,

                                method_opt       => 'for  all columns  size 1',

                                cascade          => true);

end;

/

然后看看如下一个SQL:

select test2.object_name, test2.object_type
  from test1, test2
 where test1.object_type like '%RULE'
   and test1.object_id = test2.object_id;
 

OBJECT_NAME          OBJECT_TYPE

-------------------- --------------------------------------

ALERT_QUE$1          RULE

 

1 row selected.

默认的执行计划为hash join:

Plan hash value: 497311279

 

----------------------------------------------------------------------------

| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |

----------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |       |   774 | 33282 |   100   (2)| 00:00:02 |

|*  1 |  HASH JOIN         |       |   774 | 33282 |   100   (2)| 00:00:02 |

|*  2 |   TABLE ACCESS FULL| TEST1 |   774 |  9288 |    50   (2)| 00:00:01 |

|   3 |   TABLE ACCESS FULL| TEST2 | 15478 |   468K|    49   (0)| 00:00:01 |

----------------------------------------------------------------------------

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

   1 - access("TEST1"."OBJECT_ID"="TEST2"."OBJECT_ID")

   2 - filter("TEST1"."OBJECT_TYPE" LIKE '%RULE' AND

              "TEST1"."OBJECT_TYPE" IS NOT NULL)

如果我们想让执行计划走NEST LOOP JOIN,而不是优化器选用的HASH JOIN,该如何办?

步骤一:查找到你的查询块的名称

SELECT operation,options,object_name,object_alias

FROM v$sql_plan

WHERE sql_id='7uga1u1twnqw1'

AND child_number=0

/

OPERATION                 OPTIONS              OBJECT_NAME          OBJECT_ALIAS

------------------------- -------------------- -------------------- --------------------

SELECT STATEMENT

NESTED LOOPS

NESTED LOOPS

TABLE ACCESS              FULL                 TEST1                TEST1@SEL$1

INDEX                     RANGE SCAN           TEST2_OI_IND         TEST2@SEL$1

TABLE ACCESS              BY INDEX ROWID       TEST2                TEST2@SEL$1

也可以通过select * from table(dbms_xplan.display_cursor(sql_id,null,'outline'))来查看Outline Data来获取查询块。我更喜欢这种方法。

步骤二:构建你的HINT

leading(@"SEL$1" TEST1@"SEL$1") use_nl(@"SEL$1" TEST2@"SEL$1")

步骤三:创建你的SQL PROFILE

declare

l_profile_name varchar2(30);

cl_sql_text clob;

begin

 

select

sql_fulltext

into

cl_sql_text

from

v$sqlarea

where

sql_id = '7uga1u1twnqw1';

 

dbms_sqltune.import_sql_profile(

sql_text => cl_sql_text,

profile => sqlprof_attr(q'[leading(@"SEL$1" TEST1@"SEL$1") use_nl(@"SEL$1" TEST2@"SEL$1")]'),

category => '',

name => 'dwrose_xxx',

force_match =>FALSE

);

end;

/

步骤四,确认你的执行计划已经按照要求被改变:

select test2.object_name,test2.object_type from test1,test2 where test1.object_type like '%RULE' and test1.object_id=test2.object_id;

OBJECT_NAME          OBJECT_TYPE

-------------------- --------------------------------------

ALERT_QUE$1          RULE


sys@DLSP>select * from table(dbms_xplan.display_cursor);

PLAN_TABLE_OUTPUT

-----------------------------------------------------------------------------------------------------------------------------------------------------------

SQL_ID  bhm28h5575bjy, child number 0

-------------------------------------

select test2.object_name,test2.object_type from test1,test2 where

test1.object_type like '%RULE' and test1.object_id=test2.object_id

 

Plan hash value: 800282841

 

---------------------------------------------------------------------------------------------

| Id  | Operation                    | Name         | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT             |              |       |       |  1598 (100)|          |

|   1 |  NESTED LOOPS                |              |       |       |            |          |

|   2 |   NESTED LOOPS               |              |   774 | 33282 |  1598   (1)| 00:00:20 |

|*  3 |    TABLE ACCESS FULL         | TEST1        |   774 |  9288 |    50   (2)| 00:00:01 |

|*  4 |    INDEX RANGE SCAN          | TEST2_OI_IND |     1 |       |     1   (0)| 00:00:01 |

|   5 |   TABLE ACCESS BY INDEX ROWID| TEST2        |     1 |    31 |     2   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

   3 - filter(("TEST1"."OBJECT_TYPE" LIKE '%RULE' AND "TEST1"."OBJECT_TYPE" IS NOT

              NULL))

   4 - access("TEST1"."OBJECT_ID"="TEST2"."OBJECT_ID")

 

Note

-----

    - SQL profile dwrose_xxx used for this statement

通过执行计划输出的Note部分可以看到SQL PROFILE已经被使用。

OK,看我们通过如何通过sql profile脚本把执行计划修正为NEST LOOP JOIN,这个过程将变得更加简单:

>@profile

Enter value for sql_id: bhm28h5575bjy          -------------第一个步骤:输入SQL_ID

 

PLAN_TABLE_OUTPUT

-----------------------------------------------------------------------------------------------

SQL_ID  bhm28h5575bjy, child number 0

-------------------------------------

select test2.object_name,test2.object_type from test1,test2 where

test1.object_type like '%RULE' and test1.object_id=test2.object_id

 

Plan hash value: 497311279

 

----------------------------------------------------------------------------

| Id  | Operation          | Name  | Rows  | Bytes | Cost (%CPU)| Time     |

----------------------------------------------------------------------------

|   0 | SELECT STATEMENT   |       |       |       |   100 (100)|          |

|*  1 |  HASH JOIN         |       |   774 | 33282 |   100   (2)| 00:00:02 |

|*  2 |   TABLE ACCESS FULL| TEST1 |   774 |  9288 |    50   (2)| 00:00:01 |

|   3 |   TABLE ACCESS FULL| TEST2 | 15479 |   468K|    49   (0)| 00:00:01 |

----------------------------------------------------------------------------

 

Outline Data

-------------

 

  /*+

      BEGIN_OUTLINE_DATA

      IGNORE_OPTIM_EMBEDDED_HINTS

      OPTIMIZER_FEATURES_ENABLE('11.2.0.3')

      DB_VERSION('11.2.0.3')

      OPT_PARAM('_optim_peek_user_binds' 'false')

      OPT_PARAM('_optimizer_skip_scan_enabled' 'false')

      ALL_ROWS

      OUTLINE_LEAF(@"SEL$1")

      FULL(@"SEL$1" "TEST1"@"SEL$1")

      FULL(@"SEL$1" "TEST2"@"SEL$1")

      LEADING(@"SEL$1" "TEST1"@"SEL$1" "TEST2"@"SEL$1")

      USE_HASH(@"SEL$1" "TEST2"@"SEL$1")

      END_OUTLINE_DATA

  */

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

   1 - access("TEST1"."OBJECT_ID"="TEST2"."OBJECT_ID")

   2 - filter(("TEST1"."OBJECT_TYPE" LIKE '%RULE' AND

              "TEST1"."OBJECT_TYPE" IS NOT NULL))

 

 

42 rows selected.

------------第二个步骤:输入你构造好的HINT,可以写多个,以空格隔开

Enter value for hint_text: LEADING(@"SEL$1" "TEST1"@"SEL$1" "TEST2"@"SEL$1") USE_NL(@"SEL$1" "TEST2"@"SEL$1")   
     

Profile profile_bhm28h5575bjy_dwrose created.


需要强调的是,根据上面脚本的输出可看到,Outline Data部分已经为你提供了当前查询计划的HINT,你可以通过改造这些HINT来为新的执行计划所用。例如,我们想让查询走NEST LOOP JOIN,如果是正常的不带查询块的HINT,写法为leading(test1) use_nl(test2),带上查询块通过参考Outline Data部分提供的HINT,写法为:
LEADING(@"SEL$1" "TEST1"@"SEL$1" "TEST2"@"SEL$1") USE_NL(@"SEL$1" "TEST2"@"SEL$1")

我们来看看是否执行计划已经被修正:

test@DLSP>select test2.object_name,test2.object_type from test1,test2 where test1.object_type like '%RULE' and test1.object_id=test2.object_id;

 

OBJECT_NAME          OBJECT_TYPE

-------------------- --------------------------------------

ALERT_QUE$1          RULE

1 row selected.

test@DLSP>select * from table(dbms_xplan.display_cursor);

 

PLAN_TABLE_OUTPUT

-----------------------------------------------------------------------------------------------

SQL_ID  bhm28h5575bjy, child number 0

-------------------------------------

select test2.object_name,test2.object_type from test1,test2 where

test1.object_type like '%RULE' and test1.object_id=test2.object_id

 

Plan hash value: 800282841

 

---------------------------------------------------------------------------------------------

| Id  | Operation                    | Name         | Rows  | Bytes | Cost (%CPU)| Time     |

---------------------------------------------------------------------------------------------

|   0 | SELECT STATEMENT             |              |       |       |  1598 (100)|          |

|   1 |  NESTED LOOPS                |              |       |       |            |          |

|   2 |   NESTED LOOPS               |              |   774 | 33282 |  1598   (1)| 00:00:20 |

|*  3 |    TABLE ACCESS FULL         | TEST1        |   774 |  9288 |    50   (2)| 00:00:01 |

|*  4 |    INDEX RANGE SCAN          | TEST2_OI_IND |     1 |       |     1   (0)| 00:00:01 |

|   5 |   TABLE ACCESS BY INDEX ROWID| TEST2        |     1 |    31 |     2   (0)| 00:00:01 |

---------------------------------------------------------------------------------------------

 

Predicate Information (identified by operation id):

---------------------------------------------------

 

   3 - filter(("TEST1"."OBJECT_TYPE" LIKE '%RULE' AND "TEST1"."OBJECT_TYPE" IS NOT

              NULL))

   4 - access("TEST1"."OBJECT_ID"="TEST2"."OBJECT_ID")

 

Note

-----

   - SQL profile profile_bhm28h5575bjy_dwrose used for this statement

可以看到执行计划已经被固定为我们需要的NEST LOOP JOIN方式了。Note部分也已经提示这个SQL已经使用到了我们所创建的SQL PROFILE了。

实在是太easy了,只需要两个步骤就可以去修正一个SQL的执行计划了!!

SQL PROFILE脚本如下,enjoy it !!:

SET linesize 153

set verify off

SET pagesize 10000

accept sql_id -

prompt 'Enter value for sql_id: ' -

default 'dwrose'

 

SELECT * FROM TABLE(dbms_xplan.display_cursor('&&sql_id',NULL,'outline'));

 

accept hint_txt -

prompt 'Enter value for hint_text: ' -

default 'comment'

set feedback off

set sqlblanklines on

set serveroutput on

declare

l_profile_name varchar2(30);

cl_sql_text clob;

begin

 

select

sql_fulltext

into

cl_sql_text

from

v$sqlarea

where

sql_id = '&&sql_id';

 

 

select 'profile_'||'&&sql_id'||'_dwrose'

into l_profile_name

from dual;

 

dbms_sqltune.import_sql_profile(

sql_text => cl_sql_text,

profile => sqlprof_attr(q'[&&hint_txt]'),

category => '',

name => l_profile_name,

force_match =>FALSE

);

 

dbms_output.put_line(' ');

dbms_output.put_line('Profile '||l_profile_name||' created.');

dbms_output.put_line(' ');

end;

/

 

col FIRST_LOAD_TIME for a20

select OBJECT_STATUS,FIRST_LOAD_TIME,plan_hash_value,executions,buffer_gets,LAST_ACTIVE_TIME from v$sql where sql_id='&&sql_id';

pro

pro

undef sql_id

undef hint_txt

 

set sqlblanklines off

set feedback on


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-1063610/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22034023/viewspace-1063610/

Oracle 固定执行计划--sqlprofile 步骤一-------------------------创建测试表,根据DBA_OBJECTS创建,OBJECT_ID上有索引 Create table test as select * from dba_objects; create index t_1 on test(test_id);   步骤二-------------------------查看SQL默认执行计划,走了索引 explai... 阅读详情

相关推荐

Oracle执行计划不稳定?手把手教你用SQL Profile解决(含Query Block Name详解)

本文针对Oracle数据库执行计划不稳定的常见问题,提供了使用SQL Profile进行固化的实战解决方案。文章重点剖析了Query Block Name在确保Hint生效中的关键作用,并详细介绍了从v$sql_plan提取Outline Data、手工创建Profile以及使用coe_load_sql_profile脚本的完整流程,帮助DBA从根本上锁定最优执行计划,抵御统计信息变化带来的性能波动。

tomato的博客 945

SQL Profile 总结(四)--使用示例

使用sql profile稳定SQL执行计划的使用示例

oradh的专栏 6503

若依框架安全深度剖析:从Shiro反序列化到SQL注入的防御实战

在Java企业级应用开发中,Spring Boot集成框架因其高效便捷而广泛应用,但随之而来的供应链安全与配置风险不容忽视。其安全原理涉及组件依赖管理、默认配置安全及安全编码规范等多个层面。深入理解这些技术价值,能帮助开发者在快速开发的同时,构建稳固的安全防线,尤其适用于后台管理系统、微服务架构等典型场景。本文聚焦于若依(RuoYi)这一流行框架,通过剖析其历史漏洞,如Shiro反序列化、Druid未授权访问等热词案例,系统梳理从漏洞原理到加固方案的完整路径,为开发与运维人员提供一份实用的安全加固指南。

weixin_33910759的博客 501

Sql profiles-->手工创建sql profile

一. 手工创建sql profile的方法 因为sql tuning的sql profile不能锁定执行计划,只是提供更准确的信息以生成更准确的执行计划,当统计信息改变时,sql的执行计划也会变化。所以就需要手工创建sql profile的方法来锁定指定计划。 目的: a. 锁定或者说是稳定sql执行计划 b. 再不能修改应用的sql的情况下,来改变或者说是强制使sql使用我们指定的s

gumengkai的博客 3506

JMeter性能测试实战:从环境部署到分布式压测全解析

性能测试是保障软件系统稳定性和可扩展性的关键环节,它通过模拟真实用户负载来评估系统在高并发下的表现。其核心原理在于利用工具生成虚拟流量,度量响应时间、吞吐量和错误率等关键指标,从而识别瓶颈、验证容量。这项技术的价值在于,它能将性能问题提前暴露在开发或测试阶段,避免线上故障,并为系统优化和容量规划提供数据支撑,广泛应用于电商大促、秒杀活动、API服务等高压场景。本文聚焦于业界广泛使用的开源工具Apache JMeter,深入讲解其环境部署、核心元件配置、脚本编写以及分布式压测等实战技巧,帮助读者掌握构建高效压

weixin_34195546的博客 405

融合物联网、时序模型与大模型的工业预测性维护智能体实战

预测性维护是工业物联网与人工智能技术融合的核心应用场景,旨在通过数据驱动的方式,将设备维护从被动响应转变为主动预测。其技术原理在于,通过物联网传感器实时采集设备的振动、温度、压力等多维时序数据,构建数据感知的基石。随后,利用时序模型(如LSTM、ARIMA)从海量数据流中捕捉表征早期故障的细微特征模式,实现异常检测与寿命预测。结合大语言模型(LLM)的语义理解与推理能力,系统能够融合维修记录、设备手册等多源非结构化信息,进行根因分析与决策建议,极大提升了诊断的深度与准确性。最终,通过智能问数(NL2SQL)

weixin_30448603的博客 456

多维聚合实战:从SQL GROUP BY到OLAP立方体的工程化落地

多维聚合是现代数据分析的核心能力,本质是支持在多个业务维度(如时间、地域、产品)上对度量指标(如销售额、用户数)进行灵活切片、钻取与交叉分析。其技术原理源于OLAP立方体模型,强调维度层级、可加性度量与事实表协同;相比传统GROUP BY的静态降维,它提供动态探查能力,显著提升分析效率与决策响应速度。在工程实践中,需结合SQL高级语法(CUBE/ROLLUP)、向量化计算引擎(Polars/Dask)及维度建模方法论,解决高基数维度爆炸、时区陷阱、度量误聚合等典型问题。本文聚焦真实场景下的多维数据操作心法,

weixin_34294649的博客 380

Kimi CLI:基于Python的AI Agent命令行实践指南

AI Agent 是一种具备规划、工具调用与自我修正能力的智能体,其核心在于将自然语言指令转化为可执行的自动化流程。CLI(命令行界面)因其过程可见、结果可链、安全可控等特性,成为 AI Agent 最适合的交互范式;而 Python 凭借丰富的生态、沙箱执行能力与调试友好性,天然适配 Agent 的逻辑密集型任务。这种组合在代码分析、技术尽职调查、文档生成等工程场景中展现出高效率与强可靠性,尤其适合开发者构建可审计、可集成、可复现的自动化工作流。本文聚焦 Kimi CLI 这一典型实现,详解其 Agent

weixin_33682790的博客 391

24 种几何构图技法详解:350-layout-compositions 中的金字塔、螺旋、放射与阵列结构

开源项目 350-layout-compositions 收录了 350 种排版与构图参考图鉴,其中编号 041–064 的 24 种「几何构图技法」是平面设计、海报与 UI 排版里最常用的画面骨架:三角与金字塔、圆形与椭圆、螺旋与放射、四象限与棋盘阵列。本篇带你快速搞懂每一组几何构图的视觉逻辑和适用场景,并告诉你如何在本仓库中直接找到对应的高清参考图。 ## 一、24 种几何构图技法总览:编号

gitblog_00780的博客 426

Apache Doris 在可观测性场景下的性能优势与实战调优

在数据处理领域,实时分析引擎是处理海量时序数据、支撑交互式查询的核心组件。其原理在于通过列式存储、向量化执行和分布式架构,实现对大规模数据的高效扫描与聚合,从而为业务决策提供即时洞察。这项技术的核心价值在于平衡了数据处理的吞吐量、查询延迟与资源成本,尤其在日志、指标等可观测性数据的实时分析场景中至关重要。面对高并发写入、复杂关联查询与成本控制的挑战,一个优秀的分析引擎需要具备卓越的工程实践能力。本文聚焦于**Apache Doris**这一实时分析数据库,通过模拟真实生产负载的基准测试,深入探讨了其如何利用

weixin_30882895的博客 410

浏览器原生AI:从信息窗口到任务代理的演进

浏览器正经历一场底层范式迁移——它不再仅是渲染HTML的页面容器,而是具备上下文理解、多源协同与工作流嵌入能力的任务中枢。其核心原理在于将传统线性搜索流程重构为‘提问→解析→调用→生成→嵌入→闭环’的环形任务生命周期,依托浏览器内核对DOM、PDF、本地存储及API的深度整合实现轻量级智能代理(agentic layer)。这一转变带来显著技术价值:压缩80%机械性注意力搬运,降低跨应用切换成本,并推动隐私控制从‘是否上传’升级为‘何时/何地/以何种粒度参与计算’。典型应用场景覆盖合同审阅、竞品分析、研发文

weixin_33834137的博客 390

ODPS SQL数据操作实战:DELETE、UPDATE、INSERT核心原理与避坑指南

在数据仓库与大数据处理领域,SQL的增删改查(DML)是数据管理的基石。其核心原理在于通过声明式语言对数据集进行批量操作,这在大数据分布式环境下尤为重要,直接关系到数据处理效率、成本与准确性。从技术价值看,高效的数据操作能保障数据一致性、支持复杂的业务逻辑,并优化存储与计算资源。在阿里云MaxCompute(ODPS)这类分布式数据仓库的应用场景中,理解其特有的“重计算”模型和分区机制是关键。ODPS的DELETE、UPDATE操作并非原地修改,而是通过读取-处理-写入的完整作业实现,这要求开发者具备强烈的

circularr9834的博客 458

WebShell文件上传溯源实战:从原理到应急响应的完整指南

文件上传漏洞是Web安全中的常见威胁,其核心原理在于服务器对用户上传文件的类型、内容及路径验证不严,导致恶意脚本被上传并执行。这种漏洞的技术价值在于,它直接威胁服务器安全,常被攻击者用作初始入侵点,以获取系统控制权。在应用场景上,文件上传功能广泛存在于论坛、社交平台、内容管理系统等需要用户提交文件的Web应用中。攻击者常利用WebShell进行持久化控制,并通过日志分析进行攻击溯源。本文结合WebShell查杀和应急响应实战,系统讲解如何从文件系统、日志记录中定位隐藏的WebShell,并还原攻击路径,为安

weixin_33796177的博客 382

微信小程序逆向分析:从反编译到接口安全审计实战指南

在移动应用开发与安全领域,逆向工程是一项基础且重要的技术,它通过分析已编译程序来理解其内部逻辑与数据交互原理。这项技术的核心价值在于帮助开发者学习优秀架构、进行安全审计与问题排查。具体到微信小程序生态,由于其独特的打包与运行机制,逆向分析主要围绕.wxapkg文件展开,涉及反编译还原源码、静态代码分析及动态调试等关键技术环节。其中,小程序反编译和接口敏感信息提取是两个关键实践方向,前者利用工具链将包文件还原为可读的源代码,后者则聚焦于从代码中识别API端点、认证密钥等潜在风险点。掌握这些方法,能有效应用于竞

Eric.Net的专栏 457

Meta-RL之Meta-Gradient Reinforcement Learning

这篇文章是用元学习算法去学习RL的超参数η={γ,λ}\eta=\{\gamma,\lambda\}η={γ,λ}。当然不仅限于这2个超参数,还可以是和回报相关的超参数。 本文的核心思想:我们之前接触过Meta-Learning参数的初始化(MAML、Reptile)以及Meta-Learning参数的更新优化(L2L-by-gd-by-gd、Opt as a model for few-shot learning),那么这篇就是能否Meta-Learning到η={γ,λ}\eta=\{\gamma,\l

Ton的博客 2521

影像组学分析流程中,图像分割前要做的事(图像预处理)

在InputVolume中无法找到自己想要重采样的序列,这时可以检查一下序列的Volume type是不是MRMLMulti。这时,Volume type将由MRMLMulti改为Scaler,随后即可在3D slicer中完成Resample Scaler Volume。2.1、重采样:通过3Dslicer中的Resample Scaler Volume实现。具体设置参数:spacing(1,1,1),Interpolation选择Bspline。2、图像预处理:重采样和标准化。

weixin_45011313的博客 3725

Claude Code实战指南:45分钟掌握AI编码助手核心用法与工作流集成

AI驱动的编码助手正成为现代软件开发的重要工具,其核心原理是通过自然语言处理技术理解开发者意图,结合项目上下文进行智能代码生成与操作。这类工具的技术价值在于显著降低项目理解成本、自动化繁琐编码任务、提升调试效率,并能通过自然语言简化Git等开发工具的操作。在实际应用场景中,它们尤其适合项目级的代码重构、复杂问题诊断以及工作流自动化。本文以Claude Code为例,深入解析其作为智能代理(Agent)的自主行动能力,包括环境配置、核心功能演练以及如何高效融入现有开发流程,帮助开发者快速掌握这一提升编码效率的

weixin_33912453的博客 356

无人机VS地面机器人:用AirSim和Gazebo玩转ROS2仿真的5个实战场景对比

本文深度对比了ROS2生态中两大仿真工具AirSim和Gazebo在无人机与地面机器人应用中的表现。通过电力巡检、仓库调度、SLAM建图等5个实战场景,分析了两者在视觉保真度、物理精度、开发效率等方面的差异,并提供了跨平台协作的实用技巧,帮助开发者根据项目需求选择合适的仿真工具。

flink9streamer的博客 900

Cline:基于项目级上下文的AI编程协作者实战指南

在软件工程领域,AI编程辅助正从基础的代码补全向深度理解与协作演进。其核心原理在于大语言模型对代码语义、项目结构和工程上下文的学习与推理。这种技术价值在于,它能将开发者从繁琐的重复性编码和复杂的上下文切换中解放出来,显著提升开发效率与代码质量。典型的应用场景包括:快速理解遗留系统、辅助进行代码重构、设计系统架构以及调试复杂问题。本文聚焦的Cline,正是这一趋势下的代表性工具。它深度集成于VS Code,通过动态收集项目相关文件,实现了精准的“项目级理解”,并支持在IDE内直接进行代码解释、生成与多文件协同

weixin_33806914的博客 472

【读论文】AI陪伴场景长期记忆(用户画像)解决方案

在长程人机交互中,如何让 AI 记住用户,不再是简单的“检索增强(RAG)”就能解决的问题。传统的向量数据库面临“信息信噪比低”、“人格不一致”以及“随着对话无限增长而崩塌”的困境。MemTensor 团队联合人大提出的Inside Out框架,从认知心理学汲取灵感,提出了一种基于PersonaTree(人格树)的显式记忆进化机制。该方案通过训练一个轻量级的(使用 DeepSeek-R1 蒸馏数据 + GRPO 强化学习),实现了将非结构化对话流实时压缩为结构化树操作(新增|更新|删除)。

kakaZhui的博客 820

ADS高级技巧:用DAC控件实现多变量参数扫描(以S参数和阻抗匹配为例)

本文深入解析了ADS软件中DAC控件的高级应用,指导用户如何利用其实现多变量参数扫描。通过构建支持多变量的MDF文件,并将其与原理图变量动态映射,可以高效完成如S参数和阻抗匹配等复杂场景的联合仿真与可视化分析,显著提升射频电路设计的效率和深度。

3a9bq4r8t2y的博客 254
上一篇: ORACLE与hugepage(二)
下一篇: monitor and assess Redo Apply performance
cotchte0421
博客等级 码龄12年 5粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值