【BiLSTM时序预测】鲸鱼算法优化卷积双向长短期记忆神经网络WOA-CNN-BiLSTM股价序列预测【含Matlab源码 3007期】-程序员宅基地

技术标签: matlab  Matlab神经网络预测与分类(中级版)  

一、运行结果

在这里插入图片描述
在这里插入图片描述

博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
个人主页:海神之光
代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

二、CNN-BiLSTM简介

1 卷积神经网络CNN简介
1.1 神经元
神经元是人工神经网络的基本处理单元, 一般是多输入单输出的单元, 其结构模型如图1所示.其中:xi表示输入信号;n个输入信号同时输入神经元j.wij表示输入信号xi与神经元j连接的权重值, bj表示神经元的内部状态即偏置值, yj为神经元的输出.输入与输出之间的对应关系可用下式表示:
在这里插入图片描述
图1 神经元模型
在这里插入图片描述
f (·) 为激励函数, 其可以有很多种选择, 可以是线性纠正函数 (Rectified Linear Unit, ReLU) [25], sigmoid函数、tanh (x) 函数、径向基函数等。

1.2 多层感知器
多层感知器 (Multilayer Perceptron, MLP) 是由输入层、隐含层 (一层或者多层) 及输出层构成的神经网络模型, 它可以解决单层感知器不能解决的线性不可分问题.图2是含有2个隐含层的多层感知器网络拓扑结构图.
在这里插入图片描述
图2 多层感知器结构图
输入层神经元接收输入信号, 隐含层和输出层的每一个神经元与之相邻层的所有神经元连接, 即全连接, 同一层的神经元间不相连.图2中, 有箭头的线段表示神经元间的连接和信号传输的方向, 且每个连接都有一个连接权值.隐含层和输出层中每一个神经元的输入为前一层所有神经元输出值的加权和.假设xml是MLP中第l层第m个神经元的输入值, yml和bml分别为该神经元输出值和偏置值, wiml-1为该神经元与第l-1层第i个神经元的连接权值, 则有:
在这里插入图片描述
当多层感知器用于分类时, 其输入神经元个数为输入信号的维数, 输出神经元个数为类别数, 隐含层个数及隐层神经元个数视具体情况而定.但在实际应用中, 由于受到参数学习效率影响, 一般使用不超过3层的浅层模型.BP算法可分为两个阶段:前向传播和后向传播, 其后向传播始于MLP的输出层.以图2为例, 则损失函数为
在这里插入图片描述
其中第l层为输出层, tj为输出层第j个神经元的期望输出, 对损失函数求一阶偏导, 则网络权值更新公式为
在这里插入图片描述
其中, η为学习率.

1.3 CNN
1962年, 生物学家Hubel和Wiesel[28]通过对猫脑视觉皮层的研究, 发现在视觉皮层中存在一系列复杂构造的细胞, 这些细胞对视觉输入空间的局部区域很敏感, 它们被称为“感受野”.感受野以某种方式覆盖整个视觉域, 它在输入空间中起局部作用, 因而能够更好地挖掘出存在于自然图像中强烈的局部空间相关性.文献[28]将这些被称为感受野的细胞分为简单细胞和复杂细胞两种类型.根据HubelWiesel的层级模型, 在视觉皮层中的神经网络有一个层级结构:外侧膝状体→简单细胞→复杂细胞→低阶超复杂细胞→高阶超复杂细胞[29].低阶超复杂细胞与高阶超复杂细胞之间的神经网络结构类似于简单细胞和复杂细胞间的神经网络结构.在该层级结构中, 处于较高阶段的细胞通常会有这样一个倾向:选择性地响应刺激模式更复杂的特征;同时还具有一个更大的感受野, 对刺激模式位置的变化更加不敏感[29].1980年, Fukushima根据Huble和Wiesel的层级模型提出了结构与之类似的神经认知机 (Neocognitron) [29].神经认知机采用简单细胞层 (S-layer, S层) 和复杂细胞层 (C-layer, C层) 交替组成, 其中S层与Huble-Wiesel层级模型中的简单细胞层或者低阶超复杂细胞层相对应, C层对应于复杂细胞层或者高阶超复杂细胞层.S层能够最大程度地响应感受野内的特定边缘刺激, 提取其输入层的局部特征, C层对来自确切位置的刺激具有局部不敏感性.尽管在神经认知机中没有像BP算法那样的全局监督学习过程可利用, 但它仍可认为是CNN的第一个工程实现网络, 卷积和池化 (也称作下采样) 分别受启发于Hubel-Wiesel概念的简单细胞和复杂细胞, 它能够准确识别具有位移和轻微形变的输入模式[29,30].随后, LeCun等人基于Fukushima的研究工作使用BP算法设计并训练了CNN (该模型称为LeNet-5) , LeNet-5是经典的CNN结构, 后续有许多工作基于此进行改进, 它在一些模式识别领域中取得了良好的分类效果[19].

CNN的基本结构由输入层、卷积层 (convolutional layer) 、池化层 (pooling layer, 也称为取样层) 、全连接层及输出层构成.卷积层和池化层一般会取若干个, 采用卷积层和池化层交替设置, 即一个卷积层连接一个池化层, 池化层后再连接一个卷积层, 依此类推.由于卷积层中输出特征面的每个神经元与其输入进行局部连接, 并通过对应的连接权值与局部输入进行加权求和再加上偏置值, 得到该神经元输入值, 该过程等同于卷积过程, CNN也由此而得名。

1.3.1 卷积层
卷积层由多个特征面 (Feature Map) 组成, 每个特征面由多个神经元组成, 它的每一个神经元通过卷积核与上一层特征面的局部区域相连.卷积核是一个权值矩阵 (如对于二维图像而言可为3×3或5×5矩阵) [19,31].CNN的卷积层通过卷积操作提取输入的不同特征, 第1层卷积层提取低级特征如边缘、线条、角落, 更高层的卷积层提取更高级的特征 (1) .为了能够更好地理解CNN, 下面以一维CNN (1D CNN) 为例, 二维和三维CNN可依此进行拓展.图3所示为一维CNN的卷积层和池化层结构示意图, 最顶层为池化层, 中间层为卷积层, 最底层为卷积层的输入层.

由图3可看出卷积层的神经元被组织到各个特征面中, 每个神经元通过一组权值被连接到上一层特征面的局部区域, 即卷积层中的神经元与其输入层中的特征面进行局部连接.然后将该局部加权和传递给一个非线性函数如ReLU函数即可获得卷积层中每个神经元的输出值.在同一个输入特征面和同一个输出特征面中, CNN的权值共享, 如图3所示, 权值共享发生在同一种颜色当中, 不同颜色权值不共享.通过权值共享可以减
在这里插入图片描述
在这里插入图片描述
其中:oMap为每个卷积层输出特征面的个数;iMap为输入特征面个数.1表示偏置, 在同一个输出特征面中偏置也共享.假设卷积层中输出特征面n第k个神经元的输出值为xnkout, 而xmhin表示其输入特征面m第h个神经元的输出值, 以图3为例, 则.
在这里插入图片描述
式 (8) 中, bn为输出特征面n的偏置值.fcov (·) 为非线性激励函数.在传统的CNN中, 激励函数一般使用饱和非线性函数 (saturating nonlinearity) 如sigmoid函数、tanh函数等.相比较于饱和非线性函数, 不饱和非线性函数 (non-saturating nonlinearity) 能够解决梯度爆炸/梯度消失问题, 同时也能够加快收敛速度[33].Jarrett等人[34]探讨了卷积网络中不同的纠正非线性函数 (rectified nonlinearity, 包括max (0, x) 非线性函数) , 通过实验发现它们能够显著提升卷积网络的性能, Nair等人[25]也验证了这一结论.因此在目前的CNN结构中常用不饱和非线性函数作为卷积层的激励函数如ReLU函数.ReLU函数的计算公式如下所示
在这里插入图片描述
图4中实线为ReLU曲线, 虚线为tanh曲线.对于ReLU而言, 如果输入大于0, 则输出与输入相等, 否则输出为0.从图4可以看出, 使用ReLU函数, 输出不会随着输入的逐渐增加而趋于饱和.Chen在其报告中分析了影响CNN性能的3个因素:层数、特征面的数目及网络组织 (1) .该报告使用9种结构的CNN进行中文手写体识别实验, 通过统计测试结果得到具有较小卷积核的CNN结构的一些结论: (1) 增加网络的深度能够提升准确率; (2) 增加特征面的数目也可以提升准确率; (3) 增加一个卷积层比增加一个全连接层更能获得一个更高的准确率.Bengio等人[35]指出深度网络结构具有两个优点: (1) 可以促进特征的重复利用; (2) 能够获取高层表达中更抽象的特征, 由于更抽象的概念可根据抽象性更弱的概念来构造, 因此深度结构能够获取更抽象的表达, 例如在CNN中通过池化操作来建立这种抽象, 更抽象的概念通常对输入的大部分局部变化具有不变性.He等人[36]探讨了在限定计算复杂度和时间上如何平衡CNN网络结构中深度、特征面数目、卷积核大小等因素的问题.该文献首先研究了深度 (Depth) 与卷积核大小间的关系, 采用较小的卷积核替代较大的卷积核, 同时增加网络深度来增加复杂度, 通过实验结果表明网络深度比卷积核大小更重要;当时间复杂度大致相同时, 具有更小卷积核且深度更深的CNN结构比具有更大卷积核同时深度更浅的CNN结构能够获得更好的实验结果.其次, 该文献也研究了网络深度和特征面数目间的关系, CNN网络结构设置为:在增加网络深度时适当减少特征面的数目, 同时卷积核的大小保持不变, 实验结果表明, 深度越深, 网络的性能越好;然而随着深度的增加, 网络性能也逐渐达到饱和.此外, 该文献还通过固定网络深度研究了特征面数目和卷积核大小间的关系, 通过实验对比, 发现特征面数目和卷积核大小的优先级差不多, 其发挥的作用均没有网络深度大.
在这里插入图片描述
图4 ReLU与tanh函数曲线图

在CNN结构中, 深度越深、特征面数目越多, 则网络能够表示的特征空间也就越大、网络学习能力也越强, 然而也会使网络的计算更复杂, 极易出现过拟合的现象.因而, 在实际应用中应适当选取网络深度、特征面数目、卷积核的大小及卷积时滑动的步长, 以使在训练能够获得一个好的模型的同时还能减少训练时间.

1.3.2 池化层
池化层紧跟在卷积层之后, 同样由多个特征面组成, 它的每一个特征面唯一对应于其上一层的一个特征面, 不会改变特征面的个数.如图3, 卷积层是池化层的输入层, 卷积层的一个特征面与池化层中的一个特征面唯一对应, 且池化层的神经元也与其输入层的局部接受域相连, 不同神经元局部接受域不重叠.池化层旨在通过降低特征面的分辨率来获得具有空间不变性的特征[37].池化层起到二次提取特征的作用, 它的每个神经元对局部接受域进行池化操作.常用的池化方法有最大池化即取局部接受域中值最大的点、均值池化即对局部接受域中的所有值求均值、随机池化[38,39].Boureau等人[40]给出了关于最大池化和均值池化详细的理论分析, 通过分析得出以下一些预测: (1) 最大池化特别适用于分离非常稀疏的特征; (2) 使用局部区域内所有的采样点去执行池化操作也许不是最优的, 例如均值池化就利用了局部接受域内的所有采样点.Boureau等人[41]比较了最大池化和均值池化两种方法, 通过实验发现:当分类层采用线性分类器如线性SVM时, 最大池化方法比均值池化能够获得一个更好的分类性能.随机池化方法是对局部接受域采样点按照其值大小赋予概率值, 再根据概率值大小随机选择, 该池化方法确保了特征面中不是最大激励的神经元也能够被利用到[37].随机池化具有最大池化的优点, 同时由于随机性它能够避免过拟合.此外, 还有混合池化、空间金字塔池化、频谱池化等池化方法[37].在通常所采用的池化方法中, 池化层的同一个特征面不同神经元与上一层的局部接受域不重叠, 然而也可以采用重叠池化的方法.所谓重叠池化方法就是相邻的池化窗口间有重叠区域.Krizhevsky等采用重叠池化框架使top-1和top-5的错误率分别降低了0.4%和0.3%, 与无重叠池化框架相比, 其泛化能力更强, 更不易产生过拟合.设池化层中第n个输出特征面第l个神经元的输出值为tnlout, 同样以图3为例, 则有:
在这里插入图片描述
其中:tnqin表示池化层的第n个输入特征面第q个神经元的输出值;fsub (·) 可为取最大值函数、取均值函数等.

池化层在上一层滑动的窗口也称为池化核.事实上, CNN中的卷积核与池化核相当于HubelWiesel模型中感受野在工程上的实现, 卷积层用来模拟Hubel-Wiesel理论的简单细胞, 池化层模拟该理论的复杂细胞.CNN中每个池化层的每一个输出特征面的大小 (神经元个数) DoMapN为
在这里插入图片描述
其中, 池化核的大小为DWindow, 在图3中DWindow=2.池化层通过减少卷积层间的连接数量, 即通过池化操作使神经元数量减少, 降低了网络模型的计算量.

1.3.3 全连接层
在CNN结构中, 经多个卷积层和池化层后, 连接着1个或1个以上的全连接层.与MLP类似, 全连接层中的每个神经元与其前一层的所有神经元进行全连接.全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息[42].为了提升CNN网络性能, 全连接层每个神经元的激励函数一般采用ReLU函数[43].最后一层全连接层的输出值被传递给一个输出层, 可以采用softmax逻辑回归 (softmax regression) 进行分类, 该层也可称为softmax层 (softmax layer) .对于一个具体的分类任务, 选择一个合适的损失函数是十分重要的, Gu等人[37]介绍了CNN几种常用的损失函数并分析了它们各自的特点.通常, CNN的全连接层与MLP结构一样, CNN的训练算法也多采用BP算法.

当一个大的前馈神经网络训练一个小的数据集时, 由于它的高容量, 它在留存测试数据 (held-out test data, 也可称为校验集) 上通常表现不佳[30].为了避免训练过拟合, 常在全连接层中采用正则化方法———丢失数据 (dropout) 技术, 即使隐层神经元的输出值以0.5的概率变为0, 通过该技术部分隐层节点失效, 这些节点不参加CNN的前向传播过程, 也不会参加后向传播过程[24,30].对于每次输入到网络中的样本, 由于dropout技术的随机性, 它对应的网络结构不相同, 但是所有的这些结构共享权值[24].由于一个神经元不能依赖于其它特定神经元而存在, 所以这种技术降低了神经元间相互适应的复杂性, 使神经元学习能够得到更鲁棒的特征[24].目前, 关于CNN的研究大都采用ReLU+dropout技术, 并取得了很好的分类性能[24,44,45].

1.3.4 特征面
特征面数目作为CNN的一个重要参数, 它通常是根据实际应用进行设置的, 如果特征面个数过少, 可能会使一些有利于网络学习的特征被忽略掉, 从而不利于网络的学习;但是如果特征面个数过多, 可训练参数个数及网络训练时间也会增加, 这同样不利于学习网络模型.Chuo等人[46]提出了一种理论方法用于确定最佳的特征面数目, 然而该方法仅对极小的接受域有效, 它不能够推广到任意大小的接受域.该文献通过实验发现:与每层特征面数目均相同的CNN结构相比, 金字塔架构 (该网络结构的特征面数目按倍数增加) 更能有效利用计算资源.目前, 对于CNN网络特征面数目的设定通常采用的是人工设置方法, 然后进行实验并观察所得训练模型的分类性能, 最终根据网络训练时间和分类性能来选取特征面数目.

1.3.5 CNN结构的进一步说明
CNN的实现过程实际上已经包含了特征提取过程, 以图5、图6为例直观地显示CNN提取的特征.Cao等人[47]采用CNN进行指纹方向场评估, 图5为其模型结构.图5共有3个卷积层 (C1, C3, C5) 、2个池化层 (M2, M4) 、1个全连接层 (F6) 和1个输出层 (O7) .输入的大小为160×160, C1中96×11×11×1 (4) 表示C1层有96个大小为11×11的卷积核, 1为它的输入特征面个数, 4是卷积核在其输入特征面上的滑动步长, 38×38为每个输出特征面的大小.卷积层通过卷积操作提取其前一层的各种不同的局部特征, 由图5可看出, C1层提取输入图像的边缘、轮廓特征, 可看成是边缘检测器.池化层的作用是在语义上把相似的特征合并起来, 池化层通过池化操作使得特征对噪声和变形具有鲁棒性[11].从图上可看出, 各层所提取的特征以增强的方式从不同角度表现原始图像, 并且随着层数的增加, 其表现形式越来越抽象[48].全连接层F6中的每个神经元与其前一层进行全连接, 该层将前期所提取的各种局部特征综合起来, 最后通过输出层得到每个类别的后验概率.从模式分类角度来说, 满足Fisher判别准则的特征最有利于分类, 通过正则化方法 (dropout方法) , 网络参数得到有效调整, 从而使全连接层提取的特征尽量满足Fisher判别准则, 最终有利于分类[48].图6给出了CNN提取心电图 (electrocardiogram, ECG) 特征的过程, 首先通过卷积单元A1、B1、C1 (其中每个卷积单元包括一个卷积层和一个池化层) 提取特征, 最后由全连接层汇总所有局部特征.由图中也可以看出, 层数越高, 特征的表现形式也越抽象.显然, 这些特征并没有临床诊断的物理意义, 仅仅是数理值[48].

2 Bilstm
BiLSTM是双向长短期记忆网络(Bidirectional Long Short-Term Memory)的简称。它是一种循环神经网络(RNN)的变体,用于处理序列数据,如自然语言文本。

传统的单向LSTM只能从前到后(或从后到前)处理序列数据,而BiLSTM同时考虑了前后上下文的信息。它由两个LSTM组成,一个按照原始序列从前到后处理,另一个按照逆序列从后到前处理。最后,这两个LSTM的输出经过拼接或其他方式进行融合,得到一个综合的表示。

BiLSTM的优点在于能够捕捉到更全面的上下文信息,有助于提高序列数据的建模能力。在自然语言处理任务中,BiLSTM常用于词性标注、命名实体识别、情感分析、机器翻译等任务中。

具体步骤如下:

输入表示:将序列数据中的每个元素(如词语或字符)映射为对应的词嵌入向量,作为输入表示。
前向传播:将输入序列按顺序输入前向LSTM中,利用LSTM单元对序列进行逐步处理,产生一系列隐藏状态。
逆向传播:将输入序列按逆序输入逆向LSTM中,同样利用LSTM单元对序列进行逐步处理,产生一系列逆向隐藏状态。
融合表示:将前向和逆向的隐藏状态进行拼接、求和或其他操作,得到一个综合的表示。
输出层:将融合后的表示输入到最终的全连接层进行分类、回归等任务。
通过双向处理序列数据,BiLSTM可以同时获取前向和逆向的上下文信息,从而更好地捕捉序列中的依赖关系和特征。这使得BiLSTM在处理自然语言文本等序列数据时具有较好的表现和建模能力。

三、部分源代码

% CNN-LSTM多变量多步
% 数据集 列为特征,行为样本数目
clc
clear
load Train.mat
%
Train(1,:) =[];
y = Train.demand;
x = Train{:,3:end};
[xnorm,xopt] = mapminmax(x’,0,1);
[ynorm,yopt] = mapminmax(y’,0,1);
x = x’;
k = 24; % 滞后长度

% 转换成4-D image
for i = 1:length(ynorm)-k

Train_xNorm{i} = reshape(xnorm(:,i:i+k-1),6,1,1,k);
Train_yNorm(i) = ynorm(i+k-1);

end
Train_yNorm= Train_yNorm’;

%--------------------------------------------------------------------------
load Test.mat
Test(1,:) =[];
ytest = Test.demand;
xtest = Test{:,3:end};
[xtestnorm] = mapminmax(‘apply’, xtest’,xopt);
[ytestnorm] = mapminmax(‘apply’,ytest’,yopt);
xtest = xtest’;
for i = 1:length(ytestnorm)-k
Test_xNorm{i} = reshape(xtestnorm(:,i:i+k-1),6,1,1,k);
Test_yNorm(i) = ytestnorm(i+k-1);
Test_y(i) = ytest(i+k-1);
end
Test_yNorm = Test_yNorm’;

%% CNNBILSTM
fobj=@(x)CNNBILSTM(x,k,Train_xNorm,Train_yNorm,Test_xNorm,Test_y,yopt);
[rmse,Predict_Y_CNNBILSTM]=CNNBILSTM([0.1 0.5],k,Train_xNorm,Train_yNorm,Test_xNorm,Test_y,yopt);
[mae_CNNBILSTM,mse_CNNBILSTM,rmse_CNNBILSTM,mape_CNNBILSTM,error_CNNBILSTM,errorPercent_CNNBILSTM]=calc_error(Test_y,Predict_Y_CNNBILSTM);
%% 鲸鱼算法优化CNNBILSTM
SearchAgents_no=10;
Max_iter=20;
lb=[0.001 0.01];
ub=[0.2 0.5];
dim=2;
[Leader_pos,Leader_score,Convergence_curve]=WOA(SearchAgents_no,Max_iter,lb,ub,dim,fobj);
[rmse,Predict_Y_WOACNNBILSTM]=CNNBILSTM(Leader_pos,k,Train_xNorm,Train_yNorm,Test_xNorm,Test_y,yopt);
[mae_WOACNNBILSTM,mse_WOACNNBILSTM,rmse_WOACNNBILSTM,mape_WOACNNBILSTM,error_WOACNNBILSTM,errorPercent_WOACNNBILSTM]=calc_error(Test_y,Predict_Y_WOACNNBILSTM);

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]崔星,李晋国,张照贝,李麟容.基于改进粒子群算法优化LSTM的短期电力负荷预测[J].电测与仪表.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/KeepingMatlab/article/details/134299585

智能推荐

Docker 快速上手学习入门教程_docker菜鸟教程-程序员宅基地

文章浏览阅读2.5w次,点赞6次,收藏50次。官方解释是,docker 容器是机器上的沙盒进程,它与主机上的所有其他进程隔离。所以容器只是操作系统中被隔离开来的一个进程,所谓的容器化,其实也只是对操作系统进行欺骗的一种语法糖。_docker菜鸟教程

电脑技巧:Windows系统原版纯净软件必备的两个网站_msdn我告诉你-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏14次。该如何避免的,今天小编给大家推荐两个下载Windows系统官方软件的资源网站,可以杜绝软件捆绑等行为。该站提供了丰富的Windows官方技术资源,比较重要的有MSDN技术资源文档库、官方工具和资源、应用程序、开发人员工具(Visual Studio 、SQLServer等等)、系统镜像、设计人员工具等。总的来说,这两个都是非常优秀的Windows系统镜像资源站,提供了丰富的Windows系统镜像资源,并且保证了资源的纯净和安全性,有需要的朋友可以去了解一下。这个非常实用的资源网站的创建者是国内的一个网友。_msdn我告诉你

vue2封装对话框el-dialog组件_<el-dialog 封装成组件 vue2-程序员宅基地

文章浏览阅读1.2k次。vue2封装对话框el-dialog组件_

MFC 文本框换行_c++ mfc同一框内输入二行怎么换行-程序员宅基地

文章浏览阅读4.7k次,点赞5次,收藏6次。MFC 文本框换行 标签: it mfc 文本框1.将Multiline属性设置为True2.换行是使用"\r\n" (宽字符串为L"\r\n")3.如果需要编辑并且按Enter键换行,还要将 Want Return 设置为 True4.如果需要垂直滚动条的话将Vertical Scroll属性设置为True,需要水平滚动条的话将Horizontal Scroll属性设_c++ mfc同一框内输入二行怎么换行

redis-desktop-manager无法连接redis-server的解决方法_redis-server doesn't support auth command or ismis-程序员宅基地

文章浏览阅读832次。检查Linux是否是否开启所需端口,默认为6379,若未打开,将其开启:以root用户执行iptables -I INPUT -p tcp --dport 6379 -j ACCEPT如果还是未能解决,修改redis.conf,修改主机地址:bind 192.168.85.**;然后使用该配置文件,重新启动Redis服务./redis-server redis.conf..._redis-server doesn't support auth command or ismisconfigured. try

实验四 数据选择器及其应用-程序员宅基地

文章浏览阅读4.9k次。济大数电实验报告_数据选择器及其应用

随便推点

灰色预测模型matlab_MATLAB实战|基于灰色预测河南省社会消费品零售总额预测-程序员宅基地

文章浏览阅读236次。1研究内容消费在生产中占据十分重要的地位,是生产的最终目的和动力,是保持省内经济稳定快速发展的核心要素。预测河南省社会消费品零售总额,是进行宏观经济调控和消费体制改变创新的基础,是河南省内人民对美好的全面和谐社会的追求的要求,保持河南省经济稳定和可持续发展具有重要意义。本文建立灰色预测模型,利用MATLAB软件,预测出2019年~2023年河南省社会消费品零售总额预测值分别为21881...._灰色预测模型用什么软件

log4qt-程序员宅基地

文章浏览阅读1.2k次。12.4-在Qt中使用Log4Qt输出Log文件,看这一篇就足够了一、为啥要使用第三方Log库,而不用平台自带的Log库二、Log4j系列库的功能介绍与基本概念三、Log4Qt库的基本介绍四、将Log4qt组装成为一个单独模块五、使用配置文件的方式配置Log4Qt六、使用代码的方式配置Log4Qt七、在Qt工程中引入Log4Qt库模块的方法八、获取示例中的源代码一、为啥要使用第三方Log库,而不用平台自带的Log库首先要说明的是,在平时开发和调试中开发平台自带的“打印输出”已经足够了。但_log4qt

100种思维模型之全局观思维模型-67_计算机中对于全局观的-程序员宅基地

文章浏览阅读786次。全局观思维模型,一个教我们由点到线,由线到面,再由面到体,不断的放大格局去思考问题的思维模型。_计算机中对于全局观的

线程间控制之CountDownLatch和CyclicBarrier使用介绍_countdownluach于cyclicbarrier的用法-程序员宅基地

文章浏览阅读330次。一、CountDownLatch介绍CountDownLatch采用减法计算;是一个同步辅助工具类和CyclicBarrier类功能类似,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。二、CountDownLatch俩种应用场景: 场景一:所有线程在等待开始信号(startSignal.await()),主流程发出开始信号通知,既执行startSignal.countDown()方法后;所有线程才开始执行;每个线程执行完发出做完信号,既执行do..._countdownluach于cyclicbarrier的用法

自动化监控系统Prometheus&Grafana_-自动化监控系统prometheus&grafana实战-程序员宅基地

文章浏览阅读508次。Prometheus 算是一个全能型选手,原生支持容器监控,当然监控传统应用也不是吃干饭的,所以就是容器和非容器他都支持,所有的监控系统都具备这个流程,_-自动化监控系统prometheus&grafana实战

React 组件封装之 Search 搜索_react search-程序员宅基地

文章浏览阅读4.7k次。输入关键字,可以通过键盘的搜索按钮完成搜索功能。_react search