Hdoop学习笔记(HDP)-Part.09 安装OpenLDAP

目录
Part.01 关于HDP
Part.02 核心组件原理
Part.03 资源规划
Part.04 基础环境配置
Part.05 Yum源配置
Part.06 安装OracleJDK
Part.07 安装MySQL
Part.08 部署Ambari集群
Part.09 安装OpenLDAP
Part.10 创建集群
Part.11 安装Kerberos
Part.12 安装HDFS
Part.13 安装Ranger
Part.14 安装YARN+MR
Part.15 安装HIVE
Part.16 安装HBase
Part.17 安装Spark2
Part.18 安装Flink
Part.19 安装Kafka
Part.20 安装Flume

九、安装OpenLDAP

1.安装

Server端
在hdp01、hdp02上安装

ansible nn -m yum -a 'name=openldap-servers state=present'
ansible nn -m yum -a 'name=migrationtools state=present'

Client端
在hdp01-05上安装

ansible all -m yum -a 'name=openldap-clients state=present'

2.配置并启动

OpenLDAP的配置以树状结构存储在OpenLDAP数据库中,这些节点的配置文件以ldif格式存储在/etc/openldap/slapd.d目录下(从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件)
① cn=config
根节点用于全局性配置,它的配置文件是/etc/openldap/slapd.d/cn=config.ldif
② cn=module{0},cn=config
用于配置动态模块,它的配置文件位于/etc/openldap/slapd.d/cn=config目录下
③ cn=schema,cn=config
用于schema配置,它的配置文件位于/etc/openldap/slapd.d/cn=config目录下
④ olcDatabase={X},cn=config
用于配置数据库,它的配置文件位于/etc/openldap/slapd.d/cn=config目录下
以下所有内容在hdp01和hdp02上均进行操作

(1)修改olcDatabase={2}hdb.ldif文件

/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif
查看密码对应的md5值

slappasswd -h {md5} -s "lnyd@LNsy115"

修改olcDatabase={2}hdb.ldif文件,将管理员密码的md5值增加到此文件中
其中cn=admin中的admin表示OpenLDAP管理员的用户名,可将cn和dc按照实际情况修改,而olcRootPW表示OpenLDAP管理员的密码。

dn: olcDatabase={2}hdb
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=hdp315,dc=com
olcRootDN: cn=admin,dc=hdp315,dc=com
olcRootPW: {MD5}WL8F9lXqbxOxR0xwaIG9Jg==
olcDbIndex: objectClass eq,pres
olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub
structuralObjectClass: olcHdbConfig
entryUUID: 22848b60-4563-103d-8500-c5b20ff267b6
creatorsName: cn=config
createTimestamp: 20230220120913Z
entryCSN: 20230220120913.754062Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20230220120913Z

在这里插入图片描述

(2)修改olcDatabase={1}monitor.ldif文件

/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif
将dn.base中OpenLDAP管理员的相关信息修改为{2}hdb.ldif中相同的内容

dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" read by dn.base="cn=admin,dc=hdp315,dc=com" read by * none
structuralObjectClass: olcDatabaseConfig
entryUUID: 2284858e-4563-103d-84ff-c5b20ff267b6
creatorsName: cn=config
createTimestamp: 20230220120913Z
entryCSN: 20230220120913.753913Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20230220120913Z

在这里插入图片描述

(3)修改olcDatabase={0}config.ldif文件

/etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif
增加olcRootDN和olcRootPW项

dn: olcDatabase={0}config
objectClass: olcDatabaseConfig
olcDatabase: {0}config
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
 al,cn=auth" manage by * none
olcRootDN: cn=config
olcRootPW: {MD5}WL8F9lXqbxOxR0xwaIG9Jg==
structuralObjectClass: olcDatabaseConfig
entryUUID: 228480e8-4563-103d-84fe-c5b20ff267b6
creatorsName: cn=config
createTimestamp: 20230220120913Z
entryCSN: 20230220120913.753793Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20230220120913Z

(4)验证LDAP基本配置

对上述配置进行测试验证

slaptest -u

在这里插入图片描述

(5)启动

启动LDAP程序

systemctl start slapd
systemctl status slapd

LDAP默认监听端口为389,通过netstat进行验证

netstat -tunalp | grep 389

3.配置数据库

Schema是LDAP的一个重要组成部分,类似于数据库的模式定义,LDAP的Schema定义了LDAP目录所应遵循的结构和规则,被LDAP服务器识别。schema是一个标准,定义了ldap的对象和属性,也就是ldap能够存储什么数据,数据有什么属性等。
以下操作在hdp01和hdp02上均进行。

(1)导入基础schema

从/etc/openldap/schema/中导入3个基础的schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

在这里插入图片描述

(2)修改migrate_common.ph文件

migrate_common.ph文件主要是用于生成ldif文件使用

vim /usr/share/migrationtools/migrate_common.ph

修改内容如下

$DEFAULT_MAIL_DOMAIN = "hdp315.com";
$DEFAULT_BASE = "dc=hdp315,dc=com";
$EXTENDED_SCHEMA = 1;

4.启用HA

本次配置采用MirrorMode方式。

(1)mod_syncprov.ldif

在hdp01和hdp02上,创建mod_syncprov.ldif文件,ldap双主复制功能的实现依赖于syncprov模块,这个模块位于/usr/lib64/openldap目录下
/etc/openldap/syncprov_mod.ldif

dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la

加载模块

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/syncprov_mod.ldif

(2)syncprov.ldif

在hdp01和hdp02上,创建syncprov.ldif文件,导入同步配置日志信息,/etc/openldap/syncprov_enable.ldif

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 1 1
olcSpSessionLog: 32767

olcSpCheckpoint:表示当修改1条或者1分钟时,以实现实时同步
olcSpSessionLog:session log会话日志条目的最大数量
加载模块

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/syncprov_enable.ldif

(3)master_node_1.ldif

在hdp01上,创建master_node_1.ldif文件,/etc/openldap/master_node_1.ldif
(注:每个dn属于u一部分,上面需要加一个空行,否则会报错)
2个主节点属性olcServerID的值不能相同,provider指向对方
provider:同步来源,也就是主节点,可以包含多个主节点
binddn:主节点管理账户
credentials主节点管理账户密码
searchbase:根目录

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 0

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://hdp02.hdp.com:389/
  bindmethod=simple
  binddn="cn=admin,dc=hdp315,dc=com"
  credentials=lnyd@LNsy115
  searchbase="dc=hdp315,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

注:credentials为其他主节点的密码,只能用明文,不能用md5加密等格式
加载生效

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/master_node_1.ldif

(4)master_node_2.ldif

在hdp02上,创建master_node_2.ldif文件,/etc/openldap/master_node_2.ldif

dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://hdp01.hdp.com:389/
  bindmethod=simple
  binddn="cn=admin,dc=hdp315,dc=com"
  credentials=lnyd@LNsy115
  searchbase="dc=hdp315,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

加载生效

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/master_node_2.ldif

(5)KeepAlived+HAProxy

① 安装
在hdp04和hdp05安装keepalived和HAProxy服务

yum install -y haproxy keepalived

② 配置HAProxy
在hdp04和hdp05上,修改配置文件,/etc/haproxy/haproxy.cfg

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend  tcp_389_openldap
    bind *:389
    mode tcp
    stats uri /haproxy?stats
    default_backend  tcp_389_openldap

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend tcp_389_openldap
    mode tcp
    balance     roundrobin
    server server1 hdp01.hdp.com:389 check weight 100
    server server2 hdp02.hdp.com:389 check weight 1

启动keepalived服务

systemctl start haproxy
systemctl status haproxy

③ 配置KeepAlived
在hdp04上,修改配置文件,/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id hdp04.hdp.com
   script_user root
   enable_script_security
}

vrrp_script chk_ha_port {
    script "/etc/keepalived/chk_ha.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens192
    virtual_router_id 128
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
        192.168.111.222
    }
    track_script {
        chk_ha_port
    }
}

在hdp05上,修改配置文件,/etc/keepalived/keepalived.conf

global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id hdp05.hdp.com
   script_user root
   enable_script_security
}

vrrp_script chk_ha_port {
    script "/etc/keepalived/chk_ha.sh"
    interval 2
    weight -5
    fall 2
    rise 1
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens192
    virtual_router_id 128
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 12345678
    }
    virtual_ipaddress {
        192.168.111.222
    }
    track_script {
        chk_ha_port
    }
}

监测脚本,/etc/keepalived/chk_ha.sh

#!/bin/bash
counter=$(ps -C haproxy --no-heading | wc -l)
if [ "${counter}" = "0" ]; then
    systemctl start haproxy
    sleep 1
    counter=$(ps -C haproxy --no-heading | wc -l)
    if [ "${counter}" = "0" ]; then
        systemctl stop keepalived
    fi
fi

启动keepalived服务

systemctl start keepalived
systemctl status keepalived

在hdp04上查看ens192端口上的IP增加了192.168.111.222

ip a

在这里插入图片描述
测试切换的时候,可以将chk_ha.sh中的启动haproxy注释掉,防止再次被拉起

5.添加用户及用户组

默认情况下OpenLDAP是没有普通用户的,但是有一个管理员用户。

(1)创建ldif模板

现在需要Linux系统中的用户tenant1,添加到OpenLDAP中。

useradd tenant1
echo "Aa123456" | passwd --stdin tenant1

提取tenant1的信息

grep -E "tenant1[^.]" /etc/passwd > /root/users
grep -E "tenant1[^.]" /etc/group > /root/groups
cat /root/users /root/groups

根据上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif(可以从/etc/passwd、/etc/shadow、/etc/groups中生成ldif更新ldap数据库,需要用到migrationtools工具)

/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/template.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups >> /root/template.ldif
cat /root/template.ldif

在这里插入图片描述
在模板的末尾添加

memberUid: uid=tenant1,ou=People,dc=hdp315,dc=com

后续如果要新加用户到OpenLDAP中的话,可以直接修改template.ldif文件即可。
注:增加LDAP用户,无需在OS层面添加用户,tenant1的添加只是为了生成ldif模板

(2)初始化

在hdp01上,创建/etc/openldap/base.ldif文件,先创建hdp315这个organization(简称O),然后在其下面创建三个OU:
ou=People,dc=hdp315,dc=com用于存放用户账号
ou=services,dc=hdp315,dc=com用户存放服务账号
ou=Group,dc=hdp315,dc=com用户存放组账号

dn: dc=hdp315,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: hdp315

dn: cn=admin,dc=hdp315,dc=com
objectClass: organizationalRole
cn: admin
description: Directory Admin

dn: ou=People,dc=hdp315,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=services,dc=hdp315,dc=com
objectclass: organizationalUnit
ou: services

dn: ou=Group,dc=hdp315,dc=com
objectClass: organizationalUnit
ou: Group

导入

ldapadd -x -D "cn=admin,dc=hdp315,dc=com" -w "lnyd@LNsy115" -f /etc/openldap/base.ldif

(3)添加账号

使用管理员账号admin添加普通用户tenant1到LDAP中,其中-D指定了管理员账号去执行,-w为管理员账号的口令

ldapadd -x -w "lnyd@LNsy115" -D "cn=admin,dc=hdp315,dc=com" -f /root/template.ldif

(4)确认账号信息

使用ldapsearch查询全部用户信息

ldapsearch -x -H ldap://hdp01.hdp.com:389 -b 'ou=People,dc=hdp315,dc=com'

(5)HA同步情况确认

在hdp01上创建的tenant1用户,在hdp02的LDAP上查询

ldapsearch -x -H ldap://hdp01.hdp.com:389 -b 'ou=People,dc=hdp315,dc=com' 'uid=tenant1'
ldapsearch -x -H ldap://hdp02.hdp.com:389 -b 'ou=People,dc=hdp315,dc=com' 'uid=tenant1'
ldapsearch -x -H ldap://192.168.111.222:389 -b 'ou=People,dc=hdp315,dc=com' 'uid=tenant1'

关闭hdp01上的slapd程序,测试是否负载至hdp02上
在这里插入图片描述

6.部署web服务

在hdp01上分别进行Yum安装phpldapadmin服务

yum install -y phpldapadmin

yum安装完phpldapadmin后会默认在/etc/httpd/conf.d加入,修改配置文件/etc/httpd/conf.d/phpldapadmin.conf

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    #Require local
    Require all granted
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

修改phpldapadmin的设置,首先备份配置文件

cp /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.bak.20230222

/etc/phpldapadmin/config.php,修改内容如下:

#注释掉以下行
#287行
#$servers->newServer('ldap_pla');
#291行
#$servers->setValue('server','name','Local LDAP Server');
#388行
#$servers->setValue('appearance','pla_password_hash','');
#398行
#$servers->setValue('login','attr','uid');

#取消注释并增加以下行,537行开始
$servers->newServer('ldap_pla');
$servers->setValue('server','name','hdp01 Server');
$servers->setValue('server','host','192.168.111.201');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=hdp315,dc=com'));
$servers->setValue('login','auth_type','cookie');
$servers->setValue('login','bind_id','cn=admin,dc=hdp315,dc=com');
$servers->setValue('login','bind_pass','lnyd@LNsy115');
$servers->setValue('login','anon_bind',false);  !此行为新增
$servers->setValue('server','tls',false);

$servers->newServer('ldap_pla');
$servers->setValue('server','name','hdp02 Server');
$servers->setValue('server','host','192.168.111.202');
$servers->setValue('server','port',389);
$servers->setValue('server','base',array('dc=hdp315,dc=com'));
$servers->setValue('login','auth_type','cookie');
$servers->setValue('login','bind_id','cn=admin,dc=hdp315,dc=com');
$servers->setValue('login','anon_bind',false);
$servers->setValue('login','bind_pass','lnyd@LNsy115');

重启httpd服务

systemctl restart httpd
systemctl status httpd

访问页面http://192.168.111.201/phpldapadmin,可以分别选择不同的OpenLDAP Server进行登录,用户名为在config.php中设置的内容

在这里插入图片描述
在这里插入图片描述
在hdp02上进行同样的部署,然后对页面进行HA高可用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[蓝桥杯 2019 省 B] 特别数的和-C语言的解法

小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 0&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共 28 个&#xff0c;他们的和是 574。 请问&#xff0c;在 1 到 n 中&#xff0c;所有这样的数的和是多少&…

JavaScript编程基础 – For循环

JavaScript编程基础 – For循环 JavaScript Programming Essentials – For Loop By JacksonML 循环可以多次执行代码块&#xff0c;而不用反复重写相同的语句。这无疑对提升代码质量、减少错误大有脾益。本文将简要介绍for循环的几种案例&#xff0c;希望对读者有所帮助。 …

笔记本电脑关闭触摸板

大部分人用笔记本 其实都是外接的鼠标 那么在打游戏 以及一些切图操作中 为了防止碰到触摸板导致误操作 我们就可以将他关掉 我们可以按快捷键 Win i 或者 点击桌面 此电脑/我的电脑/此计算机 打开设置界面 如果 左侧菜单中有设备 那么 直接点击设备 然后左侧菜单就会有 触摸…

阿里系列-淘宝接口抓取及相关问题

阿里系-淘宝接口抓取 一、安装charlse抓包工具 官方下载地址 安装证书 二、安装xposed hook框架 Xponsed简介 具体安装步骤 三、安装模块 关闭阿里系ssl验证 开启http模式 支持支付宝、淘宝、淘宝直播各个接口抓取 四、效果如下 接下去一段时间更新阿里系相关接口 文章目录 一、…

TA-Lib学习研究笔记(二)——Overlap Studies上

TA-Lib学习研究笔记&#xff08;二&#xff09;——Overlap Studies 1. Overlap Studies 指标 [BBANDS, DEMA, EMA, HT_TRENDLINE, KAMA, MA, MAMA, MAVP, MIDPOINT, MIDPRICE, SAR, SAREXT, SMA, T3, TEMA, TRIMA, WMA]2.数据准备 get_data函数参数&#xff08;代码&#x…

文心一言 VS 讯飞星火 VS chatgpt (148)-- 算法导论12.2 3题

三、用go语言&#xff0c;写出过程 TREE-PREDECESSOR 的伪代码。 文心一言&#xff1a; 以下是使用Go语言编写的TREE-PREDECESSOR函数的伪代码&#xff1a; func TREE-PREDECESSOR(node) { if node.parent ! nil { return node.parent } // 如果节点是根节点&#xff0c…

有点迷糊class和初始化参数的用法了

翻阅手册https://www.runoob.com/python3/python3-class.html Python从设计之初就已经是一门面向对象的语言&#xff0c;正因为如此&#xff0c;在Python中创建一个类和对象是很容易的。本章节我们将详细介绍Python的面向对象编程。 如果你以前没有接触过面向对象的编程语言&…

洛谷 P1998 阶乘之和 C++代码

前言 今天我们来做洛谷上的一道题目。 网址&#xff1a;[NOIP1998 普及组] 阶乘之和 - 洛谷 西江月夜行黄沙道中 【宋】 辛弃疾 明月别枝惊鹊&#xff0c;清风半夜鸣蝉。稻花香里说丰年&#xff0c;听取WA声一片。 七八个星天外&#xff0c;两三点雨山前。旧时茅店社林边&…

『亚马逊云科技产品测评』活动征文|基于亚马逊云EC2搭建OA系统

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 亚马逊EC2云服务器&#xff08;Elastic Compute Cloud&#xff09;是亚马…

Verilog 入门(九)(建模实例)

文章目录 建模的不同方式条件操作建模通用移位寄存器状态机建模Moore 有限状态机建模Mealy 型有限状态机建模 建模的不同方式 分别使用数据流方式、行为方式和结构方式对下图所示的电路进行建模&#xff1a; 数据流方式&#xff1a;使用连续赋值语句对电路建模 module Save_M…

【ArcGIS Pro微课1000例】0043:深度学习--框架库安装

ArcGIS Pro 中的所有深度学习地理处理工具都要求安装支持的深度学习框架库。 文章目录 深度学习框架库下载深度学习框架库安装注意事项深度学习框架库下载 由于是python开发,可以采用安装包与Pip两种方式安装,本文讲解采用安装包安装。 点击深度学习框架库下载,打开网站,…

二叉树链式结构的实现和二叉树的遍历以及判断完全二叉树

二叉树的实现 定义结构体 我们首先定义一个结构来存放二叉树的节点 结构体里分别存放左子节点和右子节点以及节点存放的数据 typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right; }BTNode;…

【数电笔记】20-有约束的逻辑函数化简

目录 说明&#xff1a; 约束项和约束条件 1. 引例 1.1 引例中的约束项 1.2 引例中的约束条件 利用约束项 / 约束条件化简逻辑函数 1. 例1 2. 例2 3. 例3 4. 例4 说明&#xff1a; 笔记配套视频来源&#xff1a;B站&#xff1b;本系列笔记并未记录所有章节&#xff0…

HTTPS安全防窃听、防冒充、防篡改三大机制原理

前言 本文内容主要对以下两篇文章内容整理过滤&#xff0c;用最直观的角度了解到HTTPS的保护机制&#xff0c;当然啦&#xff0c;如果想要深入了解HTTPS&#xff0c;本文是远远不够的&#xff0c;可以针对以下第一个链接中的文章拓展板块进行学习&#xff0c;希望大家通过本文能…

css如何设置文本添加下划线

css文本添加下划线 text-decoration: underline;text-decoration相关属性参数 参数描述none默认。定义标准的文本。underline定义文本下的一条线。overline定义文本上的一条线。line-through定义穿过文本下的一条线。blink定义闪烁的文本。inherit规定应该从父元素继承 text-…

人体姿态估计算法

人体姿态估计算法 1 什么是人体姿态估计2 基于经典传统和基于深度学习的方法2.1 基于经典传统的人体姿态估计算法2.2 基于深度学习的人体姿态估计算法OpenPoseAlphaPose (RMPE) 3 算法应用4 Paper 人体姿态估计在现实中的应用场景很丰富&#xff0c;如下 动作捕捉&#xff1a;三…

非常好的简历精选7篇

想要打造一份令人眼前一亮的简历&#xff0c;赢得招聘方的青睐&#xff1f;参考这7篇精选的“非常好的简历”案例&#xff01;无论是应届毕业生还是职场人士&#xff0c;都能从中借鉴灵感&#xff0c;提升简历质量。让求职之路更加顺畅&#xff0c;轻松斩获心仪职位&#xff01…

跨境独立站和传统外贸的差异

跨境独立站和传统外贸主要在以下几个方面存在区别&#xff1a; 交易形式&#xff1a;传统外贸主要涉及线下交易&#xff0c;买卖双方需要经过面谈、磋商、签订合同等环节。而跨境独立站则主要通过线上平台进行交易&#xff0c;买卖双方可以通过平台发布产品、协商价格、完成支…

linux 内核regulator

问题 在sys文件系统下没有生成cpu 调频的相关节点。 日志对比 [ 3.588745] cpu cpu4: Looking up cpu-supply from device tree [ 3.588753] cpu cpu4: Failed to get reg [ 3.588791] cpu cpu4: Looking up cpu-supply from device tree [ 3.588808] Failed to i…

【数电笔记】18-卡诺图化简

目录 说明&#xff1a; 用卡诺图化简逻辑函数 1. 公式法化简与卡诺图化简对比 2. 化简依据 3. 化简规律 3.1 两个小方块相邻 3.2 四个小方块相邻 3.3 八个小方块相邻 4. 卡诺图化简法步骤 4.1 例1 4.2 例2 5. 画卡诺圈规则 5.1 例1 6. 特殊情况 6.1 例1 6.2 例…