【搭建 Hbase 集群】

搭建 Hbase 集群

  • 一、准备工作
  • 二、三台服务器之间的 SSH 免密登录
    • 1.修改hosts文件添加DNS映射
    • 2.在每台服务器上生成 SSH 密钥对
    • 3.将公共密钥(通常为 ~/.ssh/id_rsa.pub)复制到目标服务器上
    • 4.从本地使用 SSH 命令无需密码连接到目标服务器
  • 二、安装JDK
    • 1.执行解压更名
    • 2.配置环境 source生效
    • 3.分发环境配置
  • 三、安装ZooKeeper 来协调和管理集群中的各个节点
    • 1.解压更名
    • 2.修改配置文件
      • 2-1.配置文件更名修改配置
      • 2-2.根据配置创建数据所需文件夹
    • 3.配置环境
    • 4.分发环境
    • 5.分发环境
      • 5-1.文件远程拷贝
      • 5-2. lvresun-server2、lvrensun-server3 source生效环境变量
    • 6. 每台zookeeper服务分配myid
    • 7.启动验证
    • 8.验证宕机选举是否正常

在内容开始之前需要了解一下几个方面的知识会更好的帮助学习和搭建Hbase集群

  • Hadoop:Hbase 是建立在 Hadoop基础之上的分布式数据库。了解 Hadoop 的基本概念和架构将有助于您理解 Hbase 的工作原理。

  • 分布式系统:Hbase是一个分布式数据库,它将数据存储在多台服务器上。了解分布式系统的概念、优点、挑战和常见的解决方案,将帮助您更好地理解和管理
    Hbase集群。

  • ZooKeeper:Hbase 使用 ZooKeeper 来协调和管理集群中的各个节点。了解 ZooKeeper的基本概念、角色和功能,以及如何安装、配置和运行 ZooKeeper,将有助于您正确地配置和管理 Hbase 的
    ZooKeeper。

  • 网络和主机配置:在搭建 Hbase集群之前,需要确保服务器之间能够相互通信,并具有足够的网络带宽和稳定性。此外,还需要了解如何设置主机名解析和网络配置,以便在集群中使用主机名进行通信。

  • 数据模型和表设计:Hbase 使用键值对存储和访问数据,了解如何设计良好的数据模型和表结构将有助于提高性能和查询效率。

  • 安全性配置:在生产环境中搭建 Hbase集群时,安全性是一个重要的考虑因素。了解如何配置安全认证和访问控制,以保护您的数据和集群是很重要的。

一、准备工作

  1. Hadoop 官方网站 https://archive.apache.org/dist/hadoop/common/
  2. Hbase:官方网站 https://archive.apache.org/dist/hbase/
  3. ZooKeeper:Hbase 使用 ZooKeeper进行协调和管理。官方网站:https://archive.apache.org/dist/zookeeper/
  4. HDFS:Hbase 使用 Hadoop HDFS存储其数据。因此,您需要安装和配置 Hadoop HDFS。一般情况下,Hadoop 的安装包中已经包含了 HDFS。
  5. JDK:确保服务器上安装了 Java Development Kit(JDK)。Hadoop 和 Hbase 都需要运行在 Java环境中,因此需要安装并正确配置 JDK。

我们在这里使用的是一下版本:

lvrensun-server1

[root@lvrensun-server1 soft]# pwd
/root/soft
[root@lvrensun-server1 soft]# ll -h
总用量 700M
-rw-r--r--.  1 root root 396M 22 23:09 hadoop-2.10.2.tar.gz
-rw-r--r--.  1 root root  79M 130 01:50 hbase-0.98.6-hadoop2-bin.tar.gz
-rw-r--r--.  1 root root 177M 316 2017 jdk-8u131-linux-x64.tar.gz
-rw-r--r--.  1 root root  16M 130 01:50 zookeeper-3.4.5.tar.gz
[root@lvrensun-server1 soft]# 

lvrensun-server2

[root@lvrensun-server2 soft]# pwd
/root/soft
[root@lvrensun-server2 soft]# ll -h
总用量 0
[root@lvrensun-server2 soft]# 

lvrensun-server3

[root@lvrensun-server3 soft]# pwd
/root/soft
[root@lvrensun-server3 soft]# ll -h
总用量 0
[root@lvrensun-server3 soft]# 

可以看到上方显示有三台服务器分别是:

hostnameIP资源路径是否有资源包
lvrensun-server1192.168.0.11/root/soft
lvrensun-server2192.168.0.22/root/soft
lvrensun-server3192.168.0.33/root/soft

二、三台服务器之间的 SSH 免密登录

1.修改hosts文件添加DNS映射

vim /etc/hosts

如下图所示
在这里插入图片描述

2.在每台服务器上生成 SSH 密钥对

[root@lvrensun-server1 soft]# ssh-keygen -t rsa
[root@lvrensun-server2 soft]# ssh-keygen -t rsa
[root@lvrensun-server3 soft]# ssh-keygen -t rsa

在生成密钥对时,您可以选择存储位置和设置密钥的密码。如果留空密码,则可以实现完全无密码的免密登录。

3.将公共密钥(通常为 ~/.ssh/id_rsa.pub)复制到目标服务器上

[root@lvrensun-server1 ~]# ssh-copy-id root@192.168.0.11
[root@lvrensun-server1 ~]# ssh-copy-id root@192.168.0.22
[root@lvrensun-server1 ~]# ssh-copy-id root@192.168.0.33
[root@lvrensun-server2 ~]# ssh-copy-id root@192.168.0.11
[root@lvrensun-server2 ~]# ssh-copy-id root@192.168.0.22
[root@lvrensun-server2 ~]# ssh-copy-id root@192.168.0.33
[root@lvrensun-server3 ~]# ssh-copy-id root@192.168.0.11
[root@lvrensun-server3 ~]# ssh-copy-id root@192.168.0.22
[root@lvrensun-server3 ~]# ssh-copy-id root@192.168.0.33

前两步其中一台服务器详细执行步骤如下:

[root@lvrensun-server1 soft]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:QeDtQ6BMG5mIM2rk2DjM87H5Qe9uCv2i16bF55CI3fI root@lvrensun-server1
The key's randomart image is:
+---[RSA 2048]----+
| . .ooo..        |
|+..oo= +         |
|B=  + . +        |
|=*.. . o .       |
|..o = . S        |
|   ++.+...       |
|   o.=+* .       |
|    .+==+        |
|   .ooBE .       |
+----[SHA256]-----+
[root@lvrensun-server1 ~]# cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNW0i7f2CAa/rq55WqUtJBc8igbOSTrsJGlFjX2s1XmONL1nPHk3eKEy1HrqC5kpEwgjYcIawtIq/apERkjqeGNRbjV9/Sq7zUvwiONA1+WJTwI80RyH84ZhV6aHuXTrly+9cx8UF1TbVRh0WgWZcjzFZdzDVIcB18zsBmWXZsGZxxVYD4fjkfXjMKJwOcAGXlUWb3J7O30uB9GcJhasTN98QcFmVp+cGldNJbTlXgUSUffD0HTOAPhlWDgWI3dFq+jCnCI4XzugyF0vU4dv81FiBTgcTxJ25tJvnw2PwtxhSEpklfK9UuYLBrOlDMsDBlkKBITTddJkLOvCsLr1Sr root@lvrensun-server1
[root@lvrensun-server1 ~]# ssh-copy-id root@192.168.0.11
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.11 (192.168.0.11)' can't be established.
ECDSA key fingerprint is SHA256:SPQuwBgvdNmYL9PVBgcGTkuynS9iqvn3pBvXv6ZcePw.
ECDSA key fingerprint is MD5:db:a1:53:83:6c:52:e5:6c:d8:75:6a:05:47:b7:26:5b.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.11's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.11'"
and check to make sure that only the key(s) you wanted were added.

[root@lvrensun-server1 ~]# ssh-copy-id root@192.168.0.22
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.22 (192.168.0.22)' can't be established.
ECDSA key fingerprint is SHA256:SPQuwBgvdNmYL9PVBgcGTkuynS9iqvn3pBvXv6ZcePw.
ECDSA key fingerprint is MD5:db:a1:53:83:6c:52:e5:6c:d8:75:6a:05:47:b7:26:5b.
Are you sure you want to continue connecting (yes/no)? yes   
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.22's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.22'"
and check to make sure that only the key(s) you wanted were added.

[root@lvrensun-server1 ~]# ssh-copy-id root@192.168.0.33
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
The authenticity of host '192.168.0.33 (192.168.0.33)' can't be established.
ECDSA key fingerprint is SHA256:SPQuwBgvdNmYL9PVBgcGTkuynS9iqvn3pBvXv6ZcePw.
ECDSA key fingerprint is MD5:db:a1:53:83:6c:52:e5:6c:d8:75:6a:05:47:b7:26:5b.
Are you sure you want to continue connecting (yes/no)? yes   
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.0.33's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.0.33'"
and check to make sure that only the key(s) you wanted were added.

[root@lvrensun-server1 ~]# 

4.从本地使用 SSH 命令无需密码连接到目标服务器

lvrensun-server1

[root@lvrensun-server1 ~]# ssh lvrensun-server1
Last login: Fri Feb  2 12:54:38 2024 from lvrensun-server2
[root@lvrensun-server1 ~]# exit
登出
Connection to lvrensun-server1 closed.
[root@lvrensun-server1 ~]# ssh lvrensun-server2
Last login: Fri Feb  2 12:54:51 2024 from lvrensun-server2
[root@lvrensun-server2 ~]# exit
登出
Connection to lvrensun-server2 closed.
[root@lvrensun-server1 ~]# ssh lvrensun-server3
Last login: Fri Feb  2 12:55:14 2024 from lvrensun-server2
[root@lvrensun-server3 ~]# 

lvrensun-server2

[root@lvrensun-server2 ~]# ssh lvrensun-server1
Last login: Fri Feb  2 12:53:50 2024 from lvrensun-server2
[root@lvrensun-server1 ~]# exit
登出
Connection to lvrensun-server1 closed.
[root@lvrensun-server2 ~]# ssh lvrensun-server2
Last login: Fri Feb  2 12:54:09 2024 from lvrensun-server2
[root@lvrensun-server2 ~]# exit
登出
Connection to lvrensun-server2 closed.
[root@lvrensun-server2 ~]# ssh lvrensun-server3
Last login: Fri Feb  2 12:54:21 2024 from lvrensun-server2
[root@lvrensun-server3 ~]# 

lvrensun-server3

[root@lvrensun-server3 ~]# ssh lvrensun-server1
Last login: Fri Feb  2 12:56:09 2024 from lvrensun-server1
[root@lvrensun-server1 ~]# exit
登出
Connection to lvrensun-server1 closed.
[root@lvrensun-server3 ~]# ssh lvrensun-server2
Last login: Fri Feb  2 12:56:19 2024 from lvrensun-server1
[root@lvrensun-server2 ~]# exit
登出
Connection to lvrensun-server2 closed.
[root@lvrensun-server3 ~]# ssh lvrensun-server3
Last login: Fri Feb  2 12:56:27 2024 from lvrensun-server1
[root@lvrensun-server3 ~]# 

二、安装JDK

Hadoop 和 Hbase 都需要运行在 Java环境中因此JDK属于基础环境

1.执行解压更名

 tar -xzvf jdk-8u131-linux-x64.tar.gz
 mv jdk-1.8.0-u131/ jdk1.8

如下:

-rw-r--r--. 1 root root  34687765 1月  30 01:50 hadoop-2.10.2-site.tar.gz
-rw-r--r--. 1 root root  82347017 1月  30 01:50 hbase-0.98.6-hadoop2-bin.tar.gz
drwxr-xr-x. 8   10  143       255 315 2017 jdk1.8
-rw-r--r--. 1 root root 185540433 3月  16 2017 jdk-8u131-linux-x64.tar.gz
-rw-r--r--. 1 root root  16402010 1月  30 01:50 zookeeper-3.4.5.tar.gz

2.配置环境 source生效

vim /etc/profile

[root@lvrensun-server1 soft]# vim /etc/profile

添加配置

export JAVA_HOME=/root/soft/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

source生效

[root@lvrensun-server1 soft]# source /etc/profile
[root@lvrensun-server1 soft]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@lvrensun-server1 soft]# 

3.分发环境配置

分发JDK

[root@lvrensun-server1 soft]# scp -r jdk1.8/ lvrensun-server2:/root/soft/
[root@lvrensun-server1 soft]# scp -r jdk1.8/ lvrensun-server3:/root/soft/

分发环境变量

[root@lvrensun-server1 soft]# scp /etc/profile lvrensun-server2:/etc/
[root@lvrensun-server1 soft]# scp /etc/profile lvrensun-server3:/etc/

再到 lvresun-server2、lvrensun-server3 source生效环境变量

[root@lvrensun-server2 ~]# source /etc/profile
[root@lvrensun-server2 ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@lvrensun-server2 ~]# 
[root@lvrensun-server3 soft]# source /etc/profile
[root@lvrensun-server3 soft]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
[root@lvrensun-server3 soft]# 

三、安装ZooKeeper 来协调和管理集群中的各个节点

1.解压更名

[root@lvrensun-server1 soft]# tar -xzvf zookeeper-3.4.5.tar.gz
.......
-rw-r--r--.  1 root root   34687765 1月  30 01:50 hadoop-2.10.2-site.tar.gz
-rw-r--r--.  1 root root   82347017 1月  30 01:50 hbase-0.98.6-hadoop2-bin.tar.gz
drwxr-xr-x.  8   10   143       255 315 2017 jdk1.8
-rw-r--r--.  1 root root  185540433 3月  16 2017 jdk-8u131-linux-x64.tar.gz
drwxr-xr-x. 10  501 games      4096 115 2012 zookeeper-3.4.5
-rw-r--r--.  1 root root   16402010 1月  30 01:50 zookeeper-3.4.5.tar.gz
[root@lvrensun-server1 soft]# mv zookeeper-3.4.5 zookeeper
[root@lvrensun-server1 soft]# ll
总用量 311512
-rw-r--r--.  1 root root   34687765 1月  30 01:50 hadoop-2.10.2-site.tar.gz
-rw-r--r--.  1 root root   82347017 1月  30 01:50 hbase-0.98.6-hadoop2-bin.tar.gz
drwxr-xr-x.  8   10   143       255 315 2017 jdk1.8
-rw-r--r--.  1 root root  185540433 3月  16 2017 jdk-8u131-linux-x64.tar.gz
drwxr-xr-x. 10  501 games      4096 115 2012 zookeeper
-rw-r--r--.  1 root root   16402010 1月  30 01:50 zookeeper-3.4.5.tar.gz
[root@lvrensun-server1 soft]# 

2.修改配置文件

2-1.配置文件更名修改配置

[root@lvrensun-server1 conf]# pwd
/root/soft/zookeeper/conf
[root@lvrensun-server1 conf]# mv zoo_sample.cfg zoo.cfg
[root@lvrensun-server1 conf]# vim zoo.cfg

zoo.cfg 修改内容如下:


# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/root/soft/zookeeper/data
dataLogDir=/root/soft/zookeeper/log
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1

server.1=lvrensun-server1:2888:2299
server.2=lvrensun-server2:2888:2299
server.3=lvrensun-server3:2888:2299

2-2.根据配置创建数据所需文件夹

[root@lvrensun-server1 conf]# mkdir -p /root/soft/zookeeper/data
[root@lvrensun-server1 conf]# mkdir -p /root/soft/zookeeper/log
[root@lvrensun-server1 conf]# ll ../
总用量 1488
drwxr-xr-x.  2  501 games     149 22 13:18 bin
-rw-r--r--.  1  501 games   75988 10月  1 2012 build.xml
-rw-r--r--.  1  501 games   70223 10月  1 2012 CHANGES.txt
drwxr-xr-x.  2  501 games      70 22 13:32 conf
drwxr-xr-x. 10  501 games     130 22 13:18 contrib
drwxr-xr-x.  2 root root        6 22 13:34 data
drwxr-xr-x.  2  501 games    4096 22 13:18 dist-maven
drwxr-xr-x.  6  501 games    4096 22 13:18 docs
-rw-r--r--.  1  501 games    1953 10月  1 2012 ivysettings.xml
-rw-r--r--.  1  501 games    3120 10月  1 2012 ivy.xml
drwxr-xr-x.  4  501 games     235 22 13:18 lib
-rw-r--r--.  1  501 games   11358 10月  1 2012 LICENSE.txt
drwxr-xr-x.  2 root root        6 22 13:34 log
-rw-r--r--.  1  501 games     170 10月  1 2012 NOTICE.txt
-rw-r--r--.  1  501 games    1770 10月  1 2012 README_packaging.txt
-rw-r--r--.  1  501 games    1585 10月  1 2012 README.txt
drwxr-xr-x.  5  501 games      47 22 13:18 recipes
drwxr-xr-x.  8  501 games     154 22 13:18 src
-rw-r--r--.  1  501 games 1315806 11月  5 2012 zookeeper-3.4.5.jar
-rw-r--r--.  1  501 games     833 11月  5 2012 zookeeper-3.4.5.jar.asc
-rw-r--r--.  1  501 games      33 11月  5 2012 zookeeper-3.4.5.jar.md5
-rw-r--r--.  1  501 games      41 11月  5 2012 zookeeper-3.4.5.jar.sha1
[root@lvrensun-server1 conf]# 

3.配置环境

[root@lvrensun-server1 zookeeper]# vim /etc/profile

添加内容:

export ZOOKEEPER_HOME=/root/soft/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

生效

[root@lvrensun-server1 zookeeper]# source /etc/profile

4.分发环境

分发包:

[root@lvrensun-server1 soft]# pwd
/root/soft
[root@lvrensun-server1 soft]# scp -r zookeeper lvrensun-server2:/root/soft/
......
[root@lvrensun-server1 soft]# scp -r zookeeper lvrensun-server3:/root/soft/
......
[root@lvrensun-server1 soft]# 

5.分发环境

5-1.文件远程拷贝

[root@lvrensun-server1 soft]# scp /etc/profile lvrensun-server2:/etc/
[root@lvrensun-server1 soft]# scp /etc/profile lvrensun-server3:/etc/

5-2. lvresun-server2、lvrensun-server3 source生效环境变量

[root@lvrensun-server2 soft]# source /etc/profile
[root@lvrensun-server3 soft]# source /etc/profile

6. 每台zookeeper服务分配myid

[root@lvrensun-server1 bin]# echo "1" > /root/soft/zookeeper/data/myid
[root@lvrensun-server2 bin]# echo "2" > /root/soft/zookeeper/data/myid
[root@lvrensun-server3 bin]# echo "3" > /root/soft/zookeeper/data/myid

其中 myid中的 1、2、3 分别对应的是 zoo.cfg 文件中配置项server.1、server.2、server.3中一一对应的数字,知道就行了,对应即可

7.启动验证

[root@lvrensun-server1 bin]# cd /root/soft/zookeeper/bin/
[root@lvrensun-server1 bin]# zkServer.sh start
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@lvrensun-server1 bin]# zkServer.sh status
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[root@lvrensun-server1 bin]# 

[root@lvrensun-server2 bin]# cd /root/soft/zookeeper/bin/
[root@lvrensun-server2 bin]# zkServer.sh start
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@lvrensun-server2 bin]# zkServer.sh status
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[root@lvrensun-server2 bin]# 

[root@lvrensun-server3 bin]# cd /root/soft/zookeeper//bin/
[root@lvrensun-server3 bin]# zkServer.sh start
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@lvrensun-server3 bin]# zkServer.sh status
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Mode: leader

启动一切正产 lvrensun-server3 为主节点

8.验证宕机选举是否正常

把主服务器停掉

[root@lvrensun-server3 bin]# ./zkServer.sh stop
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Stopping zookeeper ... STOPPED
[root@lvrensun-server3 bin]# 

查看其他两台状态

[root@lvrensun-server1 bin]# zkServer.sh status
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[root@lvrensun-server1 bin]# 

[root@lvrensun-server2 bin]# zkServer.sh status
JMX enabled by default
Using config: /root/soft/zookeeper/bin/../conf/zoo.cfg
Mode: leader
[root@lvrensun-server2 bin]# 

可以看到 lvrensun-server2 服务器中zookeeper节点已经被选为主服务节点

四、安装 Hadoop Hbase 是建立在 Hadoop基础之上的分布式数据库

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

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

相关文章

STM32(9)EXTI

EXTI工作原理 EXTI的寄存器组 每个寄存器都是20个比特位,对应EXTI的20路通道,如这6个寄存器的最左边就都是对应通道1的

基于单片机的红外遥控解码程序设计与实现

摘要:该文介绍基于士兰半导体芯片(SC6122)的红外发射遥控器,通过单片机解码程序,实现红外遥控信号的解码和接收。红外接收头与单片机特定的引脚连接,通过设置单片机定时计数器,采样来自红外接收头的高、低电平宽度解码遥控信号。该解码程序设计主要应用在LED数码显示控制…

芯片的制造详解(1)——沙子到晶圆

哔哩哔哩视频 up:谈三圈(2021/8月内容) 芯片的制造流程、工艺、设备 面临困境: 国产芯片卡脖子的地方:制造芯片(制造过程中的一系列设备和和材料)包括但不限于:光刻机、光刻胶、薄膜沉积设备、…

springboot235基于SpringBoot的房屋交易平台的设计与实现

房屋交易平台设计与实现 摘 要 信息数据从传统到当代,是一直在变革当中,突如其来的互联网让传统的信息管理看到了革命性的曙光,因为传统信息管理从时效性,还是安全性,还是可操作性等各个方面来讲,遇到了互…

霍尔,磁编码器(AS5600 ,AS5048A)

霍尔编码器: STM32Cube HAL库——霍尔编码器测速(电机转速测量)-CSDN博客 霍尔编码器(Hall Encoder)是一种用于测量旋转位置和方向的传感器。它通过感应磁场变化来测量旋转轴的位置和方向。 霍尔编码器通常由霍尔传…

LeetCode-第14题-最长公共前缀

1.题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 2.样例描述 3.思路描述 按字符串数组每个数组的长度,将字符串数组从小到大排序;他们的公共前缀一定小于或等于最长元素长度…

框架漏洞-->Struts2 Docker_Vulnhub搭建

来浅浅的讲一下Struts2漏洞 目录 1.Docker_Vulnhub搭建 2.Struts2 3.Struts2的框架特征 4.S2-029-->Remote Code Execution 5.漏洞复现 1.RCE 2.Getshell 1.Docker_Vulnhub搭建 因为我用的是Linux,所以我选择直接搭个docker,这里我建议先换个…

2024最新算法:斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO)求解23个基准函数

一、斑翠鸟优化算法 斑翠鸟优化算法(Pied Kingfisher Optimizer ,PKO),是由Abdelazim Hussien于2024年提出的一种基于群体的新型元启发式算法,它从自然界中观察到的斑翠鸟独特的狩猎行为和共生关系中汲取灵感。PKO 算法围绕三个不…

CHI协议学习

原始文档:https://developer.arm.com/documentation/102407/0100/?langen CHI 总线拓扑结构 CHI总线拓扑是实现自定义的,可以是RING/MESH/CROSSBAR的类型; RING 一般适用于中等规模芯片MESH 一般适用于大规模芯片CROSSBAR 一般适用于小规模…

C++_程序流程结构_循环结构_do while

作用 满足循环条件,执行循环语句 语法 do( 循环语句)while(循环条件) 注意 与while的区别在于do…while会先执行一次循环语句,再判断循环条件 流程图 示例

机器学习-面经(part3)

5. 正则化 5.0 手推L1,L2 5.1 什么是正则化,如何理解 定义: 在损失函数后加上一个正则化项(惩罚项),其实就是常说的结构风险最小化策略,即损失函数 加上正则化。一般模型越复杂,正则化值越大。 正则化项是用来对模型中某些参数进行约束,正则化的一般形式如下: 第一项是…

二元组整数

输入N个整数&#xff0c;输出这个整数两两组合且不重复的所有二元组&#xff0c;要求从小到大输出并且用括号的形式。 输入输出格式 输入描述: 第一行输入一个整数N&#xff0c;N<30。 第二行输入N个整数。 输出描述: 按题意输出。输入输出样例 输入样例#: 3 1 2 3 输出样…

【笔记】OpenHarmony和HarmonyOS区别及应用开发简介

一、概念 OpenHarmony(OH) &#xff1a; OpenAtom OpenHarmonyHarmonyOS(HO)&#xff1a;开发 | 华为开发者联盟 (huawei.com) HO当前最高是3.1&#xff0c;在华为mate 60上面也是。关于4.0、5.0和next这类版本说法都是面向用户的&#xff0c;不是开发人员。对于程序员&#…

使用Docker快速部署Flink分布式集群

前言 大家是否记得自己是怎么开始学习大数据的内容呢&#xff0c;估计关注我得同学会发现前面有点陆续有点关于Docker的小烂文&#xff0c;是因为使用Docker可以最快的速度让我们拥有一个学习的环境。大数据的东西都逃不过搭建环境测试跑通这么一个过程&#xff0c;我自己也是…

【重温设计模式】命令模式及其Java示例

命令模式的介绍 在我们的编程世界中&#xff0c;设计模式如同一盏指路明灯&#xff0c;它们是前人智慧的结晶&#xff0c;为我们照亮了解决复杂问题的路径。 其中&#xff0c;命令模式是一种行为设计模式&#xff0c;其主要的目标是将操作封装到对象中。这种模式的一个显著特点…

Redis在中国火爆,为何MongoDB更受欢迎国外?

一、概念 Redis Redis&#xff08;Remote Dictionary Server&#xff09;是一个使用ANSI C编写的开源、支持网络、基于内存、分布式、可选持久性的键值对存储数据库。Redis是由Salvatore Sanfilippo于2009年启动开发的&#xff0c;首个版本于同年5月发布。 MongoDB MongoDB…

C语言指针的初步认识--学习笔记(2)

1.数组名的理解 我们在使⽤指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10]{1,2,3,4,5,6,7,8,9,10}; int* p&arr[0]; 这⾥我们使⽤ &arr[0] 的⽅式拿到了数组第⼀个元素的地址&#xff0c;但是其实数组名本来就是地址&#xff0c;⽽且 是数组…

redis 缓存击穿问题(互斥锁,逻辑过期)

1、缓存击穿问题 缓存击穿问题:一个被高并发访问并且缓存重建业务较复杂的key突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击。 场景:假设线程1在查询缓存之后&#xff0c;本来应该去查询数据库&#xff0c;然后把这个数据重新加…

LeetCode第125场双周赛个人题解

目录 100231. 超过阈值的最少操作数 I 原题链接 思路分析 AC代码 100232. 超过阈值的最少操作数 II 原题链接 思路分析 AC代码 100226. 在带权树网络中统计可连接服务器对数目 原题链接 思路分析 AC代码 100210. 最大节点价值之和 原题链接 思路分析 AC代码 10023…

react native封装ScrollView,实现(滑到底部)和(滑到顶部+手指继续向下滑)时拉取新数据

里面的tw是在react native中使用tailwind的第三方库 只求读者把样式看个大概&#xff0c;主要还是功能的实现 ScrollView的官方文档如下 https://reactnative.cn/docs/scrollview import tw from twrnc import { View, Text, ScrollView, RefreshControl } from react-native …