CDH 6.3.1 史上最全安装手册

news2024/12/26 10:54:59

因项目需要CDH,经过十来次的重复安装,反复踩坑、填坑、验证,终于了今日的成功。

基础设施

设置主机

Nodecloudera-scm-servercloudera-scm-agent操作系统cpu内存
cdh-guance01Centos7.44核16G
cdh-guance02Centos7.44核16G
cdh-guance03Centos7.44核16G

cloudera-scm-server 一般是一个节点,cloudera-scm-agent可以是多个节点

  • 主机名

hostnamectl set-hostname cdh-guance01

hostnamectl set-hostname cdh-guance02

hostnamectl set-hostname cdh-guance03

  • hosts 配置(所有节点)
echo "10.0.16.217 cdh-guance01">> /etc/hosts
echo "10.0.16.218 cdh-guance02">> /etc/hosts
echo "10.0.16.219 cdh-guance03">> /etc/hosts

免密互通(所有节点)

  • 生成密钥

ssh-keygen -t rsa

  • 复制密钥
ssh-copy-id cdh-guance01
ssh-copy-id cdh-guance02
ssh-copy-id cdh-guance03

资源(所有节点)

echo '* soft nproc 65535' >> /etc/security/limits.conf
echo '* hard nproc 65535' >> /etc/security/limits.conf
echo '* soft nofile 65535' >> /etc/security/limits.conf
echo '* hard nofile 65535' >> /etc/security/limits.conf

CDH 资源下载(主节点)

[root@cdh-guance01 opt]# ll -h
总用量 3.9G
drwxr-xr-x 2 root root 4.0K 812 09:57 bin
-rw-r--r-- 1 root root 3.9G 812 09:49 cdh6.3.1-all.zip

安装 MySQL(主节点)

  • 安装

yum install libaio -y

yum -y install autoconf

wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022

yum -y install mysql-community-server

systemctl start mysqld

  • 查看初始密码
[root@cdh-guance01 opt]# grep "password" /var/log/mysqld.log
2024-08-12T09:23:08.653194Z 1 [Note] A temporary password is generated for root@localhost: kWTrBTxyq8/U
  • 设置数据库
[root@cdh-guance01 opt]# mysql_secure_installation

Securing the MySQL server deployment.

Enter password for user root: 

修改密码后,后面全部输入 Y

  • 修改密码策略(按需,可以不用)
> mysql -uroot -p

# 查看当前安全策略
mysql> show variables like 'validate_password%';
+--------------------------------------+--------+
| Variable_name                        | Value  |
+--------------------------------------+--------+
| validate_password_check_user_name    | OFF    |
| validate_password_dictionary_file    |        |
| validate_password_length             | 8      |
| validate_password_mixed_case_count   | 1      |
| validate_password_number_count       | 1      |
| validate_password_policy             | MEDIUM |
| validate_password_special_char_count | 1      |
+--------------------------------------+--------+
7 rows in set (0.00 sec)

# 最低安全策略(0->LOW ,1->MEDIUM, 2->STRONG)
mysql>set global validate_password_policy=0; 
# 最小密码字符长度是4
mysql>set global validate_password_length=4; 
# 设置本机root密码
mysql>alter user 'root'@'localhost' identified by 'root';

# 刷新权限
mysql>flush privileges;
#退出
mysql>exit

mysql 的密码可以设置复杂点,因为我设置的过于简单,结果数据库被莫名其妙的清空了。

  • 关闭 ssl

初始化 scm 的时候一直报数据库异常,ssl有点问题,我被这个问题困了一天,关闭 ssl 提前脱困。

mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_ssl      | YES   |
+---------------+-------+
1 row in set (0.00 sec)

mysql> SHOW VARIABLES LIKE 'ssl%';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| ssl_ca        | ca.pem          |
| ssl_capath    |                 |
| ssl_cert      | server-cert.pem |
| ssl_cipher    |                 |
| ssl_crl       |                 |
| ssl_crlpath   |                 |
| ssl_key       | server-key.pem  |
+---------------+-----------------+
7 rows in set (0.00 sec)

如果 have_ssl 的值是 YES 就需要关闭。

找到MySQL的配置文件my.cnf或my.ini,通常位于/etc/mysql/目录下。在[mysqld]区块中添加以下配置来禁用SSL:

[mysqld]
ssl=0

调整后,重启 mysql 服务,在进行查看。

systemctl restart mysqld

查看 ssl。

mysql> SHOW VARIABLES LIKE 'have_ssl';
+---------------+----------+
| Variable_name | Value    |
+---------------+----------+
| have_ssl      | DISABLED |
+---------------+----------+
1 row in set (0.00 sec)
  • 创建scm 帐号和数据库

后面安装集群会用到,在 mysql 命令行依次执行以下命令

set global validate_password_policy=0;
set global validate_password_length=4;
CREATE DATABASE scm DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE hive DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE oozie DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE hue DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
CREATE DATABASE sentry DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
CREATE DATABASE amon DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON *.* TO 'scm'@'%' IDENTIFIED BY 'sQnj2CzMHPSm7BJc';

安装 rsync(所有节点)

用于同步文件,非必选,建议安装,提升安装效率。

yum install -y rsync

JDK(所有节点)

  • 安装

yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel -y

[root@cdh-guance01 opt]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode
  • 配置环境变量

新增环境变量文件 /etc/profile.d/my_env.sh,内容如下:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
  • 生效

source /etc/profile.d/my_env.sh

CM 安装

下载解压

这里没有提供下载地址,百度网盘下载太慢了,4G 的压缩包,有需要的话,给我留言,通过 QQ 发送。

[root@cdh-guance01 opt]# ll
总用量 4018204
drwxr-xr-x 2 root root       4096 813 14:09 bin
-rw-r--r-- 1 root root 4114603334 813 14:09 cdh6.3.1-all.zip
-rw-r--r-- 1 root root      25680 427 2017 mysql57-community-release-el7-11.noarch.rpm
[root@cdh-guance01 opt]# unzip cdh6.3.1-all.zip 
Archive:  cdh6.3.1-all.zip
   creating: cdh6.3.1/
  inflating: cdh6.3.1/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel  
  inflating: cdh6.3.1/CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1  
   creating: cdh6.3.1/cm6.3.1/
  inflating: cdh6.3.1/cm6.3.1/cm6.3.1-redhat7.tar.gz  
  inflating: cdh6.3.1/cm6.3.1/jre-8u181-linux-x64.tar.gz  
  inflating: cdh6.3.1/cm6.3.1/mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz  
  inflating: cdh6.3.1/cm6.3.1/mysql-connector-java-5.1.47.jar  
  inflating: cdh6.3.1/manifest.json  

分发 mysql-connector-java.jar

CM 是java程序,链接数据库可以使用多种数据库类型,这里主要使用 mysql,需要添加相应的依赖。将 mysql-connector-java-5.1.27-bin.jar上传到/usr/share/java路径下,并重命名mysql-connector-java.jar,分发出去

  • 编写分发程序 xsync
#在该文件中编写如下代码
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
 
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
 
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
 
#4 获取当前用户名称
user=`whoami`
 
#5 循环
for((host=1; host<4; host++)); do
        echo ------------------- cdh-guance0$host --------------
        rsync -av $pdir/$fname $user@cdh-guance0$host:$pdir
done
  • 分发
[root@cdh-guance01 opt]# cd cdh6.3.1/cm6.3.1/
[root@cdh-guance01 cm6.3.1]# mv mysql-connector-java-5.1.47.jar /usr/share/java/mysql-connector-java.jar
[root@cdh-guance01 bin]# ./xsync /usr/share/java/
fname=java
pdir=/usr/share
------------------- cdh-guance01 --------------
sending incremental file list

sent 94 bytes  received 17 bytes  74.00 bytes/sec
total size is 1,007,502  speedup is 9,076.59
------------------- cdh-guance02 --------------
sending incremental file list
java/
java/mysql-connector-java.jar

sent 1,007,878 bytes  received 39 bytes  2,015,834.00 bytes/sec
total size is 1,007,502  speedup is 1.00
------------------- cdh-guance03 --------------
sending incremental file list
java/
java/mysql-connector-java.jar

sent 1,007,878 bytes  received 39 bytes  2,015,834.00 bytes/sec
total size is 1,007,502  speedup is 1.00

准备工作

[root@cdh-guance01 opt]# mkdir /opt/cloudera-manager
[root@cdh-guance01 opt]# cd cdh6.3.1/cm6.3.1/
[root@cdh-guance01 cm6.3.1]# ll
总用量 1993012
-rw-r--r-- 1 root root 1411444147 616 2021 cm6.3.1-redhat7.tar.gz
-rw-r--r-- 1 root root   81191893 616 2021 jre-8u181-linux-x64.tar.gz
-rw-r--r-- 1 root root  548193637 616 2021 mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz
[root@cdh-guance01 cm6.3.1]# tar -zxvf cm6.3.1-redhat7.tar.gz 
...
[root@cdh-guance01 cm6.3.1]# cd cm6.3.1/RPMS/x86_64/
[root@cdh-guance01 x86_64]# mv cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@cdh-guance01 x86_64]# mv cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@cdh-guance01 x86_64]# mv cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm /opt/cloudera-manager/
[root@cdh-guance01 x86_64]# cd /opt/cloudera-manager/
[root@cdh-guance01 cloudera-manager]# ll
总用量 1185876
-rw-r--r-- 1 2001 2001   10483568 925 2019 cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 2001 2001 1203832464 925 2019 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm
-rw-r--r-- 1 2001 2001      11488 925 2019 cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm
[root@cdh-guance01 cloudera-manager]# cd /opt/bin/
# 分发文件到其他机器
[root@cdh-guance01 bin]# ./xsync /opt/cloudera-manager/

安装 cloudera-manager-daemons (所有节点)

[root@cdh-guance01 x86_64]# cd /opt/cloudera-manager/
[root@cdh-guance01 cloudera-manager]# rpm -ivh cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm

安装 cloudera-manager-agent(所有节点)

yum install bind-utils psmisc cyrus-sasl-plain cyrus-sasl-gssapi fuse portmap fuse-libs /lib/lsb/init-functions httpd mod_ssl openssl-devel python-psycopg2 MySQL-python libxslt

rpm -ivh /opt/cloudera-manager/cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm

调整 server host,修改/etc/cloudera-scm-agent/config.iniserver_host,设置为cloudera-manager-server 主机名,如server_host=cdh-guance01

cloudera-manager-server 安装启动成功后,再启动 agent,否则会启动失败。

systemctl start cloudera-scm-agent

安装 cloudera-manager-server(主节点)

  • 安装 cloudera-manager-server
# 安装cloudera-manager-server
[root@cdh-guance01 cloudera-manager]# rpm -ivh cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm 

  • 配置离线仓库
[root@cdh-guance01 cdh6.3.1]# pwd
/opt/cdh6.3.1
[root@cdh-guance01 cdh6.3.1]# ll
总用量 2035088
-rw-r--r-- 1 root root 2083878000 6月  16 2021 CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel
-rw-r--r-- 1 root root         40 6月  16 2021 CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1
drwxr-xr-x 3 root root       4096 8月  12 19:26 cm6.3.1
-rw-r--r-- 1 root root      33887 6月  16 2021 manifest.json
[root@cdh-guance01 cdh6.3.1]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel* /opt/cloudera/parcel-repo
[root@cdh-guance01 cdh6.3.1]# mv manifest.json /opt/cloudera/parcel-repo
[root@cdh-guance01 cdh6.3.1]# cd /opt/cloudera/parcel-repo
[root@cdh-guance01 parcel-repo]# ll
总用量 2035084
-rw-r--r-- 1 root root 2083878000 6月  16 2021 CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel
-rw-r--r-- 1 root root         40 6月  16 2021 CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1
-rw-r--r-- 1 root root      33887 6月  16 2021 manifest.json
[root@cdh-guance01 parcel-repo]# mv CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha1 CDH-6.3.1-1.cdh6.3.1.p0.1470567-el7.parcel.sha

  • 调整 DB 配置

/etc/cloudera-scm-server/db.properties

com.cloudera.cmf.db.type=mysql
com.cloudera.cmf.db.host=cdh-guance01:3306
com.cloudera.cmf.db.name=scm
com.cloudera.cmf.db.user=scm
com.cloudera.cmf.db.password=root
com.cloudera.cmf.db.setupType=External

  • 启动 cloudera-scm-server
# 初始化数据库
[root@cdh-guance01 parcel-repo]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm root
Enter SCM password: 
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
log4j:ERROR Could not find value for key log4j.appender.A
log4j:ERROR Could not instantiate appender named "A".
Mon Aug 12 20:08:42 CST 2024 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[2024-08-12 20:08:42,790] INFO     0[main] - com.cloudera.enterprise.dbutil.DbCommandExecutor.testDbConnection(DbCommandExecutor.java) - Successfully connected to database.
All done, your SCM database is configured correctly!
# 启动服务
[root@cdh-guance01 parcel-repo]# systemctl start cloudera-scm-server 

登陆配置 CDH 组件

http://cdh-guance01:7180,帐号信息 admin/admin

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 组件安装,按实际需求选择对应的组件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 数据库配置

为了简便操作,我直接授权 scm 所有的 databases 权限,弱密码有风险,建议设置复杂点。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

常见问题

NFS Gateway 启动异常
在这里插入图片描述

解决方案:启动 rpcbind 服务

[root@cdh-guance02 ~]# service rpcbind start
Redirecting to /bin/systemctl start rpcbind.service
[root@cdh-guance02 ~]# systemctl status rpcbind
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; enabled; vendor preset: enabled)
   Active: active (running) since 二 2024-08-13 09:19:23 CST; 5s ago
  Process: 30123 ExecStart=/sbin/rpcbind -w $RPCBIND_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 30124 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─30124 /sbin/rpcbind -w

813 09:19:23 cdh-guance02 systemd[1]: Starting RPC bind service...
813 09:19:23 cdh-guance02 systemd[1]: Started RPC bind service.

MainThread agent ERROR Error, CM server guid updated

[14/Aug/2024 14:01:30 +0000] 29251 MainThread agent        ERROR    Error, CM server guid updated, expected 2dab60bc-d941-438b-8454-c7cb271f4ad6, received cd48128c-8c13-4b96-ab8f-4b8cc20008d4
[14/Aug/2024 14:01:30 +0000] 29251 MainThread agent        ERROR    Error, CM server guid updated, expected 2dab60bc-d941-438b-8454-c7cb271f4ad6, received cd48128c-8c13-4b96-ab8f-4b8cc20008d4
[14/Aug/2024 14:01:34 +0000] 29251 MainThread agent        ERROR    Error, CM server guid updated, expected 2dab60bc-d941-438b-8454-c7cb271f4ad6, received cd48128c-8c13-4b96-ab8f-4b8cc20008d4
[14/Aug/2024 14:01:34 +0000] 29251 MainThread agent        ERROR    Error, CM server guid updated, expected 2dab60bc-d941-438b-8454-c7cb271f4ad6, received cd48128c-8c13-4b96-ab8f-4b8cc20008d4
[14/Aug/2024 14:01:39 +0000] 29251 MainThread agent        ERROR    Error, CM server guid updated, expected 2dab60bc-d941-438b-8454-c7cb271f4ad6, received cd48128c-8c13-4b96-ab8f-4b8cc20008d4

在这里插入图片描述
解决方案:

删除 cm_guid

sudo rm /var/lib/cloudera-scm-agent/cm_guid

重启 cloudera-scm-agent

systemctl restart cloudera-scm-agent

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

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

相关文章

Cesium.js:webGIS领域的翘楚,开源全球地理空间数据可视化框架.

说起数据可视化/数字孪生开发&#xff0c;少不了webGIS&#xff0c;聊起webGIS不得不提大名鼎鼎的Cesium.js框架。 CesiumJS是一个用于创建地理空间应用程序的开源JavaScript库。它提供了丰富的地图和地理空间数据的可视化功能&#xff0c;可以用于构建基于地理位置的3D地图、…

在天朝A股,抄底和摸顶,哪个更加困难?

在天朝股市&#xff0c;流传着这么一句话&#xff1a;新手死于追高&#xff0c;老手死于抄底。和“抄底”相对应的就是“摸顶”&#xff0c;有时候就琢磨着&#xff0c;抄底和摸顶&#xff0c;哪个更加困难&#xff1f; 盯着红绿相间的K线&#xff0c;看着起起伏伏的走势&#…

机器学习之随机森林

文章目录 1. 随机森林概述1.1 定义与起源1.2 与其他算法的比较 2. 随机森林的工作原理2.1 决策树基础2.2 Bagging机制2.3 随机性的引入 3. 随机森林的构建过程3.1 数据准备3.2 特征选择3.3 多棵树的集成 4. 随机森林的优缺点分析4.1 优势4.2 局限性 5. 随机森林的应用场景5.1 分…

学习008-02-05-03 Highlight Property Editors(突出显示属性编辑器)

Highlight Property Editors&#xff08;突出显示属性编辑器&#xff09; This lesson explains how to format data that satisfies the specified criteria. 本课介绍如何格式化满足指定条件的数据。 The instructions below show how to do the following: 以下说明显示了…

高性能跨平台网络通信框架 HP-Socket v6.0.2

项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4592706661.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v6.0.2 更新 一、主要更新 优化Linux通信组件多路复用处理架构&#xff0c;避免“惊群”问…

SP:eric 靶场复现【附代码】(权限提升)

靶机下载地址&#xff1a; https://www.vulnhub.com/entry/sp-eric,274/https://www.vulnhub.com/entry/sp-eric,274/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 08:00:27:75:19:80 1.2. 端口扫描 nmap 192.168.7.104 -p…

NetSuite Credit Memo总账影响无成本与存货内容应如何调整?

“某仓库是新建仓库&#xff0c;由于用户未正确初始化退货入库成本&#xff0c;导致7月所做的Credit Memo的总账影响缺少Inventory和COGS的内容。”这是用户当前所碰到的问题场景。 分析一下&#xff0c;实际上用户未从RMA出发走正常退货流程&#xff0c;而直接建立Credit Mem…

reactFiberLane

Lane (车道模型) 英文单词lane翻译成中文表示"车道, 航道"的意思, 所以很多文章都将Lanes模型称为车道模型 Lane模型的源码在ReactFiberLane.js, 源码中大量使用了位运算(有关位运算的讲解, 首先引入作者对Lane的解释(相应的 pr), 这里简单概括如下: Lane类型被定义…

T10打卡-学习笔记

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 配置环境 import matplotlib.pyplot as plt import numpy as np #隐藏警告 import warnings warnings.filterwarnings(ignore)from tensorflow.keras import …

RCE漏洞及绕过

目录 1、RCE概述 &#xff08;1&#xff09;命令执行函数 &#xff08;2&#xff09;代码执行函数 2、回调后门 3、eval和assert 限制字符长度绕过 &#xff08;1&#xff09;反引号或exec &#xff08;2&#xff09;file_put_contents写入文件 &#xff08;3&#xff…

数据结构——循环队列

目录 循环队列的基本知识 循环队列的实现 定义 各个接口的实现 循环队列的基本知识 循环队列的定义 循环队列&#xff08;Circular Queue&#xff09;是一种使用固定大小的数组实现的队列&#xff0c;它将数组的首尾相连&#xff0c;形成环形&#xff0c;以充分利用空间并实…

react组件优化之React.PureComponent,React.memo

在开发中我们经常会考虑项目的优化问题&#xff0c;react作为现在前端的热门框架用的人肯定是非常的多。项目的优化问题也是非常重要的一部分&#xff0c;能大大提高项目的流畅度&#xff0c;用户体验会非常好。react项目中会用到大量的组件嵌套&#xff0c;减少一些组件的不必…

第二证券:虚拟现实概念强势,博士眼镜三连板,星星科技涨停

虚拟现实概念14日盘中再度走强&#xff0c;到发稿&#xff0c;硕贝德、博士眼镜、星星科技“20cm”涨停&#xff0c;亚世光电、亿道信息、卓翼科技亦涨停&#xff0c;佳禾智能涨超9%。 值得注意的是&#xff0c;博士眼镜已连续3个交易日涨停。公司昨日在出资者互动途径表示&am…

【二叉树进阶】--- 根据二叉树创建字符串

Welcome to 9ilks Code World (๑•́ ₃ •̀๑) 个人主页: 9ilk (๑•́ ₃ •̀๑) 文章专栏&#xff1a; 数据结构 从本篇文章开始&#xff0c;博主将分享一些结合二叉树的进阶算法题。 &#x1f3e0; 根据二叉树创建字符串 &#x1f4cc; 题目内容 根据二叉…

若依框架中的mybatis依赖在哪里?

对于刚刚接触若依框架的朋友,可能会比较懵逼,因为他可能在依赖文件中没有找到mybatis的依赖是在什么地方引入的,所以本章教程,就告诉你这个依赖是在什么地方引入的。 在ruoyi-common模块中的pom.xml 存在一个pagehelper-spring-boot-starter <!-- pagehelper 分页插件 -…

一文HDMI (High-Definition Multimedia Interface)

HDMI&#xff08;High-Definition Multimedia Interface&#xff0c;高清多媒体接口&#xff09;是一种紧凑的音视频接口&#xff0c;它能够将未压缩的视频数据以及压缩或未压缩的数字音频数据&#xff0c;从符合HDMI标准的源设备无缝传输到兼容的计算机显示器、视频投影仪、数…

springboot学生练习自测系统-计算机毕业设计源码48462

目 录 摘要 1 绪论 1.1 研究背景 1.2 研究意义 1.3论文结构与章节安排 2 学生练习自测系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.4 系统用例分析 2.5本章小…

STM32学习笔记13-FLASH闪存

FLASH简介 STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部分&#xff0c;通过闪存存储器接口&#xff08;外设&#xff09;可以对程序存储器和选项字节进行擦除和编程读写FLASH的用途&#xff1a; 利用程序存储器的剩余空间来保存掉电不丢失的用户数据 通过在…

【瑞芯微RV1126(板端摄像头图像数据采集)】②使用v4l2视频设备驱动框架采集图像数据,按键拍照并显示

RV1126开发板&#xff1a;使用v4l2视频设备驱动框架采集图像数据 前言一、按键二、LCD显示三、V4L2 摄像头应用编程四、完整代码 前言 本系列的目的是&#xff0c;不仅仅将能够进行图片推理的模型部署于板端&#xff0c;还提供了两种摄像头数据采集的方法&#xff0c;集成到自…

【python】OpenCV—Optical Flow

文章目录 1、光流2、Opencv 中光流的实现3、稀疏光流4、密集光流4.1、farneback4.2、lucaskanade_dense4.3、rlof 5、涉及到的库5.1、cv2.goodFeaturesToTrack5.2、cv2.calcOpticalFlowPyrLK5.3、cv2.optflow.calcOpticalFlowSparseToDense5.4、cv2.calcOpticalFlowFarneback5.…