机器学习:基于支持向量机(SVM)进行人脸识别预测
机器学习:基于支持向量机(SVM)进行人脸识别预测
文章目录
- 机器学习:基于支持向量机(SVM)进行人脸识别预测
- 一、实验目的
- 二、实验原理
- 三、实验环境
- 四、实验内容
- 五、实验步骤
- 1.准备数据
- 2.业务理解
- 3.数据理解
- 4.数据划分为测试集和训练集
- 5.模型构建
- 6.参数调整
- 7.预测测试集的人名编号
- 8.显示预测结果
- 9.分析预测结果的准确性
- 10.完整代码
- 总结
一、实验目的
1.理解SVM原理
2.掌握scikit-learn操作SVM的方法
二、实验原理
SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。通过寻求结构化风险最小来提高学习机泛化能力,实现经验风险和置信范围的最小化,从而达到在统计样本量较少的情况下,亦能获得良好统计规律的目的。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的线性分类器,即支持向量机的学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。
具体原理:
1.在n维空间中找到一个分类超平面,将空间上的点分类。如下图是线性分类的例子。
2.一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。SVM就是要最大化这个间隔值。而在虚线上的点便叫做支持向量Supprot Verctor。
3.实际上,我们会经常遇到线性不可分的样例,此时,我们的常用做法是把样例特征映射到高维空间中去(如下图);
4.线性不可分映射到高维空间,可能会导致维度大小高到可怕(19维乃至无穷维的例子),导致计算复杂。核函数的价值在于它虽然也是讲特征进行从低维到高维的转换,但核函数绝就绝在它事先在低维上进行计算,而将实质上的分类效果表现在了高维上,也就如上文所说的避免了直接在高维空间中的复杂计算。
5.使用松弛变量处理数据噪音
sklearn中SVM的结构,及各个参数说明如下
sklearn.svm.SVC :
C:C-SVC的惩罚参数C?默认值是1.0
C越大,相当于惩罚松弛变量,希望松弛变量接近0,即对误分类的惩罚增大,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱。C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
kernel :核函数,默认是rbf,可以是‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’
0 – 线性:u’v
1 – 多项式:(gamma*u’v + coef0)^degree
2 – RBF函数:exp(-gamma|u-v|^2)
3 –sigmoid:tanh(gammau’v + coef0)
degree :多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
gamma : ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’,则会选择1/n_features
coef0 :核函数的常数项。对于‘poly’和 ‘sigmoid’有用。
probability :是否采用概率估计?.默认为False
shrinking :是否采用shrinking heuristic方法,默认为true
tol :停止训练的误差值大小,默认为1e-3
cache_size :核函数cache缓存大小,默认为200
class_weight :类别的权重,字典形式传递。设置第几类的参数C为weightC(C-SVC中的C)
verbose :允许冗余输出?
max_iter :最大迭代次数。-1为无限制。
decision_function_shape :‘ovo’, ‘ovr’ or None, default=None3
random_state :数据洗牌时的种子值,int值
主要调节的参数有:C、kernel、degree、gamma、coef0。
三、实验环境
Python 3.9
Jupyter
四、实验内容
利用sklearn中的svm支持向量机对fetch_lfw_people数据进行人脸识别,并将预测结果可视化。
五、实验步骤
1.准备数据
1.首先需要的数据有:joblib、lfw_funneled、pairs.txt、pairsDevTest.txt、pairsDevTrain.txt
注意:也可以直接使用fetch_lfw_people这个函数是用来加载lfw人脸识别数据集的函数。
2.其次在其路径中创建一个文件
3.最后在文件里创建一个ipynb文件
SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。
2.业务理解
利用sklearn中的svm支持向量机做人脸识别
该数据集是在互联网上收集的著名人物的JPEG图片的集合,所有详细信息可在官方网站上获得:
http://scikit-learn.org/stable/datasets/labeled_faces.html
http://vis-www.cs.umass.edu/lfw/
每张照片都以一张脸为中心。每个通道的每个像素(RGB中的颜色)由范围为0.0-1.0的浮点编码。
该任务称为面部识别(或识别):给定面部图片,找到给定训练集(图库)的人的姓名。
3.数据理解
1.在刚才新建的ipynb文件中,编写代码,导入数据
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns;sns.set()
from matplotlib.font_manager import FontProperties
#导入fetch_lfw_people
from sklearn.datasets import fetch_lfw_people
#fetch_lfw_people函数加载人脸识别数据集
faces = fetch_lfw_people(min_faces_per_person=60)
#输出人名
print(faces.target_names)
#输出人脸数据结构
print(faces.images.shape)
说明:
fetch_lfw_people这个函数是用来加载lfw人脸识别数据集的函数,返回data,images,target,target_names.分别是向量化的人脸数据,人脸,人脸对应的人名编号,人名
关于此函数参数的描述:min_faces_per_person:提取的数据集将只保留至少具有min_faces_per_person个不同人的图片
具体数据可参考官方文档:http://scikit-learn.org/stable/modules/generated/sklearn.datasets.fetch_lfw_people.html
2.绘制图形
#使用subplots 画图
fig,ax = plt.subplots(3,5)
#在每一行上绘制子图
for i,axi in enumerate(ax.flat): axi.imshow(faces.images[i],cmap="bone") axi.set(xticks=[],yticks=[],xlabel=faces.target_names[faces.target[i]])
plt.show()
注释: 使用subplots会返回两个东西,一个是matplotlib.figure.Figure,也就是fig,另一个是Axes object or array of Axes objects,也就是代码中的ax;把f理解为你的大图,把ax理解为包含很多小图对象的array;所以下面的代码就使用ax[0][0]这种从ax中取出实际要画图的小图对象;画出的图如下所示;
4.数据划分为测试集和训练集
1.划分训练集和测试集
from sklearn.model_selection import train_test_split
Xtrain,Xtest,ytrain,ytest=train_test_split(faces.data,faces.target,random_state=42)
Xtrain
5.模型构建
1.建立模型,计算人脸数据集上的PCA(特征脸)(处理为标记的)
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline pca = PCA(n_components=150,whiten=True,random_state=42,svd_solver='randomized')
svc = SVC(kernel='rbf',class_weight='balanced')
model = make_pipeline(pca,svc)
说明:PCA主要是通过奇异值分解将数据映射到低纬度的空间(正交去相关)。PCA在数据降维,数据压缩,特征提取有很大贡献。在此,我们利用PCA提取150个主要特征,并将人脸数据全部映射到150维度,通过这150维人脸特征作为训练数据训练基于rbf kernel的SVM,模型差不多有0.85的准确率
6.参数调整
1.param_grid把参数设置成了不同的值,C:权重;gamma:多少的特征点将被使用,因为我们不知道多少特征点最好,选择了不同的组合
#参数调整
from sklearn.model_selection import GridSearchCV
param_grid = {"svc__C":[1,5,10,50],"svc__gamma":[0.0001,0.0005,0.001,0.005]}
#把所有我们所列参数的组合都放在SVC里面进行计算,最后看出哪一组函数的表现度最好
grid = GridSearchCV(model,param_grid)
%time grid.fit(Xtrain,ytrain)
print(grid.best_params_)
说明:svc__C为10svc__gamma为0.001表现度最好
7.预测测试集的人名编号
model = grid.best_estimator_
model
预测测试集:
yfit = model.predict(Xtest)
yfit
说明:结果为预测的人名编号
8.显示预测结果
1.数据可视化,把需要打印的图打印出来,预测的结果和实际结果一致,人名字体颜色为黑色,否则为红色
#显示预测结果
fig,ax = plt.subplots(4,6)
for i,axi in enumerate(ax.flat): axi.imshow(Xtest[i].reshape(62,47),cmap="bone") axi.set(xticks=[],yticks=[]) #设置y轴上的标签 axi.set_ylabel(faces.target_names[yfit[i]].split()[-1],color="black" if yfit[i]==ytest[i] else "red")
fig.suptitle("Incorrect Labels in Red",size=14)
plt.show()
9.分析预测结果的准确性
使用seaborn.heatmap绘制颜色编码矩阵
解释:seaborn.heatmap()将矩形数据绘制为颜色编码矩阵。
seaborn.heatmap(data,vmin = None,vmax = None,cmap = None,center = None,robust = False,annot = None,fmt =‘。2g’,annot_kws = None,linewidths = 0,linecolor =‘white’,cbar =是的,cbar_kws =无,cbar_ax =无,square = False,xticklabels =‘auto’,yticklabels =‘auto’,mask = None,ax = None,** kwargs )
重要参数说明:
-
data:矩形数据集
-
square:布尔值,可选,如果为True,则将Axes方面设置为“相等”,以使每个单元格为方形
-
annot:bool或矩形数据集,可选,如果为True,则在每个单元格中写入数据值。如果数组具有相同的形状data,则使用此选项来注释热图而不是原始数据。
-
fmt:string,可选,添加注释时要使用的字符串格式代码。
-
cbar:布尔值,可选,是否绘制颜色条
-
xticklabels,yticklabels:“auto”,bool,list-like或int,optional。如果为True,则绘制数据框的列名称。如果为False,则不绘制列名称。如果是列表,则将这些替代标签绘制为xticklabels。如果是整数,则使用列名称,但仅绘制每个n标签。如果是“自动”,请尝试密集绘制不重叠的标签
#分析预测结果的准确性
from sklearn.metrics import confusion_matrix
#混淆矩阵
mat = confusion_matrix(ytest,yfit)
#绘制热图
sns.heatmap(mat.T,square=True,annot=True,fmt="d",cbar=False,xticklabels=faces.target_names,yticklabels=faces.target_names)
plt.rcParams["font.family"]="SimHei"
plt.xlabel("真实值")
plt.ylabel("预测值")
plt.show()
10.完整代码
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns;sns.set()
from matplotlib.font_manager import FontProperties
#导入fetch_lfw_people
from sklearn.datasets import fetch_lfw_people
#fetch_lfw_people函数加载人脸识别数据集
faces = fetch_lfw_people(min_faces_per_person=60)
#输出人名
print(faces.target_names)
#输出人脸数据结构
print(faces.images.shape)#使用subplots 画图
fig,ax = plt.subplots(3,5)
#在每一行上绘制子图
for i,axi in enumerate(ax.flat): axi.imshow(faces.images[i],cmap="bone") axi.set(xticks=[],yticks=[],xlabel=faces.target_names[faces.target[i]])
plt.show()#划分训练集和测试集
from sklearn.model_selection import train_test_split
Xtrain,Xtest,ytrain,ytest=train_test_split(faces.data,faces.target,random_state=42)
Xtrain #建模
from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline
#计算人脸数据集上的PCA(特征脸)(处理为未标记的)
pca = PCA(n_components=150,whiten=True,random_state=42,svd_solver='randomized')
svc = SVC(kernel='rbf',class_weight='balanced')
model = make_pipeline(pca,svc) #参数调整
from sklearn.model_selection import GridSearchCV
param_grid = {"svc__C":[1,5,10,50],"svc__gamma":[0.0001,0.0005,0.001,0.005]}
#把所有我们所列参数的组合都放在SVC里面进行计算,最后看出哪一组函数的表现度最好
grid = GridSearchCV(model,param_grid)
%time grid.fit(Xtrain,ytrain)
print(grid.best_params_) model = grid.best_estimator_
model
yfit = model.predict(Xtest)
yfit #显示预测结果
fig,ax = plt.subplots(4,6)
for i,axi in enumerate(ax.flat): axi.imshow(Xtest[i].reshape(62,47),cmap="bone") axi.set(xticks=[],yticks=[]) #设置y轴上的标签 axi.set_ylabel(faces.target_names[yfit[i]].split()[-1],color="black" if yfit[i]==ytest[i] else "red")
fig.suptitle("Incorrect Labels in Red",size=14)
plt.show() #分析预测结果的准确性
from sklearn.metrics import confusion_matrix
#混淆矩阵
mat = confusion_matrix(ytest,yfit)
#绘制热图
sns.heatmap(mat.T,square=True,annot=True,fmt="d",cbar=False,xticklabels=faces.target_names,yticklabels=faces.target_names)
plt.rcParams["font.family"]="SimHei"
plt.xlabel("真实值")
plt.ylabel("预测值")
plt.show()
总结
逻辑回归可以分为线性与非线性,也可以根据类的个数分为二分类与多分类问题,使用时需要灵活应用,能够构造损失函数并求梯度,同时能够用算法实现并进行训练预测。
事实上,细心的同学会发现,在逻辑回归中,我们发现是多个输入(即p个指标),最终输出一个结果(0或1),处理过程是输入乘上权重w加偏置b,再对结果用sigmoid 函数处理,这个过程其实很接近于神经网络了,而逻辑回归的模型更接近于感知机。对于神经网络,它不只有输入和输出两层,而且增加了更多的隐藏层,每一层的处理结果都作为下一层的输入,那么它的损失函数与梯度的求解也将更加复杂,模型也复杂许多。
相关文章:
![](https://img-blog.csdnimg.cn/b5ce06f4ea134eaf895683a4fbb5c975.png)
机器学习:基于支持向量机(SVM)进行人脸识别预测
机器学习:基于支持向量机(SVM)进行人脸识别预测 文章目录机器学习:基于支持向量机(SVM)进行人脸识别预测一、实验目的二、实验原理三、实验环境四、实验内容五、实验步骤1.准备数据2.业务理解3.数据理解4.数…...
![](https://img-blog.csdnimg.cn/79160ed004e046079744386392c6b5b8.jpeg)
【服务器数据恢复】多块磁盘离线导致RAIDZ崩溃的数据恢复案例
服务器数据恢复环境: SUN ZFS系列某型号存储阵列; 40块磁盘组建的存储池(其中4块磁盘用作全局热备盘),池内划分出若干空间映射到服务器使用; 服务器使用Windows操作系统。 服务器故障: 服务器在…...
![](https://img-blog.csdnimg.cn/e230ac33d7dd499d9d18b237bb50a1d2.png)
iconfont 图标如何在uniapp中的tabBar使用
注意: 小程序并不支持tabBar中 设置 iconfont 1. 材料准备 首先进入字体图标网址:iconfont-阿里巴巴矢量图标库;(如果你没有登入,记得登入一下) 把图标添加入购物车 添加到购物车之后-(右上角…...
![](https://img-blog.csdnimg.cn/6713ace18463443a8cdc7c05ae6b170a.png)
第六章.卷积神经网络(CNN)—卷积层(Convolution)池化层(Pooling)
第六章.卷积神经网络(CNN) 6.1 卷积层(Convolution)&池化层(Pooling) 1.整体结构 以5层神经网络的实现为例: 1).基于全连接层(Affine)的网络 全连接层:相邻层的所有神经元之间都有连接 2).常见的CNN的网络 3).全连接层存在的问题 数据的形状容易被…...
![](https://img-blog.csdnimg.cn/1b4563ea0ed242348b47cc93a22265e4.png)
c/c++开发,无可避免的模板编程实践(篇六)
一、泛型算法 1.1 泛型算法概述 c标准库不仅包含数据结构(容器、容器适配器等),还有很多算法。数据结构可以帮助存放特定情况下需要保存的数据,而算法则会将数据结构中存储的数据进行变换。标准库没有给容器添加大量的功能函数&am…...
![](https://img-blog.csdnimg.cn/d33b4be47df346f5bd3b85cc4722060e.png)
【Java】Spring核心与设计思想
文章目录Spring核心与设计思想1. Spring是什么1.1 什么是容器1.2 什么是IOC1.2.1 传统程序开发1.2.2 控制反转式程序开发1.2.3 对比总结规律1.3 理解Spring IOC1.4 DI概念说明Spring核心与设计思想 1. Spring是什么 我们通常所说的Spring指的是Spring Framework(S…...
![](https://img-blog.csdnimg.cn/img_convert/a3af6e5536de9febdc64654bc5157782.png)
组合实现多类别分割(含实战代码)
来源:投稿 作者:AI浩 编辑:学姐 摘要 segmentation_models_pytorch是一款非常优秀的图像分割库,albumentations是一款非常优秀的图像增强库,这篇文章将这两款优秀结合起来实现多类别的图像分割算法。数据集选用CamVid…...
![](https://hnxx.oss-cn-shanghai.aliyuncs.com/official/1673487401625.png?t=0.37365235739630287)
从红队视角看AWD攻击
AWD的权限维持 攻防兼备AWD模式是一种综合考核参赛团队攻击、防御技术能力、即时策略的比赛模式。在攻防模式中,参赛队伍分别防守同样配置的虚拟靶机,并在有限的博弈时间内,找到其他战队的薄弱环节进行攻击,同时要对自己的靶机环…...
![](https://img-blog.csdnimg.cn/img_convert/60594079dd78e9b94bc8c233f2973d9a.png)
龙腾万里,福至万家——“北京龙文化促进协会第九届龙抬头传承会”在京举办
2023年2月21日(农历2月初二)上午9:00点至下午13:00,由北京龙文化促进协会主办、传世经典(北京)文化发展有限公司承办、北京华夏龙文旅联盟协办的“北京龙文化促进协会第九届二月二龙抬头传承会”在北京市丰台区顺和国际大厦A口6层会议厅隆重召开。 传承会活动内容主…...
![](https://www.ngui.cc/images/no-images.jpg)
《软件方法》强化自测题-业务建模(4)
按照业务建模、需求、分析、设计工作流考察,答案不直接给出,可访问自测链接或扫二维码自测,做到全对才能知道答案。 知识点见《软件方法》(http://www.umlchina.com/book/softmeth.html)、 “软件需求设计方法学全程…...
![](https://img-blog.csdnimg.cn/ede475fb2b3e4636b7177fede0c71bca.png)
Prometheus之pushgateway
Pushgateway简介 Pushgateway是Prometheus监控系统中的一个重要组件,它采用被动push的方式获取数据,由应用主动将数据推送到pushgateway,然后Prometheus再从Pushgateway抓取数据。使用Pushgateway的主要原因是: Prometheus和targ…...
![](https://img-blog.csdnimg.cn/img_convert/9a36fd8409df4120bbda13672e7b8c17.png)
3分钟带您快速了解HIL测试及其架构
什么是HIL测试硬件在环(HIL)仿真是一种用于测试导航系统的技术,其中测试前并不知道车辆轨迹。在这种情况下,车辆轨迹被实时馈送到GNSS模拟器。HIL可用于复杂实时系统的开发和测试,如卫星控制系统、军事战术导弹、飞机飞…...
![](https://img-blog.csdnimg.cn/img_convert/a5e6ce6eacd4c6f0ec6043db1ff906af.jpeg)
华为认证含金量如何?
一本证书是否有用,还要看它是否被市场所认可。 我们说华为认证HCIP有用,很大一部分还取决于它极高的适用性和权威性。华为是国内最大的生产销售通信设备的民营通信科技公司。 自2013年起,国家对网络安全极度重视,相继把国外的网…...
![](https://www.ngui.cc/images/no-images.jpg)
刷题记录:牛客NC54586小翔和泰拉瑞亚
传送门:牛客 题目描述: 小翔爱玩泰拉瑞亚 。 一天,他碰到了一幅地图。这幅地图可以分为n列,第i列的高度为Hi,他认为这个地图不好看,决定对它进行改造。 小翔又学会了m个魔法,实施第i个魔法可以使地图的第Li列到第Ri列…...
![](https://img-blog.csdnimg.cn/fc1a15988cea4ebf864c88b8aa7387cf.png)
面试个3年自动化测试,测试水平一言难尽。。。。
公司前段缺人,也面了不少测试,结果竟然没有一个合适的。 一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在10-20k,面试的人很多,但平均水平很让人失望。 看简历很多都是3年工作经验,但…...
![](https://img-blog.csdnimg.cn/16c060d9a42c4913b3f059443b245439.png)
C++面向对象(下)
文章目录前言1.再谈构造函数1.初始化列表2.explicit关键字2. static成员1.概念3.友元1.概念2.友元函数3.友元类4. 内部类5.匿名对象6.编译器优化7.总结前言 本文是主要是将之前关于C面向对象中的一些没有归纳到的零星知识点进行补充,同时对C中的面向对象简单收个尾…...
![](https://img-blog.csdnimg.cn/9a633f6b132c48fc90398f64255e5c2a.png)
面试一位软件测试6年工作者:一年经验掰成六年来用....
在众多面试中,对于那个工作了6年的面试者,我印象很深刻,因为最开始拿到简历的时候,我一摸:"这简历,好厚啊!"再一看,工作6年。 于是我去找了我的领导,我说:“这人我应该没…...
![](https://www.ngui.cc/images/no-images.jpg)
Java8 新特性--Optional
Optional是什么 java.util.Optional Jdk8提供Optional,一个可以包含null值的容器对象,可以用来代替xx ! null的判断。 Optional常用方法 of public static <T> Optional<T> of(T value) {return new Optional<>(value); }为value…...
![](https://img-blog.csdnimg.cn/196303784b2c49f5be19e159fe6bb3a9.png)
Pytorch GPU版本简明下载安装教程
1.根据自己的显卡型号下载显卡驱动并安装。这一步会更新你的显卡驱动,也可忽略第1步,如果第2步出现问题,返回执行第1步。 点击这里下载英伟达显卡驱动 2.安装完成后,wincmd打开命令行,输入nvidia-smi,查看…...
![](https://img-blog.csdnimg.cn/img_convert/6f8087eca74d7ae3e93cbbef05c024d3.png)
【C++】map和set的封装
文章目录一、前情回顾二、简化源码三、仿函数四、迭代器五、set的实现六、map的实现七、红黑树代码一、前情回顾 set 参数只有 key,但是map除了key还有value。我们还是需要KV模型的红黑树的: #pragma once #include <iostream> #include <ass…...
![](https://www.ngui.cc/images/no-images.jpg)
互融云金融控股集团管理平台系统搭建
金融控股公司是指对两个或两个以上不同类型金融机构拥有实质控制权,自身仅开展股权投资管理、不直接从事商业性经营活动的有限责任公司或者股份有限公司。 金融控股公司是金融业实现综合经营的一种组织形式,也是一种追求资本投资最优化、资本利润最大化…...
![](https://img-blog.csdnimg.cn/dccedd9b8ee3400cb1e0d50fb0b58fe6.png)
Git复习
1. 引言 现在要用到Git,复习一下关于Git的指令,知识摘自《Pro Git》 2. 起步 git和其他版本控制软件最大的差别在于git是直接记录某个版本的快照,而不是逐渐地比较差异。 安装: sudo apt install git-all设置用户信息: git c…...
![](https://www.ngui.cc/images/no-images.jpg)
WebGPU学习(2)---使用VertexBuffer(顶点缓冲区)
在本文中,我们使用 VertexBuffer 绘制一个矩形。示例地址 1.准备顶点数据 首先,我们准备好顶点数据。定义顶点数据有多种方法,这次我们将在 TypeScript 代码中将其定义为 Float32Array 类型的数据。 const quadVertexSize 4 * 8; // 一个顶…...
![](https://www.ngui.cc/images/no-images.jpg)
【C++之容器篇】AVL树的底层原理和使用
目录前言一、AVL树二、AVL树的底层实现1. 结点类型的定义2. AVL树的定义3. 查找函数4. 插入函数(重难点)三、判断平衡树的方法前言 AVL树其实是在搜索树的基础上加上一些限制因素,从而使搜索树的结构保持相对平衡,通过前面我们对二叉搜索树的学习&#x…...
![](https://hnxx.oss-cn-shanghai.aliyuncs.com/official/1673487401625.png?t=0.37365235739630287)
从交换机安全配置看常见局域网攻击
前言 构建零信任网络,自然离不开网络准入(NAC),这就涉及到交换机的一些安全测试,于是有了此文《从交换机安全配置看常见局域网攻击》。 交换机安全配置 如本文标题所说从交换机安全配置看常见的局域网攻击,那么下面提到的各种攻…...
![](https://img-blog.csdnimg.cn/e28cedd476b545b2b1245a7d50e255cb.png)
工具篇3.5世界热力图
一、定义 世界热力图是一种地图形式,它使用颜色的变化来显示世界各个地区的某种指标(如 GDP、人口、气候等)的分布和密度。通常,世界热力图会使用不同的颜色来表示数据的变化,例如使用蓝色表示低值,红色表…...
![](https://www.ngui.cc/images/no-images.jpg)
2023-02-20 leetcode-insertionSortList
摘要: 记录leetcode-insertionSortList的反思 要求: https://leetcode.cn/problems/insertion-sort-list/ Given the head of a singly linked list, sort the list using insertion sort, and return the sorted lists head. The steps of the insertion sort algorithm: In…...
![](https://www.ngui.cc/images/no-images.jpg)
LeetCode初级算法题:环形链表+排列硬币+合并两个有序数组java解法
环形链表排列硬币合并两个有序数组(没错,出现过一次的LeetCode合并数组又双叒叕出现了!)经典算法题java解法 目录1 环形链表题目描述解题思路与代码解法一:哈希表解法二:双指针2 排列硬币题目描述解题思路与…...
![](https://img-blog.csdnimg.cn/img_convert/d8f156ff73d90e895721ce3f8b5f0db8.png)
网络编程学习一
1、初识网络编程2、网络编程三要素3、三要素(IP)4、IPV4的一些小细节5、Inetaddress类的使用package com.leitao.demo.network;import java.net.InetAddress; import java.net.UnknownHostException;/*** Description: TODO* Author LeiTao* Date 2023/2…...
![](https://img-blog.csdnimg.cn/img_convert/f4c2b5099fb61d5e95d7a4afeb207ee5.png)
Javascript 立即执行函数
IIFE,一般称为立即执行函数。你可能会问我,*“嘿!我知道正常的函数表达式是什么样子的,但是 IIFE 到底是什么?”。*好吧,这正是我今天要在本文中回答的问题。 函数表达式 在了解立即调用函数表达式之前,让…...
![](/images/no-images.jpg)
企业网站ui设计/项目推广平台排行榜
按十六进制的值排序 单击一个颜色名或者 16 进制值,就可以查看与不同文字颜色搭配的背景颜色。 Color Name HEX Color AliceBlue #F0F8FF AntiqueWhite #FAEBD7 Aqua #00FFFF Aquamarine #7FFFD4 Azure #F0FFFF Beige #F5F5DC Bisque #FFE4C4 …...
![](/images/no-images.jpg)
做网站图片路径做缓存吗/今日热点新闻视频
上海最近搞活动调休,要搞深度学习,win上还是不方便,准备弄个ubuntu。于是有以下回忆文字。在机器上装了个双系统。花了两天。再也不想玩了。准备用ubuntu来做深度学习的。本文写于2019年11月4日。机器是神舟Z7-KP7D2,i7-7700HQGTX…...
![](https://img-blog.csdnimg.cn/20190304204658509.png)
建设网站 系统占用空间/百度关键词优化多少钱
一,选用SLF4j和logback (注:spring框架默认使用的事JCL日志框架) 二,使用 1,如何在系统中使用slf4j(不同于log4j) 以后开发的时候,日志记录方法的调用,不…...
![](/images/no-images.jpg)
二级域名网站建设规范/正规seo大概多少钱
许多情况下,如果创建或修改一个文件,系统需要执行某些任务,如果目录中新建了一个文件,程序必须提取这个文件、进行解析、再把它插入到数据库中。在这种情况下,程序必须监控目录的变化。在.NET Framework中,…...
![](/images/no-images.jpg)
wordpress默认登陆地址/余姚网站如何进行优化
【单选题】决定微机性能的主要是().【单选题】急、慢性骨髓炎患者最好选用:【单选题】计算机中对数据进行加工与处理的部件,通常称为().【单选题】西米替丁治疗十二指肠溃疡的机制为:【单选题】计算机系统的内部总线,主要可以分为()、数据总线和地址总线.【单选题】计算机的软件…...
![](https://img-blog.csdnimg.cn/img_convert/bf6f1305c71a12f88b82e547bb2a7de2.png)
做网站公司599/黄页88网络营销宝典
在进行数据解析时,先来看看excel测试数据格式,这里采用接口和测试数据分离的方式,即分为两个sheet页签分别存放接口信息,用例信息excel封装成对象步骤1、导入easypoi的坐标2、加载excel的流对象3、导入参数对象ImportParams4、工具…...