人工智能与机器学习原理精解【1】

文章目录

  • Rosenblatt感知器
    • 基础
    • 收敛算法
      • 算法概述
      • 算法步骤
      • 关键点说明
      • 总结
    • C++实现
      • 要点
      • 代码
  • 参考文献

Rosenblatt感知器

基础

  • 感知器,也可翻译为感知机,是一种人工神经网络。它可以被视为一种最简单形式的前馈式人工神经网络,是一种二元线性分类器。
  • Rosenblatt感知器建立在一个非线性神经元上,但是它只能完成线性分类
  • 硬限幅与超平面
    局部诱导域 v = ∑ i = 1 m w i x i + b 从上面公式看来,只能完成线性分类 完成线性分类靠最后的输出,就是硬限幅的功能了 输入为正数,输出 + 1 ,否则输出 − 1 。 如果 v > 0 输出 + 1 ,否则输出 − 1 。 v = 0 就是一个超平面,线性分隔两类(也叫两个决策区域) 局部诱导域 \\v=\sum_{i=1}^mw_ix_i+b \\从上面公式看来,只能完成线性分类 \\完成线性分类靠最后的输出,就是硬限幅的功能了 \\输入为正数,输出+1,否则输出-1。 \\如果 v>0 输出 +1,否则输出-1。 \\v=0就是一个超平面,线性分隔两类(也叫两个决策区域) 局部诱导域v=i=1mwixi+b从上面公式看来,只能完成线性分类完成线性分类靠最后的输出,就是硬限幅的功能了输入为正数,输出+1,否则输出1如果v>0输出+1,否则输出1v=0就是一个超平面,线性分隔两类(也叫两个决策区域)
    为什么Rosenblatt感知器是非线性神经元,因为硬限幅的存在。

收敛算法

下面内容来自文心一言的自动生成内容

Rosenblatt的收敛算法,也被称为感知器收敛算法或Rosenblatt误差修正训练规则,是一种用于训练单层感知机的算法。该算法由Frank
Rosenblatt在1957年提出,主要用于解决二分类问题。以下是对该算法的详细解释:

算法概述

Rosenblatt的收敛算法是一个迭代过程,通过不断调整感知机的权重和偏置(阈值),使得感知机能够正确分类给定的输入数据。

算法步骤

  1. 初始化

    • 权重向量w(0)初始化为0或随机值。
    • 偏置b(在算法中通常包含在权重向量中,作为w(0)的一个分量)也初始化为0或随机值。
  2. 迭代过程

    • 对于每一个输入样本x(n)(其中n代表时间步或样本序号)和对应的期望输出d(n)
      • 计算输出y(n) = sgn(w(n) * x(n)),其中sgn是符号函数,当w(n) * x(n)大于0时返回1,小于0时返回-1,等于0时可以根据需要定义。
      • 计算误差e(n) = d(n) - y(n)
      • 更新权重和偏置w(n+1) = w(n) + q * e(n) * x(n),其中q是学习率参数,通常是一个小于1的正数。
    • 重复上述过程,直到满足停止条件。
  3. 停止条件

    • 可以是达到预设的最大迭代次数。
    • 也可以是网络的输出与期望输出的误差小于某个预设的阈值。

关键点说明

  • 学习率q):学习率决定了权重更新的步长。较大的学习率可能导致算法收敛速度加快,但也可能导致算法不稳定;较小的学习率则可能使算法收敛速度变慢,但更加稳定。
  • 权重和偏置:权重和偏置是感知机的可调整参数,通过调整这些参数,感知机可以学习如何正确分类输入数据。
  • 符号函数sgn):符号函数用于将加权输入转换为二元输出。在实际应用中,可以根据需要选择其他激活函数来替代符号函数。

总结

Rosenblatt的收敛算法是一种简单而有效的神经网络学习算法,它通过不断调整感知机的权重和偏置来使得网络能够逐渐逼近最优解,实现正确的分类。需要注意的是,该算法仅适用于线性可分的问题。对于非线性可分的问题,需要使用更复杂的神经网络算法来解决。

可在文心一言中输入更多相关内容查询。

C++实现

要点

  • 把偏置b作为权值的第一个元素 w ( 0 ) w(0) w(0)
  • 对应权值的输入x,设置为+1
  • 样本文件可在iris网站下载。但注意只留两种花的样本,因为这是二分类,只能线性分为两类。

代码

#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
#include <regex>
#include "e:/eigen/Eigen/Dense"using namespace std;
using namespace Eigen;struct IrisDa{float *irisX;int dataSize;int d;~IrisDa(){delete[] irisX;}
};
struct IrisDaW{float *irisW;int dataSize;~IrisDaW(){delete[] irisW;}
};
IrisDaW *irisDaW=nullptr;//权值参数vector<string> split(const string &text, char separator);
string removeSpaces(const string& input);
void dataLearn(const IrisDa *irisDa);
int sgn(float x);
void showIrisW();
void dataTest();
void rbTest(const IrisDa *irisDa);int main(){ifstream fileIn;char helloStr[100];//read csvfileIn.open("e:/ml_data/iris/iris_sample.data");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return 1;}regex strRx(R"((\d+)(\.)(\d+))");smatch match;while (fileIn>>helloStr){//construct x(n) and d(n)IrisDa *irisDa=new IrisDa;vector<string> sampleDatas=split(helloStr,',');int dataCount=sampleDatas.size();float *irisX= new float[dataCount];//x(n)irisX[0]=1.0;int irisD;//d(n)int i=1;for (const string &data: sampleDatas) {string irisData=removeSpaces(data);bool found = regex_match(irisData, match, strRx);if (found) {irisX[i]=stof(irisData);i++;}else{if (irisData=="Iris-setosa"){irisD=1;}else{irisD=-1;}}}irisDa->irisX=irisX;irisDa->d=irisD;irisDa->dataSize=dataCount;dataLearn(irisDa);showIrisW();}fileIn.close();dataTest();
}void rbTest(const IrisDa *irisDa){if (!irisDaW){cout<<"请检查参数w是否生成!"<<endl;return ;}cout<<"正在处理测试数据..."<<endl;for (int i=0;i<irisDa->dataSize;i++) {cout<<irisDa->irisX[i]<<" ";}cout<<endl;VectorXf irisW(irisDa->dataSize);VectorXf irisX(irisDa->dataSize);for (int i=0;i<irisDa->dataSize;i++){irisX[i]=irisDa->irisX[i];irisW[i]=irisDaW->irisW[i];}float y=sgn(irisW.transpose()*irisX);cout<<"正确分类:"<<irisDa->d<<"预测分类:"<<y<<endl;
}void dataLearn(const IrisDa *irisDa){//训练样本float a=0.25;cout<<"正在处理数据..."<<endl;for (int i=0;i<irisDa->dataSize;i++) {cout<<irisDa->irisX[i]<<" ";}cout<<irisDa->d<<endl;if (!irisDaW) {irisDaW=new IrisDaW;irisDaW->irisW=new float[irisDa->dataSize]{0.0};irisDaW->dataSize=irisDa->dataSize;}VectorXf irisW(irisDa->dataSize);VectorXf irisX(irisDa->dataSize);for (int i=0;i<irisDa->dataSize;i++){irisX[i]=irisDa->irisX[i];irisW[i]=irisDaW->irisW[i];}float y=sgn(irisW.transpose()*irisX);irisW=irisW+a*(irisDa->d-y)*irisX;for (int i=0;i<irisDa->dataSize;i++){irisDaW->irisW[i]=irisW[i];}
}void showIrisW(){cout<<"权值:"<<endl;for (int i=0;i<irisDaW->dataSize;i++){cout<<irisDaW->irisW[i]<<" ";}cout<<endl;
}void dataTest(){//样本测试ifstream fileIn;char helloStr[100];//read csvfileIn.open("e:/ml_data/iris/iris_test.data");if (!fileIn.is_open()){cout<<"打开失败!"<<endl;return ;}regex strRx(R"((\d+)(\.)(\d+))");smatch match;while (fileIn>>helloStr){//construct x(n) and d(n)IrisDa *irisDa=new IrisDa;vector<string> sampleDatas=split(helloStr,',');int dataCount=sampleDatas.size();float *irisX= new float[dataCount];//x(n)irisX[0]=1.0;int irisD;//d(n)int i=1;for (const string &data: sampleDatas) {string irisData=removeSpaces(data);bool found = regex_match(irisData, match, strRx);if (found) {irisX[i]=stof(irisData);i++;}else{if (irisData=="Iris-setosa"){irisD=1;}else{irisD=-1;}}}irisDa->irisX=irisX;irisDa->d=irisD;irisDa->dataSize=dataCount;rbTest(irisDa);}fileIn.close();
}int sgn(float x){if (x>=0) {return 1;}else {return -1;}
}vector<string> split(const string &text, char separator) {vector<string> tokens;stringstream ss(text);string item;while (getline(ss, item, separator)) {if (!item.empty()) {tokens.push_back(item);}}return tokens;
}string removeSpaces(const string& input) {string result = input;result.erase(std::remove(result.begin(), result.end(), ' '), result.end());return result;
}

运行效果如下:

正在处理数据...
1 5.1 3.5 1.4 0.2 1
权值:
0 0 0 0 0
正在处理数据...
1 4.9 3 1.4 0.2 1
权值:
0 0 0 0 0
正在处理数据...
1 4.7 3.2 1.3 0.2 1
权值:
0 0 0 0 0
正在处理数据...
1 4.6 3.1 1.5 0.2 1
权值:
0 0 0 0 0
正在处理数据...
1 5.6 2.5 3.9 1.1 -1
权值:
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.7 3 5 1.7 -1
权值:
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.4 2.9 4.3 1.3 -1
权值:
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.6 3 4.4 1.4 -1
权值:
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 6.8 2.8 4.8 1.4 -1
权值:
-0.5 -2.8 -1.25 -1.95 -0.55
正在处理数据...
1 5.1 3.3 1.7 0.5 1
权值:
0 -0.25 0.4 -1.1 -0.3
正在处理数据...
1 4.8 3.4 1.9 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5 3 1.6 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5 3.4 1.6 0.4 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.2 3.5 1.5 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.2 3.4 1.4 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 4.7 3.2 1.6 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.1 3.8 1.9 0.4 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 4.8 3 1.4 0.3 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.1 3.8 1.6 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 4.6 3.2 1.4 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5.3 3.7 1.5 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 5 3.3 1.4 0.2 1
权值:
0.5 2.15 2.1 -0.15 -0.2
正在处理数据...
1 7 3.2 4.7 1.4 -1
权值:
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 6.4 3.2 4.5 1.5 -1
权值:
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 6.9 3.1 4.9 1.5 -1
权值:
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 5.5 2.3 4 1.3 -1
权值:
0 -1.35 0.5 -2.5 -0.9
正在处理数据...
1 4.8 3 1.4 0.1 1
权值:
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 4.3 3 1.1 0.1 1
权值:
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 5.8 4 1.2 0.2 1
权值:
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 5.7 4.4 1.5 0.4 1
权值:
0.5 1.05 2 -1.8 -0.85
正在处理数据...
1 5.7 2.8 4.5 1.3 -1
权值:
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 6.3 3.3 4.7 1.6 -1
权值:
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 4.9 2.4 3.3 1 -1
权值:
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 6.6 2.9 4.6 1.3 -1
权值:
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 5.2 2.7 3.9 1.4 -1
权值:
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 5 2 3.5 1 -1
权值:
0 -1.8 0.6 -4.05 -1.5
正在处理数据...
1 4.8 3.1 1.6 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.4 3.4 1.5 0.4 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.2 4.1 1.5 0.1 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 4.2 1.4 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.1 3.4 1.5 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5 3.5 1.3 0.3 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.5 2.3 1.3 0.3 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.4 3.2 1.3 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5 3.5 1.6 0.6 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.9 3 4.2 1.5 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6 2.2 4 1 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.1 2.9 4.7 1.4 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.6 2.9 3.6 1.3 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.7 3.1 4.4 1.4 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.4 3.7 1.5 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.8 3.4 1.6 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.6 3 4.5 1.5 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.8 2.7 4.1 1 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.2 2.2 4.5 1.5 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.9 3.1 1.5 0.1 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5 3.2 1.2 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 3.5 1.3 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.9 3.1 1.5 0.1 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.4 3 1.3 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.6 2.7 4.2 1.3 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.7 3 4.2 1.2 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.7 2.9 4.2 1.3 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6.2 2.9 4.3 1.3 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.1 2.5 3 1.1 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.4 2.9 1.4 0.2 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 4.9 3.1 1.5 0.1 1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 2.4 3.8 1.1 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.5 2.4 3.7 1 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.8 2.7 3.9 1.2 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6 2.7 5.1 1.6 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.4 3 4.5 1.5 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 6 3.4 4.5 1.6 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理数据...
1 5.7 2.8 4.1 1.3 -1
权值:
0.5 0.6 2.15 -3.25 -1.4
正在处理测试数据...
1 6 2.9 4.5 1.5
正确分类:-1预测分类:-1
正在处理测试数据...
1 5.7 2.6 3.5 1
正确分类:-1预测分类:-1
正在处理测试数据...
1 6.5 2.8 4.6 1.5
正确分类:-1预测分类:-1
正在处理测试数据...
1 5 2.3 3.3 1
正确分类:-1预测分类:-1
正在处理测试数据...
1 5 3.6 1.4 0.2
正确分类:1预测分类:1
正在处理测试数据...
1 5.4 3.9 1.7 0.4
正确分类:1预测分类:1
正在处理测试数据...
1 4.6 3.4 1.4 0.3
正确分类:1预测分类:1
正在处理测试数据...
1 5 3.4 1.5 0.2
正确分类:1预测分类:1
正在处理测试数据...
1 6.7 3.1 4.7 1.5
正确分类:-1预测分类:-1
正在处理测试数据...
1 6.3 2.3 4.4 1.3
正确分类:-1预测分类:-1
正在处理测试数据...
1 5.6 3 4.1 1.3
正确分类:-1预测分类:-1
正在处理测试数据...
1 5.5 2.5 4 1.3
正确分类:-1预测分类:-1
正在处理测试数据...
1 5.5 2.6 4.4 1.2
正确分类:-1预测分类:-1
正在处理测试数据...
1 6.1 3 4.6 1.4
正确分类:-1预测分类:-1
正在处理测试数据...
1 5.8 2.6 4 1.2
正确分类:-1预测分类:-1
正在处理测试数据...
1 5.4 3.9 1.3 0.4
正确分类:1预测分类:1
正在处理测试数据...
1 5.1 3.5 1.4 0.3
正确分类:1预测分类:1
正在处理测试数据...
1 5.7 3.8 1.7 0.3
正确分类:1预测分类:1
正在处理测试数据...
1 5.1 3.8 1.5 0.3
正确分类:1预测分类:1
正在处理测试数据...
1 5.4 3.4 1.7 0.2
正确分类:1预测分类:1
正在处理测试数据...
1 5.1 3.7 1.5 0.4
正确分类:1预测分类:1
正在处理测试数据...
1 4.6 3.6 1 0.2
正确分类:1预测分类:1
正在处理测试数据...
1 5.9 3.2 4.8 1.8
正确分类:-1预测分类:-1
正在处理测试数据...
1 6.1 2.8 4 1.3
正确分类:-1预测分类:-1
正在处理测试数据...
1 6.3 2.5 4.9 1.5
正确分类:-1预测分类:-1
正在处理测试数据...
1 6.1 2.8 4.7 1.2
正确分类:-1预测分类:-1Process returned 0 (0x0)   execution time : 0.901 s
Press any key to continue.

参考文献

1、《神经网络与机器学习 第三版》

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

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

相关文章

【技术路线选择】:Qt or macOS/iOS ?

【技术路线选择】&#xff1a;Qt or macOS/iOS ? 【Question 1】&#xff1a; I have more than two years of experience developing with the following skills: Qt C and macOS/iOS development. Im interested in pursuing a software engineering career and would …

Victor CMS v1.0 SQL 注入漏洞(CVE-2022-28060)

前言 CVE-2022-28060 是 Victor CMS v1.0 中的一个SQL注入漏洞。该漏洞存在于 /includes/login.php 文件中的 user_name 参数。攻击者可以通过发送特制的 SQL 语句&#xff0c;利用这个漏洞执行未授权的数据库操作&#xff0c;从而访问或修改数据库中的敏感信息。 漏洞详细信…

论文阅读_优化RAG系统的检索

英文名称: The Power of Noise: Redefining Retrieval for RAG Systems 中文名称: 噪声的力量&#xff1a;重新定义RAG系统的检索 链接: https://arxiv.org/pdf/2401.14887.pdf 作者: Florin Cuconasu, Giovanni Trappolini, Federico Siciliano, Simone Filice, Cesare Campag…

半导体中名词“wafer”“chip”“die”中文名字和用途

①wafer——晶圆 wafer 即为图片所示的晶圆&#xff0c;由纯硅(Si)构成。一般分为6英寸、8英寸、12英寸规格不等&#xff0c;晶片就是基于这个wafer上生产出来的。晶圆是指硅半导体集成电路制作所用的硅晶片&#xff0c;由于其形状为圆形&#xff0c;故称为晶圆;在硅晶片上可加…

App测试技术(纯理论)

之前我们也学习过一些普通用例的设计, 如功能, 性能, 安全性, 兼容性, 易用性, 界面的测试用例设计, 之前我们讲的基本都是对于Web应用而言的, 这里我们来讲一下移动端的App测试用例设计. 功能方面 安装&卸载测试 这是只属于App的一类测试, 再平常我们使用移动设备(手机…

php 命令行模式详解

PHP 的命令行模式&#xff08;Command Line Interface, CLI&#xff09;是 PHP 的一个特定版本或运行时配置&#xff0c;它允许 PHP 脚本在没有 Web 服务器的情况下直接在命令行环境中执行。CLI 版本的 PHP 通常不包含 CGI 或者其他 web server 接口&#xff0c;因此更轻量级&a…

Redis的使用(一)概述

1.绪论 redis是一款用c编写的kv数据库&#xff0c;它具有丰富的数据类型&#xff0c;并且执行原子操作&#xff0c;自带数持久化&#xff0c;并且实现了集群部署等功能&#xff0c;我们来看看它有哪些特点: 1.提供了丰富的数据结构&#xff0c;比如string&#xff0c;list&am…

【第11章】MyBatis-Plus条件构造器(上)

文章目录 前言一、功能详解1. allEq2. eq3. ne4. gt5. ge6. lt7. le8. between9. notBetween10. like11. notLike12. likeLeft13. likeRight14. notLikeLeft15. notLikeRight16. isNull17. in18. notIn19. inSql20. notInSql21. eqSqlSince 3.5.622. gtSql Since 3.4.3.223. ge…

Linux4(Docker)

目录 一、Docker介绍 二、Docker结构 三、Docker安装 四、Docker 镜像 五、Docker 容器 六、Docker 安装nginx 七、Docker 中的MySQL部署 一、Docker介绍 Docker&#xff1a;是给予Go语言实现的开源项目。 Docker的主要目标是“Build,Ship and Run Any App,Anywhere” 也…

jenkins配置git

参考&#xff1a; 容器化部署 Jenkins&#xff0c;并配置SSH远程操作服务器_jenkins ssh-CSDN博客

类和对象【上】【C++】

P. S.&#xff1a;以下代码均在VS2019环境下测试&#xff0c;不代表所有编译器均可通过。 P. S.&#xff1a;测试代码均未展示头文件stdio.h的声明&#xff0c;使用时请自行添加。 博主主页&#xff1a;LiUEEEEE                        …

依托天拓四方工业智能网关实现CNC数控机床的远程运维

随着工业4.0时代的到来&#xff0c;智能制造和工业互联网成为了推动制造业转型升级的重要力量。CNC数控机床作为制造业的核心设备&#xff0c;其运行效率与稳定性直接关系到企业的生产效益。因此&#xff0c;实现CNC数控机床的远程运维&#xff0c;对于提升企业竞争力、降低运营…

安装 Docker 环境(通过云平台创建一个实例实现)

目录 1. 删除原有 yum 2. 手动配置 yum 源 3. 删除防火墙规则 4. 保存防火墙配置 5. 修改系统内核。打开内核转发功能。 6. 安装 Docker 7. 设置本地镜像仓库 8.重启服务 1. 删除原有 yum rm -rfv /etc/yum.repos.d/* 2. 手动配置 yum 源 使用 centos7-1511.iso 和 Xi…

Apache Iceberg:现代数据湖存储格式的未来

Apache Iceberg 是一个开源的表格式&#xff0c;用于在分布式数据湖中管理大规模数据集。它由 Netflix 开发&#xff0c;并捐赠给 Apache 基金会。Iceberg 的设计目标是解决传统数据湖存储格式&#xff08;如 Apache Hive 和 Apache Parquet&#xff09;在大规模数据管理中的一…

Java [ 基础 ] 方法引用 ✨

✨探索Java基础✨ Java基础&#xff1a;方法引用 方法引用是Java 8中引入的一种新特性&#xff0c;它使得代码更加简洁和易读。方法引用提供了一种可以直接引用已有方法作为Lambda表达式的替代方案。本文将深入介绍方法引用的基本概念、使用方法、具体实例及其在实际开发中的…

说一说应如何组织团建

1. 背景 团建&#xff0c;全称为团队建设&#xff08;Team Building, TB&#xff09;&#xff0c;是一种通过各种活动和训练&#xff0c;提高团队凝聚力&#xff0c;增强团队合作精神&#xff0c;提升团队效率的过程。团建活动可以包括各种形式&#xff0c;如户外拓展训练、团…

【深入浅出 】——【Python 字典】——【详解】

目录 1. 什么是 Python 字典&#xff1f; 1.1 字典的基本概念 1.2 字典的用途 1.3 字典的优势 2. 字典的基本特点 2.1 键的唯一性 2.2 可变性 2.3 无序性 3. 如何创建字典&#xff1f; 3.1 使用 {} 符号 3.2 使用 dict() 工厂方法 3.3 使用 fromkeys() 方法 4. 字…

[工业网络][2] 安全背景知识

安全背景知识 物理、网络和人员安全 在考虑企业和工业的安全性时&#xff0c;安全从业人员传统上将自己划分为三个专业领域。我们借助于安全中经常使用的两个术语来描述这三个领域 业内人士。属于您的设施的人员&#xff0c;包括员工和受邀承包商&#xff0c;访客或交付和服…

研发项目开发效率的影响因素浅析

适应日益加剧的竞争环境、把握瞬息万变的市场信息是企业得以生存和发展的基础&#xff0c;某大型IT公司估计其产品推迟上市一个月将导致收入减少530万&#xff08;人民币&#xff09;、利润减少265万、还要付出另外的研发费用37.5万。这就对产品研发项目提出了更高的要求&#…