Autoformer

A u t o f o r m e r Autoformer Autoformer

摘要

​ 我们设计了 A u t o f o r m e r Autoformer Autoformer作为一种新型分解架构,带有自相关机制。我们打破了序列分解的预处理惯例,并将其革新为深度模型的基本内部模块。这种设计使 A u t o f o r m e r Autoformer Autoformer具备了对复杂时间序列的渐进分解能力。进一步地,受随机过程理论的启发,我们基于序列周期性设计了自相关机制,它在子序列级别进行依赖关系的发现和表示聚合。在效率和准确性方面,自相关机制都优于自注意力机制。

1.简介

​ 最近的深度预测模型已经取得了很大的进展,特别是基于变压器的模型。得益于自关注机制,变压器在对序列数据的长期依赖关系建模方面具有很大的优势,这使得更强大的大模型成为可能。我们尝试利用序列的周期性来更新自关注中的点向连接。观察到,周期之间处于相同相位位置的子序列往往呈现相似的时间过程。因此,尝试基于序列周期性导出的过程相似性构建一个序列级连接。

​ 提出了一个原始的自耦器来代替变压器进行长期时间序列预测。自耦器仍然沿用残差和编解码器结构,但将变压器改造为分解预测结构。通过嵌入我们提出的分解块作为内部算子,自耦器器可以逐步从预测的隐藏变量中分离出长期趋势信息。这种设计允许我们的模型在预测过程中交替分解和细化中间结果。受随机过程理论的启发,自耦器引入了自相关机制来代替自关注,该机制基于序列的周期性发现子序列的相似性,并从底层周期中聚合相似的子序列。这种序列智能机制为长度为 L L L的序列实现了 O ( L l o g L ) O(L log L) O(LlogL)复杂度,并通过将逐点表示聚合扩展到子序列级别来打破信息利用瓶颈。自耦器在六个基准上达到了最先进的精度。贡献总结如下:

  • 为了解决长期未来复杂的时间模式,我们提出了自耦器作为一个分解架构,并设计了内部分解块,以赋予深度预测模型具有内在的渐进分解能力。
  • 我们提出了一种自相关机制,在序列级别上具有依赖性发现和信息聚合。我们的机制超越了以前的自关注家族,可以同时有利于计算效率和信息利用率。
  • 在六个基准的长期设定下,自耦器实现了38%的相对改进,涵盖了五个实际应用:能源、交通、经济、天气和疾病。

2.相关工作

  • 提出的自相关机制基于时间序列的固有周期性,可以提供序列明智的连接。
  • 自耦器利用分解作为深度模型的内部块,可以在整个预测过程中逐步分解隐藏序列,包括过去的序列和预测的中间结果。

3.Autoformer

在这里插入图片描述

Autoformer架构:编码器通过序列分解模块(蓝色模块)消除长期趋势周期部分,并专注于季节性模式的建模。解码器逐步累积从隐藏变量中提取的趋势部分。编码器中的过去季节性信息被编码器-解码器自相关(解码器中央的绿色模块)所利用。

T r a n s f o r m e r Transformer Transformer​​改造为一个深度分解架构,包括内部的系列分解块、自相关机制以及相应的编码器和解码器。

序列分解模块:

​ 该模块的目的是将输入的时间序列分解为趋势周期部分和季节性部分,以便更好地进行长期预测。由于未来是未知的,因此该模块通过对预测的中间隐藏变量进行处理来提取长期稳定的趋势。具体方法是使用移动平均法,通过填充操作保持序列长度不变。最终,该模块输出分解后的季节性部分和趋势周期部分。

​ 采用移动平均法来平滑周期性波动,并突出长期趋势。对于长度为 L L L的输入序列 X ∈ R L × d X \in \mathbb{R}^{L \times d} XRL×d,其过程如下:
X t = AvgPool ( Padding ( X ) ) X s = X − X t                           方程一 X_t = \text{AvgPool}(\text{Padding}(X))\\ X_s = X - X_t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\方程一 Xt=AvgPool(Padding(X))Xs=XXt                         方程一

​ 其中, X s X_s Xs X t ∈ R L × d X_t ∈ \mathbb{R}^{L \times d} XtRL×d分别表示季节性和提取的趋势周期部分。我们采用带有填充操作的 A v g P o o l ( ⋅ ) AvgPool(·) AvgPool()进行移动平均,以保持序列长度不变。我们用 X s , X t = S e r i e s D e c o m p ( X ) Xs, Xt = SeriesDecomp(X) Xs,Xt=SeriesDecomp(X)​​​来总结上述方程,这是一个模型内部模块。

模型输入

​ 编码器的输入是过去 I I I个时间步的 X e n ∈ R I × d Xen ∈ R^{I×d} XenRI×d。作为一个分解架构, A u t o f o r m e r Autoformer Autoformer解码器的输入包含两部分:季节性部分 X d e s ∈ R ( I / 2 + O ) × d X_{des} ∈ R^{(I/2+O)×d} XdesR(I/2+O)×d和趋势周期部分 X d e t ∈ R ( I / 2 + O ) × d X_{det} ∈ R^{(I/2+O)×d} XdetR(I/2+O)×d,这些部分需要被细化。每个初始化包含两部分:一部分是从编码器输入 X e n X_{en} Xen的后半部分(长度为 I / 2 I/2 I/2)分解得到的组件以提供近期信息,另一部分是长度为 O O O的占位符,用标量填充。具体数学公式如下:
Xens , Xent = SeriesDecomp ( Xen I 2 : I ) Xdes = Concat ( Xens , X 0 ) Xdet = Concat ( Xent , XMean )              方程二 \begin{align*} \text{Xens}, \text{Xent} &= \text{SeriesDecomp}(\text{Xen}_{\frac{I}{2}:I}) \\ \text{Xdes} &= \text{Concat}(\text{Xens}, \text{X}_0) \\ \text{Xdet} &= \text{Concat}(\text{Xent}, \text{XMean}) \end{align*}\ \ \ \ \ \ \ \ \ \ \ \ \ 方程二 Xens,XentXdesXdet=SeriesDecomp(Xen2I:I)=Concat(Xens,X0)=Concat(Xent,XMean)             方程二

​ 其中, X e n s , X e n t ∈ R I / 2 × d X_{ens}, X_{ent} ∈ R^{I/2×d} Xens,XentRI/2×d分别表示 X e n X_{en} Xen的季节性和趋势周期部分,而 X 0 , X M e a n ∈ R O × d X_0, X_{Mean} ∈ R^{O×d} X0,XMeanRO×d分别表示用零填充的占位符和 X e n X_{en} Xen​的均值。

编码器

​ 编码器专注于季节性部分的建模。编码器的输出包含过去的季节性信息,并将作为交叉信息来帮助解码器细化预测结果。假设我们有 N N N个编码器层。第 l l l个编码器层的整体方程可以总结为 X l en = Encoder ( X l − 1 en ) X_l^{\text{en}} = \text{Encoder}(X_{l-1}^{\text{en}}) Xlen=Encoder(Xl1en)。具体细节如下:
S e n l , 1 , ‾ = S e r i e s D e c o m p ( A u t o − C o r r e l a t i o n ( X e n l − 1 ) + X e n l − 1 ) S e n l , 2 , ‾ = S e r i e s D e c o m p ( F e e d F o r w a r d ( S e n l , 1 ) + S e n l , 1 )      方程三 S_{en}^{l,1},\underline{}=SeriesDecomp(Auto-Correlation(X_{en}^{l-1})+X_{en}^{l-1})\\S_{en}^{l,2},\underline{}=SeriesDecomp(FeedForward(S_{en}^{l,1})+S_{en}^{l,1}) \ \ \ \ \ 方程三 Senl,1,=SeriesDecomp(AutoCorrelation(Xenl1)+Xenl1)Senl,2,=SeriesDecomp(FeedForward(Senl,1)+Senl,1)     方程三

​ 其中, ′   ‾   ′ '\underline\ \ '   表示被消除的趋势部分。 X e n l X_{en}^l Xenl是第 l l l个编码器层的输出, X e n 0 X_{en}^0 Xen0 X e n X_{en} Xen的嵌入表示。 S e n l , i , i ∈ { 1 , 2 } S_{en}^{l,i},i∈\{1,2\} Senl,ii{1,2},分别表示第 l l l层中第 i i i个序列分解块之后的季节性组件。我们将在下一节中详细描述 A u t o − C o r r e l a t i o n ( ⋅ ) Auto-Correlation(·) AutoCorrelation()​,它可以无缝地替代自注意力机制。

解码器

​ 解码器包含两个部分:用于趋势周期分量的累积结构,以及用于季节组分的堆叠自相关机制。每个解码器层都包含内部自相关和编码器-解码器自相关,这可以分别细化预测并利用过去的季节信息。模型在解码过程中从中间的隐藏变量中提取潜在趋势,允许 A u t o f o r m e r Autoformer Autoformer逐步细化趋势预测,并消除在自相关中发现基于周期的依赖关系时的干扰信息。假设有 M M M个解码器层。利用来自编码器的潜变量 X e n N X_{en}^N XenN,第 l l l个解码器层的方程可以总结为 X d e l = D e c o d e r ( X d e l − 1 , X e n N ) X_{de}^l=Decoder(X_{de}^{l-1},X_{en}^N) Xdel=Decoder(Xdel1,XenN)。解码器可以形式化如下:
S l , 1 d e , T l , 1 d e = SeriesDecomp (Auto-Correlation ( X l − 1 d e ) + X l − 1 d e ) S l , 2 d e , T l , 2 d e = SeriesDecomp (Auto-Correlation ( S l , 1 d e , X N e n ) + S l , 1 d e ) S l , 3 d e , T l , 3 d e = SeriesDecomp (FeedForward ( S l , 2 d e ) + S l , 2 d e ) T l d e = T l − 1 d e + W l , 1 ∗ T l , 1 d e + W l , 2 ∗ T l , 2 d e + W l , 3 ∗ T l , 3 d e          方程四 \begin{align*} S_{l,1}^{de}, T_{l,1}^{de} &= \text{SeriesDecomp (Auto-Correlation}(X_{l-1}^{de})+X_{l-1}^{de}) \\ S_{l,2}^{de}, T_{l,2}^{de} &= \text{SeriesDecomp (Auto-Correlation}(S_{l,1}^{de},X_N^{en})+S_{l,1}^{de}) \\ S_{l,3}^{de}, T_{l,3}^{de} &= \text{SeriesDecomp (FeedForward}(S_{l,2}^{de})+S_{l,2}^{de}) \\ T_{l}^{de} &= T_{l-1}^{de} + W_{l,1} \ast T_{l,1}^{de}+ W_{l,2} \ast T_{l,2}^{de}+W_{l,3} \ast T_{l,3}^{de} \\ \end{align*}\ \ \ \ \ \ \ \ \ 方程四 Sl,1de,Tl,1deSl,2de,Tl,2deSl,3de,Tl,3deTlde=SeriesDecomp (Auto-Correlation(Xl1de)+Xl1de)=SeriesDecomp (Auto-Correlation(Sl,1de,XNen)+Sl,1de)=SeriesDecomp (FeedForward(Sl,2de)+Sl,2de)=Tl1de+Wl,1Tl,1de+Wl,2Tl,2de+Wl,3Tl,3de         方程四
​ 其中, X d e l = S d e l , 3 , l ∈ { 1 , . . . , M } X_{de}^l=S_{de}^{l,3},l\in\{1,...,M\} Xdel=Sdel,3,l{1,...,M}表示第 l l l层解码器的输出。 X 0 d e X_0^{de} X0de 是从 X d e s X_{des} Xdes 中嵌入的,用于深度变换,而 T 0 d e = X d e t T_0^{de} = X_{det} T0de=Xdet 用于累积。 S l , i d e S_{l,i}^{de} Sl,ide T l , i d e T_{l,i}^{de} Tl,ide,其中 i ∈ { 1 , 2 , 3 } i ∈ \{1, 2, 3\} i{1,2,3},分别表示在第 l l l 层中经过第 i i i 个序列分解块后的季节组分和趋势-周期组分。 W l , i W_{l,i} Wl,i,其中 i ∈ { 1 , 2 , 3 } i ∈ \{1, 2, 3\} i{1,2,3},表示第 i i i 个提取的趋势 T l , i d e T_{l,i}^{de} Tl,ide 的投影器。

​ 最终的预测是这两个细化后的分解组分的和,即 W S ∗ X M d e + T M d e W_S * X_M^{de} + T_M^{de} WSXMde+TMde,其中 W S W_S WS 是将深度变换后的季节组分 X M d e X_M^{de} XMde 投影到目标维度的投影器。

自相关机制

在这里插入图片描述

图2:自相关(左)和时间延迟聚合(右)。我们利用快速傅里叶变换(Fast Fourier Transform)来计算自相关函数R(τ),该函数反映了时间延迟的相似性。然后,基于选定的延迟τ,将相似的子过程滚动到相同的索引位置,并通过R(τ)进行聚合

​ 提出了具有序列间连接的自相关机制,以扩大信息利用率。自相关机制通过计算序列的自相关来发现基于周期的依赖关系,并通过时间延迟聚合来聚合相似的子序列。

基于周期的依赖关系,观察到在周期中的相同相位位置自然提供了相似的子过程。受随机过程理论的启发,对于一个真实的离散时间过程 { X t } \{X_t\} {Xt},我们可以通过以下方程得到自相关 R X X ( τ ) R_{XX}(τ) RXX(τ)
R X X ( τ ) = lim ⁡ L → ∞ 1 L ∑ t = 1 L X t X t − τ 方程五 R_{XX}(\tau) = \lim_{L \to \infty} \frac{1}{L} \sum_{t=1}^{L} X_t X_{t-\tau}\\ 方程五 RXX(τ)=LlimL1t=1LXtXtτ方程五

R X X ( τ ) R_{XX}(τ) RXX(τ)反映了 { X t } \{X_t\} {Xt}与其延迟 τ τ τ的序列 { X t − τ } \{X_{t−τ}\} {Xtτ}之间的时间延迟相似性。如图所示,我们使用自相关 R ( τ ) R(τ) R(τ)作为估计周期长度τ的非标准化置信度。然后,我们选择最可能的 k k k个周期长度 τ 1 , … , τ k τ_1,…,τ_k τ1,,τk。基于上述估计的周期,可以推导出基于周期的依赖关系,并可以通过相应的自相关进行加权。

时间延迟聚合 基于周期的依赖关系连接了估计周期内的子序列。因此,我们提出了时间延迟聚合模块,该模块可以根据选定的时间延迟 τ 1 , … , τ k τ_1,…,τ_k τ1,,τk滚动序列。这种操作可以将处于估计周期相同相位位置的相似子序列对齐,这与自注意力家族中的逐点点积聚合不同。最后,我们通过 s o f t m a x softmax softmax归一化的置信度聚合子序列。对于单头情况和长度为 L L L的时间序列 X X X,经过投影器后,我们得到查询 Q Q Q、键 K K K和值 V V V。因此,它可以无缝地替代自注意力。自相关机制如下:
τ 1 , … , τ k = arg Top k { R Q , K ( τ ) } R ^ Q , K ( τ 1 ) , … , R ^ Q , K ( τ k ) = SoftMax ( R Q , K ( τ 1 ) , … , R Q , K ( τ k ) ) Auto-Correlation ( Q , K , V ) = ∑ i = 1 k Roll ( V , τ i ) ⋅ R ^ Q , K ( τ i ) 方程六 \tau_1, \ldots, \tau_k = \text{arg Top}_k \left\{ R_{Q, K}(\tau) \right\} \\ \widehat{R}_{Q, K}(\tau_1), \ldots, \widehat{R}_{Q, K}(\tau_k) = \text{SoftMax} \left( R_{Q, K}(\tau_1), \ldots, R_{Q, K}(\tau_k) \right) \\ \text{Auto-Correlation}(Q, K, V) = \sum_{i=1}^{k} \text{Roll}(V, \tau_i) \cdot \widehat{R}_{Q, K}(\tau_i)\\方程六 τ1,,τk=arg Topk{RQ,K(τ)}R Q,K(τ1),,R Q,K(τk)=SoftMax(RQ,K(τ1),,RQ,K(τk))Auto-Correlation(Q,K,V)=i=1kRoll(V,τi)R Q,K(τi)方程六

​ 其中 a r g   T o p k ( ⋅ ) arg\ Topk(⋅) arg Topk()是获取 T o p k Topk Topk个自相关值的参数,并令$k=\lfloor c×logL \rfloor , , c 是一个超参数。 是一个超参数。 是一个超参数。R_{Q,K} 是序列 是序列 是序列Q 和 和 K 之间的自相关。 之间的自相关。 之间的自相关。Roll(X,τ) 表示对 ∗ X ∗ 进行时间延迟 表示对*X*进行时间延迟 表示对X进行时间延迟τ 的操作,其中超出第一个位置的元素将被重新引入到最后的位置。对于编码器 − 解码器自相关, 的操作,其中超出第一个位置的元素将被重新引入到最后的位置。对于编码器-解码器自相关, 的操作,其中超出第一个位置的元素将被重新引入到最后的位置。对于编码器解码器自相关,K 、 、 V 来自编码器 来自编码器 来自编码器X_{en}^N 并会被调整为长度 并会被调整为长度 并会被调整为长度O ,而 ,而 ,而Q 来自解码器的前一个块。对于 来自解码器的前一个块。对于 来自解码器的前一个块。对于Autoformer 中使用的多头版本,具有 中使用的多头版本,具有 中使用的多头版本,具有d_{model} 个通道和 个通道和 个通道和h 个头的隐藏变量,第 个头的隐藏变量,第 个头的隐藏变量,第i 个头的查询、键和值是 个头的查询、键和值是 个头的查询、键和值是Q_i,K_i,V_i\in \mathbb{R}^{L\times \frac{d_{model}}{h}},i\in{1,…,h}$,。其过程如下:
MultiHead ( Q , K , V ) = W output × Concat ( head 1 , … , head h ) where  head i = Auto-Correlation ( Q i , K i , V i ) 方程七 \text{MultiHead}(Q, K, V) = W_{\text{output}} \times \text{Concat}(\text{head}_1, \ldots, \text{head}_h) \\ \text{where } \text{head}_i = \text{Auto-Correlation}(Q_i, K_i, V_i)\\方程七 MultiHead(Q,K,V)=Woutput×Concat(head1,,headh)where headi=Auto-Correlation(Qi,Ki,Vi)方程七
高效计算:对于基于周期的依赖关系,这些依赖关系指向底层周期中相同相位位置的子过程,并且本质上是稀疏的。在这里,我们选择最可能的延迟来避免选择相反的相位。由于我们聚合了 O ( l o g L ) O(log L) O(logL)个长度为 L L L的序列,因此方程 6 6 6 7 7 7的复杂度为 O ( L l o g L ) O(Llog L) O(LlogL)。对于自相关计算(方程 5 5 5),给定时间序列 { X t } , R X X ( τ ) \{X_t\},R_{X X} (τ) {Xt}RXX(τ)可以通过基于维纳-辛钦定理的快速傅里叶变换( F F T FFT FFT)来计算:
S X X ( f ) = F ( X t ) F ∗ ( X t ) = ∫ − ∞ ∞ X t e − i 2 π t f d t ⋅ ∫ − ∞ ∞ X t e − i 2 π t f d t ‾   R X X ( τ ) = F − 1 ( S X X ( f ) ) = ∫ − ∞ ∞ S X X ( f ) e i 2 π f τ , d f 方程八 \begin{align*} S_{XX}(f) &=F(X_t) F^*(X_t) = \int_{-\infty}^{\infty} X_t e^{-i2\pi tf} dt \cdot \overline{\int_{-\infty}^{\infty} X_t e^{-i2\pi tf} dt}^ \ \\R_{XX}(\tau) &= F^{-1}(S_{XX}(f)) = \int_{-\infty}^{\infty} S_{XX}(f) e^{i2\pi f\tau} , df \end{align*}方程八 SXX(f)RXX(τ)=F(Xt)F(Xt)=Xtei2πtfdtXtei2πtfdt =F1(SXX(f))=SXX(f)ei2πfτ,df方程八

其中 τ ∈ { 1 , . . . , L } τ ∈ \{1, ..., L\} τ{1,...,L} F F F表示 F F T FFT FFT F − 1 F^{-1} F1是其逆变换。 ∗ * 表示共轭操作, S X X ( f ) S_{X X} (f) SXX(f)是频域中的。请注意,通过 F F T FFT FFT可以一次性计算 { 1 , . . . , L } \{1, ..., L\} {1,...,L}中所有延迟的序列自相关。因此,自相关计算达到了 O ( L l o g L ) O(Llog L) O(LlogL)​的复杂度。

自相关与自注意族

在这里插入图片描述

图3:自相关与自注意力家族的比较。全注意力(a)适用于所有时间点之间的完全连接。稀疏注意力(b)基于提出的相似度指标选择点。对数稀疏注意力(c)选择点遵循指数增加的间隔。自相关(d)关注底层周期中子序列之间的连接。

​ 与逐点自注意力族不同,自相关展示了序列之间的连接(如图所示)。具体来说,对于时间依赖性,我们基于周期性来查找子序列之间的依赖关系。相比之下,自注意力族仅计算分散点之间的关系。尽管一些自注意力机制考虑了局部信息,但它们仅利用这些信息来帮助发现逐点依赖关系。对于信息聚合,我们采用时间延迟块来聚合来自底层周期中的相似子序列。相反,自注意力通过点积来聚合选定的点。得益于固有的稀疏性和子序列级别的表示聚合,自相关可以同时提高计算效率和信息利用率。

4.实验

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

npm 添加 electron 安装镜像变量,提交打包速度。

前言:项目中使用 electron-builder,打包运行 npm run build:win 时, electron-builder 默认会从 github 下载 electron 依赖包,导致打包缓慢。可以通过添加 electron 下载镜像地址来解决。 npm config ls -l 查看 npm 所有配置 …

三人同行免单模式:社交电商的创新策略

三人同行免单模式是一种通过社交网络实现的购物激励机制,旨在通过消费者之间的互动和分享,促进产品销售和品牌推广。该模式的核心在于,当三位消费者共同完成购买时,其中一位消费者可以享受免单或获得特别折扣。 模式概述 1.会员权…

cordic IP核中,sin and cos的使用

参考视频:FPGA IP之CORDIC_哔哩哔哩_bilibili FPGA IP之CORDIC使用与仿真_哔哩哔哩_bilibili 一、参数说明 functional selection rotate是旋转,sin and cos是计算这两个三角函数,sinh和cosh是计算双曲正弦和双曲余弦 phase format 对于…

电商项目-day02

文章目录 分析项目结构登录请求项目搭建Result总结 分析项目结构 语法的限制打开 端口修改 修改port 前端的入口工程是main.js 登录请求 早期的登录是使用session 称为 会话 也称为域 使用jwt进行验证 模块 spzx-partent 父工程 使用pom 其他的模块都是 jar包 项目搭…

挑选考勤机的实用建议

挑选考勤机的实用建议 在当今的工作环境中,考勤机是企业管理中不可或缺的一部分。选择一款合适的考勤机对于准确记录员工出勤情况、提高管理效率以及确保企业正常运转具有重要意义。以下是一些挑选考勤机的关键建议: 一、明确需求和目标 在开始挑…

[大模型]GLM-4-9b-Chat 接入 LangChain

环境准备 在 01-ChatGLM4-9B-chat FastApi 部署调用 的 环境准备和模型下载基础上,我们还需要安装 langchain 包。如果不需要使用fastapi相关功能,则可以不安装 fastapi、uvicorn、requests。 pip install langchain0.2.1注意langchain这里使用2024年5…

计算机图形学入门08:反走样、滤波与卷积

1.抗锯齿(反走样) 在上一章中,在光栅化三角形的时候出现了明显的锯齿效果。如下图所示是三角形采样过程: 从图上可知像素点不是纯红色就是纯白色。如果在采样前先进行模糊操作(滤波),如下图所示: 经过模糊操作后三角形的边缘颜色变…

操作系统期末复习(大题)

1. 进程调度 周转时间作业完成时刻-作业到达时刻 带权周转时间周转时间/服务时间 平均周转时间各个作业周转时间之和/作业个数 操作系统:周转时间和其他时间_系统为作业提供的时间-CSDN博客 2. 进程调度 3. 调度算法 4. 临界区互斥访问问题 即证明是否满足互斥&a…

使用服务器搭建个人图床

前置条件 云服务器picGo软件,下载地址开始搭建 发布站点 该步骤不一一说明,主要说明搭建图床的步骤。 可以直接使用nginx或者宝塔面板,发布一个静态资源的文件夹。 假如我发布的文件路径是/www/img,访问地址是http://cc.cc.cc(没有域名ip地址也行) 在img下建立两个文件夹…

Facebook开户|Facebook广告快速扩量的方法

下午好家人们!今天Zoey给大家带来Facebook广告快速扩量的方法~欢迎各位家人们积极留言哦!咱们一起往下看吧~ 一、产品策略可弹性调整的情况下 拓展国家 拓展系统:平板流量AND、IOS、 放开年龄、性别等限制 峰流量期加量,能以较低的成本获取更…

使用fvm切换flutter版本

切换flutter版本 下载fvm 1、dart pub global activate fvm dart下载fvm 2、warning中获取下载本地的地址 3、添加用户变量path: 下载地址 终端查看fvm版本 fvm --version 4、指定fvm文件缓存地址 fvm config --cache-path C:\src\fvm(自定义地址&…

这三款很实用的工具,助你事半功倍!

AllDup——删除重复文件的工具 AllDup是一款用于删除电脑内重复文件的工具,避免重复占用电脑的存储空间,支持搜索整个文件夹中的重复文件或者使用对比功能,查询出不同文件夹中相同的文件。 使用排除功能,可以过滤掉某些不需要搜索…

解决找不到MSVCR120.dll,无法执行代码

msvcr120.dll是Microsoft Visual C 2013 Redistributable Package的一部分,它提供了运行使用Microsoft Visual C 2013编译器编译的程序所需的运行时环境。这个DLL文件包含了在运行使用Visual C编译器(特别是2013版)编译的应用程序时所必需的一…

5.mongodb 备份与恢复

mongodb备份工具介绍: 1.mongoexport(备份)/mongoimport(恢复) mongoexport是MongoDB提供的一个工具,用于将数据从MongoDB实例导出到JSON或CSV格式的文件中,这个工具对于数据迁移、数据备份或者在不同的数据库之间同步数据非常有用 2.mongodu…

卸载MySQL5.0,安装MySQL8.0

卸载MySQL 1、以管理员身份运行cmd,删除MySQL服务 2、卸载MySQL 3、删除残余文件 4、清楚注册表 winR -> regedit 5、删除环境变量 安装MySQL步骤 官方下载地址 https://www.mysql.com/downloads/ 以上步骤即完成MySQL数据库安装。

Springboot 整合 Flowable(二):使用 Flowable BPMN visualizer 绘制流程图

📁 Springboot 整合 Flowable(一):使用 flowable-UI 绘制流程图-CSDN博客 一、安装 IDEA 插件:Flowable BPMN visualizer 二、绘制流程图 1、创建流程文件 2、选中文件后,右键打开流程图设计界面 以一个简…

springboot微信点餐小程序-计算机毕业设计源码82910

目 录 摘要 1 绪论 1.1 项目开发背景 1.2目的和意义 1.3springboot框架介绍 2 微信点餐小程序系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 …

宠物空气净化器终极选购指南!小米、希喂、安德迈谁最具性价比

清理房间中的猫浮毛对于猫主人来说是一项持续的任务。猫浮毛不仅可以附着在几乎所有表面上,而且还很难完全去除。宠物空气净化器这种设备通过高效的过滤系统捕捉微小的颗粒,包括猫浮毛,从而减少过敏原和皮屑颗粒物,帮助维护家庭卫…

C#调用外部API(托管和非托管DLL)

DLL程序的两种类型 托管对象(有垃圾回收机制,内存安全)非托管对象(无垃圾回收机制,需手动回收) 托管对象与非托管对象具体区别参考:【C#】中托管与非托管对象区别、托管与非托管DLL区别_c# dllimport 托管dll-CSDN博客 生成和调用托管对象…

综合型驱鸟装置:光伏电站集束冲击波驱鸟器

光伏电站作为绿色、清洁的能源生产方式,正在全球范围内得到快速发展。在光伏电站的建设和运营过程中,鸟类活动所带来的影响逐渐凸显,成为电站管理者需要面对的重要问题。在此背景下,光伏电站驱鸟器的需求也不断增长。 目前市场上的…