当前位置: 首页 > article >正文

HADOOP 3.4.1安装和搭建(尚硅谷版~)

目录

1.配置模版虚拟机

2.克隆虚拟机

3.在hadoop102安装JDK

4.完全分布式运行模式


 

 

 

 

1.配置模版虚拟机

1.安装模板虚拟机,IP地址192.168.10.100、主机名称hadoop100、内存2G硬盘20G(有需求的可以配置4G内存,50G硬盘)

2.hadoop100虚拟机配置要求(本文Linux系统以CentOS-7.5-x86_64-DVD-1804.iso为例)

(1)先看能否正常上网

        [root@hadoop100 ~]# ping www.baidu.com
PING www.a.shifen.com (183.2.172.177) 56(84) bytes of data.
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=1 ttl=128 time=20.6 ms
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=2 ttl=128 time=21.3 ms
64 bytes from 183.2.172.177 (183.2.172.177): icmp_seq=3 ttl=128 time=23.4 ms


(2)然后安装epel-release

[root@hadoop100 ~]# yum install -y epel-release
Loaded plugins: fastestmirror, langpacks
Determining fastest mirrors
epel/x86_64/metalink                                                                                                      | 5.1 kB  00:00:00     
 * epel: d2lzkl7pfhq30w.cloudfront.net
base                                                                                                                      | 3.6 kB  00:00:00     
extras                                                                                                                    | 2.9 kB  00:00:00     
updates                                                                                                                   | 2.9 kB  00:00:00     
Package epel-release-7-14.noarch already installed and latest version
Nothing to do
我这个是已经安装过了的
 


(3)检查是否有ifconfig和vim等命令,没有则下载

[root@hadoop100 ~]# yum install -y net-tools
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: d2lzkl7pfhq30w.cloudfront.net
Resolving Dependencies


[root@hadoop100 ~]# yum install -y net-tools
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * epel: d2lzkl7pfhq30w.cloudfront.net
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.22.20131004git.el7 will be updated


(4)关闭防火墙
[root@hadoop100 ~]# sudo systemctl stop firewalld

关闭防火墙
[root@hadoop100 ~]# sudo systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

关闭自启动

验证是否关闭防火墙

[root@hadoop100 ~]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Mon 2025-04-21 02:54:55 PDT; 3min 55s ago
     Docs: man:firewalld(1)
  Process: 677 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
 Main PID: 677 (code=exited, status=0/SUCCESS)

Apr 21 02:43:14 hadoop100 systemd[1]: Starting firewalld - dynamic firewall daemon...
Apr 21 02:43:14 hadoop100 systemd[1]: Started firewalld - dynamic firewall daemon.
Apr 21 02:54:54 hadoop100 systemd[1]: Stopping firewalld - dynamic firewall daemon...
Apr 21 02:54:55 hadoop100 systemd[1]: Stopped firewalld - dynamic firewall daemon.
这个就显示已经关闭防火墙了,不过会开机自启

[root@hadoop100 ~]# systemctl status firewalld 
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
     Docs: man:firewalld(1)

Apr 21 02:43:14 hadoop100 systemd[1]: Starting firewalld - dynamic firewall daemon...
Apr 21 02:43:14 hadoop100 systemd[1]: Started firewalld - dynamic firewall daemon.
Apr 21 02:54:54 hadoop100 systemd[1]: Stopping firewalld - dynamic firewall daemon...
Apr 21 02:54:55 hadoop100 systemd[1]: Stopped firewalld - dynamic firewall daemon.
这个则显示关闭防火墙,并且不会开机自启

如果你想打开防火墙,你可以
sudo systemctl start firewalld
如果要打开开机自启
sudo systemctl enable firewalld


(5)创建用户,并且更改密码,我用的是perf1,你们可以自由选择

[root@hadoop100 ~]# useradd perf1
[root@hadoop100 ~]# passwd perf1
Changing password for user perf1.
New password: 
BAD PASSWORD: The password is shorter than 8 characters
Retype new password: 
passwd: all authentication tokens updated successfully.
 


(6)给我们的用户添加root权限(添加免密功能),方便后期加sudo执行root权限的命令

[root@hadoop100 ~]# vim /etc/sudoers
 

在%wheel这行下面添加一行,

perf   ALL=(ALL)     NOPASSWD:ALL
要注意,不要添加到root下方,因为所有的用户都在%wheel组那里,如果添加到root下面,后面仍然还是要输密码


(7)在 /opt 目录下创建module、software文件夹,然后修改他们所属主和所属组

mkdir /opt/module

mkdir /opt/software
用这两串代码创建文件夹,然后

chown perf:perf /opt/module

chown perf:perf /opt/software
用这两串代码把他们的所属组和主都为自己的用户,我是perf,你们用自己的用户就好


(8)卸载虚拟机自带的jdk

[root@hadoop100 ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps 
rpm -qa:查询所安装的所有rpm软件包
grep -i:忽略大小写
xargs -n1:表示每次只传递一个参数
rpm -e –nodeps:强制卸载软件


(9)重启虚拟机

reboot


2.克隆虚拟机

1.在关闭hadoop100的条件下,克隆三个虚拟机,我的是命名为hadoop102,hadoop103,hadoop104

2.修改克隆机IP,以下以hadoop102举例说明
        (1)修改克隆虚拟机的静态IP
        [root@hadoop102 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
        改成

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="9687cc8e-3361-48c3-831d-bb57555426e0"
DEVICE="ens33"
ONBOOT="yes"

IPADDR=192.168.10.102
GATEWAY=192.168.10.2
DNS1=192.168.10.2



你对照着改就好了,然后对应不同机子,就是不同的192.168.10.103->hadoop103。

        (2)查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8

进入管理员模式

然后把VMnet8改为NAT模式,把子网和掩码改好

进入NAT设置

检查一下是否有问题,然后点击确定


        (3)接下来就是把Windows系统的系统适配器VMware Network Adapter VMnet8的IP地址改好
进入控制面板->网络和internet->网络和共享中心,然后点击更改适配器选项。

右键该配置,然后点击属性,找到ipv4的协议


然后点击属性

按照这样更改就好了,一定要保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
 


3.修改克隆机主机名,我以hadoop102举例说明

        (1)修改主机名称
[root@hadoop100 ~]# vim /etc/hostname
hadoop102

        (2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
[root@hadoop100 ~]# vim /etc/hosts
添加如下内容
192.168.10.102 hadoop102
192.168.10.103 hadoop103
192.168.10.104 hadoop104


然后重启(reboot)克隆机

4.修改windows的主机映射文件(hosts文件),不这样的话到时候无法直接在网页上用hadoop102 http://hadoop102:9870/

访问,到那时候也不要着急,因为你配置了前面的文件,你仍然可以用
http://192.168.10.102/ http://192.168.10.102:9870/
访问你的hadoop

  我举例window11
        (1)进入C:\Windows\System32\drivers\etc路径
        (2)拷贝hosts文件到桌面
        (3)打开桌面hosts文件并添加如下内容
                192.168.10.102 hadoop102
                192.168.10.103 hadoop103
                192.168.10.104 hadoop104
        (4)将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件


3.在hadoop102安装JDK

1.用XShell传输工具将JDK导入到opt目录下面的software文件夹下面

XShell和XFTP下载地址:

家庭/学校免费 - NetSarang Website

我们直接把hadoop-3.4.1.tar.gz和jdk-8u441-linux-x64.tar.gz复制过去


2.在Linux系统下的software目录中查看软件包是否导入成功

[perf@hadoop102 software]$ cd /opt/software/
[perf@hadoop102 software]$ ll


3.解压我们的导入

tar -zxvf jdk-8u441-linux-x64.tar.gz -C /opt/module/

tar -zxvf hadoop-3.4.1.tar.gz -C /opt/module/


4.配置环境变量和hadoop

(1)新建/etc/profile.d/my_env.sh文件

[perf@hadoop102 ~]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容

#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_441
export PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.4.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin



(2)保存后退出
:wq


(3)source一下/etc/profile文件,让新的环境变量PATH生效
[perf@hadoop102 ~]$ source /etc/profile


5.测试是否安装成功
[perf@hadoop102 ~]$ java -version

[perf@hadoop102 hadoop-3.1.3]$ hadoop version

出现以下内容,代表成功:

6.sudo reboot,重启,如果命令可以用,那就不要重启

4.完全分布式运行模式

1.SSH无密登录配置

(1)配置ssh

        (1)基本语法
        ssh另一台电脑的IP地址
        (2)ssh连接时出现Host key verification failed的解决方法
        [perf@hadoop102 ~]$ ssh hadoop103
        如果出现如下内容
        Are you sure you want to continue connecting (yes/no)? 
        输入yes,并回车
        (3)退回到hadoop102
        [perf@hadoop103 ~]$ exit

(2)无密钥配置

        (1)

        [perf@hadoop102 ~]$ cd /home/perf/.ssh/
        [perf@hadoop102 .ssh]$ ll
        total 16
        -rw-------. 1 perf perf 1188 Mar  1 00:44 authorized_keys
        -rw-------. 1 perf perf 1679 Mar  1 00:19 id_rsa
        -rw-r--r--. 1 perf perf  396 Mar  1 00:19 id_rsa.pub
        -rw-r--r--. 1 perf perf  558 Feb 28 23:08 known_hosts
        [perf@hadoop102 .ssh]$ ssh-keygen -t rsa

        然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)

[perf@hadoop102 .ssh]$ ssh-copy-id hadoop102

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

[perf@hadoop102 .ssh]$ ssh-copy-id hadoop104

然后分别在hadoop103和hadoop104的perf用户进行一样的操作,然后在hadoop102的root也做一个一样的。


2.集群配置

 

hadoop102

hadoop103

hadoop104

HDFS

 

NameNode

DataNode

 

DataNode

SecondaryNameNode

DataNode

YARN

 

NodeManager

ResourceManager

NodeManager

 

NodeManager

 

(1)核心配置文件

[perf@hadoop102 .ssh]$ cd $HADOOP_HOME/etc/hadoop

[perf@hadoop102 hadoop]$ vim core-site.xml
更改文件内容:

<configuration>
  <!-- HDFS默认访问地址 -->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop102:9000</value>
  </property>

  <!-- Hadoop目录(所有节点) -->
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/module/hadoop-3.4.1/data</value>
<!--配置HDFS网页静态用户为perf-->
</property>
  <property>
    <name>hadoop.http.staticuser.user</name>
    <value>perf</value>
  </property>

</configuration>



(2)HDFS配置文件

[perf@hadoop102 hadoop]$ vim hdfs-site.xml
更改文件内容:

<configuration>
  <!-- NameNode HTTP Web UI地址 -->
  <property>
    <name>dfs.namenode.http-address</name>
    <value>hadoop102:9870</value>  <!-- 绑定到主节点的主机名和端口 -->
  </property>

  <!-- NameNode HTTPS Web UI地址(可选) -->
  <property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop104:9871</value>
  </property>

<property>
  <name>dfs.webhdfs.enabled</name>
  <value>true</value>
</property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
</configuration>

 


(3)YARN配置文件

[perf@hadoop102 hadoop]$ vim yarn-site.xml 
更改文件配置:

  <!-- 环境变量白名单(修正后) -->
  <property>
    <name>yarn.nodemanager.env-whitelist</name>
    <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME,CLASSPATH_PREPEND_DISTCACHE</value>
  </property>
<!-- 新增配置:启用日志聚集功能 -->
    <property>
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>

    <!-- 新增配置:日志保留时间(7 天) -->
    <property>
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>

    <property>
        <name>yarn.log.server.url</name>
        <value>http://hadoop102:19888/jobhistory/logs</value>
    </property>
</configuration>

 


(4)MapReduce配置文件

[perf@hadoop102 hadoop]$ vim mapred-site.xml

更改文件配置:

<configuration>
  <!-- 指定使用YARN -->
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value> <!-- 历史服务器RPC地址 -->
  </property>

  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value> <!-- 历史服务器Web UI地址 -->
  </property>
</configuration>

 


3.分发配置到其他节点

(1)编写xsync集群分发脚本(循环复制文件到所有节点的相同目录下)

        这是原始拷贝:rsync  -av     /opt/module           perf@hadoop103:/opt/

现在我们编写脚本实现便利分发:

        (1)在/home/perf/bin目录下创建xsync文件
        [perf@hadoop102 opt]$ cd /home/perf
        [perf@hadoop102 ~]$ mkdir bin
        [perf@hadoop102 ~]$ cd bin
        [perf@hadoop102 bin]$ vim xsync

        

        


#!/bin/bash

# 检查参数是否为空
if [ $# -lt 1 ]; then
    echo "请提供要同步的文件或目录!"
    exit 1
fi

# 定义要同步的服务器列表,这里需要根据实际情况修改
servers=(hadoop102 hadoop103 hadoop104)

# 获取当前执行脚本的用户
user=$(whoami)

# 获取要同步的文件或目录的绝对路径
pdir=$(cd -P "$(dirname "$1")" && pwd)
fname=$(basename "$1")

# 检查路径是否有效
if [ -z "$pdir" ] || [ -z "$fname" ]; then
    echo "无法获取有效的文件或目录路径,请检查输入。"
    exit 1
fi

# 遍历服务器列表
for server in "${servers[@]}"; do
    echo "================== $server =================="
    # 使用 rsync 命令进行同步
    rsync -avzP "$pdir/$fname" "$user@$server:$pdir"
    rsync_status=$?

    # 检查同步是否成功
    if [ $rsync_status -eq 0 ]; then
        echo "$server 同步成功!"
    else
        case $rsync_status in
            1)
                echo "$server 同步失败:协议错误。"
                ;;
            2)
                echo "$server 同步失败:语法错误。"
                ;;
            10)
                echo "$server 同步失败:无法连接到远程主机。请检查网络连接和 SSH 服务是否正常。"
                ;;
            11)
                echo "$server 同步失败:远程主机上的 rsync 服务未运行。"
                ;;
            12)
                echo "$server 同步失败:请求的操作不支持。"
                ;;
            13)
                echo "$server 同步失败:读取本地文件时出错。"
                ;;
            *)
                echo "$server 同步失败:未知错误,错误码 $rsync_status。"
                ;;
        esac
    fi
done

 


        (2)修改权限

                chmod +x xsync

        (3)测试脚本
                [perf@hadoop102 ~]$ xsync /home/perf/bin
        (d)将脚本复制到/bin中,以便全局调用
                [perf@hadoop102 bin]$ sudo cp xsync /bin/
        (e)同步环境变量配置(root所有者)
                [perf@hadoop102 ~]$ sudo ./bin/xsync /etc/profile.d/my_env.sh
                注意:如果用了sudo,那么xsync一定要给它的路径补全。
                让环境变量生效
                [perf@hadoop103 ~]$ source /etc/profile
                [perf@hadoop104 ~]$ source /etc/profile

接下来,你可以用这个同步各个位置的东西了。由于前面关于环境的配置没有分发,所以你可以一次性分发
[perf@hadoop102 bin]$ xsync /opt


4.建起集群

(1)配置workers

[perf@hadoop102 bin]$ vim /opt/module/hadoop-3.4.1/etc/hadoop/workers

hadoop103
hadoop104
hadoop102

注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。


(2)启动集群

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)
[perf@hadoop102 hadoop-3.4.1]$ hdfs namenode -format


启动HDFS

[perf@hadoop102 hadoop-3.4.1]$ sbin/start-dfs.sh


在配置了ResourceManager的节点(hadoop103)启动YARN
[perf@hadoop103 hadoop-3.4.1]$ sbin/start-yarn.sh


在Web端查看HDFS的NameNode
(1)浏览器中输入:http://hadoop102:9870
        (2)查看HDFS上存储的数据信息
在Web端查看YARN的ResourceManager
(1)浏览器中输入:http://hadoop103:8088
    (2)查看YARN上运行的Job信息
注意:如果有点击无法打开的,可以试试把hadoop102改为原始192.168.10.102.如果可以打开,说明原来的hosts配置有问题。

整个集群就简单配置好了!

 

相关文章:

HADOOP 3.4.1安装和搭建(尚硅谷版~)

目录 1.配置模版虚拟机 2.克隆虚拟机 3.在hadoop102安装JDK 4.完全分布式运行模式 1.配置模版虚拟机 1.安装模板虚拟机&#xff0c;IP地址192.168.10.100、主机名称hadoop100、内存2G、硬盘20G&#xff08;有需求的可以配置4G内存&#xff0c;50G硬盘&#xff09; 2.hado…...

第 4 篇:平稳性 - 时间序列分析的基石

第 4 篇&#xff1a;平稳性 - 时间序列分析的基石 在上一篇中&#xff0c;我们学习了如何将时间序列分解为趋势、季节性和残差。我们看到&#xff0c;很多真实世界的时间序列&#xff08;比如 CO2 浓度&#xff09;都包含明显的趋势&#xff08;长期向上或向下&#xff09;和/…...

DeepSeek赋能Nuclei:打造网络安全检测的“超级助手”

引言 各位少侠&#xff0c;周末快乐&#xff0c;幸会幸会&#xff01; 今天唠一个超酷的技术组合——用AI大模型给Nuclei开挂&#xff0c;提升漏洞检测能力&#xff01; 想象一下&#xff0c;当出现新漏洞时&#xff0c;少侠们经常需要根据Nuclei模板&#xff0c;手动扒漏洞文章…...

分享一个python启动文件脚本(django示例)

今天给大家分享一个python启动文件脚本 在日常开发中&#xff0c;我们常常需要运行多条命令来完成“静态收集”“数据库迁移”“启动服务”……如果把这些命令整合到一个脚本里就好了 一、整体流程概览 #mermaid-svg-wA6UnfATaUOfJoPn {font-family:"trebuchet ms"…...

从0到1彻底掌握Trae:手把手带你实战开发AI Chatbot,提升开发效率的必备指南!

我正在参加Trae「超级体验官」创意实践征文&#xff0c; 本文所使用的 Trae 免费下载链接&#xff1a; www.trae.ai/?utm_source… 前言 大家好&#xff0c;我是小Q&#xff0c;字节跳动近期推出了一款 AI IDE—— Trae&#xff0c;由国人团队开发&#xff0c;并且限时免费体…...

3200温控板电路解析

提示&#xff1a;文章 文章目录 前言一、背景二、2.12.2 三、3.1 总结 前言 前期疑问&#xff1a; 本文目标&#xff1a; 一、背景 最近重温3200温控板电路设计和芯片选型 3200代码仓 二、 2.1 按照顺序整理&#xff0c;主要是依靠自己想到的来整理 1、传感器是pt1000&…...

opencv图片颜色识别,颜色的替换

图片颜色识别 1. RGB颜色空间2. 颜色加法2.1使用numpy对图像进行加法2.2使用opencv加法&#xff08;cv2.add&#xff09; 3 颜色加权加法&#xff08;cv2.addWeighted()&#xff09;4. HSV颜色空间5. 制作掩膜4. 与运算&#xff08;cv2.bitwise_and&#xff09;5.颜色的替换7 R…...

B实验-12

需要注意版本、页面源代码 两个文件一个目录&#xff1a;phpinfo robots phpmyadmin 实验12 靶机1 一个key在phpmyadmin&#xff0c;一个key在回收站 用两个扫描目录的工具扫&#xff0c;nmap给python版 情况1&#xff1a;弱口令 root root root 123456 …...

Python多技术融合在生态参量估算中的创新应用—以蒸散发与植被GPP估算为例

在全球气候变化背景下&#xff0c;精确估算陆地生态系统水碳通量成为生态研究的关键命题。本研究创新性地整合Python编程、遥感数据处理、机器学习算法及生态过程模型&#xff0c;构建了一套高效可靠的蒸散发&#xff08;ET&#xff09;与植被总初级生产力&#xff08;GPP&…...

文件有几十个T,需要做rag,用ragFlow能否快速落地呢?

一、RAGFlow的优势 1、RAGFlow处理大规模数据性能&#xff1a; &#xff08;1&#xff09;、RAGFlow支持分布式索引构建&#xff0c;采用分片技术&#xff0c;能够处理TB级数据。 &#xff08;2&#xff09;、它结合向量搜索和关键词搜索&#xff0c;提高检索效率。 &#xf…...

【网工第6版】第5章 网络互联②

目录 ■ IPV6 ▲ IPV6报文格式 ◎ IPV6扩展报头&#xff08;RFC2460&#xff09; ◎ IPv6相关协议 ▲ IPV6地址分类 ◎ IPv6地址基础 ◎ IPv6地址举例 ◎ IPv6地址分类 ◎ 特殊地址对比IPv4 vs IPv6 ▲ 过渡技术 本章重要程度&#xff1a;☆☆☆☆☆ ■ IPV6 与IPv4…...

为什么Makefile中的clean需要.PHONY

原因一&#xff1a;避免Makefile检查时间戳 前置知识&#xff1a;makefile在依赖文件没有改变时不会执行编译命令 #第一次执行&#xff0c;OK [rootVM-16-14-centos ~]# make g -E main.cc -o main.i g -S main.i -o main.s g -c main.s -o main.o g main.o -o main#第二…...

Vue组件库开发实战:从0到1构建可复用的微前端模块

&#x1f525; 随着前端项目越来越复杂&#xff0c;如何开发一个可以随处使用的组件库变得尤为重要。本文将带你从0开始&#xff0c;实现一个完全独立的Vue组件库&#xff0c;包含样式隔离、主题定制等核心功能。 前言 在日常开发中&#xff0c;我们经常需要在不同项目间复用组…...

相机标定(输出相机内参和畸变参数)

相机标定 这里我用笔记本电脑自带的摄像头进行相机标定 仅作示例&#xff0c;实际工程中要用对应的摄像头进行标定 同时代码也要相应的修改&#xff0c;不过修改的主要是相机的初始化 粗略的说就是打开相机那部分要修改&#xff08;依据实际情况相应修改&#xff09; 最终的结果…...

单页面应用的特点,什么是路由,VueRouter的下载,安装和使用,路由的封装抽离,声明式导航的介绍和使用

文章目录 一.什么是单页面应用?二.什么是路由?生活中的路由和Vue中的路由 三.VueRouter(重点)0.引出1.介绍2.下载与使用(5个基本步骤2个核心步骤)2.1 五个基本步骤2.2 两个核心步骤 四.路由的封装抽离五.声明式导航1.导航链接特点一:能跳转特点二:能高亮 2.两个高亮类名2.1.区…...

数字ic后端设计从入门到精通2(含fusion compiler, tcl教学)

上篇回顾 上一篇文章需要讨论了net,pin的基础用法&#xff0c;让我们来看一下高级一点的用法 instance current_instance current_instance 是 Synopsys 工具&#xff08;如 Fusion Compiler 或 Design Compiler&#xff09;中用于在设计层次结构中导航的关键命令。它允许用…...

STM32---外部中断EXTI

目录 一、中断向量表 二、EXTI工作原理图 三、NVIC模块 四、GPIO设置为EXTI的结构 五、C语言示例代码 在STM32中&#xff0c;中断是一个非常重要的结构&#xff0c;他能让我们在执行主函数的时候&#xff0c;由硬件检测一些外部或内部产生的中断信号&#xff0c;跳转到中断…...

Itext进行PDF的编辑开发

这周写了一周的需求&#xff0c;是制作一个PDF生成功能&#xff0c;其中用到了Itext来制作PDF的视觉效果。其中一些功能不是很懂&#xff0c;仅作记录&#xff0c;若要学习请仔细甄别正确与否。 开始之前&#xff0c;我还是想说&#xff0c;这傻福需求怎么想出来的&#xff0c…...

Hibernate的组件映射

在实际的开发中,使用的是非常多的&#xff0c;还有几种比较特殊的关系映射: 组件映射继承映射 先看一下组件映射: 组件映射中, 组件也是一个类, 但是这个类它不独立称为一个实体, 也就是说, 数据库中没有一个表格单独的和它对应, 具体情况呢, 看演示&#xff1a;...

C++ 操作符重载Operator

C可以重载大多数操作符&#xff0c;如算术运算符号&#xff0c;-号。 位操作符<<,>> 下标符号[]等都可以重载。 重载的意思&#xff0c;是让这些符号&#xff0c;按你定义的行为来执行代码&#xff0c;但是这种自定义&#xff0c;是有限制的&#xff0c;必须有一…...

Docker 镜像、容器和 Docker Compose的区别

前言&#xff1a;Docker 的镜像、容器和 Docker Compose 是容器化技术的核心组件&#xff0c;以下是对它们的详细解析及使用场景说明。 ​​1、Docker 镜像&#xff08;Image&#xff09;​​ ​​定义​​&#xff1a; 镜像是只读模板&#xff0c;包含运行应用程序所需的代码、…...

Linux深度探索:进程管理与系统架构

1.冯诺依曼体系结构 我们常见的计算机&#xff0c;如笔记本。我们不常见的计算机&#xff0c;如服务器&#xff0c;大部分都遵守冯诺依曼体系。 截至目前&#xff0c;我们所认识的计算机&#xff0c;都是由⼀个个的硬件组件组成。 输入设备&#xff1a;键盘&#xff0c;鼠标…...

一段式端到端自动驾驶:VAD:Vectorized Scene Representation for Efficient Autonomous Driving

论文地址&#xff1a;https://github.com/hustvl/VAD 代码地址&#xff1a;https://arxiv.org/pdf/2303.12077 1. 摘要 自动驾驶需要对周围环境进行全面理解&#xff0c;以实现可靠的轨迹规划。以往的方法依赖于密集的栅格化场景表示&#xff08;如&#xff1a;占据图、语义…...

17.整体代码讲解

从入门AI到手写Transformer-17.整体代码讲解 17.整体代码讲解代码 整理自视频 老袁不说话 。 17.整体代码讲解 代码 import collectionsimport math import torch from torch import nn import os import time import numpy as np from matplotlib import pyplot as plt fro…...

把dll模块注入到游戏进程的方法_基于文件修改的注入方式

1、概述 本文主要是介绍两种基于文件修改的注入方式,一种是“DLL劫持”,另一种是“修改导入表”。这两种注入方式都是利用操作系统加载PE时的特点来实现的,我们在实现这两种注入方式时只需专注于注入dll的实现,而不用花费额外的精力去关注注入器的实现。要想深入了解这两种…...

4月21日星期一今日早报简报微语报早读

4月21日星期一&#xff0c;农历三月廿四&#xff0c;早报#微语早读。 1、女子伸腿阻止列车关门等待同行人员&#xff0c;被深圳铁路警方行政拘留&#xff1b; 2、北理工再通报&#xff1a;开除宫某党籍&#xff0c;免去行政职务&#xff0c;解除聘用关系&#xff1b; 3、澳门…...

Spark(20)spark和Hadoop的区别

Apache Spark 和 Apache Hadoop 都是广泛使用的开源大数据处理框架&#xff0c;但它们在设计理念、架构、性能和适用场景等方面存在显著区别。以下是它们的主要区别&#xff1a; ### **1. 架构设计** - **Hadoop**&#xff1a; - **HDFS&#xff08;Hadoop Distributed File…...

Kubeflow 快速入门实战(二) - Pipelines / Katib / KServer

承接前文博客 Kubeflow 快速入门实战(一) Kubeflow 快速入门实战(一) - 简介 / Notebooks-CSDN博客文章浏览阅读441次&#xff0c;点赞19次&#xff0c;收藏6次。本文主要介绍了 Kubeflow 的主要功能和能力&#xff0c;适用场景&#xff0c;基本用法。以及Notebook&#xff0c…...

【JavaEE初阶】多线程重点知识以及常考的面试题-多线程进阶(一)

本篇博客给大家带来的是多线程中常见的所策略和CAS知识点. &#x1f40e;文章专栏: JavaEE初阶 &#x1f680;若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅&#x1f680; 要开心要快…...

ECA 注意力机制:让你的卷积神经网络更上一层楼

ECA 注意力机制&#xff1a;让你的卷积神经网络更上一层楼 在深度学习领域&#xff0c;注意力机制已经成为提升模型性能的重要手段。从自注意力&#xff08;Self-Attention&#xff09;到各种变体&#xff0c;研究人员不断探索更高效、更有效的注意方法。今天我们要介绍一种轻…...