Kerberos从入门到精通以及案例实操系列(二)

news2024/11/16 15:47:38

5、安全集群使用说明

5.1、用户要求

  1. 具体要求以下使用说明均基于普通用户,安全集群对用户有以下要求:
  • 集群中的每个节点都需要创建该用户
  • 该用户需要属于hadoop用户组
  • 需要创建该用户对应的Kerberos主体
  1. 实操,此处以atguigu用户为例,具体操作如下
  • 创建用户(存在可跳过),须在所有节点执行
[root@hadoop102 ~]# useradd atguigu
[root@hadoop102 ~]# echo atguigu | passwd --stdin atguigu

[root@hadoop103 ~]# useradd atguigu
[root@hadoop103 ~]# echo atguigu | passwd --stdin atguigu

[root@hadoop104 ~]# useradd atguigu
[root@hadoop104 ~]# echo atguigu | passwd --stdin atguigu
  • 加入hadoop组,须在所有节点执行
[root@hadoop102 ~]# usermod -a -G hadoop atguigu
[root@hadoop103 ~]# usermod -a -G hadoop atguigu
[root@hadoop104 ~]# usermod -a -G hadoop atguigu
  • 创建主体
[root@hadoop102 ~]# kadmin -p admin/admin -wadmin -q"addprinc -pw atguigu atguigu"

5.2、访问HDFS集群文件

5.2.1、Shell命令

  1. 认证
[atguigu@hadoop102 ~]$ kinit atguigu
  1. 查看当前认证用户
[atguigu@hadoop102 ~]$ kinit atguigu

在这里插入图片描述

  1. 执行命令
[atguigu@hadoop102 ~]$ hadoop fs -ls /

在这里插入图片描述

  1. 注销认证
[atguigu@hadoop102 ~]$ kdestroy
  1. 再次执行查看命令
[atguigu@hadoop102 ~]$ hadoop fs -ls /

在这里插入图片描述

5.2.2、web页面

  1. 安装Kerberos客户端,下载地址:http://web.mit.edu/kerberos/dist/kfw/4.1/kfw-4.1-amd64.msi
  • 下载之后按照提示安装
  • 编辑C:\ProgramData\MIT\Kerberos5\krb5.ini文件,内容如下
[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 forwardable = true
 rdns = false
 default_realm = EXAMPLE.COM

[realms]
 EXAMPLE.COM = {
  kdc = hadoop102
  admin_server = hadoop102
 }

[domain_realm]
  1. 配置火狐浏览器
  • 打开浏览器,在地址栏输入“about:config”,点击回车
    在这里插入图片描述
  • 搜索“network.negotiate-auth.trusted-uris”,修改值为要访问的主机名(hadoop102)
    在这里插入图片描述
  • 搜索“network.auth.use-sspi”,双击将值变为false
    在这里插入图片描述

5.2.3、认证

1. 启动Kerberos客户端,点击Get Ticket
在这里插入图片描述

  1. 输入主体名和密码,点击OK

在这里插入图片描述

  1. 认证成功
    在这里插入图片描述

  2. 访问HDFS

在这里插入图片描述

  1. 注销认证

在这里插入图片描述

  1. 重启浏览器,再次访问HDFS

在这里插入图片描述

5.3、提交MapReduce任务

  1. 认证
[atguigu@hadoop102 ~]$ kinit atguigu
  1. 提交任务
[atguigu@hadoop102 ~]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar pi 1 1

6、Hive用户认证配置

6.1、前置要求

6.1.1、Hadoop集群启动Kerberos认证

按照上述步骤为Hadoop集群开启Kerberos安全认证。

6.1.2、创建Hive系统用户和Kerberos主体

  1. 创建系统用户
[root@hadoop102 ~]# useradd hive -g hadoop
[root@hadoop102 ~]# echo hive | passwd --stdin hive

[root@hadoop103 ~]# useradd hive -g hadoop
[root@hadoop103 ~]# echo hive | passwd --stdin hive

[root@hadoop104 ~]# useradd hive -g hadoop
[root@hadoop104 ~]# echo hive | passwd --stdin hive
  1. 创建Kerberos主体并生成keytab文件,创建hive用户的Kerberos主体
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey hive/hadoop102"

在Hive所部署的节点生成keytab文件

[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/hive.service.keytab hive/hadoop102"
  1. 修改keytab文件所有者和访问权限
[root@hadoop102 ~]# chown -R root:hadoop /etc/security/keytab/
[root@hadoop102 ~]# chmod 660 /etc/security/keytab/hive.service.keytab

6.2、配置认证

  1. 修改$HIVE_HOME/conf/hive-site.xml文件,增加如下属性
[root@hadoop102 ~]# vim $HIVE_HOME/conf/hive-site.xml

<!-- HiveServer2启用Kerberos认证 -->
<property>
    <name>hive.server2.authentication</name>
    <value>kerberos</value>
</property>

<!-- HiveServer2服务的Kerberos主体 -->
<property>
    <name>hive.server2.authentication.kerberos.principal</name>
    <value>hive/hadoop102@EXAMPLE.COM</value>
</property>

<!-- HiveServer2服务的Kerberos密钥文件 -->
<property>
    <name>hive.server2.authentication.kerberos.keytab</name>
    <value>/etc/security/keytab/hive.service.keytab</value>
</property>

<!-- Metastore启动认证 -->
<property>
    <name>hive.metastore.sasl.enabled</name>
    <value>true</value>
</property>
<!-- Metastore Kerberos密钥文件 -->
<property>
    <name>hive.metastore.kerberos.keytab.file</name>
    <value>/etc/security/keytab/hive.service.keytab</value>
</property>
<!-- Metastore Kerberos主体 -->
<property>
    <name>hive.metastore.kerberos.principal</name>
    <value>hive/hadoop102@EXAMPLE.COM</value>
</property>
  1. 修改$HADOOP_HOME/etc/hadoop/core-site.xml文件,具体修改如下
[root@hadoop102 ~]# vim $HADOOP_HOME/etc/hadoop/core-site.xml
  • 删除以下参数
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>atguigu</value>
</property>

<property>
    <name>hadoop.proxyuser.atguigu.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.atguigu.groups</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.atguigu.users</name>
    <value>*</value>
</property>
  • 增加以下参数
<property>
    <name>hadoop.proxyuser.hive.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.hive.groups</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.hive.users</name>
    <value>*</value>
</property>
  1. 分发配置core-site.xml文件
[root@hadoop102 ~]# xsync $HADOOP_HOME/etc/hadoop/core-site.xml
  1. 重启Hadoop集群
[root@hadoop102 ~]# stop-dfs.sh
[root@hadoop103 ~]# stop-yarn.sh

[root@hadoop102 ~]# start-dfs.sh
[root@hadoop103 ~]# start-yarn.sh

6.3、启动hiveserver2

注:需使用hive用户启动

[root@hadoop102 ~]# sudo -i -u hive hiveserver2

7、Hive Kerberos认证使用说明

以下说明均基于普通用户

7.1、beeline客户端

  1. 认证,执行以下命令,并按照提示输入密码
[atguigu@hadoop102 ~]$ kinit atguigu
  1. 使用beeline客户端连接hiveserver2
[atguigu@hadoop102 ~]$ beeline

使用如下url进行连接

> !connect jdbc:hive2://hadoop102:10000/;principal=hive/hadoop102@EXAMPLE.COM

在这里插入图片描述

  1. 测试查询

7.2、DataGrip客户端

7.2.1、新建Driver

  1. 创建Driver

在这里插入图片描述

  1. 配置Driver

在这里插入图片描述
注:url模板:jdbc:hive2://{host}:{port}/{database}[;<;,{:identifier}={:param}>]

7.2.2、新建连接

  1. 创建连接

在这里插入图片描述

  1. 配置连接
  • 基础配置
    在这里插入图片描述
    注:url:jdbc:hive2://hadoop102:10000/;principal=hive/hadoop102@EXAMPLE.COM
  • 高级配置
    在这里插入图片描述
    配置参数:
  • -Djava.security.krb5.conf=“C:\ProgramData\MIT\Kerberos5\krb5.ini”
  • -Djava.security.auth.login.config=“C:\ProgramData\MIT\Kerberos5\atguigu.conf”
  • -Djavax.security.auth.useSubjectCredsOnly=false
  1. 编写JAAS(Java认证授权服务)配置文件,内容如下,文件名和路径须和上图中java.security.auth.login.config参数的值保持一致。
com.sun.security.jgss.initiate{
      com.sun.security.auth.module.Krb5LoginModule required
      useKeyTab=true
      useTicketCache=false
      keyTab="C:\\ProgramData\\MIT\\Kerberos5\\atguigu.keytab"
      principal="atguigu@EXAMPLE.COM";
};
  1. 为用户生成keytab文件,在krb5kdc所在节点(hadoop102)执行以下命令
[root@hadooop102]# kadmin.local -q"xst -norandkey -k /home/atguigu/atguigu.keytab atguigu"
  1. 将上一步生成的atguigu.keytab文件,置于Windows中的特定路径,该路径须与3中的keyTab属性的值保持一致。
  2. 测试连接

在这里插入图片描述

8、即席查询之Presto

Presto集群开启Kerberos认证可只配置Presto Coordinator和Presto Cli之间进行认证,集群内部通讯可不进行认证。Presto Coordinator和Presto Cli之间的认证要求两者采用更为安全的HTTPS协议进行通讯。

若Presto对接的是Hive数据源,由于其需要访问Hive的元数据和HDFS上的数据文件,故也需要对Hive Connector进行Kerberos认证。

8.1、改动实操

8.1.1、用户准备

  1. 在所有节点创建presto系统用户
[root@hadoop102 ~]# useradd presto -g hadoop
[root@hadoop102 ~]# echo presto | passwd --stdin presto

[root@hadoop103 ~]# useradd presto -g hadoop
[root@hadoop103 ~]# echo presto | passwd --stdin presto

[root@hadoop104 ~]# useradd presto -g hadoop
[root@hadoop104 ~]# echo presto | passwd --stdin presto
  1. 为Hive Connector创建Kerberos主体
  • 创建presto用户的Kerberos主体
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey presto"
  • 生成keytab文件
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/presto.keytab presto"
  • 修改keytab文件的访问权限
[root@hadoop102 ~]# chown presto:hadoop /etc/security/keytab/presto.keytab
  • 分发keytab文件
[root@hadoop102 ~]# xsync /etc/security/keytab/presto.keytab
  1. 为Presto Coordinator创建Kerberos主体
  • 创建presto用户的Kerberos主体
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey presto/hadoop102"
  • 生成keytab文件
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/presto.service.keytab presto/hadoop102"
  • 修改keytab文件的访问权限
[root@hadoop102 ~]# chown presto:hadoop /etc/security/keytab/presto.service.keytab

8.1.2、创建HTTPS协议所需的密钥对

  • alias(别名)需要和Presto CoordinatorKerberos主体名保持一致
  • 名字与姓氏 需要填写Coordinator所在的主机名
  1. 使用Java提供的keytool工具生成密钥对
[root@hadoop102 ~]# keytool -genkeypair -alias presto -keyalg RSA -keystore /etc/security/keytab/keystore.jks
输入密钥库口令:  
再次输入新口令: 
您的名字与姓氏是什么?
  [Unknown]:  hadoop102
您的组织单位名称是什么?
  [Unknown]:  
您的组织名称是什么?
  [Unknown]:  
您所在的城市或区域名称是什么?
  [Unknown]:  
您所在的省//自治区名称是什么?
  [Unknown]:  
该单位的双字母国家/地区代码是什么?
  [Unknown]:  
CN=hadoop102, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown是否正确?
  []:  y

输入 <presto> 的密钥口令
    (如果和密钥库口令相同, 按回车):
  1. 修改keystore文件的所有者和访问权限
[root@hadoop102 ~]# chown presto:hadoop /etc/security/keytab/keystore.jks
[root@hadoop102 ~]# chmod 660 /etc/security/keytab/keystore.jks

8.1.3、修改Presto Coordinator配置文件

/opt/module/presto/etc/config.properties文件中增加以下参数

[root@hadoop102 ~]# vim /opt/module/presto/etc/config.properties
http-server.authentication.type=KERBEROS

http.server.authentication.krb5.service-name=presto
http.server.authentication.krb5.keytab=/etc/security/keytab/presto.service.keytab
http.authentication.krb5.config=/etc/krb5.conf

http-server.https.enabled=true
http-server.https.port=7778
http-server.https.keystore.path=/etc/security/keytab/keystore.jks
http-server.https.keystore.key=123456

8.1.4、修改Hive Connector配置文件

  1. /opt/module/presto/etc/catalog/hive.properties中增加以下参数
[root@hadoop102 ~]# vim /opt/module/presto/etc/catalog/hive.properties

hive.metastore.authentication.type=KERBEROS
hive.metastore.service.principal=hive/hadoop102@EXAMPLE.COM
hive.metastore.client.principal=presto@EXAMPLE.COM
hive.metastore.client.keytab=/etc/security/keytab/presto.keytab

hive.hdfs.authentication.type=KERBEROS
hive.hdfs.impersonation.enabled=true
hive.hdfs.presto.principal=presto@EXAMPLE.COM
hive.hdfs.presto.keytab=/etc/security/keytab/presto.keytab
hive.config.resources=/opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml,/opt/module/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
  1. 分发/opt/module/presto/etc/catalog/hive.properties文件
[root@hadoop102 ~]# xsync /opt/module/presto/etc/catalog/hive.properties

8.1.5、配置客户端Kerberos主体到用户名之间的映射规则

  1. 新建/opt/module/presto/etc/access-control.properties配置文件,内容如下
[root@hadoop102 ~]# vim /opt/module/presto/etc/access-control.properties

access-control.name=file
security.config-file=etc/rules.json
  1. 新建/opt/module/presto/etc/rules.json文件,内容如下
[root@hadoop102 ~]# vim /opt/module/presto/etc/rules.json

{
  "catalogs": [
    {
      "allow": true
    }
  ],
  "user_patterns": [
    "(.*)",
    "([a-zA-Z]+)/?.*@.*"
  ]
}

8.1.6、配置Presto代理用户

  1. 修改Hadoop配置文件
    修改$HADOOP_HOME/etc/hadoop/core-site.xml配置文件,增加如下内容
[root@hadoop102 ~]# vim $HADOOP_HOME/etc/hadoop/core-site.xml

<property>
    <name>hadoop.proxyuser.presto.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.presto.groups</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.presto.users</name>
    <value>*</value>
</property>
  1. 分发修改的文件
[root@hadoop102 ~]# xsync $HADOOP_HOME/etc/hadoop/core-site.xml
  1. 重启Hadoop集群
[root@hadoop102 ~]# stop-dfs.sh
[root@hadoop103 ~]# stop-yarn.sh

[root@hadoop102 ~]# start-dfs.sh
[root@hadoop103 ~]# start-yarn.sh

8.1.7、重启Presto集群

  1. 关闭集群
[root@hadoop102 ~]# /opt/module/presto/bin/launcher stop
[root@hadoop103 ~]# /opt/module/presto/bin/launcher stop
[root@hadoop104 ~]# /opt/module/presto/bin/launcher stop
  1. 修改Presto安装路径所有者为presto
[root@hadoop102 ~]# chown -R presto:hadoop /opt/module/presto
[root@hadoop103 ~]# chown -R presto:hadoop /opt/module/presto
[root@hadoop104 ~]# chown -R presto:hadoop /opt/module/presto
  1. 使用hive用户启动MetaStore服务
[root@hadoop102 ~]# sudo -i -u hive hive --service metastore
  1. 使用presto用户启动Presto集群
[root@hadoop102 ~]# sudo -i -u presto /opt/module/presto/bin/launcher start
[root@hadoop103 ~]# sudo -i -u presto /opt/module/presto/bin/launcher start
[root@hadoop104 ~]# sudo -i -u presto /opt/module/presto/bin/launcher start

8.1.8、客户端认证访问Presto集群

[root@hadoop102 presto]# ./prestocli \
--server https://hadoop102:7778 \
--catalog hive \
--schema default \
--enable-authentication \
--krb5-remote-service-name presto \
--krb5-config-path /etc/krb5.conf \
--krb5-principal atguigu@EXAMPLE.COM \
--krb5-keytab-path /home/atguigu/atguigu.keytab \
--keystore-path /etc/security/keytab/keystore.jks \
--keystore-password 123456 \
--user atguigu

9、即席查询之Kylin

从Kylin的架构,可以看出Kylin充当只是一个Hadoop客户端,读取Hive数据,利用MR或Spark进行计算,将Cube存储至HBase中。所以在安全的Hadoop环境下,Kylin不需要做额外的配置,只需要具备一个Kerberos主体,进行常规的认证即可。

但是Kylin所依赖的HBase需要进行额外的配置,才能在安全的Hadoop环境下正常工作。

9.1、改动实操

9.1.1、HBase开启Kerberos认证

9.1.1.1、用户准备

  1. 在各节点创建hbase系统用户
[root@hadoop102 ~]# useradd -g hadoop hbase
[root@hadoop102 ~]# echo hbase | passwd --stdin hbase

[root@hadoop103 ~]# useradd -g hadoop hbase
[root@hadoop103 ~]# echo hbase | passwd --stdin hbase

[root@hadoop104 ~]# useradd -g hadoop hbase
[root@hadoop104 ~]# echo hbase | passwd --stdin hbase
  1. 创建hbase Kerberos主体
  • 在hadoop102节点创建主体,生成密钥文件,并修改所有者
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey hbase/hadoop102"
[root@hadoop102 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/hbase.service.keytab hbase/hadoop102"
[root@hadoop102 ~]# chown hbase:hadoop /etc/security/keytab/hbase.service.keytab
  • 在hadoop103节点创建主体,生成密钥文件,并修改所有者
[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey hbase/hadoop103"
[root@hadoop103 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/hbase.service.keytab hbase/hadoop103"
[root@hadoop103 ~]# chown hbase:hadoop /etc/security/keytab/hbase.service.keytab
  • 在hadoop104节点创建主体,生成密钥文件,并修改所有者
[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"addprinc -randkey hbase/hadoop104"
[root@hadoop104 ~]# kadmin -padmin/admin -wadmin -q"xst -k /etc/security/keytab/hbase.service.keytab hbase/hadoop104"
[root@hadoop104 ~]# chown hbase:hadoop /etc/security/keytab/hbase.service.keytab

9.1.1.2、修改HBase配置文件,修改$HBASE_HOME/conf/hbase-site.xml配置文件,增加以下参数

[root@hadoop102 ~]# vim $HBASE_HOME/conf/hbase-site.xml

<property>
  <name>hbase.security.authentication</name>
  <value>kerberos</value>
</property>

<property> 
  <name>hbase.master.kerberos.principal</name> 
  <value>hbase/_HOST@EXAMPLE.COM</value> 
</property> 

<property> 
<name>hbase.master.keytab.file</name> 
<value>/etc/security/keytab/hbase.service.keytab</value> 
</property>

<property>
  <name>hbase.regionserver.kerberos.principal</name> 
  <value>hbase/_HOST@EXAMPLE.COM</value> 
</property> 

<property> 
  <name>hbase.regionserver.keytab.file</name> 
  <value>/etc/security/keytab/hbase.service.keytab</value> 
</property>

<property> 
  <name>hbase.coprocessor.region.classes</name>
  <value>org.apache.hadoop.hbase.security.token.TokenProvider</value>
</property>

9.1.1.3、分发配置文件

[root@hadoop102 ~]# xsync $HBASE_HOME/conf/hbase-site.xml

9.1.1.4、修改hbase.rootdir路径所有者

  • 使用hdfs/hadoop用户进行认证
[root@hadoop102 ~]# kinit hdfs/hadoop
  • 修改所有者
[root@hadoop102 ~]# hadoop fs -chown -R hbase:hadoop /hbase

9.1.1.5、启动HBase

  1. 修改各节点HBase安装目录所有者
[root@hadoop102 ~]# chown -R hbase:hadoop /opt/module/hbase
[root@hadoop103 ~]# chown -R hbase:hadoop /opt/module/hbase
[root@hadoop104 ~]# chown -R hbase:hadoop /opt/module/hbase
  1. 配置hbase用户从主节点(hadoop102)到所有节点的ssh免密
  2. 使用hbase用户启动HBase
[root@hadoop102 ~]# sudo -i -u hbase start-hbase.sh

9.1.1.6、停止HBase

启用Kerberos认证之后,关闭HBase时,需先进行Kerberos用户认证,认证的主体为hbase。

  1. 认证为hbase主体
[root@hadoop102 ~]# sudo -i -u hbase kinit -kt /etc/security/keytab/hbase.service.keytab hbase/hadoop102
  1. 停止hbase
[root@hadoop102 ~]# sudo -i -u hbase stop-hbase.sh

9.1.2、Kylin进行Kerberos认证

9.1.1.1、用户准备

  1. 创建kylin系统用户
[root@hadoop102 ~]# useradd -g hadoop kylin
[root@hadoop102 ~]# echo kylin | passwd --stdin kylin
  1. 修改kylin.env.hdfs-working-dir路径所有者为kylin
  • 使用hdfs/hadoop用户进行认证
[root@hadoop102 ~]# kinit hdfs/hadoop
  • 修改所有者
[root@hadoop102 ~]# hadoop fs -chown -R hive:hadoop /kylin
  1. 修改/opt/module/kylin所有者为kylin
[root@hadoop102 ~]# chown -R kylin:hadoop /opt/module/kylin
  1. 启动kylin
  • 在kylin用户下认证为hive主体
[root@hadoop102 ~]# sudo -i -u kylin kinit -kt /etc/security/keytab/hive.keytab hive
  • 以kylin用户的身份启动kylin
[root@hadoop102 ~]# sudo -i -u kylin /opt/module/kylin/bin/kylin.sh start

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

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

相关文章

Spring Boot 系统初始化器详解

Spring Boot 3.x系列文章 Spring Boot 2.7.8 中文参考指南(一)Spring Boot 2.7.8 中文参考指南(二)-WebSpring Boot 源码阅读初始化环境搭建Spring Boot 框架整体启动流程详解Spring Boot 系统初始化器详解 自定义系统初始化器 Spring Boot 有多种加载自定义初始化器的方法&am…

账号长久不用、归属不明......企业要如何管理这些失控的账号?

据报道&#xff0c;谷歌将于今年底开始删除2年未使用个谷歌个人账号。理由是&#xff0c;谷歌发现&#xff0c;如果一个账户在一定时间内未被使用&#xff0c;那么该账户被入侵的概率更大。 这些长时间未使用的账号使用的密码一般都是比较老的或重用的密码&#xff0c;关联密码…

Linux之tar归档命令

目录 Linux之tar归档命令 定义 语法格式 参数及作用 常用选项 创建&#xff08;非压缩的&#xff09;包文件 ​编辑 创建带压缩的包文件 列出包文件中的文件列表 提取包文件到指定目录 tar打包时排除 --exclude -X或--exclude-from Linux之tar归档命令 定义 用于打…

全面的软件测试

1 全过程的软件测试图解 传统的软件测试&#xff0c;开发人员完成任务之后&#xff0c;最后交付给测试人员&#xff0c;这种模式下&#xff0c;测试人员不能及早发现需求阶段的缺陷&#xff0c;同时测试工作的开展也滞后了&#xff0c;产品质量得不到有效的过程控制和分析&…

echarts折线图使用记录

1项目中引入echarts文档api介绍&#xff0c;链接地址如下 https://echarts.apache.org/handbook/zh/basics/import 2 官网基础样例介绍,链接地址如下 https://echarts.apache.org/handbook/zh/get-started/ 3 基本折线图介绍内容及链接 3.1 最简单的折线图 3.2 笛卡尔坐标系中…

【Python】Step Into Python Class

【Python】Step Into Python Class Before All Python作为一门面向过程兼容面向对象的语言&#xff0c;在面向对象中&#xff0c;使用class关键字来申明一个类。 But&#xff0c;是不是应该深入考虑一下这个class的底层实现过程呢&#xff1f;&#xff08;不考虑CPython&…

msvcp110.dll丢失怎么修复(一键修复办法)

msvcp110.dll是C编程中非常重要的库文件之一。它实现了运行时库的大部分功能&#xff0c;并提供了许多标准库和其他功能的具体实现&#xff0c;如多线程编程和IO操作等。提高程序的运行效率和稳定性。下面是详细解决msvcp110.dll丢失问题的方法跟msvcp110.dll文件的介绍。 msvc…

npm install报错 -> npm ERR! Unexpected token ‘.‘ 报错解决办法

原因&#xff1a; 我遇到这个问题的场景是用nvm1.1.7的版本安装了16.x以上的node, 然后再下载依赖的时候就报错了 总结一下就是nvm版本太低了&#xff0c;他的里面没有集成高版本node导致的 解决&#xff1a; 我们把nvm版本换到最新的就可以了 1. 卸载掉当前所有的node nvm …

ABIDE Preprocessed 结构态MRI数据集介绍及下载

ABIDE数据集介绍及下载 ABIDE Prerocessed项目是在ABIDE I 项目的基础上发展而来&#xff0c;主要是对ABIDE I中采集到的原始数据进行了一定的预处理和初步的特征提取。针对于fMRI和sMRI数据有着不同的处理方式&#xff0c;本次主要对其中提供的sMRI预处理结果进行介绍&#xf…

Python程序设计基础:标识符、变量与赋值、输入输出

文章目录 一、标识符二、变量与赋值三、输入输出 一、标识符 Python对每个标识符的命名存在要求&#xff1a; 1、每个标识符必须以字母或下划线“_”开头&#xff0c;后跟字母、数字或下划线的任意序列。根据这个规则&#xff0c;以下都是Python中的合法名称&#xff1a;a&…

excel如何实现识别文本在对应单元格填上数据?

要实现 Excel 识别文本在对应单元格填上数据&#xff0c;有以下两种方法&#xff1a; 方法一&#xff1a;使用 VLOOKUP 函数 1. 在 Excel 工作表中&#xff0c;输入一个表格&#xff0c;列名为对应的文本&#xff0c;行名为不同条目。 2. 准备输入数据&#xff0c;在一个新的…

python使用requests+excel进行接口自动化测试

在当今的互联网时代中&#xff0c;接口自动化测试越来越成为软件测试的重要组成部分。Python是一种简单易学&#xff0c;高效且可扩展的语言&#xff0c;自然而然地成为了开发人员的首选开发语言。而requests和xlwt这两个常用的Python标准库&#xff0c;能够帮助我们轻松地开发…

LInux之find查找

目录 LInux之find查找 定义 详解 格式 参数及作用 详解 1.按照文件名搜索 2.按照文件大小搜索 3.按照修改时间搜索 4.按照权限搜索 5.按照所有者和所属组搜索 6.按照文件类型搜索 7.逻辑运算符 8.其他选项 -exec参数 获取到该目录中所有以host开头的文件列表 如在…

【测试入门】测试用例经典设计方法 —— 因果图法

01、因果图设计测试用例的步骤 1、分析需求 阅读需求文档&#xff0c;如果User Case很复杂&#xff0c;尽量将它分解成若干个简单的部分。这样做的好处是&#xff0c;不必在一次处理过程中考虑所有的原因。没有固定的流程说明究竟分解到何种程度才算简单&#xff0c;需要测试…

3D打印机分类汇总

1 根据市场定位分类 当今市面上应用比较多的3D打印机是SLS、SLA、DLP、FDM四种3D打印机&#xff0c;按照用途可分为两类&#xff1a;一类是高精度工业打印机&#xff0c;比如SLA、DLP、SLS&#xff1b;一类是以FDM、SLA&#xff08;用于工业打印机更多&#xff09;为主的桌面级…

NRF52832空中升级DFU

1.工具环境搭建 gcc-arm-none-eabi编译环境&#xff1a;GCC编译环境 Downloads | GNU Arm Embedded Toolchain Downloads – Arm Developer mingw 平台&#xff08;win版的Linux命令行&#xff09; Download MinGW - Minimalist GNU for Windows micro-ecc-master源码 GitHu…

永不磨灭的设计模式(23种设计模式全集)

永不磨灭的设计模式 概述七大基本原则23种设计模式1、单例模式2、工厂(方法)模式3、抽象工厂模式4、原型模式5、建造者模式6、适配器模式7、桥接模式8、组合模式9、装饰器模式10、外观模式11、享元模式12、代理模式13、责任链模式14、命令模式15、迭代器模式16、中介者模式17、…

tinkerCAD案例:3.基本按钮

基本按钮 在本课中&#xff0c;您将学习制作具有圆柱形状的基本按钮。 说明 将圆柱体拖动到工作平面。 将其缩小到 2 毫米的高度。 提示&#xff1a; 您可以使用圆柱形状顶部的白点缩小圆柱体。 将其缩小到直径 16 毫米。 这将是按钮的主要形状。 现在我们可以创建允许将纽…

CSS动画:多动画同步播放或非同步播放

前言 本篇在讲什么 在CSS样式表现动画的基础上的拓展 本篇适合什么 适合初学H5的小白 适合初学CSS的小白 适合入门的前端程序 本篇需要什么 对Html和css语法有简单认知 Node.js(博主v18.13.0)的开发环境 Npm(博主v8.19.3)的开发环境 依赖VS code编辑器 本篇的特色…

impala内存超限

目录 一、背景 二、报错内容 三、解决办法 1.调参 2.简单粗暴 一、背景 impala shell执行SQL语句时报错 二、报错内容 Memory limit exceeded: Could not allocate memory while trying to increase reservation. 三、解决办法 1.调参 mem_limit参数&#xff1a;&…