论文解读:《DataPype:用于计算机辅助药物设计的全自动统一软件平台》
论文解读:《DataPype: A Fully Automated Unified Software Platform for Computer-Aided Drug Design》
- 1.文章概述
- 2.背景
- 2.方法
- 2.1 DataPype概述
- 2.2 数据
- 2.3 分子和蛋白质数据的处理
- 2.3.1 配体处理
- 2.3.2 蛋白质加工
- 2.4 CADD方法
- 2.5 基准研究
- 2.5.1 单个 CADD 制备软件参数的优化
- 2.5.2 DataPype 中包含的单个 CADD 软件的基准测试
- 2.6 VS评分指标
- 3.结果
- 3.1 对分子数据库输入文件进行分块的基准测试
- 3.2 配体制备方法的优化和基准测试
- 3.3 蛋白质制备方法的优化和基准
- 3.4 DataPype 中包含的单个 CADD 软件的基准测试以及与已发布数据的比较
- 4.结论
文章地址:https://pubs.acs.org/doi/10.1021/acsomega.3c05207
DOI:https://doi.org/10.1021/acsomega.3c05207
期刊:Journal of Chemical Information and Modeling
2022年影响因子/分区:5.6/二区
发布时间:2023年10月12日
1.文章概述
随着计算机辅助药物设计(computer-aided drug design,CADD)的出现,数千种分子的传统物理测试现已被靶向药物发现所取代,其中潜在的生物活性分子在物理合成之前由计算机软件预测。然而,尽管这是一个重大突破,CADD仍然面临各种限制和挑战。小分子数据的可用性日益增加,因此需要简化来自不同数据库的数据来源,并将数据处理和清理自动化为可供多个CADD软件应用程序使用的形式。有几个独立的软件包可以帮助药物设计者,每个软件包都有自己特定的应用,需要专业知识和专业知识才能实现最佳使用。这些应用程序需要自己的输入和输出文件,这对非专家用户或多学科发现团队来说是一个挑战。在这里,作者开发了一个名为DataPype的新软件平台,它围绕着这些不同的软件包。它提供了一个统一的自动化工作流程,使用专业软件搜索命中化合物。此外,可以在一个工作流程中使用多个虚拟筛选包,如果查看潜在命中化合物的不同方法都预测同一组分子,那么应该更有信心制造或购买和测试这些分子。重要的是,DataPype可以在计算机服务器上运行,从而加快了新化合物的虚拟筛选速度。在一个界面中结合对多个CADD工具的访问将增强药物发现的早期阶段,提高可用性,并启用并行计算的使用。
2.背景
最近,可以购买用于针对疾病相关靶标的生物测定的小分子数量已超过60亿(Enamine REAL),遍历远远超出了历史上类似 Lipinski 的化学空间的快乐狩猎场。
发现和开发治疗人类疾病的新药的传统方法,包括在人体临床试验之前对数千个分子进行物理制造和生物测试,已被更有针对性的方法所取代。以靶点为中心的药物发现的兴起与制药、生物技术和学术研究界对计算机辅助药物设计 (CADD) 的采用同时发展。CADD还从硬件进步(存储,CPU和GPU)和算法开发中受益匪浅。CADD软件现在可用于预测更有可能在制造之前调节参与疾病发病机制的蛋白质活性的分子,从而更快地关注有可能成为药物的分子。
基于3D蛋白质结构的可用性和靶蛋白生物学功能的先验知识,CADD分为两种主要方法:基于结构的药物设计(structure-based drug design,SBDD)和基于配体的药物设计(ligand-based drug design,LBDD)。SBDD方法利用蛋白质3D结构来设计有望与目标蛋白高亲和力结合的化合物。在没有蛋白质3D结构的情况下,LBDD是一种广泛使用的方法。在LBDD方法中利用与靶标结合所需的已知活性化合物的化学和结构特征的知识。典型的 LBDD 方法包括:基于属性的化合物过滤库、假受体建模、药效团搜索与过滤、形状匹配。基于结构的药物设计方法包括:分子动力学、对接/评分和分析;所有这些都由各种软件包组成。人工智能技术正在利用数据和计算资源的日益可用性,对CADD的各个方面产生积极影响。这些独立应用程序中的每一个都有自己的输入和输出文件以及提取最佳结果的专业知识要求,有些应用程序可能只在单个 CPU 内核上运行。对于那些可以在多个内核上运行计算的人,通常使用不同的底层协议,例如,OpenEye使用OpenMPI,而MOE使用可扩展的多处理器(scalable multiprocessor,SMP)方法在多个内核上运行虚拟筛选(virtual screening,VS)。因此,用户需要深入了解每种软件工具的文件格式、转换工具和最佳并行计算参数。对于非专家用户或参与多学科发现团队的人员,这可能是一个艰巨的挑战。随着分子的虚拟集合不断扩大,周转时间是VS实验的关键,需要并行计算方法。
用于训练CADD软件的化学和生物数据是异构的,通常内部不一致,需要大量清理。每个CADD工具都需要以特定方式预处理不同的数据和“用户专业知识”,以优化工具从数据中学习的方式。由于优化过程的手动性质,设置固有的原因是无法将该方法可重复地应用于另一个蛋白质靶标。这阻碍了“最佳实践”,并且需要为新项目再次重塑整个过程。因此,非常需要简化来自不同数据库的数据来源,并将数据处理/清理自动化为可由多个CADD软件包使用的形式。分子/蛋白质数据的正确管理将为CADD研究提供更高质量的数据集。DataPype没有明确考虑VS活动的生理背景,例如蛋白质靶标的细胞或器官位置,因此考虑筛选数据库化合物在不同pH下的质子化状态需要用户手动编辑相关的命令行。寻求发现共价配体或在位于PPI的结合口袋上工作也不太适合使用该技术进行研究。
数百个软件包提供的各种技术可用于帮助分子设计者寻找生物活性分子,它们中的每一个在药物设计的特定受限领域都是有用的。其中许多可以免费用于学术用途,但通常没有支持,易于安装,用户友好的GUI和商业软件包的文档。通常,CADD软件工具被单独或随意应用,以发现和开发新的小分子,以结合和调节参与疾病进展的蛋白质的活性。在高性能计算系统上运行用于早期药物发现的VS活动通常涉及学习开发软件或使用现有技术进行计算。与熟练使用每种技术、优化项目软件以及最大化并行计算的效用相关的学习曲线陡峭。需要专业知识和专业知识来充分利用每种技术和软件包来准备输入数据并分析输出 - 软件需要知道“药物”所需的物理和化学特性,以便它可以学习预测可能的新药。
HPC 基础架构的可用性和功能是可以确定 VS 活动可行性的重要方面。许多学术研究小组都有一个本地服务器,用于运行较小的作业和初始基准测试,此外还可以访问大学管理的HPC系统,并且经常链接到国家HPC基础设施。每个系统都是独一无二的,需要熟悉不同的排队系统,例如 SLURM,并提供不同级别的资源。运行分配通常在计算节点上受到时间限制,因此任何串行计算都可能导致违反这些限制。多种商业产品可用于与本地 HPC 资源(如 Google Cloud Computing、Azure 和 AWS)竞争。除了即用即付计算和存储之外,它们还提供自动化机器学习服务。学术团体可能难以预算和吸收此类费用。商业CADD软件开发商还为客户提供满足其计算需求的在线解决方案,例如OpenEye Orion。以及薛定谔的同等产品。这些服务提供与其他系统的有限互操作性,并且通常链接到预定的 HPC 产品。在开发CADD软件流程时,一个日益成问题的问题是构建每个应用程序通常需要复杂的化学和生物信息学库生态系统。初始安装以及后续更新和维护操作通常都会产生兼容性问题、冗余和歧义。正确使用这些库需要高水平的用户专业知识。
为了规避这些问题,已经开发了CADD平台,该平台结合了多个独立算法的功能。CADD的许多方面已被整合到各种平台中,例如生成器用户界面(GenUI),它能够集成从头分子生成技术用于 GUI 中的数据预处理、模型构建、分子生成和交互式化学空间可视化,并提供 API 以与其他工具集成。GenUI的分子生成器重点和以描述符为中心的QSAR建模是DataPype的主要区别。
另一个专注于LBDD的平台是LigAdvisor,它是一个Web服务器,能够组合应用许多基于配体的相似性方法,但本地安装版本不可用。SBDD方法也已结合在平台中,例如在八达通中对接以及VIKING中的MD和量子力学。ezCADD平台将大多数常用的CADD技术整合到一个平台中,但只能在线使用。另一个强大的开源数据分析和集成平台是KNIME,允许用户创建灵活的工作流程来集成来自各种来源的数据,执行数据预处理,运行预测建模算法并可视化结果。
作者之前已经证明,使用两个或三个互补的CADD工具会产生更高质量的命中分子。通过多种CADD方法排名靠前的化合物应该更有可能具有活性。在所描述的数据管道中,有多种工具可供顺序使用。为了简化早期药物发现过程,作者创建了一个同构的全自动并行数据流软件平台,用于执行小分子命中发现和命中到先导物开发,称为"DataPype"。它以现有的 CADD 工具为中心,以创建单个接口,以在多个 CPU 内核上分配计算。DataPype 可以应用多种开源和闭源 CADD 方法的组合——对接 (FRED)、形状(ROCS)和药效团(Align-it)平行对抗蛋白质靶标,以鉴定命中化合物并合并结果。如果用于模拟潜在命中化合物的不同抽象级别都预测同一组分子,那么应该有更高的信心来合成/购买和测试它们。重要的是,DataPype可以在计算机服务器上运行,从而加快对新化合物的搜索,并利用大数据为药物发现和开发提供信息。
2.方法
2.1 DataPype概述
DataPype 是用 Python 3.5 编码的,在 Windows 10 教育版 22H2 PC 上运行的 Ubuntu 20.04 操作系统中,用于包装不同的 CADD 工具,将分子数据库拆分为更小的块,通过 CADD 协议的不同步骤并行传递数据(分子和蛋白质),并在最后组合所有处理过的块进行分析和报告。
DataPype 使用 yml 文件作为新的 Conda 环境安装。OpenEye、Align-it 和其他应用程序是单独安装的。安装后,将创建一个名为DataPype的文件夹,其中包含所有python工作脚本和基于文本的配置.ini文件。此配置文件指定主要的 DataPype 设置,例如蛋白质靶标 ID、数据库块数、是否应制备配体、要生成的构象体数量、使用全部或子集对接、形状和药效团软件。
DataPype 有两种运行方法:基准测试模式和虚拟筛选模式。基准测试模式旨在支持利用基准数据集(如有用诱饵增强型数据库 (DUD-E))验证 CADD 软件的效率或 DUD-E+通过分析指标计算。需要注意的是,基准数据集,如DUD-E和DUD-E+,由一组有限的靶标和筛选配体组成。因此,理想情况下,在基准测试模式下生成的结果对于DataPype和其他CADD软件的所有用户来说应该是相同的,假设配置和参数设置一致。因此,基准测试模式不仅可以作为评估软件安装的工具,还可以为药物设计领域计算工作流程的标准化和验证做出贡献。VS模式筛选化学数据库以发现具有潜在治疗活性的小分子。运行计算、输入分子和目标文件的模式以及所需的参数设置以及每个参数设置的简短说明外,都在配置文件.ini文件中指定。在工作目录中定义这些参数后,DataPype 通过运行以下命令开始计算:python Master_DataPype.py Config_DataPype.ini。
Master_DataPype.py 是一个主脚本,用于调用其他脚本来执行配置文件中指定的不同任务。在VS模式下,DataPype可以从ChEMBL数据库中获取生物活性分子的活性和化合物数据。它还可以从RCSB PDB数据库下载相关的蛋白质数据。在基准测试模式下,DUD-E数据集可用,并通过计算和比较不同的基准指标来执行不同CADD方法的基准测试。
DataPype 的脚本以干净有序的方式简化输入数据和输出结果,并系统地隔离目录。根据用户的决定,一个目录中的输出文件可以自动选择,并在后续计算中用作输入文件。在每个步骤结束时,都会生成一份简明的报告,详细说明每个步骤的关键结果,即列出失败/通过该步骤的分子。所有生成的报告在DataPype执行的每个研究结束时编译成一个主报告。
2.2 数据
DataPype的基准测试模式旨在从DUD-E获取输入数据。DUD-E包含经过实验验证的活性物质和属性匹配诱饵的数据集,共有102个靶标,每个蛋白质靶标平均有224个活性配体,每个活性靶标有50个诱饵,以及每个靶标的晶体结构。
在VS模式下,DataPype可以选择使用自动化python脚本从ChEMBL数据库中获取生物活性分子的活性和化合物数据。数据的清理和处理也由脚本执行。DataPype还可以使用带有基于PDB REST的API的脚本从RCSB PDB数据库下载蛋白质数据,该脚本将UniProt蛋白质ID代码作为输入,并在PDB中搜索该靶标的相应X射线结构,根据某些标准(例如分辨率)整理和过滤结构,确认存在配体, 并以最低分辨率下载蛋白质和共结晶配体的元数据和结构。
2.3 分子和蛋白质数据的处理
2.3.1 配体处理
DataPype 中的配体处理包括配体制备和配体净化。在配体净化步骤中,所有重复分子都被去除,盐和配位键也被固定。这一步是由 OpenBabel 执行的。配体制备包括互变异构体的产生、电离和质子化态的枚举、部分电荷的计算和构象的产生。这一步主要是用OpenEye的QUACPAC和OMEGA执行的。还与RDKit和OpenBabel提供的相应功能进行了比较。
2.3.2 蛋白质加工
DataPype使用OpenEye的SPRUCE作为其制备蛋白质结构的默认工具。从PDB网站下载给定PDB ID的结构后,对结构进行质子化,构建缺失的侧链和环,枚举替代位置,并通过SPRUCE枚举和评估共结晶配体和辅因子的互变异构体。从 SPRUCE 生成的输出文件是根据软件的默认通用命名约定命名的。
2.4 CADD方法
作者整合了来自三个主要CADD子学科的快速软件,基于结构、形状和药效团的药物设计。对于对接,使用了OpenEye的FRED,对于形状,使用OpenEye的ROCS,对于药效团,使用Align-it。
2.5 基准研究
作者进行了三轮基准测试,使用DUD-E数据集严格测试DataPype的功能和性能。
2.5.1 单个 CADD 制备软件参数的优化
作者使用了DUD-E的代表性子集,该子集由靶标组成,在SPRUCE进行蛋白质制备后仅产生一个输出文件。然后在这些入围数据集中,作者进一步选择了不同蛋白质家族的7个不同数据集,其中包含不同蛋白质家族类别中最少数量的分子
2.5.2 DataPype 中包含的单个 CADD 软件的基准测试
为DataPype中包含的所有三种方法(对接,形状和药效团)选择默认软件(FRED,ROCS和Align-it)的软件,使用其优化的参数,对DUD-E数据集(所有102个目标)进行了全面验证运行。执行基准测试后获得的结果分数用于计算上述性能指标,并与先前发表的工作进行比较。
2.6 VS评分指标
AUC and EF1% scores(F1 score)。
3.结果
3.1 对分子数据库输入文件进行分块的基准测试
为了研究分块文件中分子排序对计算效率的影响及其对VS性能在计算时间方面的影响,作者进行了Smina对接。作者利用了来自 DUD-E 数据库的 fabp4 数据集,最初输入数据库文件中的分子被顺序分成块,每个块并行停靠在单独的核心上。作者发现完成计算包含更复杂分子(具有高于平均数量的可旋转键)的几个块所需的时间远远长于包含具有较少可旋转键的分子的块的计算时间。所以采用了一种新的分块文件方法,根据旋转键的数量对分子进行排序,并将它们按顺序添加到每个块中,从而根据可旋转键的数量均匀分布分子。新的文件分块方法使 Smina 分布式速度提高了约 30%。
3.2 配体制备方法的优化和基准测试
作者使用OpenEye与开源工具OpenBabel在40个块/核心上设计了执行配体净化和制备的协议。具体步骤如下:
- 规范化 SMILES 并使用 OpenBabel 固定配位键;
- 互变异构体生成 (QUACPAC Tautomers);
- 枚举电离态和质子化 (QUACPAC FixpKa);
- 计算部分电荷 (QUACPAC MolCharge);
- 构象异构体生成(由 OMEGA)
- 在使用 OpenBabel 形成重复互变异构体或原体的情况下的最终重复数据删除步骤。
将OpenBabel与OpenEye一起加入,是因为我们致力于最大限度地利用开源解决方案,同时为用户提供灵活性。每个软件包都有用于优化的参数,例如要生成的互变异构体和构象体的数量以及用于部分电荷的力场。为了研究改变这些参数对DataPype性能的影响,通过一次改变一个参数,保持其他值固定,并检查与这些制备的配体进行FRED对接后对ROC-AUC和EF1%值的影响,制备了不同的配体组。这项研究是在七个DUD-E数据集上进行的,并计算了平均结果。如果结果优于默认值,则接受更改并将其添加到新的默认协议中;否则,不会对默认协议进行任何更改。
在为基于 OpenEye 的协议优化和建立最佳参数值后,作者将每个步骤替换为 RDKit 或 OpenBabel 等效项,并确定对基准指标的影响,以确定它们是否是更好的选择。
3.3 蛋白质制备方法的优化和基准
比较了用于制备蛋白质的不同开源方法,OpenEye的SPRUCE,PDBFixer和LePro的性能。使用三个软件包制备的蛋白质对七个DUD-E数据集进行了FRED对接,并计算和比较了它们的指标。
3.4 DataPype 中包含的单个 CADD 软件的基准测试以及与已发布数据的比较
在 DataPype 中优化了不同的 CADD 制备方法后,作者使用这些 CADD 方法(FRED、ROCS 和 Align-it)对完整的 102 个 DUD-E 数据集进行了全面的基准研究。还使用了优化的配体和蛋白质制备步骤。
为了在更广泛的背景下分析这些结果,还将它们与Ericksen等人的早期研究进行了比较。在DUD-E数据集的21个目标子集上使用多种CADD方法。两项研究都使用了FRED软件,但其他软件包不同,尽管在类似的SBDD或LBDD子学科中。
DataPype中三种CADD算法的性能与Ericksen等人研究的其他软件相当或更好。在DataPype中使用FRED的富集与Ericksen论文中的富集之间存在一些差异。
4.结论
DataPype 是一个集成各种 VS 方法的平台,将输入复合数据库拆分为用户定义的块数,以便在多个 CPU 内核上进行并行计算,从而显著提高计算速度。串行化学信息学代码,如OE互变异构体和OpenBabel,当包装在DataPype平台中时,可以利用多核加速,从而提高它们在合理的时间范围内处理大型化合物数据库的适用性。DataPype是一个可扩展的python框架,因此我们将在平台中加入其他开源和免费学术使用的应用程序,并开发一个Web界面,以便更广泛地传播给研究界。
相关文章:

论文解读:《DataPype:用于计算机辅助药物设计的全自动统一软件平台》
论文解读:《DataPype: A Fully Automated Unified Software Platform for Computer-Aided Drug Design》 1.文章概述2.背景2.方法2.1 DataPype概述2.2 数据2.3 分子和蛋白质数据的处理2.3.1 配体处理2.3.2 蛋白质加工 2.4 CADD方法2.5 基准研究2.5.1 单个 CADD 制备…...
2023年Flutter教程_Flutter+Getx仿小米商城项目实战视频教程-V3版
Flutter是谷歌公司开发的一款开源、免费的UI框架,可以让我们快速的在Android和iOS上构建高质量App。它最大的特点就是跨平台、以及高性能。 目前 Flutter 已经支持 iOS、Android、Web、Windows、macOS、Linux 的跨平台开发。 GetX 是 Flutter 上的一个轻量且强大的解…...
【Spring Boot系列】- Spring Boot事务应用详解
【Spring Boot系列】- Spring Boot事务应用详解 一、事务简介 事务(Transaction)是数据库操作最基本单元,逻辑上一组操作,要么都成功。如果有一个操作失败。则事务操作都失败(回滚(Rollback)&…...

28. 使用 k8e 玩转 kube-vip with Cilium‘s Egress Gateway 特性
因为在私有云环境下,我们需要保障集群服务 APIServer地址的高可用,所以提供的方案就是使用一个 VIP 让 API Server 的流量可以负载均衡的流入集群。另外,kube-vip 还支持 Service LB,方便SVC 服务的负载均衡,结合 cilium Egress Gateway 特性可以做到集群内的容器对外访问…...
webrtc ios build signing
构建命令 $ gn gen out/ios --argstarget_os"ios" target_cpu"arm64" rtc_include_testsfalse --idexcode报错,这个错误是因为存在多个签名的问题,通过错误信息知道其中有一个是无效的(被吊销),移…...

【接口测试】Jmeter接口实战-Dubbo接口+造10W数据测试(详细)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Windows环境通…...
RabbitMQ原理(四):MQ的可靠性
消息到达MQ以后,如果MQ不能及时保存,也会导致消息丢失,所以MQ的可靠性也非常重要。 文章目录 2.1.数据持久化2.1.1.交换机持久化2.1.2.队列持久化2.1.3.消息持久化2.2.LazyQueue2.2.1.控制台配置Lazy模式2.2.2.代码配置Lazy模式2.2.3.更新已有队列为lazy模式2.1.数据持久化…...

YOLOv5算法改进(20)— 如何去写YOLOv5相关的论文(包括论文阅读+规律总结+写作方法)
前言:Hello大家好,我是小哥谈。最近一直在阅读关于YOLOv5的相关论文,读着读着我发现一条可以发论文的规律,特此简单总结一下,希望能够对同学们有所启迪!🌈 前期回顾: YOLOv5算法改进(1)— 如何去改进YOLOv5算法...

Kotlin基础——函数、变量、字符串模板、类
函数、变量、字符串模板、类 函数变量字符串模板类 函数 函数组成为 fun 函数名(参数名: 参数类型, …): 返回值{} fun max(a: Int, b: Int): Int {return if (a > b) a else b }上面称为代码块函数体,当函数体由单个表达式构成时,可简化为表达式函…...

联邦存款保险公司与银行失败和失败银行列表数据集
分享目的:了解M国数据,分析美国银行业和保险行业 美国联邦存款保险公司(FDIC)以及通常与银行失败和失败银行列表相关的一些常见信息。 美国联邦存款保险公司(FDIC):美国联邦存款保险公司是美国…...

【FPGA】IIC协议通用主机接口的设计与实现详解
一、认识IIC IIC(I2C)协议是一种串行通信协议,用于连接微控制器和外围设备。IIC协议只需要两根信号线(时钟线SCL和数据线SDA)就能完成设备之间的通信;支持多主机和多从机通信,通过设备地址区分不…...

《红蓝攻防对抗实战》八.利用OpenSSL对反弹shell流量进行加密
前文推荐: 《红蓝攻防对抗实战》一. 隧道穿透技术详解《红蓝攻防对抗实战》二.内网探测协议出网之TCP/UDP协议探测出网《红蓝攻防对抗实战》三.内网探测协议出网之HTTP/HTTPS协议探测出网《红蓝攻防对抗实战》四.内网探测协议出网之ICMP协议探测出网《红蓝攻防对抗…...

手机桌面待办事项APP推荐
每天,我们每个人都面临着繁琐的事务和任务,而手机成了我们日常生活中不可或缺的伙伴。手机上的待办事项工具像一个可靠的助手,可以帮助我们更好地记录、管理和完成任务。在手机桌面上使用的待办事项APP推荐用哪一个呢? 手机是我们…...
2023NOIP A层联测18 划分
题目大意 对于一个长度为 n n n的 01 01 01字符串 S S S,请求出将其分为至少 k k k段,将每段看成二进制数求和后的最大值以及取到这个最大值的划分方案的数量。 输出最大值模 998244353 998244353 998244353后的值和划分方案的数量模 998244353 998244…...
pc与android设备进行通信
首先:根据此博客 Android模拟器调试TCP通讯_.emulator_console_auth_token-CSDN博客 思考: 只在本机电脑中: 服务器IP地址设为为0.0.0.0,并开始监听,客户端IP地址127.0.0.1,192.168.1.114都可连接。 12…...

【网安大模型专题10.19】论文6:Java漏洞自动修复+数据集 VJBench+大语言模型、APR技术+代码转换方法+LLM和DL-APR模型的挑战与机会
How Effective Are Neural Networks for Fixing Security Vulnerabilities 写在最前面摘要贡献发现 介绍背景:漏洞修复需求和Java漏洞修复方向动机方法贡献 数据集先前的数据集和Java漏洞Benchmark数据集扩展要求数据处理工作最终数据集 VJBenchVJBench 与 Vul4J 的…...

const 和 volatile 在实例成员函数的应用
const 和 volatile 的使用范围几乎没有限制 实例成员函数的参数后面可以出现 const 或 volatile,它们都用于修饰函数隐含参数 this 指向的对象 实例函数对象的参数表后面出现 const 说明this 所指向的对象是不能修改的只读对象 但是可以修改this所指向对象的非只读类…...

比Nginx测试桩更方便,ShenYu网关的Mock插件
有时候为了方便测试,我们需要模拟 HTTP 外部接口的返回结果。通常情况下,我们可以使用 Nginx 测试桩来实现这个目的。然而,Nginx 的使用门槛较高,可能对一些初级开发和测试人员来说有一定的难度。相比之下,Apache Shen…...

IDEA: 自用主题及字体搭配推荐
文章目录 1. 字体设置推荐2. 主题推荐3. Rainbow Brackets(彩虹括号)4. 设置背景图片 下面是我的 IDEA 主题和字体,它们的搭配效果如下: 1. 字体设置推荐 在使用 IntelliJ IDEA 进行编码和开发时,一个合适的字体设置可以提高你的工作效率和舒…...

Qt中的枚举变量,Q_ENUM,Q_FLAG以及Qt中自定义结构体、枚举型做信号参数传递
Qt中的枚举变量,Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS以及其他 理论基础:一、Q_ENUM二、QMetaEnum三、Q_FLAG四、示例 Chapter1 Qt中的枚举变量,Q_ENUM,Q_FLAG,Q_NAMESPACE,Q_ENUM_NS,Q_FLAG_NS以及其他前言Q_ENUM的使用Q_FLAG的引入解决什么问题…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...

FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
前端高频面试题2:浏览器/计算机网络
本专栏相关链接 前端高频面试题1:HTML/CSS 前端高频面试题2:浏览器/计算机网络 前端高频面试题3:JavaScript 1.什么是强缓存、协商缓存? 强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命…...
【Ftrace 专栏】Ftrace 参考博文
ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...