使用扩展特征【用户示例】
摘要本文讨论了CAAFmExtExtensionManagement用例。它主要处理扩展特征的相关操作。这些扩展特征是在《定义扩展特征》1中定义的。理解本用例的先决条件是理解扩展特征的概念2。您将通过本用例学习什么本用例教授用户如何操作扩展特征。主要学习内容如下为基本特征添加、检索和删除扩展特征。从任意扩展特征检索其基本特征。理解管理扩展方法所需的最少凭据3。CAAFmExtExtensionManagement 用例CAAFmExtExtensionManagement 是 CAAFeatureModelerExt.edu 框架中的一个用例用于展示 FeatureModelerExt 框架的能力。CAAFmExtExtensionManagement 的功能该用例首先创建一个 PLM 技术表达并带有一个名为 CAAFmExtBaseFeatureCont的应用容器4。接着它实例化CAAOsmNovel的启动项。这个新实例后续称为Novel或基本特征就创建在这个新的容器CAAFmExtBaseFeatureCont中。CAAOsmNovel启动项定义在CAAOsmCatalogSU特征目录里该目录由用例5运行时生成。下面的图1 描绘了该启动项及其关联的属性。图1: CAAOsmNovel基本特征在创建 Novel 之后我们开始为其添加扩展。首先我们为其添加CAAOsmHistoricalNovel扩展。这个扩展特征在CAAOsmExt1Catalog目录中定义1。下面的图2描绘了CAAOsmHistoricalNovel启动项。它有一个类型为字符串默认值为Middle Ages的属性Epoch。图2: CAAOsmHistoricalNovel特征这个新扩展会自动实例化到应用容器中该容器的名称CAAFmExtApplication1由扩展特征的资源文件定义1。然后我们为Novel添加CAAOsmBiographicalNovel扩展。这个派生自CAAOsmHistoricalNovel的扩展特征同样定义在CAAOsmExt1Catalog目录中。图 3 描绘了CAAOsmBiographicalNovel启动项。它有一个类型为字符串、默认值为Music的属性Domain。此外它还从其父特征CAAOsmHistoricalNovel继承了字符串类型的属性 Epoch。图3: CAAOsmBiographicalNovel特征这个新扩展同样会根据其资源文件的定义1自动实例化到应用容器CAAFmExtApplication1中。最后第三个扩展CAAOsmChildrensNovel被添加到Novel特征。这个扩展特征在CAAOsmExt2Catalog特征目录中定义1。图 4 描绘了CAAOsmChildrensNovel启动项。它有一个类型为整数、默认值为 12 的属性AgeGroup。图4: CAAOsmChildrensNovel特征这个新扩展会自动实例化到应用容器中该容器的名称 CAAFmExtApplication2由扩展特征的资源文件定义1。上面的图 5 概括地展示了本用例的最终输出。图 5用例输出概览数据创建完成后我们使用不同的检索方法进行测试检索 CAAOsmChildrensNovel 扩展并使用特征外观CATFmFeatureFacade显示其AgeGroup属性的值。检索 CAAOsmBiographicalNovel扩展并使用由该扩展实现的接口显示其Epoch和Domain属性的值。从CAAOsmChildrensNovel和CAAOsmBiographicalNovel中检索基本特征Novel您将看到根据凭据的不同您可能获得也可能无法获得基本特征。接下来用例会扫描应用容器CAAFmExtApplication1中由Novel扩展特征的特征。它输出了两个扩展特征类型为CAAOsmHistoricalNovel和CAAOsmBiographicalNovel。随后它移除了这两个扩展特征。因此最终在三个扩展特征实例中我们只剩下一个。最后它在所有应用容器中扫描由Novel扩展特征的特征。计数输出为1因为我们只在应用容器CAAFmExtApplication2中有一个CAAOsmChildrensNovel扩展特征实例。如何启动 CAAFmExtExtensionManagement要启动CAAFmExtExtensionManagement您需要设置构建时环境然后编译CAAFmExtExtensionManagement及其先决条件设置运行时环境最后执行该用例。这在参考文献6中有详细描述。启动用例时执行以下命令mkrun -c CAAFmExtExtensionManagement Repository Server LoginTicket Environment其中仓库PLM1服务器服务器地址格式为Host:Port_number/RootURI登陆票据表示登录票据的字符串环境一个包含 PLMProductDS一个 PRODUCT 的自定义的 PLM 环境注意目录CAAOsmCatalogSU, CAAOsmExt1Catalog, CAAOsmExt2Catalog必须在运行时目录下找到当前工作空间 os_directory resources graphic 目录。为了让目录能从运行时目录访问它应位于CAAFeatureModelerExt.edu框架的CNext resources graphic 目录下这样在更新运行时视图mkrtv时目录将自动移动到运行时目录。在哪里可以找到 CAAFmExtExtensionManagement 代码主要的CAAFmExtExtensionManagement代码位于CAAFeatureModelerExt.edu框架的CAAFmExtModeler.m、CAAFmExtExtensionDefinition.m和CAAFmExtExtensionManagement.m模块中。这些模块位于InstallRootFolder\CAAFmExtensionManagement.m其中InstallRootFolder6是您 API 安装的根文件夹。CAAFmExtExtensionManagement.m模块主要包括以下两个文件它们构成了用例的主体CAAFmExtManageExtensionMain.cpp: 包含主程序。CAAFmExtManageExtensionUse.cpp: 包含全局程序CAAFmExtManageExtensions。它包含了所有与扩展特征相关的调用。主程序调用此程序。CAAFmExtModeler.m模块包含CAAOsmNovel晚期类型指接口在运行时才确定类型属于晚期绑定上CAAIFmExtNovel接口的实现位于CAAEFmExtNovel.cpp中。CAAFmExtensionDefinition.m模块包含CAAOsmBiographicalNovel晚期类型上CAAIFmExtBiogNovel接口的实现位于CAAEFmExtBiogNovel.cpp中。分步指南CAAFmExtExtensionManagement包含十个逻辑步骤序幕创建凭据对象创建基本特征为基本特征实例化扩展特征检索扩展并通过特征外观使用它检索扩展并通过接口使用它从扩展特征检索基本特征在应用容器内扫描基本特征的扩展特征移除扩展特征在任何应用容器中扫描基本特征的扩展特征尾声序幕连接到输入仓库并创建批处理会话的基本步骤在文章《连接到 V6 服务器》7中有详细说明。该用例创建一个新的 PLM 技术表达——这是在用例8中讨论的主题——并带有一个应用容器9。这个容器通过一个CATFmContainerFacade实例类 MyContFacade 来处理。这个外观外观模式是一种经典的设计模式用于给复杂子系统提供简单的访问入口是使用下面详述的凭据创建的。创建凭据对象要实例化一个特征客户端应拥有定义该特征的目录。实例化的特征包括CAAOsmNovel基本特征定义在CAAOsmCatalogSU目录中。CAAOsmHistoricalNovel和CAAOsmBiographicalNovel这两个扩展特征定义在CAAOsmExt1Catalog中其客户端 ID 是CAAOsmClientId1。CAAOsmChildrensNovel一个扩展特征定义在CAAOsmExt2Catalog目录中其客户端 ID 是CAAOsmClientId2。创建了一个唯一的凭据对象MyCredentials它是CATFmCredentials类的一个实例以满足用例的所有需求。CATFmCredentials MyCredentials;...接着声明我们是一个基于特征建模器基础设施的应用程序rcMyCredentials.RegisterAsApplicationBasedOn(CATFmFeatureModelerID,CAAFmExtFeatureModeler)最后声明我们是不同目录的所有者CATUnicodeStringclientId(CAAOsmClientId);CATUnicodeStringiCatalogName(CAAOsmCatalogSU);MyCredentials.RegisterAsCatalogOwner(iCatalogName,clientId);...CATUnicodeStringclientId1(CAAOsmClientId1);CATUnicodeStringiCatalogName1(CAAOsmExt1Catalog);MyCredentials.RegisterAsCatalogOwner(iCatalogName1,clientId1);...CATUnicodeStringclientId2(CAAOsmClientId2);CATUnicodeStringiCatalogName2(CAAOsmExt2Catalog);MyCredentials.RegisterAsCatalogOwner(iCatalogName2,clientId2);CATFmCredentials类的RegisterAsCatalogOwner方法以追加方式添加客户端凭据授权客户端访问不同目录中定义的启动项。通过研究技术文章《理解凭据》3用户将对凭据有更好的理解。创建基本特征CATFmStartUpFacadeMyStartUpFacade(MyCredential,CAAOsmNovel);CATFmAttributeValue AttrValue;CATFmFeatureFacadeFeatFacadeOnNovelInstBaseFeat(MyCredential);rcMyStartUpFacade.InstantiateIn(MyContFacade,FeatFacadeOnNovelInstBaseFeat);FeatFacadeOnNovelInstBaseFeat是 Novel 特征的外观它新近在CAAFmExtBaseFeatureCont容器由MyContFacade处理中实例化。注意与新外观关联的凭据MyCredential它将允许我们内部访问基本特征以便添加三个扩展特征。实例化的步骤在用例《创建特征》10中有详细说明。实例化扩展特征我们开始为Novel特征基本特征实例化扩展特征。绑定到Novel特征的特征外观是上面刚刚创建的FeatFacadeOnNovelInstBaseFeat。在我们的用例中与基本特征关联的凭据包含处理基本特征目录和扩展目录的权限。但通常您只拥有扩展目录的凭据。对于任何类型的基本特征这都足以添加扩展。因此基本特征的外观必须绑定到一个至少声明您是扩展目录所有者的凭据。我们从CAAOsmHistoricalNovel扩展开始。CATStringstrHistoricExtNovel(CAAOsmHistoricalNovel);rcFeatFacadeOnNovelInstBaseFeat.AddExtension(strHistoricNovel,AttrValue);CATFmFeatureFacadeFeatFacadeOnHistNovelExtn(MyCredential,AttrValue);CATFmFeatureFacade类的AddExtension方法为基本特征实例化一个扩展特征。参数包括strHistoricExtNovel: CATString类型表示扩展特征的名称。FeatFacadeOnHistNovelExtn: 新创建的扩展特征的CATFmFeatureFacade类型。注意此外观没有凭据。它对AddExtension方法的结果没有影响。是基本特征的外观FeatFacadeOnNovelInstBaseFeat必须至少包含访问扩展目录的权限。然后我们对CAAOsmBiographicalNovel扩展做同样的事情。CATStringstrBiographicalExtNovel(CAAOsmBiographicalNovel);rcFeatFacadeOnNovelInstBaseFeat.AddExtension(strBiographicalExtNovel,AttrValue);CATFmFeatureFacadeFeatFacadeOnBiogNovelExtn(MyCredential,AttrValue);最后是CAAOsmChildrensNovel扩展CATStringstrChildrensExtNovel(CAAOsmChildrensNovel);rcFeatFacadeOnNovelInstBaseFeat.AddExtension(strChildrensExtNovel,AttrValue);CATFmFeatureFacadeFeatFacadeOnChildrensNovelExtn(MyCredential,AttrValue);在结束此步骤之前我们应该补充四点能够添加这三个扩展特征是因为用于创建FeatFacadeOnNovelInstBaseFeat的凭据包含处理每个扩展特征目录的权限。与任何类型的特征一样扩展特征也是在应用容器中实例化的。但您无需在代码中提供容器名称因为特征建模器引擎会从与扩展特征关联的资源文件中检索此信息。包含应用容器的流是从基本特征推导出来的。实际上基本特征及其扩展必须在同一个流中4。当应用容器不存在时CAAOsmHistoricalNovel和CAAOsmChildrensNovel就是这种情况特征建模器会自动创建它。返回的新扩展特征的外观是没有凭据的。这是用例的选择。检索扩展并通过特征外观使用它此步骤包括从基本特征中检索扩展CAAOsmChildrensNovel以便通过特征外观来操作它。rcFeatFacadeOnNovelInstBaseFeat.GetExtension(strChildrensExtNovel,AttrValue);CATFmFeatureFacadeFeatFacadeOnChildrenNovelExt(MyCredential,AttrValue);CATFmFeatureFacade的GetExtension方法返回一个扩展特征。参数包括strChildrensExtNovel:CATString类型表示扩展特征的名称。FeatFacadeOnChildrenNovelExt:CATFmFeatureFacade类型表示CAAOsmChildrensNovel扩展特征输出之上的外观。GetExtension成功是因为基本特征的外观FeatFacadeOnNovelInstBaseFeat至少包含处理定义了CAAOsmChildrensNovel启动项的目录的权限。由于FeatFacadeOnChildrenNovelExt是使用MyCredential作为凭据创建的因此我们可以内部访问扩展特征MyCredential包含处理CAAOsmChildrensNovel特征目录的权限。CATFmAttributeNameAgeGroupAsName(AgeGroup);CATFmAttributeValue AgeGroupAsValue;rcFeatFacadeOnChildrenNovelExt.GetValue(AgeGroupAsName,AgeGroupAsValue);if(FAILED(rc))return1;intAgeGroup0;AgeGroupAsValue.GetInteger(AgeGroup);检索扩展并通过接口使用它此步骤包括从基本特征中检索扩展特征CAAOsmBiographicalNovel以便通过由该扩展特征实现的接口来操作它。rcFeatFacadeOnNovelInstBaseFeat.GetExtension(strBiographicalExtNovel,AttrValue);CATFmFeatureFacadeFeatFacadeOnBiogNovelExt(MyCredential,AttrValue);首先我们按照与上一步相似的方式检索CAAOsmBiographicalNovel特征将其作为FeatFacadeOnBiogNovelExtCATFmFeatureFacade类型。但请注意这里的外观是在没有凭据的情况下创建的。我们将使用扩展特征指针这是您总是可以自由地从外观中检索的数据来工作。我们的扩展特征通过CAAIFmExtBiogNovel接口公开其服务。因此下一步是检索此接口然后调用其服务。CAAIFmExtBiogNovel*piBiogNovelOnFeatExtNULL;rcFeatFacadeOnBiogNovelExt.QueryInterfaceOnFeature(IID_CAAIFmExtBiogNovel,(void**)piBiogNovelOnFeatExt);CATFmFeatureFacade类的QueryInterfaceOnFeature调用返回用户选择的、底层特征之上的接口类型。在当前情况下我们检索piBiogNovelOnFeatExt这是我们扩展特征上的一个CAAIFmExtBiogNovel接口指针。我们接着调用由我们扩展特征公开的各种服务。CATUnicodeStringepoch();rcpiBiogNovelOnFeatExt-GetEpoch(epoch);epochRenaissance;rcpiBiogNovelOnFeatExt-SetEpoch(epoch);CAAIFmExtBiogNovel接口的GetEpoch()方法简单地检索我们CAAOsmBiographicalNovel特征的Epoch属性值而SetEpoch()方法则设置Epoch属性值。类似地我们也检索并评估Domain属性。检索基本特征目标是从扩展特征检索其基本特征Novel。首先我们尝试从上一步“检索扩展并通过接口使用它”中检索到的CAAOsmBiographicalNovel扩展的外观FeatFacadeOnBiogNovelExt进行检索。CATFmAttributeValue TheBaseFeatureAsValue;rcFeatFacadeOnBiogNovelExt.GetBaseFeature(TheBaseFeatureAsValue);if(SUCCEEDED(rc))return1;GetBaseFeature失败因为FeatFacadeOnBiogNovelExt没有凭据。然后我们尝试从上一步“检索扩展并通过特征外观使用它”中检索到的CAAOsmChildrensNovel扩展的外观FeatFacadeOnChildrenNovelExt进行检索。TheBaseFeatureAsValue.Clear();rcFeatFacadeOnChildrenNovelExt.GetBaseFeature(TheBaseFeatureAsValue);这种情况下的GetBaseFeature成功了因为FeatFacadeOnChildrenNovelExt包含了作为定义CAAOsmChildrensNovel启动项的目录所有者的凭据。添加了Clear方法以确保TheBaseFeatureAsValue不包含底层特征不应该是这种情况因为之前的GetBaseFeature失败了。CATBaseUnknown_var MyBaseFeatureAsFeatureTheBaseFeatureAsValue.GetFeature();CAAIFmExtNovel*pBaseFeatureAsIFmExtNovelNULL;rcMyBaseFeatureAsFeature-QueryInterface(IID_CAAIFmExtNovel,(void**)pBaseFeatureAsIFmExtNovel);最后一部分只是确认检索到的基本特征是CAAOsmNovel特征。从包含基本特征的外观MyBaseFeatureAsFeature中我们获得底层特征pBaseFeatureAsIFmExtNovel然后我们在由 CAAOsmNovel实现的特定接口CAAIFmExtNovel上调用查询接口。在应用容器内扫描基本特征的扩展特征接下来我们检索基本特征CAAOsmNovel的扩展这些扩展存在于应用容器CAAOsmApplication1内。我们期望有2个CAAOsmBiographicalNovel.1和CAAOsmHistoricalNovel.1。CATFmFeatureIterator oExtensionsIterator;CATStringCAAFmExtApplication1ID(CAAFmExtApplication1);rcFeatFacadeOnNovelInstBaseFeat.ScanExtensionsInContainer(CAAFmExtApplication1ID,oExtensionsIterator);在基本特征FeatFacadeOnNovelInstBaseFeat上调用的CATFmFeatureFacade类的ScanExtensionsInContainer方法检索其在提供的标识符对应的应用容器内的扩展特征。返回结果是一个特征迭代器oExtensionsIteratorCATFmFeatureIterator类型。CATFmFeatureIterator的Next方法允许我们扫描迭代器以检索扩展特征。intiCountOfExtns0;CATFmFeatureFacadeFeatFacadeOnExtn(MyCredential);rcoExtensionsIterator.Next(FeatFacadeOnExtn);while(SUCCEEDED(rc)){CATUnicodeString oDisplayName;rcFeatFacadeOnExtn.GetDisplayName(oDisplayName);if(SUCCEEDED(rc)){iCountOfExtns;rcoExtensionsIterator.Next(FeatFacadeOnExtn);...}if(2!iCountOfExtns)return1;CATFmFeatureFacade的GetDisplayName方法检索扩展特征的显示名称 [11]。关于凭据ScanExtensionsInContainer总是成功的但返回的扩展可能或多或少。这里由于FeatFacadeOnNovelInstBaseFeat基本特征的凭据至少包含处理基本特征的权限您将获得此基本特征的所有扩展。如果凭据没有处理基本特征的权限迭代器只返回您被授权处理的扩展3。GetDisplayName成功是因为FeatFacadeOnExtn包含处理我们用例中任何特征的权限。移除扩展特征我们有选择地移除实例化在应用容器CAAOsmApplication1中的扩展特征。CATFmFeatureIterator ListExtensionToDelete;rcFeatFacadeOnNovelInstBaseFeat.ScanExtensionsInContainer(CAAFmExtApplication1ID,ListExtensionToDelete);...CATFmFeatureFacade FeatFacadeOnExtensionToDelete;while(SUCCEEDED(rc)SUCCEEDED(ListExtensionToDelete.Next(FeatFacadeOnExtensionToDelete))){rcFeatFacadeOnNovelInstBaseFeat.RemoveExtension(FeatFacadeOnExtensionToDelete.GetFeatureAsValue());}首先我们从基本特征获得扩展列表我们可以重用上一步的迭代器。然后对于列表中的每个扩展我们将其删除。这里您可以看到用于从列表中检索每个扩展的外观FeatFacadeOnExtensionToDelete是没有凭据的。这是无用的因为FeatFacadeOnNovelInstBaseFeat包含基本特征的凭据。因此无论扩展外观的凭据如何RemoveExtension都会成功。这将移除类型分别为CAAOsmHistoricalNovel和CAAOsmBiographical的两个扩展特征。请记住关于凭据如果您只是扩展启动项的所有者当在基本特征上调用RemoveExtension时您只能删除该基本特征上的此类扩展。至少有一个外观基本特征或扩展特征必须包含正确的凭据。在任何应用容器中扫描基本特征的扩展特征接下来我们检索基本特征Novel的扩展。我们总共实例化了三个扩展特征。其中我们在前面的步骤中移除了应用容器CAAFmExtApplication1内的两个扩展特征。因此我们现在只剩下一个类型为CAAOsmChildrensNovel的扩展特征位于应用容器CAAFmExtApplication2内。CATFmFeatureIterator oExtensionsIterator1;rcFeatFacadeOnNovelInstBaseFeat.ScanExtensions(oExtensionsIterator1);在基本特征FeatFacadeOnNovelInstBaseFeat上调用的 CATFmFeatureFacade类的ScanExtensions方法检索其所有扩展特征。返回结果是一个特征迭代器oExtensionsIterator1CATFmFeatureIterator类型。CATFmFeatureIterator的Next方法允许我们扫描迭代器以检索扩展特征。iCountOfExtns0;CATFmFeatureFacade FeatFacadeOnExtn1;rcoExtensionsIterator1.Next(FeatFacadeOnExtn1);while(SUCCEEDED(rc)){CATUnicodeString oDisplayName1;rcFeatFacadeOnExtn1.GetDisplayName(oDisplayName1);iCountOfExtns;rcoExtensionsIterator1.Next(FeatFacadeOnExtn1);}if(1!iCountOfExtns)return1;CATFmFeatureFacade的GetDisplayName方法检索扩展特征的名称。我们确认扩展特征的数量是1。关于凭据ScanExtensions总是成功的但返回的扩展可能或多或少。这里由于FeatFacadeOnNovelInstBaseFeat基本特征的凭据至少包含处理基本特征的权限您将获得此基本特征的所有扩展。如果凭据没有处理基本特征的权限迭代器只返回您被授权处理的扩展。GetDisplayName成功是因为FeatFacadeOnExtn包含处理我们用例中任何特征的权限。尾声有关保存会话时需要经历的步骤的详细描述请参阅参考文献7。简而言之本用例中调用的FeatureModelerExt框架内CATFmFeatureFacade类的CAA服务如下AddExtension向基本特征添加扩展。GetExtension从基本特征检索扩展扩展 ID 作为输入。ScanExtensionsInContainer在指定容器内扫描基本特征的扩展。RemoveExtensionsInContainer在指定容器内移除基本特征的扩展。ScanExtensions 扫描基本特征的所有扩展。版本历史版本 1 [2001年2月]: 文档创建版本 2 [2003年9月]: 更新以添加指向《在应用容器中创建特征》文章的链接版本 3 [2005年2月]: 文档更新以集成新的扩展特征API版本 4 [2007年7月]: 集成 CATOsmSUHandler版本 5 [2009年12月]: 迁移到外观认证机制定义扩展特征 ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎理解扩展特征 ↩︎理解凭据 ↩︎ ↩︎ ↩︎理解应用容器 ↩︎ ↩︎在目录中创建启动项 ↩︎构建和启动用例 ↩︎ ↩︎连接到 V6 服务器 ↩︎ ↩︎创建 PLM 技术表达 ↩︎使用应用容器 ↩︎创建特征 ↩︎

相关新闻

理解扩展特征【技术文档】

理解扩展特征【技术文档】

摘要 本文详细介绍了将一个特征(称为基础特征)通过另一个特征(称为扩展特征)进行扩展的机制。 概念 一张解释概念的图片: 图.1 概念 基础特征可以是任何类型的特征,可以是达索系统的原始特征也可以是用户…

2026/7/5 22:15:46 阅读更多 →
云智慧Cloudwise X1 轮足机器人重磅发布:跨楼层全自动巡检,重塑数据中心运维范式

云智慧Cloudwise X1 轮足机器人重磅发布:跨楼层全自动巡检,重塑数据中心运维范式

随着算力需求激增,数据中心规模快速扩张,传统人工巡检正面临漏检率高、人才流动快、合规追溯难、老旧机房改造成本高等系统性瓶颈。从纸质记录到手持PDA,再到自主巡检机器人,运维方式的智能化演进,已成为行业共识。当轮…

2026/7/3 18:36:32 阅读更多 →
60天自我松绑:一个“被困住”成长者的破局宣言

60天自我松绑:一个“被困住”成长者的破局宣言

困局中的觉醒凌晨三点的屏幕冷光,映照出空洞的眼神。拇指机械滑动,从短视频跳转到“深度好文”,信息潮水般涌来,退去后却留下更深的虚无。四小时后,闹钟将唤醒我奔赴那重复千次的工位。内心尖叫着“这不是我想要的生活…

2026/7/3 18:36:34 阅读更多 →

最新新闻

Paperxie 聊毕业论文 AI 写作|学长学姐实测,一步一步写学位论文真的省心

Paperxie 聊毕业论文 AI 写作|学长学姐实测,一步一步写学位论文真的省心

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图毕业论文 - PaperXie智能写作PaperXieAi论文智能生成软件,10分钟生成万字毕业论文、期刊论文、文献综述、PPT,Aigc查重、降重报告、文献资料。只需一个标题,从开…

2026/7/7 0:29:34 阅读更多 →
如何轻松为任何游戏注入自定义插件:终极ASI加载器完整指南

如何轻松为任何游戏注入自定义插件:终极ASI加载器完整指南

如何轻松为任何游戏注入自定义插件:终极ASI加载器完整指南 【免费下载链接】Ultimate-ASI-Loader The Ultimate ASI Loader is a proxy DLL that loads custom .asi libraries into any game process. 项目地址: https://gitcode.com/gh_mirrors/ul/Ultimate-ASI-…

2026/7/7 0:29:34 阅读更多 →
Monorepo 工程化实战:Turborepo + pnpm 的全栈项目组织与构建缓存

Monorepo 工程化实战:Turborepo + pnpm 的全栈项目组织与构建缓存

Monorepo 工程化实战:Turborepo pnpm 的全栈项目组织与构建缓存 一、多仓库协作的效率黑洞:当你维护 5 个 npm 包时,改一行代码要跑几个 CI 全栈项目的常见组织方式是:前端一个仓库,后端一个仓库,共享类型…

2026/7/7 0:25:32 阅读更多 →
MediaCrawler:5分钟上手,一站式采集小红书、抖音、B站等主流平台数据

MediaCrawler:5分钟上手,一站式采集小红书、抖音、B站等主流平台数据

MediaCrawler:5分钟上手,一站式采集小红书、抖音、B站等主流平台数据 【免费下载链接】MediaCrawler-new 项目地址: https://gitcode.com/GitHub_Trending/me/MediaCrawler-new 你是否在为新媒体数据分析而烦恼?想要批量获取小红书、…

2026/7/7 0:23:31 阅读更多 →
免疫平衡的“黄金四象限“:IFN-γ/IL-17/IL-4/TGF-β1 Panel构建Th检测体系

免疫平衡的“黄金四象限“:IFN-γ/IL-17/IL-4/TGF-β1 Panel构建Th检测体系

【行业观察 | 生物标志物高通量检测新进展】Adaptive immunity is a balancing act. 这句话在教科书里躺了几十年,但直到今天,大多数实验室仍然在用"单点测量"的方式去逼近这个动态平衡。测了IFN-γ,不知道IL-4的走向;定…

2026/7/7 0:21:30 阅读更多 →
YOLOv8船舶检测实战:从算法原理到海事场景部署

YOLOv8船舶检测实战:从算法原理到海事场景部署

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 在船舶运输、港口管理和海事安全领域,如何高效、准确地识别和分类航道中的各类船舶,一直是行业智能化升级的核…

2026/7/7 0:21:30 阅读更多 →

日新闻

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

鸿蒙新特性:图片画廊与轮播导航——构建沉浸式图片浏览体验

图片浏览是移动应用中最高频的场景之一。从社交应用的照片流到电商平台的商品图集,从旅游应用的景点相册到摄影作品展示——用户对图片浏览的体验要求不断提高:流畅的切换动画、直观的缩略图导航、便捷的收藏操作、自动播放模式。HarmonyOS NEXT ArkUI 虽…

2026/7/7 0:05:16 阅读更多 →
24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V DC-DC降压芯片PW2312B/PW2815,SOT23-6到SOP8-EP方案对比

24V稳压芯片完整选型指南 PW8600 PW75XX PW2815 PW2312B LDODC/DC全方案 一、24V稳压方案概述 24V直流电源在工业自动化、门禁系统、电梯控制、汽车电子、LED驱动、监控设备等场景中应用极广,是最常见的中压直流母线电压。要将24V母线稳定降压至下游MCU、传感器…

2026/7/7 0:05:16 阅读更多 →
RAG+知识图谱混合检索与Graph RAG核心对比

RAG+知识图谱混合检索与Graph RAG核心对比

做企业RAG落地的团队,往往容易卡在一容易踩坑的选型难题: 当需求单纯靠向量RAG搞不定、单纯靠知识图谱也搞不定,必须同时依赖「文本语义理解 实体关系推理」时,到底是做「向量图谱混合检索」就够了,还是必须上「Grap…

2026/7/7 0:07:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻