当前位置: 首页 > news >正文

第六十二周周报 HestGCL

week 62 HestGCL

摘要

本周阅读了题为Heterogeneous Spatio-Temporal Graph Contrastive Learning for Point-of-Interest Recommendation的论文。该文提出了一种新的POI推荐模型HestGCL,它超越了现有方法的局限性,探索了一种基于对比学习的新策略。构建了一个异构时空图,并设计了一个跨视图异构时空图对比学习框架来捕获异构信息。本文提出的异构时空图神经网络可以从空间和时间两个角度进行信息聚合,对比学习模块可以提取视图之间共享的信息,从而缓解数据稀疏性问题。在三个基准数据集上的实验结果表明,HestGCL模型优于所有基线模型。

Abstract

This week’s weekly newspaper decodes the paper entitled Heterogeneous Spatio-Temporal Graph Contrastive Learning for Point-of-Interest Recommendation. The paper proposes a new POI (Point of Interest) recommendation model called HestGCL, which overcomes the limitations of existing methods by exploring a new strategy based on contrastive learning. A heterogeneous spatiotemporal graph is constructed, and a cross-view heterogeneous spatiotemporal graph contrastive learning framework is designed to capture heterogeneous information. The proposed heterogeneous spatiotemporal graph neural network can aggregate information from both spatial and temporal perspectives, and the contrastive learning module can extract shared information across views, thereby alleviating the data sparsity problem. Experimental results on three benchmark datasets show that the HestGCL model outperforms all baseline models.

1. 题目

标题:Heterogeneous Spatio-Temporal Graph Contrastive Learning for Point-of-Interest Recommendation

作者:Jiawei Liu, Haihan Gao, Cheng Yang, Chuan Shi*, Tianchi Yang, Hongtao Cheng,
Qianlong Xie, Xingxing Wang, and Dong Wang

发布:TSINGHUA SCIENCE AND TECHNOLOGY ISSN 1007-0214 14/31 pp186−197

  • DOI: 10.26599/TST.2023.9010148
  • Volume 30, Number 1, February 2025

2. Abstract

兴趣点(point-of-interest, POI)推荐是推荐系统领域中最重要的主题之一,其目的是向用户推荐潜在的兴趣点。近年来,图神经网络(gnn)已被成功地用于POI推荐中的交互和时空信息建模,但POI推荐的数据稀疏性影响了gnn的训练。尽管一些现有的基于gnn的POI推荐方法尝试使用社会关系或用户属性来缓解数据稀疏性问题,但由于隐私原因,这些辅助信息并不总是可用的。自监督学习为缓解数据稀疏性问题提供了新的思路,但现有的大多数自监督推荐方法不能直接用于POI推荐的时空图。

本文提出了一种新的异构时空图对比学习方法HestGCL,以弥补现有基于gnn的方法的不足。为了对时空信息进行建模,分别生成了时空特定的视图,并设计了特定于视图的异构图神经网络来对时空信息进行建模。为了缓解数据稀疏性,提出了一种跨视图对比策略来捕捉视图之间的差异和相关性,提供更多的监督信号,协同提高整体性能。在三个基准数据集上的大量实验证明了HestGCL的有效性,显著优于现有方法。

3. 文献解读

3.1 Introduction

为了解决这两个限制,提出了一种新的POI推荐方法,称为异构时空图对比学习(HestGCL)。为了更精细地建模POI推荐场景中的异构性,构建了包含三类节点(即User、POI和Location)和三种关系的异构时空图,有助于揭示异构信息对推荐的影响。为了解决数据稀疏性和时空噪声给GNN模型带来的挑战,受自监督学习[17]的启发,提出了一种时空异构图的交叉视图对比学习技术。具体来说,首先将完整的异构图划分为空间视图和时间视图。然后,分别针对空间视图和时间视图设计了空间感知和时间感知的图神经网络。最后,使用从每个视图获得的节点表示进行对比学习。

在三个公共数据集上的实验结果表明,hesstgcl模型在POI推荐任务上取得了比现有基线方法一致且显著的改进。Recall@50在Foursquare、Gowalla和美团的相对提升率分别为8.83%、14.61%和6.86%。烧蚀实验和超参数实验进一步证明了该模型的有效性和鲁棒性。

3.2 创新点

本文的贡献总结如下:

  1. 与传统基于gnn的POI推荐模型通常建模为用户-POI二部图或多层图不同,将POI推荐任务建模为双视图异构时空图,可以更好地利用数据异质性并减轻数据噪声。
  2. 提出了一种新的跨视图异构时空图对比学习模型(HestGCL),该模型将时空异构图神经网络与对比学习相结合,提供自监督信号,缓解数据稀疏性问题。据所知,这是第一次尝试利用异构时空图对比学习进行POI推荐。
  3. 在三个基准POI推荐数据集上进行了广泛的实验,性能优于现有的最先进的基线,证明了所提出模型的有效性。

4. 网络结构

4.1 基础

POI推荐系统:令 U = { u 1 , u 2 , … , u M } U=\{u_1,u_2,\dots,u_M\} U={u1,u2,,uM}为M个用户的集合, P = { p 1 , p 2 , … , p N } P=\{p_1,p_2,\dots,p_N\} P={p1,p2,,pN}为N个POI的集合。POI推荐任务的目的是根据每个用户U中u的历史POI访问 P u P_u Pu、POI的定位 L P L_P LP、交互的时间戳 T U P T_{UP} TUP将P个POI排列为表。

异质时空图(HeSTG):HeSTG是指 G = ( V , E , L , T ) G=(V,E,L,T) G=(V,E,L,T),由对象集V、链路集E、位置集L以及时间戳集T组成。其中L和T分别与V和E存在关联,存在一个节点类型映射函数 ϕ : V → A \phi:V\rightarrow A ϕ:VA以及一个链接类型映射 φ : E → R \varphi:E\rightarrow R φ:ER,满足 ∣ A ∣ + ∣ R ∣ > 2 |A|+|R|>2 A+R>2

4.2 HestGCL

总体架构如图2所示。首先从原始数据中生成图的拓扑和特征,并将完整的图提取为双视图子图。其次,提出了双视图异构时空图神经网络,生成基于时空和基于时间的嵌入,然后将它们融合得到时空嵌入。最后,设计了对比学习模块,为推荐提供自监督信号。

4.2.1 图的构造和数据的预处理

对于POI推荐任务,相应的HeSTG可以定义为 G = ( V P , V U , V L , E U P T , E L P , E L L ) G=(V_P,V_U,V_L,E^{T}_{UP},E_{LP},E_{LL}) G=(VP,VU,VL,EUPT,ELP,ELL),由POI节点集 V P V_P VP、用户节点集 V U V_U VU、位置节点集 V P V_P VP、用户-POI交互边集 E U P T E^T_{UP} EUPT(带有签入时间戳集 T T T)、位置-POI地理映射边集 E L P E_{LP} ELP、位置-位置地理邻近边集 E L L E_{LL} ELL组成。注意,位置节点引用POI V L V_L VL的区域,其id可以通过geohash编码算法获得。

双视图图提取和视图屏蔽

受多视图表示学习的启发,将完整的HeSTG G提取为两个特定于视图的子图 G S = ( V P , V U , V L , E U P , E L P , E L L ) , a n d G T = ( V P , V U , E U P T ) G_S=(V_P,V_U,V_L,E_{UP},E_{LP},E_{LL}),\ and\ G_T=(V_P,V_U,E^T_{UP}) GS=(VP,VU,VL,EUP,ELP,ELL), and GT=(VP,VU,EUPT),分别表示空间视图和时间视图。多视图表示学习可以在特定于视图的模块中学习更高层次的表示

  • 空间视图 G S G_S GS:包括三种节点 V P , V U , V L V_P,V_U,V_L VP,VU,VL和三种边 E U P , E L P , E L L E_{UP},E_{LP},E_{LL} EUP,ELP,ELL,其中 E U P E_{UP} EUP不考虑时间的影响。
  • 时间视图 G T G_T GT:包括两种节点 V P , V U V_P,V_U VP,VU和一种以时间戳为边特征的边 E U P T E^T_{UP} EUPT,不考虑地理因素的影响。

节点特征初始化

只使用ID特征作为输入,而不考虑其他信息(如类别、社会联系),并基于参数化矩阵构建嵌入查找表。以用户节点 V U V_U VU为例,初始化其特征为 X U = [ x u 1 , … , x u N ] X_U=[x_{u_1},\dots,x_{u_N}] XU=[xu1,,xuN],其中 N N N表示用户数量, x u ∈ R d x_u\in R^d xuRd为嵌入向量(表示嵌入大小)。同样,得到POI和位置节点的特征矩阵 X P X_P XP X L X_L XL。所有这些特征也被表示为GNN模型的输入 X ( 0 ) X^{(0)} X(0)

4.2.2 双视图异构时空图神经网络

将介绍该方法的主干GNN,即双视图异构时空图神经网络,命名为HestGNN。具体来说,为空间和时间视图设计了特定于视图的gnn(即HestGNNS和HestGNN-T)。

空间感知图神经网络

对于空间视图,设计了一个空间感知的图神经网络,命名为HestGNN-S。空间视图包含多种类型的节点(即用户、POI、位置)及其关系,每种关系对节点的影响不同。因此,为每种类型的节点设计消息传递函数。首先为它们定义 ( k + 1 ) (k+1) (k+1)层节点更新函数
x u ( k + 1 ) = f a g g ( x u ( k ) , { x p ( k ) ∣ p ∈ N u } ) x^{(k+1)}_u=f_{agg}(x^{(k)}_u,\{x^{(k)}_p|p\in N_u\}) xu(k+1)=fagg(xu(k),{xp(k)pNu})

x p ( k + 1 ) = f a g g ( x P ( k ) , { x u ( k ) ∣ u ∈ N p } , { x ( k ) ∣ l ∈ N p } ) x^{(k+1)}_p=f_{agg}(x^{(k)}_P,\{x^{(k)}_u|u\in N_p\},\{x^{(k)}|l\in N_p\}) xp(k+1)=fagg(xP(k),{xu(k)uNp},{x(k)lNp})

x l ( k + 1 ) = f a g g ( x l ( k ) , { x p ( k ) ∣ p ∈ N l } ) x^{(k+1)}_l=f_{agg}(x^{(k)}_l,\{x^{(k)}_p|p\in N_l\}) xl(k+1)=fagg(xl(k),{xp(k)pNl})

接下来定义每种类型节点的聚合函数 f a g g ( ⋅ ) f_{agg}(\cdot) fagg()如下:
f a g g ( x ( k ) , { x p ∈ N u ( k ) } ) = ∑ p ∈ N u 1 ∣ N u ∣ x ( k ) ) p f_{agg}(x^{(k)},\{x^{(k)}_{p\in N_u}\})=\sum_{p\in N_u}\frac1 {|N_u|}x^{(k)})p fagg(x(k),{xpNu(k)})=pNuNu1x(k))p

f a g g ( x p ( k ) , { x u , l ∈ N p ( k ) } ) = b p ∑ u ∈ N p 1 ∣ N p ∣ x u ( k ) + ( 1 − b p ) ∑ l ∈ N p 1 ∣ N p ∣ x u ( k ) f_{agg}(x^{(k)}_p,\{x^{(k)}_{u,l\in N_p}\})=b_p\sum_{u\in N_p}\frac1 {|N_p|}x^{(k)}_u+(1-b_p)\sum_{l\in N_p}\frac 1 {|N_p|}x^{(k)}_u fagg(xp(k),{xu,lNp(k)})=bpuNpNp1xu(k)+(1bp)lNpNp1xu(k)

f a g g ( x l ( k ) , { x p , l ∈ N l ( k ) } ) = b l ∑ p ∈ N l 1 ∣ N l ∣ x p ( k ) + ( 1 − b l ) ∑ l ∈ N l 1 ∣ N l ∣ x l ( k ) f_{agg}(x^{(k)}_l,\{x^{(k)}_{p,l\in N_l}\})=b_l\sum_{p\in N_l}\frac{1}{|N_l|}x^{(k)}_p+(1-b_l)\sum_{l\in N_l}\frac{1}{|N_l|}x^{(k)}_l fagg(xl(k),{xp,lNl(k)})=blpNlNl1xp(k)+(1bl)lNlNl1xl(k)

时间感知图神经网络

对于时间视图,设计了一个时间感知的图神经网络,命名为HestGNN-T。时间视图包含userPOI边缘上的签入时间戳,这些时间戳有助于对用户的兴趣偏好进行建模。因此,通过对边缘进行时间编码和在聚合过程中融合边缘嵌入来考虑时间信息。

更具体地说,首先使用小时级时间编码策略将时间戳t转换为嵌入 e t e_t et。编码策略是建立如下嵌入查找表:
e T = [ σ ( e t 1 ) ] , … , σ ( e t N ) e_T=[\sigma(e_{t_1})],\dots,\sigma(e_{t_N}) eT=[σ(et1)],,σ(etN)
然后,使用门控策略对k+1层上每个节点的时间嵌入和邻居嵌入进行聚合:
x ( k + 1 ) = c u ( x ^ u ( k + 1 ) ⊙ x ~ u ) + ( 1 − c u ) x ^ u ( k + 1 ) x^{(k+1)}=c_u(\hat x_u^{(k+1)}\odot \tilde x_u)+(1-c_u)\hat x_u^{(k+1)} x(k+1)=cu(x^u(k+1)x~u)+(1cu)x^u(k+1)

x p ( k + 1 ) = c p ( x ^ p k + 1 ⊙ x ~ p ) + ( 1 − c p ) x ^ p ( k + 1 ) x^{(k+1)}_p=c_p(\hat x_p^{k+1}\odot \tilde x_p)+(1-c_p)\hat x^{(k+1)}_p xp(k+1)=cp(x^pk+1x~p)+(1cp)x^p(k+1)

以用户u为例, x ^ u ( k = 1 ) \hat x^{(k=1)}_u x^u(k=1)是对邻居 p ∈ N u p\in N_u pNu嵌入 x p ( k ) x_p^{(k)} xp(k)进行平均计算,而 x ~ u \tilde x_u x~u的计算过程是对节点对 ( u , p ) (u,p) (u,p)上的时间戳嵌入进行平均,与层无关,只计算一次:
x ^ u ( k + 1 ) = ∑ p ∈ N u 1 ∣ N u ∣ x p ( k ) \hat x^{(k+1)}_u=\sum_{p\in N_u}\frac1{|N_u|}x^{(k)}_p x^u(k+1)=pNuNu1xp(k)

x ~ u = ∑ p ∈ N u 1 ∣ N u ∣ e t u p \tilde x_u=\sum_{p\in N_u}\frac1 {|N_u|}e_{t_{up}} x~u=pNuNu1etup

4.2.3 预测与优化

基于从HestGNN-S和HestGNN-T中获得的嵌入,基于时间感知预测模块生成推荐列表,并使用额外的对比模块增强自监督信号。将完整的模型命名为HestGCL。

时间感知预测模块

对每一层 k ∈ K k\in K kK的嵌入进行平均,得到时空视图的最终嵌入 ( x u S , x p S ) , a n d , ( x u T , x p T ) (x^S_u,x^S_p),and, (x^T_u,x^T_p) (xuS,xpS),and,(xuT,xpT)。例如,
x u S = ∑ k ∈ [ 0 , K ] 1 ∣ K + 1 ∣ x p ( k ) x^S_u=\sum_{k\in [0,K]}\frac1 {|K+1|}x^{(k)}_p xuS=k[0,K]K+1∣1xp(k)
然后利用注意机制对 x S , a n d , x T x^S,and, x^T xS,and,xT进行融合,得到最终的嵌入 x F x^F xF
x F = a f i n a l x S + ( 1 − a f i n a l ) x T x^F=a_{final}x^S+(1-a_{final})x^T xF=afinalxS+(1afinal)xT
由于用户的决策与时间密切相关,因此在计算用户嵌入 x u F x^F_u xuF与poi嵌入 x p F x^F_p xpF的相似度时,考虑由Eq.(7)得到的时间编码,然后对poi的相似度得分进行排序,生成推荐列表。
y u p = ( x F − u ⊙ e t u p ) T ⋅ ( x p F ⊙ e t u p ) y_{up}=(x^F-u\odot e_{t_{up}})^T\cdot(x^F_p\odot e_{t_{up}}) yup=(xFuetup)T(xpFetup)
在优化方面,使用贝叶斯个性化排名(BPR)损失来鼓励观察对的预测高于未观察对:
L B P R = − ∑ u = 1 ∣ U ∣ ∑ i ∈ N u ∑ j ∈ N u l n ( y ^ u i − y ^ u j ) L_{BPR}=-\sum^{|U|}_{u=1}\sum_{i\in N_u}\sum_{j\in N_u}ln(\hat y_{ui}-\hat y_{uj}) LBPR=u=1UiNujNuln(y^uiy^uj)
横视图图形对比模块

对于每个节点,已经生成了它的空间视图嵌入和时间视图嵌入。为了更好地利用两个视图的信息,提出一种跨视图对比策略,将相应的嵌入和视为正对,而将其他嵌入视为负对。正式的,此处也应用InfoNCE 损失:
L C L = ∑ i ∈ V ∑ j ≠ i − log ⁡ ( f ( x S ( i ) , x T ( i ) ) − log ⁡ ( 1 − f ( x ( i ) , x ( j ) ) ) ) L_{CL}=\sum_{i\in V}\sum_{j\neq i} -\log(f(x_{S_{(i)}},x_{T_{(i)}})-\log(1-f(x_{(i)},x_{(j)}))) LCL=iVj=ilog(f(xS(i),xT(i))log(1f(x(i),x(j))))
将预测模块和跨视图对比学习模块统一为一个主辅学习框架,其中预测模块是主任务,对比学习模块是辅助任务。形式上,总体优化函数为
L = L B P R + β ∗ L C L + γ ∗ ∣ ∣ Θ ∣ ∣ 2 2 L=L_{BPR}+\beta*L_{CL}+\gamma*||\Theta||^2_2 L=LBPR+βLCL+γ∣∣Θ∣22

5. 实验过程

5.1 实验设置

数据集

为了评估所提出方法的性能,使用了以下三个真实的LBSN数据集。Foursquare[30]和Gowalla[30]是两个基准POI推荐数据集,使用geohash算法生成位置ID和位置邻居。美团†是近期外卖配送数据集,由从美团APP获取的用户订单历史记录组成,包括订单位置ID和poi位置ID。在设置中,忽略订单的区域ID,以保持信息与其他数据集一致。这些数据集的统计信息汇总在表1中。

对于所有数据集,按时间顺序将它们分成训练/验证/测试集,其中最老的70%签入被用作训练集,最近的20%签入被用作验证集,最近的10%签入被用作测试集。

基线

为了验证提出的模型的有效性,将其与五种基线进行比较,如表2所示:非gnn一般推荐模型(即BPRMF[31]和NeuMF[32]);非gnn POI推荐模型(即LGLMF[33]和STACP[34]);基于gnn的通用推荐模型(即NGCF[20]和LightGCN[21]);基于gnn的最先进POI推荐模型(即GPR[12]);基于GNN分类的推荐模型(即SGL[16]和NCL[17])。对于所有这些基线,设置了他们论文中报告的最佳超参数设置。

需要注意的是,在本文中,关注的是POI推荐中数据稀疏场景下的时空信息,因此没有选择那些序列模型[35-37]作为下一个POI推荐任务的基线。

实现细节

基于Recbole[38]实现了框架,并使用Adam[39]优化器最小化总体损失,其中学习率设置为。与基线相同,采用耐心为10的早期停止策略,即,如果Recall@5指标在10个周期内没有增加,将停止训练。对于优化函数,将两者和设为。对于超参数调优,通过探索HestGNN中的层数和嵌入大小进行启发式搜索。

评价标准

为了验证推荐模型的性能,使用以下两个广泛使用的评估指标:Recall@N和MAP@N,其中N是排名列表中poi的数量。为了更全面地比较结果,报告= 5、10、20和50的结果。

实验结果

在表3中给出了三个数据集的top-N推荐结果。根据实验结果,可以观察到:

  1. HestGCL在三个数据集上的所有指标都优于所有基线方法。更具体地说,在Foursquare、Gowalla和美团的数据集上,它比Recall@50上最强的基线分别提高了8.83%、14.61%和6.86%。这证明了模型的有效性。
  2. 对于Foursquare和Gowalla数据集,基于gnn的方法往往比NeuMF更有效。这表明基于gnn的方法可以传播高阶信息,从而学习更好的节点表示。对于美团数据集,NeuMF也可以达到与基于gnn的基线相似的性能。这可能是因为美团数据集是最不稀疏的,并且poi的数量要少得多,这使得不太需要为gnn聚合高阶信息。
  3. 与传统GNN模型(如LightGCN、NGCF)相比,一般自监督GNN模型(如SGL、NCL)在某些情况下可以增强模型,但不稳定。例如,在美团数据集上,SGL (Recall@5 = 0.3373)的Recall得分低于LightGCN (Recall@5 = 0.3456)。然而,模型可以取得更好的结果,可能是因为它是明确为时空数据设计的,因此提供了更有效的自监督信号。

6. 结论

本文提出了一种新的POI推荐模型HestGCL,它超越了现有方法的局限性,探索了一种基于对比学习的新策略。构建了一个异构时空图,并设计了一个跨视图异构时空图对比学习框架来捕获异构信息。本文提出的异构时空图神经网络可以从空间和时间两个角度进行信息聚合,对比学习模块可以提取视图之间共享的信息,从而缓解数据稀疏性问题。在三个基准数据集上的实验结果表明,HestGCL模型优于所有基线模型。

参考文献

[1] Jiawei Liu, Haihan Gao, Cheng Yang, Chuan Shi*, Tianchi Yang, Hongtao Cheng,
Qianlong Xie, Xingxing Wang, and Dong Wang. Heterogeneous Spatio-Temporal Graph Contrastive Learning for Point-of-Interest Recommendation. TSINGHUA SCIENCE AND TECHNOLOGY ISSN 1007-0214 14/31 pp186−197

相关文章:

第六十二周周报 HestGCL

文章目录 week 62 HestGCL摘要Abstract1. 题目2. Abstract3. 文献解读3.1 Introduction3.2 创新点 4. 网络结构4.1 基础4.2 HestGCL4.2.1 图的构造和数据的预处理4.2.2 双视图异构时空图神经网络4.2.3 预测与优化 5. 实验过程5.1 实验设置 6. 结论参考文献 week 62 HestGCL 摘…...

存储期类别

文章目录 前言一、自动存储期(Automatic Storage Duration)二、静态存储期(Static Storage Duration)三、动态存储期(Dynamic Storage Duration)四、线程存储期(Thread Storage Duration&#x…...

开源模型应用落地-Qwen2-VL-7B-Instruct-vLLM-OpenAI API Client调用

一、前言 学习Qwen2-VL ,为我们打开了一扇通往先进人工智能技术的大门。让我们能够深入了解当今最前沿的视觉语言模型的工作原理和强大能力。这不仅拓宽了我们的知识视野,更让我们站在科技发展的潮头,紧跟时代的步伐。 Qwen2-VL 具有卓越的图…...

风电叶片损伤YOLO检测数据集(猫脸码客第229期)

风电叶片损伤检测:为清洁能源保驾护航 一、风电叶片:清洁能源的关键组件 风电叶片作为风力发电的核心组件,在将风能转化为电能的过程中起着至关重要的作用。它犹如巨大的风车翅膀,捕捉流动的风,将其转化为机械能&…...

修改 RN 打包后生成的app-release 安装包的名称

在React Native项目中,修改打包后生成的Android app-release.apk 安装包的名称通常涉及修改Android的构建配置。以下是详细步骤: 修改Android打包后的APK名称 找到build.gradle文件: 打开你的React Native项目中的android/app/build.gradle文…...

大模型EfficientSam用于图像语义分割自动标注

安装labelme Labelme安装及使用教程-CSDN博客 pip install labelme -i https://pypi.tuna.tsinghua.edu.cn/simple 在安装的过程中因为会需要pyqt5 error: subprocess-exited-with-error Building wheel for PyQt5-sip (pyproject.toml) did not run successfully. │ exit …...

一个关于@JsonIgnore的isxxx()问题

一个关于JsonIgnore的问题 版本:2.13.5 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><optional>true</optional></dependency>代码&#xff1a; Data public clas…...

Django-cookie,session

Cookie简介 Cookie&#xff0c;有时也用Cookies&#xff0c;是指web程序为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据&#xff08;通常经过加密&#xff09;&#xff0c;一般是以键值对的形式存在&#xff0c;Cookie具有不可跨域名性 Cookie是http协议中…...

HarmonyOS开发 - 本地持久化之实现LocalStorage支持多实例

用户首选项为应用提供Key-Value键值型的数据处理能力&#xff0c;支持应用持久化轻量级数据&#xff0c;并对其修改和查询。数据存储形式为键值对&#xff0c;键的类型为字符串型&#xff0c;值的存储数据类型包括数字型、字符型、布尔型以及这3种类型的数组类型。 在上一篇中&…...

【已解决,含泪总结】非root权限在服务器Ubuntu18.04上配置python和torch环境,代码最终成功训练(二)

配置torch环境 pip升级 因为一些包安装不成功可能和pip版本有关&#xff0c;所以先升级pip 吸取之前python有多个版本的经验&#xff0c;所以我指定了Python版本的pip进行升级 就是python3.8版本&#xff1a; /home/某某/Python3.8/bin/python3.8 &#xff08;要换成你实际的…...

Flutter鸿蒙next 刷新机制的高级使用【衍生详解】

✅近期推荐&#xff1a;求职神器 https://bbs.csdn.net/topics/619384540 &#x1f525;欢迎大家订阅系列专栏&#xff1a;flutter_鸿蒙next &#x1f4ac;淼学派语录&#xff1a;只有不断的否认自己和肯定自己&#xff0c;才能走出弯曲不平的泥泞路&#xff0c;因为平坦的大路…...

c/c++--静态变量和静态函数(static)

目录 1 c静态函数和静态变量 1.1 C静态成员函数&#xff1a; 1.1.1定义与基本语法 1.1.2 不依赖于实例 1.1.3 访问限制 1.1.4共享数据 1.1.5 作用域与命名 1.1.6 工厂函数和工厂方法&#xff08;常用途&#xff09; ​​​1.2 c静态函数&#xff08;) 1.3c静态变量 …...

Windows系统启动MongoDB报错无法连接服务器

文章目录 发现问题解决办法 发现问题 1&#xff09;、先是发现执行 mongo 命令&#xff0c;启动报错&#xff1a; error: MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017&#xff1b; 2&#xff09;、再检查 MongoDB 进程 tasklist | findstr mongo 发现没有进程&a…...

Linux的makefile与进度条小程序实践

makefile make命令主要功能使用方法常用选项 makefile文件基本结构使用案例变量定义内置变量(即系统定义的确定变量)伪目标模式规则条件语句注释makefile中的常用函数 进度条小程序创建文件编辑.h文件编辑.c文件创建main函数makefile文件执行效果 make命令 在linux中&#xff…...

latex写作基础

参考&#xff1a;https://www.bilibili.com/video/BV1ku4y1X7Rz 在线latex&#xff1a;https://cn.overleaf.com/ tex文件基本结构 \documentclass{article} % 文档类型&#xff0c;&#xff05;是注释\usepackage{graphicx} % 导入各种包&#xff0c;这里是graphicx包\titl…...

Chromium HTML5 新的 Input 类型email对应c++

一、Input 类型: email email 类型用于应该包含 e-mail 地址的输入域。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>test</title> </head> <body><form action"demo-form.php"…...

嵌入式Linux的AXI平台(platform)驱动教程

本文以JFMQL100的Linux系统的AXI接口的平台驱动为例&#xff0c;介绍嵌入式Linux的平台驱动编写、测试软件编写以及验证方式。本文的方法适用于任意嵌入式芯片Linux的物理地址映射的平台&#xff08;platform&#xff09;驱动的编写、测试与应用。 本文中AXI的开始地址为0x8000…...

什么是Java策略模式?与Spring的完美结合

文章目录 什么是策略模式&#xff1f;策略模式的组成部分&#xff1a; 策略模式的示例在Spring中的妙用1. 使用Spring配置2. 在上下文中选择策略3. 动态切换策略 总结推荐阅读文章 在软件设计中&#xff0c;策略模式是一种非常常见的设计模式&#xff0c;它能够让算法的变化独立…...

[Go实战]:HTTP请求转发

前言 在Web应用开发中&#xff0c;请求转发是一项核心且常见的功能&#xff0c;用于负载均衡、服务拆分、路由重定向和业务逻辑处理。通过在Go语言中封装一个通用的HTTP请求转发方法&#xff0c;我们可以简化代码结构&#xff0c;提升可读性、可维护性和可扩展性。本文将探讨如…...

【C++单调栈 贡献法】907. 子数组的最小值之和|1975

本文涉及的基础知识点 C单调栈 LeetCode907. 子数组的最小值之和 给定一个整数数组 arr&#xff0c;找到 min(b) 的总和&#xff0c;其中 b 的范围为 arr 的每个&#xff08;连续&#xff09;子数组。 由于答案可能很大&#xff0c;因此 返回答案模 109 7 。 示例 1&#x…...

极狐GitLab 17.5 发布 20+ 与 DevSecOps 相关的功能【二】

GitLab 是一个全球知名的一体化 DevOps 平台&#xff0c;很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料&#xff1a; 极狐GitLab 官网极狐…...

Django 5 增删改查 小练习

1. 用命令创建目录和框架 django-admin startproject myapp cd myapp py manage.py startapp app md templates md static md media 2. Ai 生成代码 一、app/models.py from django.db import modelsclass Product(models.Model):name models.CharField(max_length255, verb…...

【STM32 Blue Pill编程实例】-I2C主从机通信(中断、DMA)

I2C主从机通信(中断、DMA) 文章目录 I2C主从机通信(中断、DMA)1、STM32的I2C介绍2、I2C模式3、STM32 I2C 数据包错误检查4、STM32 I2C 错误情况5、STM32 I2C中断6、STM32 I2C 主发送和接收(Tx 和 RX)6.1 I2C 轮询模式6.2 I2C 中断模式6.3 I2C DMA 模式6.4 STM32 I2C 设备…...

基于SSM+小程序的旅游社交登录管理系统(旅游4)

&#x1f449;文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1、项目介绍 ​ 本旅游社交小程序功能有管理员和用户。管理员有个人中心&#xff0c;用户管理&#xff0c;每日签到管理&#xff0c;景点推荐管理&#xff0c;景点分类管理&#xff0c;防疫查询管理&a…...

高级java每日一道面试题-2024年10月24日-JVM篇-说一下JVM有哪些垃圾回收器?

如果有遗漏,评论区告诉我进行补充 面试官: 说一下JVM有哪些垃圾回收器? 我回答: 1. Serial收集器 特点&#xff1a;Serial收集器是最古老、最稳定的收集器&#xff0c;它使用单个线程进行垃圾收集工作。在进行垃圾回收时&#xff0c;它会暂停所有用户线程&#xff0c;即St…...

Java-内部类

个人主页 学习内部类&#xff08;Inner Class&#xff09;是Java编程中一项重要且强大的特性&#xff0c;它允许你在一个类的内部定义另一个类。内部类提供了一种将逻辑上相关的类组织在一起的方式&#xff0c;增加了代码的封装性和可读性。接下来带领大家进入內部类的学习。 …...

flutter集成极光推送

一、简述 极光推送&#xff0c;英文简称 JPush&#xff0c;免费的第三方消息推送服务&#xff0c;官方也推出众多平台的SDK以及插件。 参考链接 名称地址客户端集成插件客户端集成插件 - 极光文档 二、操作步骤 2.1 添加插件 flutter项目中集成官方提供的 极光推送flutte…...

D. Skipping 【 Codeforces Round 980 (Div. 2)】

D. Skipping 思路: 注意到最佳策略是先往右跳转到某处&#xff0c;然后按顺序从右往左把没有遇到过的题目全部提交。 将从 i i i跳转到 b [ i ] b[i] b[i]视为通过边权(代价)为 a [ i ] a[i] a[i]的路径&#xff0c;而向左的路径边权都是 0 0 0&#xff1b;目的是找到到从出发…...

【golang】学习文档整理

Binding | Echo 传值时注意零值和传空的区别 需要validate require 和 设置指针配合使用 保证不同值的返回不同 不能客户端传0值被判断为空 测试时要空值零值去测试字段是否正确返回 返回错误是否符合预期...

动态规划-子序列问题——1218.最长定差子序列

1.题目解析 题目来源&#xff1a;1218.最长定差子序列——力扣 测试用例 2.算法原理 1.状态表示 本题可以看作是寻找一个等差序列&#xff0c;并且公差给出&#xff0c;这里并不是普通的使用一个dp表&#xff0c;而是将arr与dp表同时存储于一个哈希表&#xff0c;arr[i]映射dp…...

团队网站模板/盐城seo排名

从MySQL binlog得到你要的SQL。根据不同设置&#xff0c;你可以得到原始SQL、回滚SQL、去除主键的INSERT SQL等。 用途 数据回滚 主从切换后数据不一致的修复 从binlog生成标准SQL&#xff0c;带来的衍生功能 安装 $ git clone https://github.com/danfengcao/binlog2sql.git …...

宝鸡做宝鸡做网站网站/武汉网站设计公司

二叉树遍历&#xff08;层次遍历&#xff09;&#xff08;前中后序遍历&#xff09;&#xff08;C实现&#xff09; 实现代码 /* author : eclipse email : eclipsecsqq.com time : Mon Apr 20 16:02:40 2020 */ #include<bits/stdc.h> using namespace std;struct …...

重庆招聘信息最新招聘2021/市场seo是什么

运行模式 文章目录运行模式3 完全分布式运行模式3.1 分析&#xff1a;3.2 编写集群分发脚本xsync1. scp&#xff08;secure copy&#xff09;安全拷贝2. rsync 远程同步工具3. xsync集群分发脚本3.3 集群配置1. 集群部署规划2. 配置集群3&#xff0e;在集群上分发配置好的Hadoo…...

如何查询网站死链/google关键词

使用环境(蓝色粗体字为特别注意内容) 1、软件环境&#xff1a;Win7 32 bit&#xff0c;AD(Altium Designer) 10.39. 有时候&#xff0c;芯片引脚比较多&#xff0c;需要将一个元器件分成若干个部分&#xff0c;具体该怎么操作呢&#xff1f;下面我们来看看。 正常画原理图封装…...

河北建设厅网站登录密码错误/网站底部友情链接代码

今天知道的一个物联网开发和管理平台&#xff0c;算是边缘计算中应用层的框架 这个我之前也了解过一些&#xff0c;但是其他的平台基本都会有出自己的硬件&#xff0c;因为从物联网开发来看&#xff0c;确实底层和硬件开发占了大部分时间&#xff0c;但是创造效益却主要是应用…...

做网站+广告费+步骤/齐三seo顾问

Linux 定期切割Tomcat catalina.out和清理log日志Tomcat日志的清理有两种情况第一种&#xff1a;日志本身就以日期保存&#xff0c;每天一个文件的&#xff0c;比如localhost.2020-04-24.log&#xff1b;这类日志只需要卡一个定时器&#xff0c;定期删除即可。第二种&#xff1…...