【国科大模式识别】第三次作业

news2024/9/25 23:20:50

【题目一】现有四个来自于两个类别的二维空间中的样本, 其中第一类的两个样本为 ( 1 , 4 ) T (1,4)^T (1,4)T ( 2 , 3 ) T (2,3)^T (2,3)T, 第二类的两个样本为 ( 4 , 1 ) T (4,1)^T (4,1)T ( 3 , 2 ) T (3,2)^T (3,2)T 。这里, 上标 T T T 表示向量转置。若采用规范化增广样本表示形式, 并假设初始的权向量 a = ( 0 , 1 , 0 ) T \mathbf{a}=(0,1,0)^T a=(0,1,0)T, 其中向量 a \mathbf{a} a 的第三维对应于样本的齐次坐标。同时, 假定梯度更新步长 η k \eta_k ηk 固定为 1 。试利用批处理感知准则函数方法求解线性判别函数 g ( y ) = a T y g(\mathbf{y})=\mathbf{a}^T \mathbf{y} g(y)=aTy 的权向量 a \mathbf{a} a 。(注: “规范化增广样本表示” 是指对齐次坐标表示的样本 进行规范化处理。

在这里插入图片描述

【解】第一类的样本规范化后为: x 1 = [ 1 , 4 , 1 ] x_1=[1,4,1] x1=[1,4,1] x 2 = [ 2 , 3 , 1 ] x_2=[2,3,1] x2=[2,3,1]; 第二类的样本规范化后为: x 3 = [ − 4 , − 1 , − 1 ] x_3=[-4,-1,-1] x3=[4,1,1] x 4 = [ − 3 , − 2 , − 1 ] x_4=[-3,-2,-1] x4=[3,2,1], 初始化的权重向量为 [ 0 , 1 , 0 ] [0,1,0] [0,1,0], 用权重向量来判别所有样本的类别, 结果如下: x 1 : [ 0 , 1 , 0 ] [ 1 , 4 , 1 ] T = 4 > 0 x 2 : [ 0 , 1 , 0 ] [ 2 , 3 , 1 ] T = 3 > 0 x 3 : [ 0 , 1 , 0 ] [ − 4 , − 1 , − 1 ] T = − 1 < 0 x 4 : [ 0 , 1 , 0 ] [ − 3 , − 2 , − 1 ] T = − 2 < 0 \begin{gathered} x_1:[0,1,0][1,4,1]^T=4>0 \\ x_2:[0,1,0][2,3,1]^T=3>0 \\ x_3:[0,1,0][-4,-1,-1]^T=-1<0 \\ x_4:[0,1,0][-3,-2,-1]^T=-2<0 \end{gathered} x1:[0,1,0][1,4,1]T=4>0x2:[0,1,0][2,3,1]T=3>0x3:[0,1,0][4,1,1]T=1<0x4:[0,1,0][3,2,1]T=2<0希望判别结果全为正, 所以 x 3 x_3 x3 x 4 x_4 x4 被错分, 更新步长为 1 时, 权向量更新为: [ 0 , 1 , 0 ] + [ − 4 , − 1 , − 1 ] + [ − 3 , − 2 , − 1 ] = [ − 7 , − 2 , − 2 ] [0,1,0]+[-4,-1,-1]+[-3,-2,-1]=[-7,-2,-2] [0,1,0]+[4,1,1]+[3,2,1]=[7,2,2]计算是否都正确分类
x 1 : [ − 7 , − 2 , − 2 ] [ 1 , 4 , 1 ] T = − 17 < 0 x 2 : [ − 7 , − 2 , − 2 ] [ 2 , 3 , 1 ] T = − 22 < 0 x 3 : [ − 7 , − 2 , − 2 ] [ − 4 , − 1 , − 1 ] T = 32 > 0 x 4 : [ − 7 , − 2 , − 2 ] [ − 3 , − 2 , − 1 ] T = 27 > 0 \begin{gathered} x_1:[-7,-2,-2][1,4,1]^T=-17<0 \\ x_2:[-7,-2,-2][2,3,1]^T=-22<0 \\ x_3:[-7,-2,-2][-4,-1,-1]^T=32>0 \\ x_4:[-7,-2,-2][-3,-2,-1]^T=27>0 \end{gathered} x1:[7,2,2][1,4,1]T=17<0x2:[7,2,2][2,3,1]T=22<0x3:[7,2,2][4,1,1]T=32>0x4:[7,2,2][3,2,1]T=27>0希望判别结果全为正, 所以 x 1 x_1 x1 x 2 x_2 x2 被错分, 更新步长为 1 时, 权向量更新为: [ − 7 , − 2 , − 2 ] + [ 1 , 4 , 1 ] + [ 2 , 3 , 1 ] = [ − 4 , 5 , 0 ] [-7,-2,-2]+[1,4,1]+[2,3,1]=[-4,5,0] [7,2,2]+[1,4,1]+[2,3,1]=[4,5,0]计算是否正确分类 x 1 : [ − 4 , 5 , 0 ] [ 1 , 4 , 1 ] T = 16 > 0 x 2 : [ − 4 , 5 , 0 ] [ 2 , 3 , 1 ] T = 7 > 0 x 3 : [ − 4 , 5 , 0 ] [ − 4 , − 1 , − 1 ] T = 11 > 0 x 4 : [ − 4 , 5 , 0 ] [ − 3 , − 2 , − 1 ] T = 2 > 0 \begin{gathered} x_1:[-4,5,0][1,4,1]^T=16>0 \\ x_2:[-4,5,0][2,3,1]^T=7>0\\ x_3:[-4,5,0][-4,-1,-1]^T=11>0 \\ x_4:[-4,5,0][-3,-2,-1]^T=2>0 \end{gathered} x1:[4,5,0][1,4,1]T=16>0x2:[4,5,0][2,3,1]T=7>0x3:[4,5,0][4,1,1]T=11>0x4:[4,5,0][3,2,1]T=2>0于是得到最终的权向量 [ − 4 , 5 , 0 ] [-4,5,0] [4,5,0]

【题目二】对于多类分类情形, 考虑 one-vs-all 技巧, 即构建 c c c 个线性判别函数: g i ( x ) = w i T x + w i 0 , i = 1 , 2 , … , c g_i(\mathbf{x})=\mathbf{w}_i^T \mathbf{x}+w_{i 0}, \quad i=1,2, \ldots, c gi(x)=wiTx+wi0,i=1,2,,c此时的决策规则为: 对 j ≠ i j \neq i j=i, 如果 g i ( x ) > g j ( x ) , x g_i(\mathbf{x})>g_j(\mathbf{x}), \mathbf{x} gi(x)>gj(x),x 则被分为 ω i \omega_i ωi 类。现有三个二维空间 内的模式分类器, 其判别函数为: g 1 ( x ) = − x 1 + x 2 g 2 ( x ) = x 1 + x 2 − 1 g 3 ( x ) = − x 2 \begin{aligned} & g_1(\mathbf{x})=-x_1+x_2 \\ & g_2(\mathbf{x})=x_1+x_2-1 \\ & g_3(\mathbf{x})=-x_2 \end{aligned} g1(x)=x1+x2g2(x)=x1+x21g3(x)=x2试画出决策面, 指出为何此时不存在分类不确定性区域。

【解】根据决策规则, 属于 ω \omega ω 的区域应该满足 g 1 ( x ) > g 2 ( x ) g_1(x)>g_2(x) g1(x)>g2(x) g 1 ( x ) > g 3 ( x ) g_1(x)>g_3(x) g1(x)>g3(x), 所以 ω 1 \omega_1 ω1 的决策边界为:
g 1 ( x ) − g 2 ( x ) = − 2 x 1 + 1 = 0 g 1 ( x ) − g 3 ( x ) = − x 1 + 2 x 2 = 0 \begin{gathered} g_1(x)-g_2(x)=-2 x_1+1=0 \\ g_1(x)-g_3(x)=-x_1+2 x_2=0 \end{gathered} g1(x)g2(x)=2x1+1=0g1(x)g3(x)=x1+2x2=0
还有一条分界线 g 2 ( x ) − g 3 ( x ) = x 1 + 2 x 2 − 1 = 0 g_2(x)-g_3(x)=x_1+2x_2-1=0 g2(x)g3(x)=x1+2x21=0由于决策边界交于一点 ( 0.5 , 0.25 ) (0.5,0.25) (0.5,0.25), 因此, 不存在不确定区域

clc;
close all;
clear;
plot(0.5*ones(1,100),linspace(0.25,5,100));
hold on;
x1 = linspace(-5,0.5,100);
plot(x1,1/2*x1);
hold on;
x2 = linspace(0.5,5,100);
plot(x2,(-x2+1)/2);
t = text(-3,3,'{\omega_1}');
t.FontSize = 24;
t1 = text(3,3,'{\omega_2}');
t1.FontSize = 24;
t2 = text(0.5,-2,'{\omega_3}');
t2.FontSize = 24;

在这里插入图片描述
【编程题】(下面瞎做的,大佬轻点喷)

  1. Write a program to implement the “batch perception” algorithm.
    (a). Starting with a = 0 \mathbf{a}=\mathbf{0} a=0, apply your program to the training data from ω 1 \omega_1 ω1 and ω 2 \omega_2 ω2. Note that the number of iterations required for convergence(即记录下收敛的步数)。
    (b). Apply your program to the training data from ω 3 \omega_3 ω3 and ω 2 \omega_2 ω2. Again, note that the number of iterations required for convergence.
clc;
close all;
clear;
trainset1 = [0.1, 1.1, 1; 6.8, 7.1, 1; -3.5, -4.1, 1;
             2.0, 2.7, 1; 4.1, 2.8, 1; 3.1, 5.0, 1;-0.8, -1.3, 1;
             0.9, 1.2, 1; 5.0, 6.4, 1; 3.9, 4.0, 1;-7.1, -4.2, -1;
             1.4, 4.3, -1; -4.5, -0.0, -1;-6.3, -1.6, -1;-4.2, -1.9, -1;-1.4, 3.2, -1;
             -2.4, 4.0, -1;-2.5, 6.1, -1;-8.4, -3.7, -1;-4.1, -2.2, -1];  
trainset2 = [-7.1, -4.2, -1;
             1.4, 4.3, -1; -4.5, -0.0, -1;-6.3, -1.6, -1;-4.2, -1.9, -1;-1.4, 3.2, -1;
             -2.4, 4.0, -1;-2.5, 6.1, -1;-8.4, -3.7, -1;-4.1, -2.2, -1 ;-3.0, -2.9, 1;0.5, 8.7, 1;2.9, 2.1, 1;
             -0.1, 5.2, 1;-4.0, 2.2, 1;-1.3, 3.7, 1;-3.4, 6.2, 1;-4.1, 3.4, 1;
             -5.1, 1.6, 1;1.9, 5.1, 1];
omega_1 = [0,0,0];
omega_2 = [0,0,0];
learning_rate = 0.01;


iteration1 = 0;
while iteration1<=1001
    iteration1 = iteration1 + 1;
    if sum(omega_1*trainset1'>0) == 20
        %print('迭代次数为',num2str(iteration1))
        %print('权重为',num2str(omega_1))
        iteration1
        omega_1
        break
    else
        omega_1 = omega_1 + sum(trainset1(omega_1*trainset1' <= 0,:)*learning_rate);
    end
    if iteration1 == 1000
        print('迭代次数已达最大1000')
        omega1
    end
end
   

iteration2 = 0;
while iteration2<=1001
    iteration2 = iteration2 + 1;
    if sum(omega_2*trainset2'>0) == 20
        %print('迭代次数为',num2str(iteration1))
        %print('权重为',num2str(omega_1))
        iteration2
        omega_2
        break
    else
        omega_2 = omega_2 + sum(trainset2(omega_2*trainset2' <= 0,:)*learning_rate);
    end
    if iteration2 == 1000
        print('迭代次数已达最大1000')
        omega2
    end
end
    


在这里插入图片描述

  1. Implement the Ho-Kashyap algorithm and apply it to the training data from ω 1 \omega_1 ω1 and ω 3 \omega_3 ω3. Repeat to apply it to the training data from ω 2 \omega_2 ω2 and ω 4 \omega_4 ω4. Point out the training errors, and give some analyses.
clc;
close all;
clear;
a = [0,0,0]';   % 初始权重
b = ones(20,1)*0.01;  % 初始margin
bmin = ones(20,1)*0.001; % 误差阈值
Y1 = [0.1 1.1 1;
    6.8 7.1 1;
    -3.5 -4.1 1;
    2.0 2.7 1;
    4.1 2.8 1;
    3.1 5.0 1;
    -0.8 -1.3 1;
    0.9 1.2 1;
    5.0 6.4 1;
    3.9 4.0 1;
    3.0 2.9 -1;
    -0.5 -8.7 -1;
    -2.9 -2.1 -1;
    0.1 -5.2 -1;
    4.0 -2.2 -1;
    1.3 -3.7 -1;
    3.4 -6.2 -1;
    4.1 -3.4 -1;
    5.1 -1.6 -1;
    -1.9 -5.1 -1];
Y2 = [7.1 4.2 1;
    -1.4 -4.3 1;
    4.5 0.0 1;
    6.3 1.6 1;
    4.2 1.9 1;
    1.4 -3.2 1;
    2.4 -4.0 1;
    2.5 -6.1 1;
    8.4 3.7 1;
    4.1 -2.2 1;
    2.0 8.4 -1;
    8.9 -0.2 -1;
    4.2 7.7 -1;
    8.5 3.2 -1;
    6.7 4.0 -1;
    0.5 9.2 -1;
    5.3 6.7 -1;
    8.7 6.4 -1;
    7.1 9.7 -1;
    8.0 6.3 -1];
kmax = 100000;    % 最大迭代次数
learning_rate = 0.01;
iterations = 0;  % 迭代次数
e = [1 1 1]';  % error


%======================%
while 1
    e = Y1*a-b;
    e_plus = 1/2*(e + abs(e));
    b = b + 2*learning_rate*e_plus;
    a = (Y1'*Y1)\Y1'*b;
    iterations =iterations+1;
    if abs(e) <= bmin
        a
        b
        iterations
        break
    end
    
    if iterations == kmax
        disp('No solution found!')
        sprintf('迭代已达最大次数%d',kmax)
        disp('========================')
        break
    end
end

%======================%
while 1
    e = Y2*a-b;
    e_plus = 1/2*(e + abs(e));
    b = b + 2*learning_rate*e_plus;
    a = (Y2'*Y2)\Y2'*b;
    iterations =iterations+1;
    if abs(e) <= bmin
        a
        b
        iterations
        break
    end
    
    if iterations == kmax
        disp('No solution found!')
        sprintf('迭代已达最大次数%d',kmax)
        break
    end
    
end

输出结果:

No solution found!
ans =
    '迭代已达最大次数100000'
========================
a =
    0.0063
    0.0050
    0.0398
b =
    0.1056
    0.0105
    0.0682
    0.0875
    0.0758
    0.0326
    0.0349
    0.0250
    0.1113
    0.0546
    0.0149
    0.0156
    0.0252
    0.0298
    0.0224
    0.0100
    0.0272
    0.0471
    0.0535
    0.0422
iterations =
      122298

【分析】
在这里插入图片描述
由于1类和3类是线性不可分的,所以算法肯定是不收敛的。
画出上面这个分布图的代码:

clc;
close all;
clear;
omega1_x = [0.1,6.8,-3.5,2.0,4.1,3.1,-0.8,0.9,5.0,3.9];
omega1_y = [1.1,7.1,-4.1,2.7,2.8,5.0,-1.3,1.2,6.4,4.0];
omega2_x = [7.1,-1.4,4.5,6.3,4.2,1.4,2.4,2.5,8.4,4.1];
omega2_y = [4.2,-4.3,0.0,1.6,1.9,-3.2,-4.0,-6.1,3.7,-2.2];
omega3_x = [-3.0,0.5,2.9,-0.1,-4.0,-1.3,-3.4,-4.1,-5.1,1.9];
omega3_y = [-2.9,8.7,2.1,5.2,2.2,3.7,6.2,3.4,1.6,5.1];
omega4_x = [-2.0,-8.9,-4.2,-8.5,-6.7,-0.5,-5.3,-8.7,-7.1,-8.0];
omega4_y = [-8.4,0.2,-7.7,-3.2,-4.0,-9.2,-6.7,-6.4,-9.7,-6.3];
figure();
scatter(omega1_x,omega1_y,'filled');
hold on
scatter(omega2_x,omega2_y,'filled');
hold on
scatter(omega3_x,omega3_y,'filled');
hold on
scatter(omega4_x,omega4_y,'filled');
hold off
legend('\omega_1','\omega_2','\omega_3','\omega_4');
  1. 请写一个程序, 实现 MSE 多类扩展方法。每一类用前 8 个样本来构造分类器, 用后两个样本作测试。请写出主要计算步骤, 并给出你的正确率。
clc;
close all;
clear;
Y = [1 0 0 0;1 0 0 0;1 0 0 0;1 0 0 0;1 0 0 0;1 0 0 0;1 0 0 0;1 0 0 0;
    0 1 0 0;0 1 0 0;0 1 0 0;0 1 0 0;0 1 0 0;0 1 0 0;0 1 0 0;0 1 0 0;
    0 0 1 0;0 0 1 0;0 0 1 0;0 0 1 0;0 0 1 0;0 0 1 0;0 0 1 0;0 0 1 0;
    0 0 0 1;0 0 0 1;0 0 0 1;0 0 0 1;0 0 0 1;0 0 0 1;0 0 0 1;0 0 0 1;]';
X_hat = [0.1 1.1 1;6.8 7.1 1;-3.5 -4.1 1;2.0 2.7 1;4.1 2.8 1;3.1 5.0 1;-0.8 -1.3 1;0.9 1.2 1;
7.1 4.2 1;-1.4 -4.3 1;4.5 0.0 1;6.3 1.6 1;4.2 1.9 1;1.4 -3.2 1;2.4 -4.0 1;2.5 -6.1 1;-3.0 -2.9 1;
0.5 8.7 1;2.9 2.1 1;-0.1 5.2 1;-4.0 2.2 1;-1.3 3.7 1;-3.4 6.2 1;-4.1 3.4 1;-2.0 -8.4 1;-8.9 0.2 1;
-4.2 -7.7 1;-8.5 -3.2 1;-6.7 -4.0 1;-0.5 -9.2 1;-5.3 -6.7 1;-8.7 -6.4 1]';
W_hat = (X_hat*X_hat')\X_hat*Y';
X_test = [5.0 6.4 1;3.9 4.0 1;8.4 3.7 1;4.1 -2.2 1;
    -5.1 1.6 1;1.9 5.1 1;-7.1 -9.7 1; -8.0 -6.3 1]';
[a,b] = max(W_hat'*X_test);
b

在这里插入图片描述

正确率100%

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

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

相关文章

权限问题的理解——Linux

这里是目录标题一、重定向二、 学Linux的意义三、shell命令的运行原理四、Linux权限管理1.Linux中具体用户的分类五、Linux文件相关的权限概念文件类型文件的权限文件的权限操作去掉权限加上权限八进制文件权限操作更改文件的拥有者和所属组六、目录的权限七、默认权限权限掩码…

树莓派项目归档

Flask Flask登录注册界面美化 Flask 修改路由 Flask 创建404json返回 返回虚拟温湿度 Flask-移植开发环境到VSCode-手机局域网访问测试 Flask AJAX 获取数据 Flask 将项目从win部署到树莓派 添加监控窗口 Flask 编写shell脚本快速启动服务 树莓派 树莓派4B Ubuntu MAT…

leetcode螺旋矩阵总结

螺旋矩阵题目&#xff1a; leetcode54&#xff0c;59&#xff0c;885&#xff0c;2326 leetcode54 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出&#xff1a;[1,2,3,6,9,8,7,4,5] 输入&#xff1a;matrix [[1,2,3,4],[5,6,7,8],[9,10,11,12]] 输出&#xff1a;[…

MSTP技术中引入的必要性

目前&#xff0c;城域光传送网大量存在的是传统的SONET/SDH环网和简单的MSTP网络&#xff0c;对带宽的指配基本上是静态的&#xff0c;无法适应大量的突发性数据业务&#xff0c;需要大量的人工操作和维护&#xff0c;耗时耗力、容易出错。为了改变现状&#xff0c;人们不断在传…

第二章 Flink 环境部署

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、Flink架构 Flink 是一个分布式系统&#xff0c;需要有效分配和管理计算资源…

python-turtle画图

认识TurtleTurtle是一个渲染器基于底层图形编程结构(API)构建&#xff0c;主要用于场景的构建以及3D物体的绘制(3D游戏、虚拟场景等)Turtle是一个窗体程序Turtle是Python语言中的一个很流行的绘制图像的函数库&#xff0c;想象一个小海龟在一个横轴为x&#xff0c;纵轴为y的坐标…

时序数据库 TDengine 携手北京科技大学设计研究院,助力冶金工业智慧化

北京科技大学设计研究院有限公司作为北京科技大学全资产业化技术推广机构&#xff0c;从 2013 年开始在冶金、钢铁行业进行业务系统开发和实施&#xff0c;围绕先进材料、绿色低碳和智能制造不断深耕细作&#xff0c;持续创新。其拥有高效轧制与智能制造国家工程研究中心、国家…

DPDK工作原理和环境搭建

DPDK工作原理DPDK环境搭建编译DPDKDPDK工作原理DPDK实践之处理UDP数据总结DPDK环境搭建 工具准备&#xff1a;VMware、ubuntu16.04。 &#xff08;1&#xff09;VMware添加两个网卡。桥接网卡作为 DPDK 运行的网卡&#xff0c;NAT 网卡作为 ssh 连接的网卡。 &#xff08;2&…

后台交互—springboot+mybatis整合小程序(源码演示)

后台准备pom.xml<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM…

【案例实战】SpringBoot整合GRPC微服务远程通信

1.什么是GRPC GRPC是RPC框架中的一种&#xff0c;是一个高性能&#xff0c;开源和通用的RPC框架&#xff0c;基于Protobuf序列化协议开发&#xff0c;且支持众多开发语言。 面向服务端和协议端&#xff0c;基于http/2设计&#xff0c;带来诸如双向流&#xff0c;流控&#xff…

足球视频AI(三)——YOLOV7目标检测自训练模型

一、基础概念 YoloV7提供的yolov7-tiny.onnx 对于图像中包含较大尺寸的足球检测准确率高。 但在实际应用中&#xff0c;足球视频中的足球非常小&#xff0c;默认的模型难于满足实际的足球检测需求。 1.1 识别目标 1&#xff09;固定机位的视频中足球的逐帧识别 1.2 实现思…

邮箱2023系统

邮箱2023系统 前言 VMMail作为一款开源的邮件系统&#xff0c;目前已经发布到了10.0版本。 该版本在 GitHub上是免费的&#xff0c;且代码也是开源的&#xff0c;所以该程序不会对 GitHub上的所有用户造成任何影响。 由于 VMMail开发时采用了开源代码&#xff0c;并在 GitHub上…

区块链之bolt数据库持久化与基本功能完善

文章目录bolt数据库安装使用bolt进行持久化存储bolt持久化的基本步骤创世区块的持久化新增区块的持久化完善区块链基本功能创世区块创建增加区块遍历区块链链接&#xff1a; 区块链项目github地址项目目前进度&#xff1a;bolt数据库安装 bolt数据库介绍&#xff1a; bolt数据…

Vue3过渡动画实现

文章目录P14Vue3过渡&动画实现过渡动画的使用过渡CSS动画效果同时设置过渡和动画mode和appearanimate.cssgsapgsap实现数字变化认识列表的过渡列表过渡的移动动画列表的交错过渡案例P14Vue3过渡&动画实现 过渡动画的使用 <template><button click"isShow…

进入新组织项目经理如何快速提升自己的影响力?

我们在工作中&#xff0c;经常以“对事不对人”来体现他们的专业性&#xff0c;但是这点并不符合人性。更多时候对人不对事&#xff0c;反倒能提高问题的解决能力。项目经理会发现&#xff0c;很多事情的推进&#xff0c;都建立在和对方的信任的基础上&#xff0c;所以先成为对…

使用Qt开发的linux嵌入式设备监控、管理框架,监测嵌入式设备运行状态,执行远程shell,远程升级,与客户端进行文件传输

linux SPY 简介 使用Qt开发的linux嵌入式设备监控、管理框架 [客户端]&#xff1a;aes_tcp_lib 完整代码下载地址&#xff1a;使用Qt开发的linux嵌入式设备监控、管理框架 开发环境 ubuntu 20Qt 5.12Qt Creator 4.13.1 核心功能 监测嵌入式设备运行状态转发客户端消息,…

划重点!企业在采购管理中应避免的10个错误

一家企业的采购能力在很大程度上取决于其采购管理系统的有效性。当系统运行良好时&#xff0c;那么采购就会相当顺利。如果你使用的是一个低效的系统&#xff0c;那就会导致一大堆常见的采购问题。 无论采购错误的根本原因是什么&#xff0c;任其发展&#xff0c;最终会给企业…

【ZooKeeper】第二章 JavaAPI 操作

【ZooKeeper】第二章 JavaAPI 操作 文章目录【ZooKeeper】第二章 JavaAPI 操作一、Curator 简介二、Curator API1.建立连接2.创建节点3.查询节点4.修改节点5.删除节点6.Watch 事件监听三、分布式锁四、案例&#xff1a;12306售票一、Curator 简介 Curator 是 Apache ZooKeeper…

【云原生进阶之容器】第二章Controller Manager原理2.3节--Reflector分析

1 Reflector组件 1.1 背景 Reflector 是保证 Informer 可靠性的核心组件,在丢失事件,收到异常事件,处理事件失败等多种异常情况下需要考虑的细节很多。单独的listwatcher缺少重新连接和重新同步机制,有可能出现数据不一致问题。其对事件响应是同步的,如果执行复杂的操作会…

把财务分析明白的BI软件有哪些?

有财务分析这一个地狱级的在&#xff0c;什么销售、采购、库存都是渣渣。在财务分析中&#xff0c;指标运算组合可以有多样化的改变&#xff0c;资金来来回回能把人绕晕&#xff0c;一个极不起眼的疏忽都可能导致所有工作推到重来的可怕后果。即使是在擅长做大数据智能可视化分…