hadoop安装集群搭建

news2024/11/15 15:57:17

准备工作:

1,创建一台虚拟机,安装java jdk 这里选择1.8

2,给虚拟机并配置好静态IP地址

一:Java jdk安装

1.1检查安装环境,是否已安装其他版本的jdk,有的话卸载。

# 查看系统JDK进程
[root@hadoop102 ~]# rpm -qa|grep jdk
java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
 # 卸载:
[root@hadoop102 ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
 [root@hadoop102 ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

1.2安装jdk通过xftp或者terminus将安装包放到Linux指定目录

1.3解压jdk安装包到指定目录

# tar -zxvf jdk的压缩包 -C 目标路径
[root@hadoop102 software]# tar -zxvf jdk-8u131-linux-x64.tar.gz -C /opt/module

1.4配置环境变量

方法一:直接在系统文件后面追加(不建议)

# sudo以管理员的权限编辑
[root@hadoop102 ~]# sudo vim /etc/profile

# 修改文件
[root@hadoop102 ~]# sudo vim /etc/profile
 # 在文件末尾追加
export JAVA_HOME=/opt/module/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin

方法二:新定义一个配置文件

# 在profile.d目录下创建一个自己的.sh文件 my_env.sh
[root@hadoop102 profile.d]# sudo vim my_env.sh

# JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_131(注意这里是自己jdk的安装路径)
export PATH=$PATH:$JAVA_HOME/bin

1.5刷新配置文件使其生效

# 刷新环境变量,配置文件更新
[root@hadoop102 ~]# source /etc/profile
 
# 查看JDK版本
[root@hadoop102 ~]# java -version

 二:Linux集群搭建

2.1首先创建好一台虚拟机然后配置好静态IP

2.11这里记录安装好之后配置静态IP的流程。(虚拟机安装可以参考:https://blog.csdn.net/s980629/article/details/130265746?spm=1001.2014.3001.5502

静态IP配置:

2.12在VMware虚拟机左上角任务栏点击编辑(E),点击虚拟网络编辑器(N),点击类型是NAT模式那一栏,记住最下面的ip地址

 2.13设置网关:再点击 NAT设置 按钮

2.21 在本机配置虚拟网卡的IP地址。

可以直接在电脑的任务栏中选中网络那里右键打开 网络和共享中心,在左边点击 更改适配器设置,然后右键选属性打开 VMare Network Adapter VMnet8, 在打开的页面上选 Internet协议版本4,点击属性,在打开的页面选择 使用下面的ip地址 ,ip地址可以填192.168.110.1 默认网关必须与前面的第三步配好的网关ip一致也就是 192.168.110.2,就此虚拟机的固定ip地址就配完了

 2.3进入/etc/sysconfig/network-scripts/目录

cd /etc/sysconfig/network-scripts/

查看目录下的文件:ls,找到ifcfg-ens32(你们不一定是32,可能是33等数字不相同,反正就是他)

2.4 编辑ifcfg-ens33文件:vim ifcfg-ens32(你们是33就输入:vim ifcfg-ens33

修改:

BOOTPROTO=static    
ONBOOT=yes

然后最下面添加(前3位与记录的ip一致即可,我的是192.168.110):
注:GATEWAY 是网关,DNS1 与网关保持一致,并且二者与上面记下来的网关一致,我这里是192.168.110.2

IPADDR=192.168.110.110
GATEWAY=192.168.110.2
NETMASK=255.255.255.0
DNS1=192.168.110.2

强制保存退出。:wq!

2.5 重启服务器service network restart

输入 Ifconfig 查看现在的地址是否是新配置的地址。

 至此静态IP已经配置完成了。

2.2 虚拟机集群克隆

这里请参考博客:Linux克隆虚拟机的IP地址与主机名修改(二)_linux克隆虚拟机修改ip_+uuid+的博客-CSDN博客

2.3 集群之间通信配置

2.31

关闭防火墙 :systemctl stop firewalld

禁止防火墙开机自启动:systemctl disable firewalld

重启:reboot

2.32 etc/hots  文件配置

集群中的每一个虚拟机都要修改/etc//hosts文件,添加所有的虚拟机到文件中其他虚拟机访问(根据自己的IP去修改)

# 在/etc/hosts文件中添加集群主机IP地址+hostname+别名
[root@hadoop102 ~]$ vim /etc/hosts
 
# 添加的内容
192.168.110.122 hadoop102 hadoop102
192.168.110.123 hadoop103 hadoop103
192.168.110.124 hadoop104 hadoop104

2.33将该文件同步给其他两个主机:

scp可以实现服务器与服务器之间的数据拷贝。( from server1 to server2 ) 

scp      -r      $pdir/$fname         $user@host:$pdir/$fname
命令     递归   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

案例1:在hadoop102机器上拷贝jdk到hadoop103机器中

# 将hadoop102服务器的jdk拷贝到hadoop103的/opt/module/目录下
[root@hadoop102 module]$ scp -r jdk1.8.0_131/  root@hadoop103:/opt/module/

案例2:在hadoop103机器上拉取hadoop102的jdk到本机中

# 将hadoop102服务器的jdk拉取到hadoop103的/opt/module/目录下
[root@hadoop103 module]$ scp -r root@hadoop102:/opt/module/hadoop-3.1.3 ./

案例3: 在hadoop103机器上拉取hadoop102的jdk拷贝到hadoop104机器中

# 在hadoop103机器上拉取hadoop102的jdk拷贝到hadoop104机器中
[root@hadoop103 module]$ scp -r root@hadoop102:/opt/module/* root@hadoop104:/opt/module/

2.34 rsync远程同步工具

rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别: 用rsync 做文件的复制要比 scp 的速度快,rsync 只对差异文件做更新。scp是把所有文件都复制过去。

rsync      -av      $pdir/$fname         $user@host:$pdir/$fname
命令       递归   要拷贝的文件路径/名称   目的地用户@主机:目的地路径/名称

 案例:删除hadoop103中/opt/module/hadoop-3.1.3/下的wciput与 wcoutput文件

[root@hadoop103 hadoop-3.1.3]$ rm -rf wcinput wcoutput

同步hadoop102中的/opt/module/hadoop-3.1.3/到hadoop103中,恢复这两个文件。

[root@hadoop102 module]$ rsync -av hadoop-3.1.3/ root@hadoop103:/opt/module/hadoop-3.1.3/

2.35配置集群分发 xsync 集群分发

(1)需求:循环复制文件到所有节点的相同目录下
(2)需求分析:
        (a) rsync 命令原始拷贝:

                rsync -av /opt/module root@hadoop103:/opt/module/

        (b)期望脚本: 命令后直接跟文件名就可直接为集群中的其他服务器同步。
                xsync 要同步的文件名称
        (c)期望脚本在任何路径都能使用(脚本放在声明了全局环境变量的路径)            

                [root@hadoop102 ~]$ echo $PATH

脚本实现:

上面已经查看了环境配置,其中有一个/root/bin目录,我们查看/root目录下并没有该bin目录,我们可以先创建一个bin目录,在bin目录中创建文件编写内容,就可实现全局生效。

[root@hadoop102 bin]$ vim xsync

添加:

# !/bin/bash
 
# 1. 判断参数个数(是否小于1,小于1直接退出)
if [ $# -lt 1 ]
then
    echo Not Enough Arguemnet!
    exit;
fi
 
# 2. 遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
    echo ===================== $host =====================
    # 3. 遍历所有目录,挨个发送
    for file in $@
    do
        # 4. 判断文件是否存在
        if [ -e $file ]
            then
                # 5. 获取父目录
                pdir=$(cd -P $(dirname $file);pwd)
                # 6. 获取当前文件的名称
                fname=$(basename $file)
                ssh $host "mkdir -p $pdir"
                rsync -av $pdir/$fname $host:$pdir
            else
                echo $file does not exists!
        fi
    done
done

添加权限:chmod 777 xsync

测试:[root@hadoop102 ~]$ xsync bin  把bin文件夹分到另外两个主机中。

可以用全路径,也可以用相对路径:

xsync /etc/profile.d/my_env.sh

2.36 配置集群之间免密登录

 查看.ssh文件

# -la 查看文件的所有文件/目录包含隐藏文件/目录
[root@hadoop102 ~]$ ls -la

查看.ssh  文件

因为xsync文件执行过ssh命令,所以会有一个.ssh文件

[root@hadoop102 .ssh]$ cat known_hosts

配置102 无密访问103,104

# 生成公钥与私钥,需要敲三次回车
[root@hadoop102 .ssh]$ ssh-keygen -t rsa

将102上的公钥拷贝到103

[root@hadoop102 .ssh]$ ssh-copy-id hadoop103

对自己也发一份(自己访问时也需要密码)

配置完会多一个文件 authorized_keys,存储着其他服务器的公钥,用于免密访问。

103 104 同样的操作即可。

补充:查看集群所有的进程。

[root@hadoop102 ~]# vim /bin/jpsall

#!/bin/bash
 
for host in hadoop102 hadoop103 hadoop104
do
    echo ========================= $host =========================
    ssh $host jps
done

三:Hadoop集群搭建(前面是准备工作)

3.1准备好hadoop3.1.3安装包

解压安装包到指定路径(这里是我的):/opt/moudle

[root@hadoop101 software]$ tar -zxvf hadoop-3.1.3.tar.gz -
C /opt/module/

 3.2添加环境变量

#HADOOP_HOME
export HADOOP_HOME=/opt/moudle/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HIVE_HOME=/opt/moudle/hive
export PATH=$PATH:$HIVE_HOME/bin

source /etc/profile  更新配置文件

编写配置文件:core-site.xml

<?xml version="1.0" encoding="UTF-8"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
 <!-- 指定 NameNode 的地址 -->
 <property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoop102:8020</value>
 </property>
 <!-- 指定 hadoop 数据的存储目录 -->
 <property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/moudle/hadoop-3.1.3/data</value>
 </property>
 <!-- 配置 HDFS 网页登录使用的静态用户为 atguigu -->
 <property>
  <name>hadoop.http.staticuser.user</name>
  <value>root</value>
 </property>
<!--配置所有节点的atguigu用户都可作为代理用户-->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>
 
<!--配置atguigu用户能够代理的用户组为任意组-->
<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>
 
<!--配置atguigu用户能够代理的用户为任意用户-->
<property>
    <name>hadoop.proxyuser.root.users</name>
    <value>*</value>
</property>
</configuration>

---yarn-site.xml

<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>

 <!-- 指定 MR 走 shuffle -->
 <property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
 </property>
 <!-- 指定 ResourceManager 的地址-->
 <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>hadoop103</value>
 </property>
 <!-- 环境变量的继承 -->
 <property>
 <name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CO
NF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP
RED_HOME</value>
 </property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<!-- 设置日志聚集服务器地址 -->
<property>   
    <name>yarn.log.server.url</name>   
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>
<!-- 设置日志保留时间为 7 天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

</configuration>

--- hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!-- nn web 端访问地址-->
<property>
  <name>dfs.namenode.http-address</name>
  <value>hadoop102:9870</value>
 </property>
<!-- 2nn web 端访问地址-->
 <property>
  <name>dfs.namenode.secondary.http-address</name>
  <value>hadoop104:9868</value>
 </property>
</configuration>

---mapred-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
 <property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
 </property>


  <property>
<name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/moudle/hadoop-3.1.3</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/moudle/hadoop-3.1.3</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/moudle/hadoop-3.1.3</value>
</property>
<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>
 
<!-- 历史服务器 web 端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

</configuration>

--配置workers

hadoop102
hadoop103
hadoop104

以上配置文件要根据自己的IP的主机名适当修改。

初始化:Hdfs namenode -format

 如果没报错就是执行成功了。(故障处理:先停进程,删除data和logs,再格式化,最后起进程即可, --注意如果报错要查看配置文件是不是配置错了,修改完配置文件之后要把 data  和logs这两个文件夹删除之后再次初始化)

之后会出现两个文件夹:

 启动集群:hadoop102  sbin/start-dfs.sh  sbin/stop-dfs.sh

hadoop fs -mkdir /wcinput  hdfs上创建文件夹

hadoop fs -put wcinput/word.txt /wcinput  上传本地文件到hdfs上面

本地上传的文件的存储路径就在这个位置:

/opt/moudle/hadoop-3.1.3/data/dfs/data/current/BP-743871107-192.168.220.131-1682467906068/current/finalized/subdir0/subdir0

配置历史服务器:修改mapred-site 文件,文件同步,生效

<!-- 历史服务器端地址 -->

<property>

    <name>mapreduce.jobhistory.address</name>

    <value>hadoop102:10020</value>

</property>

<!-- 历史服务器 web 端地址 -->

<property>

    <name>mapreduce.jobhistory.webapp.address</name>

    <value>hadoop102:19888</value>

</property>

启动历史服务器:bin/mapred --daemon start historyserver  然后jps  查看

hadoop fs -mkdir /input  在hdfs上面创建文件夹

hadoop fs -put wcinput/word.txt  /input  上传文件到指定的hdfs目录,注意要在

/opt/moudle/hadoop-3.1.3  下面执行命令

执行命令   输出文件夹不能存在,输入的要有。

配置日志聚集功能:

编辑yarn-site.xml

添加:<!-- 开启日志聚集功能 --> 

<property>

    <name>yarn.log-aggregation-enable</name>

    <value>true</value>

</property>

<!-- 设置日志聚集服务器地址 -->

<property>  

    <name>yarn.log.server.url</name>  

    <value>http://hadoop102:19888/jobhistory/logs</value>

</property>

<!-- 设置日志保留时间为 7 天 -->

<property>

    <name>yarn.log-aggregation.retain-seconds</name>

    <value>604800</value>

</property>

分发文件—

先停止相关服务:单节点停止历史服务器

bin/mapred --daemon stop historyserver

sbin/stop-yarn.sh

再起来即可:

sbin/start-yarn.sh

bin/mapred --daemon start historyserver

再去执行以下:

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /wcinput /wcoutput3

整体启动停止hdfs

Start-dfs.sh/stop-dfs.sh

整体启动停止yarn

Start-yarn.sh stop-yarn.sh

各个组件逐一启动:

分别启动hdfs

Hdfs –daemon start/stop namenode/datanode/secondarynamenode

启动停止yarn

Yarn –daemon start/stop resourcemanager/nodemanager

编写脚本停止启动:myhadoop.sh

#!/bin/bash

if [ $# -lt 1 ]

then

echo "No Args Input..."

exit ;

fi

case $1 in

"start")

echo " =================== 启动 hadoop 集群 ==================="

echo " --------------- 启动 hdfs ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/sbin/start-dfs.sh"

echo " --------------- 启动 yarn ---------------"

ssh hadoop003 "/opt/moudle/hadoop-3.1.3/sbin/start-yarn.sh"

echo " --------------- 启动 historyserver ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/bin/mapred --daemon start historyserver"

;;

"stop")

echo " =================== 关闭 hadoop 集群 ==================="

echo " --------------- 关闭 historyserver ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/bin/mapred --daemon stop historyserver"

echo " --------------- 关闭 yarn ---------------"

ssh hadoop003 "/opt/moudle/hadoop-3.1.3/sbin/stop-yarn.sh"

echo " --------------- 关闭 hdfs ---------------"

ssh hadoop002 "/opt/moudle/hadoop-3.1.3/sbin/stop-dfs.sh"

;;

*)

echo "Input Args Error..."

;;

Esac

赋予权限:Chmod 777 myhadoop.sh

执行:myhadoop.sh stop 

执行可能会报一个错:在start-dfs.sh  stop-dfs.sh添加如下脚本即可:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root 

记得分发,

再次执行myhadoop.sh stop

全部关闭了。

通过jps挨个查看。

Bin下面建立 jpsall

#!/bin/bash

for host in hadoop102 hadoop103 hadoop104

do

echo =============== $host ===============

ssh $host jps

done

chmod 777 jpsall

直接常看所有的进程。

关闭集群的顺序:

Hadoop 002 中:bin/mapred --daemon stop historyserver

3中:sbin/stop-yarn.sh

2中:sbin/stop-dfs.sh

注意要在:/opt/moudle/hadoop-3.1.3  下面

关闭后再查看即可。

安装问题记录:

问题1:

yum 不能用的时候记得先挂载:先挂载再去执行即可。只读文件必须先修改权限再去编辑。

mount -t iso9660 -o,loop /dev/sr0 /mnt

yum list all

vi /etc/fstab

yum install vim

问题2:当执行文件分发的时候个别主机无法连接,最有可能是:  先看配置文件主机名称地址有没有配置错误,地址错误之后改回来,然后删除 4中的 .Ssh文件下的 rf-rm knows_hosts文件,因为里面有之前的密钥信息,必须删除,之后再把4的密钥给1发一次就可以了。

问题3:

安装hodoop的时候所有命令失效是因为配置文件的时候出现错误导致的,解决办法:

执行:

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

然后找到错误的配置文件修改回来,source /etc/profile 执行即可。

问题4:ifconfig没有地址出现

问题5:注意主机名不能有下划线,英文加数字即可。

问题6:yarn地址不能访问? 原因是起节点的时候没有在指定的主机上起来。

问题7:无法通过主机名去打开网页,原因是本机电脑没有配置

C:\Windows\System32\drivers\etc  可以通过napad++强制修改,即可打开网页。

 

 

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

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

相关文章

PSINS工具箱学习(二)姿态阵、四元数、欧拉角、等效旋转矢量的概念和转换

上一篇博客&#xff1a;PSINS工具箱学习&#xff08;一&#xff09;下载安装初始化、SINS-GPS组合导航仿真、习惯约定与常用变量符号、数据导入转换、绘图显示 文章目录 一、基础概念1、坐标系定义1. 惯性坐标系&#xff08; i 系 &#xff09;2. 地心地固坐标系&#xff08; e…

solr快速上手:搭建solr集群并创建核心,设置数据同步(十一)

0. 引言 前几章我们已经讲解了solr单机版的基本使用&#xff0c;但实际生产中&#xff0c;为了保证高可用、高性能&#xff0c;我们一般会采用集群模式&#xff0c;所以接下来&#xff0c;我们继续讲解solr集群的搭建和基本操作 1. 集群模式 1.1 分片 在讲解solr集群模式前…

【七天入门数据库】第二天 数据库理论基础

系列文章传送门&#xff1a; 【七天入门数据库】第一天 MySQL的安装部署 【七天入门数据库】第二天 数据库理论基础 【七天入门数据库】第三天 MySQL的库表操作 文章目录 一、什么是数据库 二、数据库管理系统DBMS 三、数据库与文件系统的区分 四、数据库的发展史 五、…

选择屏幕文本元素

标题 列标题 当你使用write语句时才能展现使用. 效果: 选择屏幕文本符号

前端Vue自定义tabs标题栏选项卡组件 可设置文字color

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

7.10 qt作业

闹钟 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QDebug> #include <QIcon> #include <QLabel> #include <QTextEdit> #include <QPushButton> #include <QLineEdit> #include <QPainter> #include <…

实现临界区互斥访问的基本方法

1. 问题引入 在我们之前的生产者与消费者问题中, 在文章的最后, 我们曾尝试过把我们的代码封装成P()和V()操作, 结果却以失败告终. 归根结底是因为我们无法在不使用mutex的情况下来完成对临界区的互斥访问, 本篇文章我们就来探讨一下, 如何不使用mutex实现临界区的互斥访问. …

形态学操作

目录 1、腐蚀 1.1 腐蚀目的 1.2 原理与代码实现 2、膨胀 3、应用 3.1 开闭运算、形态学梯度 3.1.1 开运算 3.1.2 闭运算 ​编辑 3.1.3 形态学梯度 ​编辑 3.1.4 顶帽与黑帽运算 3.2 相关函数 形态学操作常用于对二值化图像的操作 1、腐蚀 1.1 腐蚀目的 去除图像中…

[工业互联-22]:常见EtherCAT主站方案:Acontis公司的商用Windows 解决方案

目录 前言&#xff1a;非实时、纯软件解决方案 1.1 概述 1.2 缺点 1.3 实时性思路 方案1&#xff1a;非实时性能的解决方案&#xff1a;etherCAT优化网卡驱动程序 方案2&#xff1a;EtherCAT内核调度模块EcatDrv 方案3&#xff1a;具有硬实时性能的解决方案&#xff1a;…

【C++】C++创建动态链接库并调用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&#x1f95e; 文章目…

车载蓝牙通信开发之各种协议原理解析

车载蓝牙开发需要考虑到蓝牙协议栈集成、连接管理、电话功能集成、媒体播放控制、数据交换和服务发现、安全性和隐私保护等方面。这对于实现车辆与蓝牙设备之间的无线通信和交互功能非常关键。 使车辆能够与蓝牙设备进行通信和交互的开发过程。 蓝牙协议栈集成&#xff1a; …

SpringCloud与SpringBoot版本对应关系

浏览器访问start.spring.io/actuator/info 出现JSON字符串&#xff0c;再访问json.cn&#xff0c;在里面解析该字符串 如果对应不上&#xff0c;可能会出现很多环境上的坑

KKRT16 PSI算法

概念介绍 KKRT16 算法是一种基于OT的轻量级隐私求交协议&#xff0c;用于在半诚实敌手存在的情况下对伪随机函数&#xff08;OPRF&#xff09;进行不经意的评估。 在 OPRF 协议中&#xff0c;接收器有一个输入 r r r&#xff1b; 发送方获得输出 s s s&#xff0c;接收方获得…

【Hello mysql】 mysql的基本查询

Mysql专栏&#xff1a;Mysql 本篇博客简介&#xff1a;介绍mysql的基本查询 mysql的基本查询 create单行插入全列插入多行查询指定列查询插入否则更新 &#xff08;不常用&#xff09;替换 Retrieveselect列全列查询指定列查询查询字段为表达式结果去重 where条件找到英语小于6…

Unity 分块延迟渲染01 (TBDR)

现代移动端图形体系结构的概述 现代SoC通常会同时集成CPU和GPU。 CPU被用于处理需要低内存延迟的序列、大量分支的数据集&#xff0c;其晶体管用于流控制和数据缓存。 GPU为处理大型&#xff0c;未分支的数据集&#xff0c;如3D渲染。晶体管专用于寄存器和算术逻辑单元&…

Django_内置的用户认证系统

目录 一、用户对象 1. 创建用户 2. 修改密码 3. 用户验证 二、权限与授权 1. 默认权限 2. 用户组 3. 在代码中创建权限 4. 权限缓存 三、在视图中认证用户 1、登录用户 2、注销用户 3、用户登录的访问限制 3.1、原始的办法 3.2、函数视图使用login_required装饰…

【前端】网页开发精讲与实战 CSS Day 1

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;前端 &#x1f4ac;总结&#xff1a;希望你看完之后&#xff0c;能对你有…

Go 并发模型—Goroutine

前言 Goroutines 是 Go[1] 语言主要的并发原语。它看起来非常像线程&#xff0c;但是相比于线程它的创建和管理成本很低。Go 在运行时将 goroutine 有效地调度到真实的线程上&#xff0c;以避免浪费资源&#xff0c;因此您可以轻松地创建大量的 goroutine&#xff08;例如每个请…

快速排序—C语言实现

目录 前言 快速排序 实现逻辑 1. hoare版本​编辑 2. 挖坑法 3. 前后指针版本 快速排序优化 1. 三数取中法选key 2. 递归到小的子区间时&#xff0c;可以考虑使用插入排序 快速排序非递归&#xff08;用栈实现&#xff09; 快速排序的特性总结 全部代码 前言 &#…

idea-spring boot开发

安装maven与配置配置maven安装插件 已经装好了idea与jdk 安装maven与配置 下载地址: https://maven.apache.org/download.cgi 下载合适的版本 配置maven 打开设置: 直接搜索 :maven 配置变量: 此电脑->属性->高级系统设置->环境变量 新建系统变量 MAVEN_HOME&#xff…