RDGCN阅读笔记

news2024/10/6 16:19:18

Relation-Aware Entity Alignment for Heterogeneous Knowledge Graphs

面向异质知识图谱的关系感知实体对齐

Abstract

实体对齐是从不同的知识图(KGs)中链接具有相同真实世界实体的任务,最近被基于嵌入的方法所主导。这种方法通过学习KG表示来工作,以便可以通过测量实体嵌入之间的相似性来执行实体对齐。虽然有希望,但该领域的现有工作往往不能很好地捕获多关系KGs中常见的复杂关系信息,留下了很大的改进空间。本文提出了一种新的关系感知双图卷积网络(RDGCN),通过知识图与其对偶关系副本之间的密切交互来融合关系信息,并进一步捕获邻域结构以学习更好的实体表示。在三个真实的跨语言数据集上的实验表明,我们的方法通过学习更好的KG表示,比最先进的对齐方法提供了更好和更健壮的结果。

1 Introduction

KGs中的知识通常被组织成 ⟨ h e a d e n t i t y , r e l a t i o n , t a i l e n t i t y ⟩ \langle head entity, relation, tail entity \rangle headentity,relation,tailentity的三元组。现有的大多数方法都使用跨家族模型作为嵌入KG的主干,这些KG受假设 h e a d + r e l a t i o n ≈ t a i l head + relation \approx tail head+relationtail的约束。这种强假设使得该模型不能有效地捕捉多关系图中更复杂的关系信息。跨家族方法不能捕捉图中描述的三角形结构,如果使用跨家族学习KG表示,则对齐性能将不可避免地受到影响,因为更复杂的结构,如三角形结构,经常出现在多关系图中。

image-20240329212931319

基于GCN的模型代表了基于嵌入的实体对齐的飞跃。然而,这种方法也无法正确地对关系信息进行建模。由于普通GCN是在无向和无标号图上操作的,因此基于GCN的模型会忽略KG的有用关系信息。DPGCNN在图及其对偶图上交替进行卷积操作,其顶点对应于原始图的边缘,并迭代地应用图注意力机制来使用其对偶图增强原始边缘表示。

受DPGCNN的启发,在本文中,提出了一种新的具有感知能力的双图卷积网络(RDGCN),RDGCN方法通过与原始实体图和对偶关系图之间的多轮交互,有效地将更复杂的关系信息融入实体表示。为了进一步融合邻域结构信息,我们还扩展了带有高速公路门控的GCN。

这项工作的主要贡献是一种新的DPGCNN为基础的模型学习强大的KG表示。

2 Related Work

2.1 Graph Convolutional Networks

对扩展神经网络来处理图形的工作:光谱方法、空间方法

GCN:已经成为许多NLP任务的强大的基于深度学习的方法
R-GCN:对关系数据进行建模,并已成功地用于链接预测和实体分类
DPGCNN(GAT模型的推广):顶点分类,链接预测和图引导矩阵

3 Problem Formulation

KG表示 G = ( E , R , T ) G =(E, R, T) G=(E,R,T),其中 E , R , T E,R,T E,R,T分别是实体,关系和三元组的集合。

两个异质KG: G 1 = ( E 1 , R 1 , T 1 ) G_1 =(E_1,R_1,T_1) G1=(E1,R1,T1) G 2 = ( E 2 , R 2 , T 2 ) G_2 =(E_2,R_2,T_2) G2=(E2,R2,T2)

种子: L = { ( e i 1 , e i 2 ) ∣ e i 1 ∈ E 1 , e i 2 ∈ E 2 } \mathbb L = \{(e_{i1},e_{i2})|e_{i1}\in E_1,e_{i2}\in E_2\} L={(ei1,ei2)ei1E1,ei2E2}

4 Our Approach: RDGCN

给定输入KG(即原始图),首先构造其对偶关系图,其顶点表示原始图中的关系,然后利用图注意机制来鼓励对偶关系图与原始图之间的交互.然后将原始图中的结果顶点表示馈送到具有高速公路门控的GCN层,以捕获相邻的结构信息。最终的实体表示将用于确定两个实体是否应对齐。(可以分三个部分:对偶图的构建,对偶图与原始图的交互,和结构信息集成)

image-20240329220801931

其中, G 1 r , G 2 r G_1^r,G_2^r G1r,G2r 分别是 G 1 e , G 2 e G_1^e,G_2^e G1e,G2e的对偶关系图,在 RDGCN 模型中, G e \mathcal G^e Ge G 1 e , G 2 e G_1^e, G_2^e G1e,G2e组成, G r \mathcal G^r Gr G 1 r , G 2 r G_1^r, G_2^r G1r,G2r组成。

4.1 Constructing the Dual Relation Graph

G 1 G_1 G1 G 2 G_2 G2放在一起作为原始图 G e = ( V e , E e ) \mathcal G^e =(\mathcal V^e, \mathcal E^e) Ge=(Ve,Ee),其中顶点集 V e = E 1 ∪ E 2 \mathcal V^e = E_1 \cup E_2 Ve=E1E2 G 1 G_1 G1 G 2 G_2 G2中所有顶点的并集,边集 E e = T 1 ∪ T 2 \mathcal E^e = T_1 \cup T_2 Ee=T1T2 G 1 G_1 G1 G 2 G_2 G2中所有边/三元组的并集。

给定原始图 G e \mathcal G^e Ge,其对偶关系图 G r = ( V r , E r ) \mathcal G^r =(\mathcal V^r,\mathcal E^r) Gr=(Vr,Er构造如下:

  1. 对于 G e \mathcal G^e Ge中的每种类型的关系 r r r V r \mathcal V^r Vr中将存在顶点 v r v^r vr,因此 V r = R 1 ∪ R 2 \mathcal V^r = R_1 \cup R_2 Vr=R1R2
  2. 如果两个关系 r i r_i ri r j r_j rj G e \mathcal G^e Ge中共享相同的头或尾实体,则在 G r \mathcal G^r Gr中创建连接 v i r v_i^r vir v j r v^r_j vjr的边 u i j r u^r_{ij} uijr​。

根据两个关系 v i r v^r_i vir v j r v^r_j vjr G e \mathcal G^e Ge中共享类似头部或尾部的可能性,用权重 w i j r w^r_{ij} wijr G r \mathcal G^r Gr中的每条边 u i j r u^r_{ij} uijr进行加权,计算如下:
w i j r = H ( r i , r j ) + T ( r i , r j ) w_{ij}^r=H(r_i,r_j)+T(r_i,r_j) wijr=H(ri,rj)+T(ri,rj)

H ( r i , r j ) = H i ∩ H j H i ∪ H j , T ( r i , r j ) = T i ∩ T j T i ∪ T j H(r_i,r_j)=\frac{H_i\cap H_j}{H_i\cup H_j},T(r_i,r_j)=\frac{T_i\cap T_j}{T_i\cup T_j} H(ri,rj)=HiHjHiHj,T(ri,rj)=TiTjTiTj

其中 H i H_i Hi T i T_i Ti分别是 G e \mathcal G^e Ge中关系 r i r_i ri的头和尾实体的集合。构造对偶图的开销与原始图中的关系类型的数量成比例。

4.2 Interactions between Dual and Primal Graphs

引入对偶关系图的目的是更好地将关系信息融入到原始图表示中。为此,我们建议应用图注意机制(GAT)迭代地获得对偶关系图和原始图的顶点表示,其中注意机制有助于提示两个图之间的交互。每一个双原始交互包含两个层,双注意层和原始注意层。

Dual Attention Layer(双重注意层)

X r ∈ R m × 2 d \mathbf{X}^r \in \mathbb R^{m\times 2d} XrRm×2d表示输入对偶顶点表示矩阵,其中每行对应于对偶关系图 G r \mathcal G^r Gr中的一个顶点。不同于普通的GAT使用原始顶点特征来计算双重注意力分数 X ^ e \hat{\mathbf{X}}^e X^e 由来自先前交互模块的原始注意力层产生:
x ~ i r = σ r ( ∑ j ∈ N i r α i j r x j r ) , \tilde{\mathbf{x}}_{i}^{r}=\sigma^{r}(\sum_{j\in N_{i}^{r}}\alpha_{ij}^{r}\mathbf{x}_{j}^{r}), x~ir=σr(jNirαijrxjr),

α i j r = e x p ( η ( w i j r a r [ c i ∥ c j ] ) ) ∑ k ∈ N i r e x p ( η ( w i k r a r [ c i ∥ c k ] ) ) , \alpha_{ij}^{r}=\frac{exp(\eta(w_{ij}^{r}a^{r}[\mathbf{c}_{i}\|\mathbf{c}_{j}]))}{\sum_{k\in N_{i}^{r}}exp(\eta(w_{ik}^{r}a^{r}[\mathbf{c}_{i}\|\mathbf{c}_{k}]))}, αijr=kNirexp(η(wikrar[cick]))exp(η(wijrar[cicj])),

其中, x ~ i r \tilde{\mathbf{x}}_i^r x~ir表示在对偶顶点 v i r v^r_i vir处的 d ′ d' d维输出表示(对应于关系 r i ∈ G e r_i \in \mathcal G^e riGe); x ~ j r \tilde{\mathbf{x}}_j^r x~jr表示顶点 v j r v^r_j vjr的对偶表示; N i r N^r_i Nir v i r v^r_i vir的邻居索引的集合; α i j r \alpha^r_{ij} αijr是对偶注意力分数; a r a^r ar是将 2 d ′ 2d' 2d维输入映射到标量中的全连接层; σ r \sigma_r σr是激活函数ReLU; η \eta η是修正线性单元(Leaky ReLU); c i \mathbf c_i ci是从先前的原始注意力层获得的 G e \mathcal G^e Ge中的关系 r i r_i ri的关系表示。

基于图嵌入的框架中,由于训练数据有限,无法直接提供关系表示。因此,通过连接 G e \mathcal G^e Ge中的平均头部和尾部实体表示来近似 r i r_i ri的关系表示:
c i = [ ∑ k ∈ H i x ^ k e ∣ H i ∣ ∥ ∑ l ∈ T i x ^ l e ∣ T i ∣ ] , \mathbf{c}_{i}=[\frac{\sum_{k\in H_{i}}\hat{\mathbf{x}}_{k}^{e}}{|H_{i}|}\|\frac{\sum_{l\in T_{i}}\hat{\mathbf{x}}_{l}^{e}}{|T_{i}|}], ci=[HikHix^keTilTix^le],
其中, x ^ k e 和 x ^ l e \hat{\mathbf{x}}_{k}^{e}和\hat{\mathbf{x}}_{l}^{e} x^kex^le是来自先前的主要关注层的关系 r i r_i ri的第 k k k个头实体和第 l l l个尾实体的输出表示。

Primal Attention Layer(原始注意力层)

使用 X e ∈ R n × d \mathbf{X}^e \in \mathbb R^{n\times d} XeRn×d来表示输入原始顶点表示矩阵。对于原始图 G e \mathcal G^e Ge中的实体 e q e_q eq,其表示 x ^ q e \hat{\mathbf{x}}_{q}^{e} x^qe可以通过下式计算:

x ~ q e = σ e ( ∑ t ∈ N q e α q t e x t e ) , \tilde{\mathbf{x}}_{q}^{e}=\sigma^{e}(\sum_{t\in N_{q}^{e}}\alpha_{qt}^{e}\mathbf{x}_{t}^{e}), x~qe=σe(tNqeαqtexte),

α q t e = e x p ( η ( a e ( x ~ q t r ) ) ) ∑ k ∈ N q e e x p ( η ( a e ( x ~ q k r ) ) ) , \alpha_{qt}^{e}=\frac{exp(\eta(a^{e}(\tilde{\mathbf{x}}_{qt}^{r})))}{\sum_{k\in N_{q}^{e}}exp(\eta(a^{e}(\tilde{\mathbf{x}}_{qk}^{r})))}, αqte=kNqeexp(η(ae(x~qkr)))exp(η(ae(x~qtr))),

其中, x ~ q t r \tilde{\mathbf{x}}_{qt}^{r} x~qtr表示从 G r \mathcal G^r Gr获得的 r q t r_{qt} rqt(实体 e q e_q eq e t e_t et之间的关系)的对偶表示; α q t e \alpha^e_{qt} αqte是原始注意力分数; N q e N^e_q Nqe G e \mathcal G^e Ge中实体 e q e_q eq的邻居索引的集合; a e a^e ae是将 d ′ d' d维输入映射到标量的全连接层, σ e \sigma^e σe是原始层激活函数。

原始顶点的初始表示矩阵 X e _ i n i t \mathbf{X}^{e\_init} Xe_init,可以使用实体名称初始化,这为实体对齐提供了重要的证据。因此,我们通过将初始表示与原始注意力层的输出混合来显式地保留证据:

x ^ q e = β s ∗ x ~ q e + x q e _ i n i t , \hat{\mathbf{x}}_{q}^{e}=\beta_{s}*\tilde{\mathbf{x}}_{q}^{e}+\mathbf{x}_{q}^{e\_init}, x^qe=βsx~qe+xqe_init,

其中, x ~ q e \tilde{\mathbf{x}}_{q}^{e} x~qe表示 G e \mathcal G^e Ge中实体 e q e_q eq的交互模块的最终输出表示; β s \beta_s βs是第 s s s个主要注意力层的加权参数。

4.3 Incorporating Structural Information

在对偶关系图和原始图之间的多轮交互之后,从原始图中收集关系感知实体表示。接下来,将带有高速公路门的双层GCN应用于生成的原始图,以进一步纳入来自其相邻结构的证据。

在具有实体表示 X ( l ) X^{(l)} X(l)作为输入的每个GCN层 l l l中,输出表示 X ( l + 1 ) X^{(l+1)} X(l+1)可以被计算为:
X ( l + 1 ) = ξ ( D ~ − 1 2 A ~ D ~ − 1 2 X ( l ) W ( l ) ) , X^{(l+1)}=\xi(\tilde D^{-\frac{1}{2}}\tilde A\tilde D^{-\frac{1}{2}}X^{(l)}W^{(l)}), X(l+1)=ξ(D~21A~D~21X(l)W(l)),

其中, A ~ = A + I \tilde A = A+I A~=A+I是添加了自连接的原始图 G e \mathcal G^e Ge的邻接矩阵, I I I是单位矩阵; D ~ j j = ∑ k A ~ j k \tilde D_{jj} = \sum_k\tilde A_{jk} D~jj=kA~jk W ( l ) ∈ R d ( l ) × d ( l + 1 ) W^{(l)}\in \mathbb R^{d(l)}\times d^{(l+1)} W(l)Rd(l)×d(l+1)是层特定的可训练权重矩阵; ξ \xi ξ是激活函数ReLU。在构造 A A A时,将 G e \mathcal G^e Ge视为无向图,以允许信息在两个方向上流动。

此外,为了控制跨层累积的噪声并保留从交互中学习到的有用的关系信息,在GCN层之间引入逐层门,类似于高速公路网络:

T ( X ( l ) ) = σ ( X ( l ) W T ( l ) + b T ( l ) ) , T(X^{(l)})=\sigma(X^{(l)}W_{T}^{(l)}+b_{T}^{(l)}), T(X(l))=σ(X(l)WT(l)+bT(l)),

X ( l + 1 ) = T ( X ( l ) ) ⋅ X ( l + 1 ) + ( 1 − T ( X ( l ) ) ) ⋅ X ( l ) , X^{(l+1)}=T(X^{(l)})\cdot X^{(l+1)}+(1-T(X^{(l)}))\cdot X^{(l)}, X(l+1)=T(X(l))X(l+1)+(1T(X(l)))X(l),

其中 X ( l ) X^{(l)} X(l)是层 l + 1 l+1 l+1的输入; σ \sigma σ是sigmoid函数; ⋅ \cdot 是逐元素乘法; X T ( l ) X^{(l)}_T XT(l) b T ( l ) b^{(l)}_T bT(l)是变换门 T ( X ( l ) ) T(X^{(l)}) T(X(l))的权重矩阵和偏置向量。

**对齐。**从 GCN 层的输出中收集最终的实体表示 X ‾ \overline X X ,考虑两个实体之间的距离作为对齐分数:
d ( e 1 , e 2 ) = ∥ x ˉ e 1 − x ˉ e 2 ∥ L 1 . d(e_1,e_2)=\|\bar{x}_{e_1}-\bar{x}_{e_2}\|_{L_1}. d(e1,e2)=xˉe1xˉe2L1.

4.4 Training

对于训练,期望对齐实体对之间的距离尽可能近,而否定实体对之间的距离尽可能远。使用基于边缘的评分函数作为训练目标:

L = ∑ ( p , q ) ∈ L ∑ ( p ′ , q ′ ) ∈ L ′ max ⁡ { 0 , d ( p , q ) − d ( p ′ , q ′ ) + γ } , L=\sum_{(p,q)\in\mathbb{L}}\sum_{(p',q')\in\mathbb{L}'}\max\{0,d(p,q)-d(p',q')+\gamma\}, L=(p,q)L(p,q)Lmax{0,d(p,q)d(p,q)+γ},

其中 γ > 0 \gamma > 0 γ>0是一个边缘超参数; L \mathbb L L是我们的比对种子, L ′ \mathbb L' L是负实例的集合。

寻找具有挑战性的负样本,给定一个正对齐对 ( p , q ) (p, q) (p,q),选择 p ( o r   q ) p(or\ q) p(or q) K \mathcal K K-最近实体,嵌入空间中替换 q ( o r   p ) q(or\ p) q(or p)作为负实例。

5 Experimental Setup

数据集:DBP15K,30%用于训练,70%用于测试。

image-20240330111258507

比较模型:JE、MTransE、JAPE、IPTransE、BootEA 、GCN

模型变体:

  1. GCN-s:具有实体名称初始化但没有高速公路门的双层GCN;
  2. R-GCN-s:双层R-GCN
  3. HGCN-s:具有实体名称初始化和高速公路门的两层GCN;
  4. RD:两个双原始交互模块的实现,但没有后续的GCN层。

6 Results and Discussion

6.1 Main Results

image-20240330111802692

RDGCN在所有指标和数据集上都提供了最佳性能,除了在 D B P 15 K Z H − E N DBP15K_{ZH-EN} DBP15KZHEN上的 H i t s @ 10 Hits@10 Hits@10,RDGCN的性能仅次于BootEA,得分略低(84.55 vs 84.75)。

6.2 Ablation Studies

GCN-s与GCN: GCN-s在所有数据集中显著改善了GCN,

GCN-s与R-GCN-s: R-GCN是GCN的扩展,通过显式地建模KG关系,GCN-s在所有数据集上都比RGCN-s实现了更好的性能。

HGCN-s与GCN-s: HGCN-s在采用分层公路门之后,大大提高了GCN-s的性能,这主要是由于它们能够防止噪声顶点驱动KG表示。

HGCN-s与RDGCN: 双原始交互模块对性能至关重要,交互模块通过引入近似关系信息来挖掘知识库的关系特征,并通过对偶关系图与原始图的多次交互,将关系和实体信息充分融合。结果表明,有效的建模和关系信息的使用是有益的实体对齐。

RD与RDGCN: 从模型中删除GCN层时,性能会显著下降。因为双原始图交互被设计为集成KG关系信息,而GCN层可以有效地捕获KG的相邻结构信息。这两个关键组件在某种程度上是互补的,应该结合在一起学习更好的关系感知表示。

6.3 Analysis

image-20240330113140955

image-20240330113154752

通过对原始图和对偶关系图之间的密切交互进行建模,RDGCN能够通过门控GCN层将关系信息与相邻结构信息结合起来,并学习更好的实体表示以进行对齐。与最先进的方法相比,RDGCN使用更少的训练数据,但在三个真实世界的数据集上实现了最佳的对齐性能。

论文原文:

https://www.ijcai.org/proceedings/2019/0733.pdf

GitHub仓库:

https://github.com/StephanieWyt/RDGCN

论文原文:

https://www.ijcai.org/proceedings/2019/0733.pdf

GitHub仓库:

https://github.com/StephanieWyt/RDGCN

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

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

相关文章

Redis基本配置及安装

Redis也叫Remote dictionary server,是一个开源的基于内存的数据存储系统。它可以用作数据库、缓存和消息队列等各种场景。它也是目前最热门的NoSQL数据库之一 以下是NoSQL的定义 随着互联网的快速发展,应用系统的访问量越来越大,数据库的性能瓶颈越来越…

vue3鼠标向下滑动,导航条改变背景颜色和logo的封装

代码中使用了element-plus组件&#xff0c;需先安装 向下滑动前 向下滑动后&#xff08;改变了logo 字体 背景颜色&#xff09; <script lang"ts" setup> import router from /router; import { ArrowDown } from element-plus/icons-vue import { ref, …

基于 YOLO V8 Pose Fine-Tuning 训练 15 点人脸关键点检测模型

一、YOLO V8 Pose YOLO V8 在上篇文章中进了简单的介绍&#xff0c;并基于YOLO V8 Fine-Tuning 训练了自定义的目标检测模型&#xff0c;而YOLO V8 Pose 是建立在YOLO V8基础上的关键点检测模型&#xff0c;本文基于 yolov8n-pose 模型实验 Fine-Tuning 训练15 点人脸关键点检…

DHCP原理重磅来袭——走过路过不要错过

目录 一.DHCP来源 &#xff08;1)手工分配缺点 (2)DHCP优点 二.DHCP设备调试 &#xff08;1&#xff09;.基本配置&#xff1a; &#xff08;2&#xff09;接口地址池 1.开启DHCP功能 2.开启DHCP接口地址池功能 3.查看IP地址分配结果 &#xff08;3&#xff09;全局地…

最新AI智能系统ChatGPT网站源码V6.3版本,GPTs、AI绘画、AI换脸、垫图混图+(SparkAi系统搭建部署教程文档)

一、前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;那么如何搭建部署AI创作ChatGPT&#xff1f;小编这里写一个详细图文教程吧。已支持GPT…

商品服务 - 三级分类

1.递归查询树形结构 Overridepublic List<CategoryEntity> listWithTree() {//1.查出所有分类List<CategoryEntity> all this.list();//2.组装成父子的属性结构List<CategoryEntity> level1Menus all.stream().filter(c -> c.getParentCid().equals(0L)…

OSError: Can‘t load tokenizer for ‘bert-base-chinese‘

文章目录 OSError: Cant load tokenizer for bert-base-chinese1.问题描述2.解决办法 OSError: Can’t load tokenizer for ‘bert-base-chinese’ 1.问题描述 使用from_pretrained()函数从预训练的权重中加载模型时报错&#xff1a; OSError: Can’t load tokenizer for ‘…

2024最新软件测试【测试理论+ 性能测试】面试题(内附答案)

一、测试理论 3.1 你们原来项目的测试流程是怎么样的? 我们的测试流程主要有三个阶段&#xff1a;需求了解分析、测试准备、测试执行。 1、需求了解分析阶段 我们的 SE 会把需求文档给我们自己先去了解一到两天这样&#xff0c;之后我们会有一个需求澄清会议&#xff0c; …

基于龙芯2k1000 mips架构ddr调试心得(二)

1、内存控制器概述 龙芯处理器内部集成的内存控制器的设计遵守 DDR2/3 SDRAM 的行业标准&#xff08;JESD79-2 和 JESD79-3&#xff09;。在龙芯处理器中&#xff0c;所实现的所有内存读/写操作都遵守 JESD79-2B 及 JESD79-3 的规定。龙芯处理器支持最大 4 个 CS&#xff08;由…

NoSQL(非关系型数据库)之Redis的简介与安装

一、简介 1.1 关系型数据库与非关系型数据库 1.1.1 概念 1.1.2 区别 1.2 非关系型数据库产生背景 1.3 redis 简介 1.4 redis 优点 1.5 redis 快的原因 二、安装 2.1 关闭核心防护 2.2 安装相关依赖 2.3 解压软件包并进行编译安装 2.4 设置 Redis 服务所需相关配置文…

每日一题:c语言实现n的阶乘

目录 一、要求 二、代码 三、结果 一、要求 实现n的阶乘&#xff0c;已知n&#xff01;1*2*3*…*n 二、代码 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h>int main() {//初始化变量n为要求的几阶&#xff0c;jiecheng存储结果的&#xff0c;初始化为1…

黄金票据复现

黄金票据&#xff1a; 在AS-REP里面的ticket的encpart是使用krbtgt的hash进行加密&#xff0c;如果拥有krbtgt的hash就可以给我们自己签发任意用户的TGT票据&#xff0c;这个票据称之为黄金票据 使用Mimikatz伪造Kerberos黄金票据 Mimikatz命令&#xff1a;Kerberos&#xf…

File类 --java学习笔记

在java中&#xff0c;存储数据一般有如下几种方法&#xff1a; 而它们都是内存中的数据容器它们记住的数据&#xff0c;在断电&#xff0c;或者程序终止时会丢失 这种时候就可以使用File类和Io流&#xff0c;就数据存储在文件中 File File是java.io.包下的类&#xff0c; Fi…

[Linux]基础IO(中)---理解重定向与系统调用dup2的使用、缓冲区的意义

重定向理解 在Linux下&#xff0c;当打开一个文件时&#xff0c;进程会遍历文件描述符表&#xff0c;找到当前没有被使用的 最小的一个下标&#xff0c;作为新的文件描述符。 代码验证&#xff1a; ①&#xff1a;先关闭下标为0的文件&#xff0c;在打开一个文件&#xff0c;…

基于 NGINX 的 ngx_http_geoip2 模块 来禁止国外 IP 访问网站

基于 NGINX 的 ngx_http_geoip2 模块 来禁止国外 IP 访问网站 一、安装 geoip2 扩展依赖 [rootfxkj ~]# yum install libmaxminddb-devel -y二、下载 ngx_http_geoip2_module 模块 [rootfxkj tmp]# git clone https://github.com/leev/ngx_http_geoip2_module.git三、解压模…

android 使用ollvm混淆so

使用到的工具 ndk 21.4.7075529&#xff08;android studio上下载的&#xff09;cmake 3.10.2.4988404&#xff08;android studio上下载的&#xff09;llvm-9.0.1llvm-mingw-20230130-msvcrt-x86_64.zipPython 3.11.5 环境配置 添加cmake mingw环境变量如下图: 编译 下载…

代码随想录算法训练营第四十一天|343. 整数拆分,96. 不同的二叉搜索树

343. 整数拆分 题目 给定一个正整数 n &#xff0c;将其拆分为 k 个 正整数 的和&#xff08; k > 2 &#xff09;&#xff0c;并使这些整数的乘积最大化。 返回 你可以获得的最大乘积 。 示例 输入: n 10 输出: 36 解释: 10 3 3 4, 3 3 4 36。 解题思路 dp[i] …

Python读取Excel根据每行信息生成一个PDF——并自定义添加文本,可用于制作准考证

文章目录 有点小bug的:最终代码(无换行):有换行最终代码无bug根据Excel自动生成PDF,目录结构如上 有点小bug的: # coding=utf-8 import pandas as pd from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import letter from reportlab.pdfbase import pdf…

每日五道java面试题之消息中间件MQ篇(三)

目录&#xff1a; 第一题. 如何确保消息正确地发送至 RabbitMQ&#xff1f; 如何确保消息接收方消费了消息&#xff1f;第二题. 如何保证RabbitMQ消息的可靠传输&#xff1f;第三题. 为什么不应该对所有的 message 都使用持久化机制&#xff1f;第四题. 如何保证高可用的&#…

腾讯云2024年4月优惠券及最新活动入口

腾讯云是腾讯集团倾力打造的云计算品牌&#xff0c;提供全球领先的云计算、大数据、人工智能等技术产品与服务。为了吸引用户上云&#xff0c;腾讯云经常推出各种优惠活动。本文将为大家分享腾讯云优惠券及最新活动入口&#xff0c;助力大家轻松上云&#xff01; 一、优惠券领取…