案例解析:基于量子计算的分子对接-QDOCK(Quantum Docking)

分子对接(Moleculardocking)在药物发现中具有重要意义,但对接的计算速度和准确率始终难以平衡,其巨大解搜索空间对传统计算机来说异常艰巨。
本文通过引入网格点匹配(GPM, Grind point matching)和特征原子匹配(FAM, Feature atom matching)两种方法,将分子对接问题中的采样过程编码为二次无约束二进制优化(QUBO)问题来加速分子对接,使其能够通过量子计算机(如相干伊辛机CIM)进行求解。结果表明,GPM的采样能力接近Glide SP(一种进行广泛搜索的方法),并且据估计,同等问题的求解在CIM硬件上要比在传统计算机上快至少1000倍。该方法有望在未来加速小分子和多肽的药物虚拟筛选。

图1 基于光量子计算机的分子对接示意图图1 基于光量子计算机的分子对接示意图

一、背景介绍

分子对接是一种广泛应用于虚拟筛选、先导化合物优化和机制研究的计算技术,其核心是通过优化配体与蛋白质的结合姿态和自由能 ( Δ G B i n d ) (\Delta G_{Bind}) (ΔGBind)确定结合模式。

然而,该问题的NP-hard特性导致精确求解需枚举大量构象,现有方法(如模拟退火、分步枚举、深度学习模型和GPU并行计算)仍难以应对十亿级数据库(如ZINC)的筛选需求。量子计算机(如量子退火器和CIM)为解决NP-hard问题提供了新途径,其通过将问题映射为QUBO模型并利用量子比特的相互作用实现高效求解。

二、建模思路

2.1 问题表述

分子对接的采样过程是寻找到一个配体分子和靶蛋白结合的具体构象,用数学形式可表示成以下模型:假设一个配体由 n n n个原子组成 ( a 1 , a 2 , a 3 , … , a n ) (a_1,a_2,a_3,\dots,a_n) (a1,a2,a3,,an),第 i i i个原子 a i a_i ai的坐标表示为 r i r_i ri,则一个分子对接任务就是最小化以下目标函数:
Δ G Bind ( a 1 , a 2 , … , a n , r 1 , r 2 , … , r n ) r i ∈ D \Delta G_{\text{Bind}}(a_1, a_2, \dots, a_n, \mathbf{r}_1, \mathbf{r}_2, \dots, \mathbf{r}_n) \mathbf{r}_i \in \mathbf{D} ΔGBind(a1,a2,,an,r1,r2,,rn)riD D D D代表对接定义的docking box限定的对接空间,以上这个公式也被称为“能量函数”。

2.2 QUBO建模

2.1中描述的模型是一个经典的优化问题,对于传统的优化算法难以在短时间内得到一个较优的解,本文中提出一种建模思路,首先将 D D D等距离散化成 N N N个格点 ( g 1 , g 2 , g 3 , … , g n ) (g_1,g_2,g_3,\dots,g_n) (g1,g2,g3,,gn),如果原子 a i a_i ai匹配到格点 g s i g_{s_i} gsi上, a i a_i ai a j a_j aj的距离是 d i j d_{ij} dij g s i g_{s_i} gsi g s j g_{s_j} gsj的距离是 D s i s j D_{s_is_j} Dsisj,此时上面的函数可以表示为:
Δ G Bind ( a 1 , a 2 , … , a n , r 1 , r 2 , … , r n ) ≈ Δ G Bind ′ ( a 1 , a 2 , … , a n , g s 1 , g s 2 , … , g s n ) = ∑ i = 1 n w a i g s i s i = 1 , 2 , … , N s . t . ∣ d i j − D s i s j ∣ ≤ c dist \begin{aligned} &\Delta G_{\text{Bind}}(a_1, a_2, \dots, a_n, \mathbf{r}_1, \mathbf{r}_2, \dots, \mathbf{r}_n) \approx \Delta G'_{\text{Bind}} \\ &(a_1, a_2, \dots, a_n, g_{s_1}, g_{s_2}, \dots, g_{s_n}) = \sum_{i=1}^{n} w_{a_i g_{s_i}} \\ &s_i = 1, 2, \dots, N \quad s.t. \ |d_{ij} - D_{s_i s_j}| \leq c_{\text{dist}} \end{aligned} ΔGBind(a1,a2,,an,r1,r2,,rn)ΔGBind(a1,a2,,an,gs1,gs2,,gsn)=i=1nwaigsisi=1,2,,Ns.t. dijDsisjcdist 这里的 w a i g s i w_{a_i g_{s_i}} waigsi就是原子 a i a_i ai放在格点 g s i g_{s_i} gsi上的合适度(fitness),后面会介绍合适度怎么计算的,可以把这一项看成是 Δ G B i n d \Delta G_{Bind} ΔGBind的分子间的约束项。此外,还需要增加一些约束项,即在优化过程中须保持分子本身的结构,即分子内的约束项。

此时上面的式子就可以转化成QUBO模型, x i j x_{ij} xij是一组二值变量,代表了 a i a_i ai g j g_j gj是否匹配(0代表不匹配,1代表匹配),所以上面的式子就可以写成二次项形式,其中 c d i s t c_{dist} cdist为距离阈值,用于添加空间几何约束:
Δ G Bind ′ ( a 1 , a 2 , … , a n , g s 1 , g s 2 , … , g s n ) = Δ G Bind ′ ( a 1 , a 2 , … , a n , g 1 , g 2 , … , g N , x 11 , x 12 , … , x n N ) = ∑ i = 1 n ∑ j = 1 N w a i g j x i j 2 x i j = { 1 , a i matches  g j 0 , a i does not match  g j s . t . ∣ d i k − D j l ∣ ≤ c dist and  ∑ i = 1 n x i j ≤ 1 \begin{aligned} &\Delta G'_{\text{Bind}}(a_1, a_2, \dots, a_n, g_{s_1}, g_{s_2}, \dots, g_{s_n}) \\ &= \Delta G'_{\text{Bind}}(a_1, a_2, \dots, a_n, g_1, g_2, \dots, g_N, x_{11}, x_{12}, \dots, x_{nN}) \\ &= \sum_{i=1}^{n}\sum_{j=1}^{N} w_{a_i g_j} x_{ij}^2 \\ &x_{ij} = \begin{cases} 1, & a_i \text{ matches } g_j \\ 0, & a_i \text{ does not match } g_j \end{cases} \\ &s.t. \ |d_{ik} - D_{jl}| \leq c_{\text{dist}} \text{ and } \sum_{i=1}^{n} x_{ij} \leq 1 \end{aligned} ΔGBind(a1,a2,,an,gs1,gs2,,gsn)=ΔGBind(a1,a2,,an,g1,g2,,gN,x11,x12,,xnN)=i=1nj=1Nwaigjxij2xij={1,0,ai matches gjai does not match gjs.t. dikDjlcdist and i=1nxij1

加入惩罚项

但是,在优化上面这个式子时,有两点约束条件要考虑:一是保持配体形状;二是一个格点只能匹配一个原子。因此,可以将约束也写成二次多项式形式,二者的惩罚项系数分别记为 K d i s t K_{dist} Kdist(保持配体形状)和 K m o n o K_{mono} Kmono(原子和格点的一一对应),如下所示:
Δ G Bind ′ ′ ( a 1 , a 2 , … , a n , g 1 , g 2 , … , g N , x 11 , x 12 , … , x n N ) = ∑ i = 1 n ∑ j = 1 N w a i g j x i j 2 + K dist ∑ i = 1 n ∑ j = 1 N ∑ k = 1 n ∑ l = j + 1 N u i j k l x i j x k l + K mono ∑ i = 1 n ∑ j = 1 N ∑ k = 1 n ∑ l = j + 1 N v i j k l x i j x k l = ( x 11 x 12 … x n N ) T ( w a 1 g 1 K dist u 1112 + K mono v 1112 ⋯ K dist u 11 n N + K mono v 11 n N 0 w a 1 g 2 ⋯ K dist u 12 n N + K mono v 12 n N ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ w a n g N ) ( x 11 x 12 … x n N ) u i j k l = { 1 , ∣ d i k − D j l ∣ > c dist 0 , ∣ d i k − D j l ∣ > c dist v i j k l = { 1 , j = l and  i ≠ k 0 , otherwise x i j = { 1 , a i matches  g j 0 , a i does not match  g j \begin{aligned} &\Delta G''_{\text{Bind}}(a_1, a_2, \dots, a_n, g_1, g_2, \dots, g_N, x_{11}, x_{12}, \dots, x_{nN}) \\ &= \sum_{i=1}^{n}\sum_{j=1}^{N} w_{a_i g_j} x_{ij}^2 + K_{\text{dist}} \sum_{i=1}^{n}\sum_{j=1}^{N}\sum_{k=1}^{n}\sum_{l=j + 1}^{N} u_{ijkl}x_{ij}x_{kl} \\ & \quad + K_{\text{mono}} \sum_{i=1}^{n}\sum_{j=1}^{N}\sum_{k=1}^{n}\sum_{l=j + 1}^{N} v_{ijkl}x_{ij}x_{kl} \\ &= \begin{pmatrix} x_{11} \\ x_{12} \\ \dots \\ x_{nN} \end{pmatrix}^T \begin{pmatrix} w_{a_1g_1} & K_{\text{dist}}u_{1112} + K_{\text{mono}}v_{1112} & \cdots & K_{\text{dist}}u_{11nN} + K_{\text{mono}}v_{11nN} \\ 0 & w_{a_1g_2} & \cdots & K_{\text{dist}}u_{12nN} + K_{\text{mono}}v_{12nN} \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & w_{a_ng_N} \end{pmatrix} \begin{pmatrix} x_{11} \\ x_{12} \\ \dots \\ x_{nN} \end{pmatrix} \\ &u_{ijkl} = \begin{cases} 1, & |d_{ik} - D_{jl}| > c_{\text{dist}} \\ 0, & |d_{ik} - D_{jl}| > c_{\text{dist}} \end{cases} \quad v_{ijkl} = \begin{cases} 1, & j = l \text{ and } i \neq k \\ 0, & \text{otherwise} \end{cases} \\ &x_{ij} = \begin{cases} 1, & a_i \text{ matches } g_j \\ 0, & a_i \text{ does not match } g_j \end{cases} \end{aligned} ΔGBind′′(a1,a2,,an,g1,g2,,gN,x11,x12,,xnN)=i=1nj=1Nwaigjxij2+Kdisti=1nj=1Nk=1nl=j+1Nuijklxijxkl+Kmonoi=1nj=1Nk=1nl=j+1Nvijklxijxkl= x11x12xnN T wa1g100Kdistu1112+Kmonov1112wa1g20Kdistu11nN+Kmonov11nNKdistu12nN+Kmonov12nNwangN x11x12xnN uijkl={1,0,dikDjl>cdistdikDjl>cdistvijkl={1,0,j=l and i=kotherwisexij={1,0,ai matches gjai does not match gj 接下来,就可以使用量子算法对这个QUBO model进行求解,这样就可以得到在约束条件下,使得能量最低状态的原子与网格匹配的状态,即QUBO模型的解,该解可用于得到最终的采样构象。

2.3 获得配体的对接构象(docking pose)

得到原子在网格中的位置后,就可以计算RMSD (Root Mean Square Deviation),在这里只考虑刚性对接的情况,计算Kabsch RMSD旋转矩阵:
K rot = arg ⁡ min ⁡ K [ K ( r 1 st r 2 st … r n st ) + b − ( R s 1 R s 2 … R s n ) ] , where  b = ∑ i = 1 n R s i n − ∑ i = 1 n R i st n \begin{aligned} K_{\text{rot}} &= \arg \min_{K} \left[ K \begin{pmatrix} \mathbf{r}_1^{\text{st}} \\ \mathbf{r}_2^{\text{st}} \\ \dots \\ \mathbf{r}_n^{\text{st}} \end{pmatrix} + \mathbf{b} - \begin{pmatrix} \mathbf{R}_{s_1} \\ \mathbf{R}_{s_2} \\ \dots \\ \mathbf{R}_{s_n} \end{pmatrix} \right], \text{ where } \mathbf{b} \\ &= \frac{\sum_{i=1}^{n} \mathbf{R}_{s_i}}{n} - \frac{\sum_{i=1}^{n} \mathbf{R}_{i}^{\text{st}}}{n} \end{aligned} Krot=argKmin K r1str2strnst +b Rs1Rs2Rsn , where b=ni=1nRsini=1nRist 最终的对接姿态可以通过如下公式计算(这一过程可以通过Prody Python包实现):
( r 1 dock r 2 dock ⋯ r n dock ) = K rot ( r 1 st r 2 st ⋯ r n st ) + b \begin{pmatrix} \mathbf{r}_1^{\text{dock}} \\ \mathbf{r}_2^{\text{dock}} \\ \cdots \\ \mathbf{r}_n^{\text{dock}} \end{pmatrix} = K_{\text{rot}} \begin{pmatrix} \mathbf{r}_1^{\text{st}} \\ \mathbf{r}_2^{\text{st}} \\ \cdots \\ \mathbf{r}_n^{\text{st}} \end{pmatrix} + \mathbf{b} r1dockr2dockrndock =Krot r1str2strnst +b

2.4 适配度 w w w的计算

为了刻画 w w w(即原子在网格点中适配度),本文引入了两种编码策略:网格点匹配(Grid Point Matching,GPM)特征原子匹配(Feature Atom Matching,FAM)。这两种方法的核心思想是通过不同的方式定义配体原子 a i a_i ai与空间位置(网格点或特征原子) g j g_j gj之间的相互作用强度 w a i g j w_{a_ig_j} waigj。以下是这两种方法的具体描述:

网格点匹配(Grid Point Matching,GPM)

在GPM方法中,网格点直接在预定义的对接盒 D D D中以 2 A ˚ 2Å 2A˚的间隔生成。配体原子 a i a_i ai与网格点 g j g_j gj之间的相互作用强度 w a i g j w_{a_ig_j} waigj被定义为当原子类型 a i a_i ai放置在网格点 g j g_j gj上时的范德华力(van der Waals energy)。具体步骤如下:

  • 生成网格点:在对接盒 D D D中以 2 A ˚ 2Å 2A˚的间隔生成网格点;
  • 计算范德华力:使用AutoDockFR中的AutoGrid工具预计算每个网格点 g j g_j gj上的范德华力,并将其保存在每个网格点上;
  • 定义 w a i g j w_{a_ig_j} waigj:对于每个配体原子 a i a_i ai和网格点 g j g_j gj w a i g j w_{a_ig_j} waigj被定义为当原子 a i a_i ai放置在网格点 g j g_j gj上时的范德华力。

虽然AutoDockFR的打分函数中还包括静电和溶剂化项,但在GPM方法中,这些项被忽略,因为它们在离散空间中可能导致误差累积,从而影响性能。

特征原子匹配(Feature Atom Matching,FAM)

在FAM方法中,网格点首先在预定义的对接盒 D D D中以 1 A ˚ 1Å 1A˚的间隔生成,然后通过AutoSite算法将这些网格点粗粒化为3种类型的“特征原子”(Feature Atoms,FAs)。这三种特征原子分别是:

  • 中性的碳原子(neutral C)
  • 氢键供体氢原子(H-bond-donor H)
  • 氢键受体氧原子(H-bond-acceptor O)

配体原子 a i a_i ai与特征原子 g j g_j gj之间的相互作用强度 w a i g j w_{a_ig_j} waigj被定义为配体原子和特征原子的电负性(Pauling’s electronegativity)之间的差异,具体公式为: w a i g j = ∣ χ a i − χ g j ∣ − 0.5 w_{a_ig_j} = |\chi_{a_i} - \chi_{g_j}| - 0.5 waigj=χaiχgj0.5
。其中, χ a i \chi_{a_i} χai χ g j \chi_{g_j} χgj分别是配体原子 a i a_i ai和特征原子 g j g_j gj的电负性,这种定义方式反映了配体原子与特征原子之间形成氢键的倾向。

2.5 经典计算机的构象打分

之前已经提到,GPM和FAM的打分函数( Δ G Bind ′ \Delta G'_{\text{Bind}} ΔGBind)是对 Δ G Bind \Delta G_{\text{Bind}} ΔGBind的粗略估计。实际上,本文发现【惩罚项节中的方程】在构象排序方面表现不佳。因此,本文将基于量子计算机的分子对接分为构象采样和打分两步,构象采样用于采样对接构象的可能状态,而后续的打分则用于对这些构象进行排序。相比之下,构象采样是NP-hard的,而构象打分则不是,而且它只需要一个粗略的打分函数。因此,在本文提出的的工作流程中,GPM和FAM用于构象采样,而构象打分可以留给经典计算机完成。

文章整体的思路可以由下图概括:

图2 基于QUBO的分子对接算法框架示意图图2 基于QUBO的分子对接算法框架示意图

三、求解结果

3.1 采样性能比较

本文在CASF-2016数据集上评估了不同采样方法得到的构象与真实构象之间的最小差异(mRMSD, minimum RMSD),结果如下:

图3 GPM和FAM在CASF-2016上的采样表现图3 GPM和FAM在CASF-2016上的采样表现

  • GPM: 在257个测试案例中,GPM能够在225个案例(87.5%)中采样到高质量的对接构象(最小均方根距离mRMSD < 2 Å),平均mRMSD为1.1 Å,最大mRMSD约为5 Å。这表明GPM具有较强的采样能力,能够有效地找到接近真实晶体结构的对接构象;
  • FAM: 在相同的测试案例中,FAM在173个案例(67.3%)中采样到高质量的对接构象,平均mRMSD为1.8 Å,最大mRMSD为9.4 Å。虽然FAM的性能略逊于GPM,但仍然显示出一定的有效性;
  • Glide SP(benchmark): 作为一种广泛使用的对接软件,Glide SP在CASF-2016数据集的240个案例(93.4%)中能够采样到高质量的对接构象,平均mRMSD为1.0 Å,最大mRMSD为6.8 Å。GPM的性能与Glide SP接近,表明GPM在采样能力上具有竞争力。

3.2 影响采样性能的因素

图4 GPM和FAM的采样影响因素分析图4 GPM和FAM的采样影响因素分析

本文对可能影响采样性能的因素进行了研究,比较了如下几种因素:

  • 配体质量: 采样中的mRMSD与配体质量几乎没有相关性(GPM的R² = 0.001,FAM的R² = 0.009),说明这两种方法不受配体大小的显著影响;
  • 量子比特数量: mRMSD与量子比特数量的相关性也很低(GPM的R² = 0.014,FAM的R² = 0.006),表明这两种方法在量子计算资源上的效率较高;
  • 离散化误差: mRMSD与离散化误差具有良好的线性关系(GPM的R² = 0.938,FAM的R² = 0.916),且回归系数接近1。这表明对接盒的离散化程度是影响采样性能的主要因素。

3.3 计算成本分析

图6 GPM和FAM所需比特数分析图6 GPM和FAM所需比特数分析

  • 量子比特需求: GPM在CASF数据集上最大的量子比特需求为13,908,而FAM为3,640。这比当前实验CIM的最大量子比特数(约10万个)小1-2个数量级,为未来开发更复杂的对接方法提供了空间;
  • 运行时间: 基于CIM的计算优势,采样时间估计为毫秒级,比经典计算机快3个数量级;
  • 问题规模分析: GPM和FAM适用于小分子和肽的对接,因为它们的量子比特需求与配体原子数量呈二次关系,限制了输入配体原子的数量约为156(GPM)和305(FAM),分别对应于15和30个残基的肽。由于量子比特数量的限制,这两种方法目前不适用于蛋白质-蛋白质对接。

四、总结

大规模的组合优化问题求解对于传统计算硬件提出了不小的挑战,很多从算法层优化尝试在这类复杂问题上寻求一个兼顾速度和求解质量的方法。计算机辅助药物设计涉及大量的组合优化场景,在上述瓶颈下,很多问题难以在短时间内得到一个高质量的解,这种欠优的策略在药物发现领域往往失之毫厘,差之千里,造成了药物发现中先导化合物筛选假阳性率较高的境地,因此开发又快又好的计算方法是目前该领域的研究热点。

近期,量子计算硬件的发展使得在解决这类复杂问题上提出了新的解决思路,通过借助量子计算强大的并行处理能力,可全局搜所解空间,而得到能量最低的状态组合。该工作通过将分子对接过程的采样问题编码成QUBO model,可以适配光量子计算机进行求解,为分子筛选提供了全新的解决思路。

参考材料

  1. Zha J, Su J, Li T, et al. Encoding molecular docking for quantum computers[J]. Journal of Chemical Theory and Computation, 2023, 19(24): 9018-9024.
  2. 本项目中的代码目前已开源,可参考:GitHub - JinyinZha/QDock: QDock is a method encoding pose sampling in molecular docking for quantum computers
  3. 目前该开源代码中使用的求解工具为pyqubo,neal 包,可使用玻色量子开发的kaiwu SDK量子开发套件进行替换,请见项目文档
  4. 欢迎关注开物量子开发者社区,定期发布最新文章

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Mytais系列】Datasource模块:数据源连接

MyBatis 的 DataSource 模块是框架与数据库交互的核心基础设施&#xff0c;负责管理数据库连接的创建、分配、释放及池化&#xff0c;直接影响 SQL 执行效率和资源利用率。以下是其核心内容、功能及在 SQL 执行中的作用详解&#xff1a; 一、DataSource 模块的核心组件 组件 功…

React 组件prop添加类型

给函数的props做注解 import { useState } from reacttype Props { className:string,title?:string } // 自定义一个Button组件 function Button(props:Props){// 解构出classname\const {className} propsreturn <button className{className}>点击我</button&g…

MCP多智能体消息传递机制(Message Passing Between Agents)

目录 &#x1f680; MCP多智能体消息传递机制&#xff08;Message Passing Between Agents&#xff09; &#x1f31f; 为什么要引入消息传递机制&#xff1f; &#x1f3d7;️ 核心设计&#xff1a;Agent间消息传递模型 &#x1f6e0;️ 1. 定义标准消息格式 &#x1f6e…

高中数学联赛模拟试题精选学数学系列第4套几何题

△ A B C \triangle ABC △ABC 的外心为点 O O O, 外接圆为 Γ \Gamma Γ. 射线 A O AO AO, B O BO BO, C O CO CO 分别交 Γ \Gamma Γ 于点 D D D, E E E, F F F. X X X 是 △ A B C \triangle ABC △ABC 内部的一点. 射线 A X AX AX, B X BX BX, C X CX CX 分…

如何实现Prometheus告警规则动态配置

在大部分的项目中都有自定义告警规则的需求&#xff0c;目前市面上都是基于Prometheus实现的监控告警。但是Prometheus本身并不支持修改告警规则自动生效&#xff0c;我们可以通过下面这些步骤实现告警规则动态配置。 1. 启动Promethues并指定参数--web.enable-lifecycle noh…

私人医生通过AI分析基因数据,是否有权提前告知癌症风险?

首席数据官高鹏律师团队编著 在精准医疗的浪潮中&#xff0c;私人医生借助AI技术解析基因数据、预判癌症风险&#xff0c;已成为高端医疗服务的“隐形标配”。然而&#xff0c;这一技术的光环之下&#xff0c;潜藏着法律与伦理的复杂博弈——医生是否有权基于AI的基因分析提前…

TFT(薄膜晶体管)和LCD(液晶显示器)区别

TFT&#xff08;薄膜晶体管&#xff09;和LCD&#xff08;液晶显示器&#xff09;是显示技术中常见的术语&#xff0c;二者既有联系又有区别。以下是它们的核心区别和关系&#xff1a; 1. 基本概念 LCD&#xff08;液晶显示器&#xff09; LCD是一种利用液晶材料特性控制光线通…

Go小技巧易错点100例(二十八)

本期分享&#xff1a; 1. runtime.Caller(1)获取调用者信息 2. for循环 select{}语法 正文&#xff1a; runtime.Caller(1)获取调用者信息 在 Go 语言中&#xff0c;runtime.Caller(1) 是 runtime 包提供的一个函数&#xff0c;用于获取当前 goroutine 的调用堆栈中的特定…

ipvsadm,是一个什么工具?

1. ipvsadm 是什么&#xff1f; ipvsadm&#xff08;IP Virtual Server Administration&#xff09;是 Linux 内核中 IPVS&#xff08;IP Virtual Server&#xff09; 模块的管理工具&#xff0c;用于配置和监控内核级的负载均衡规则。它是 Kubernetes 中 kube-proxy 在 IPVS …

用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]

目录 前言一、现实场景1.1 手机相册的照片管理1.2 照片分类的需求 二、技术映射2.1 数组与照片分类的对应关系2.2 数组索引与照片标签的类比 三、知识点呈现3.1 数组的基本概念3.2 数组在编程中的重要性3.3 数组的定义与初始化3.4 数组的常见操作&#xff08;增删改查&#xff…

Java面试资源获取

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 **1. GitHub开源项目****2. 技术博客与社区*…

spring中的@Conditional注解详解

Conditional是Spring框架中用于条件化Bean注册的核心注解&#xff0c;它允许开发者根据特定条件动态决定是否将Bean注册到Spring容器中。这一特性在模块化开发、多环境适配和动态配置等场景中非常有用。 核心原理 Conditional注解通过实现Condition接口的类来定义条件逻辑。当…

MYSQL-设计表

一.范式 数据库的范式是⼀组规则。在设计关系数据库时&#xff0c;遵从不同的规范要求&#xff0c;设计出合理的关系型数 据库&#xff0c;这些不同的规范要求被称为不同的范式。 关系数据库有六种范式&#xff1a;第⼀范式&#xff08;1NF&#xff09;、第⼆范式&#xff08;…

第三方测试机构在软件测试领域有何重大作用与优势?

第三方测试机构在软件测试领域作用重大&#xff0c;它就像公正的裁判&#xff0c;能帮助确保软件质量&#xff0c;能保障软件可靠性&#xff0c;通过提供专业测试服务&#xff0c;为软件安全性提供保障&#xff0c;也为软件稳定性提供保障。 机构优势 第三方测试机构具有独立…

大模型——使用 StarRocks 作为向量数据库

大模型——使用 StarRocks 作为向量数据库 本章节介绍了 StarRocks,这是一款高性能的分析数据库,并演示了如何将其用作向量数据库。内容涵盖了设置、文档加载、标记化、创建向量数据库实例以及构建一个能够检索的问答系统。 StarRocks StarRocks 是一个次世代的亚秒级 MPP…

怎样增加AI对话的拟人化和增加同理心

怎样增加AI对话的拟人化和增加同理心 随着心理健康问题在大学生中日益普遍,AI聊天机器人被用于提供支持,但如何有效表达同理心成为挑战。本文对比了人与人、人与AI互动中同理心的表达与接收,通过让126名本科生讲述生活事件并收集亚马逊MTurkers的评价,同时使用GPT-4o评估相…

SALOME源码分析:SHAPER模块

本文分析SALOME中的SHAPER模块。 注1&#xff1a;限于研究水平&#xff0c;分析难免不当&#xff0c;欢迎批评指正。注2&#xff1a;文章内容会不定期更新。 一、核心组件 二、关键流程 三、FAQs 网络资料 Introduction to SHAPER

batch normalization和layer normalization区别

Normalization无非就是这样一个操作&#xff1a; 其中x是输入数据&#xff0c;维度为&#xff08;B&#xff0c;T&#xff0c;C&#xff09;&#xff0c;其中B是batchsize&#xff0c;T是序列长度&#xff0c;C是embedding维度&#xff1b;括号内是标准化操作&#xff0c;γ和…

Postgresql源码(144)LockRelease常规锁释放流程分析

相关 《Postgresql源码&#xff08;69&#xff09;常规锁细节分析》 最新遇到一个共享内存损坏导致常规锁释放报错warning "you don’t own a lock of type"的问题。 本篇对常规锁的概念做一些回顾&#xff0c;顺便分析下释放锁的流程。 SpinLock&#xff1a;❎LWL…

基于bert的情感分析程序

文章目录 任务介绍数据概览注意事项数据处理代码准备模型构建与训练模型类构建数据集构建数据批处理模型参数查看模型训练结果推理与评估模型推理准确率评估附录任务介绍 在当今信息爆炸的时代,互联网上充斥着海量的文本数据,如社交媒体评论、产品评价、新闻报道等。这些文本…