Hadoop入门学习笔记

视频课程地址:https://www.bilibili.com/video/BV1WY4y197g7
课程资料链接:https://pan.baidu.com/s/15KpnWeKpvExpKmOC8xjmtQ?pwd=5ay8

这里写目录标题

  • 一、VMware准备Linux虚拟机
    • 1.1. VMware安装Linux虚拟机
      • 1.1.1. 修改虚拟机子网IP和网关
      • 1.1.2. 安装Linux虚拟机
    • 1.2. VMware克隆三台Linux虚拟机
    • 1.3. 为三台虚拟机配置固定IP
    • 1.4. 配置免密登录
    • 1.5. JDK环境部署
    • 1.6. 防火墙、SELinux、时间同步配置
      • 1.6.1. 关闭防火墙
      • 1.6.2. 关闭SELinux
      • 1.6.3. 配置时间同步
    • 1.7. 使用VMware快照功能保存当前已配置好的初始环境
  • 二、在虚拟机里部署HDFS集群
    • 2.1. 部署node1虚拟机
    • 2.2. 部署node2和node3虚拟机
    • 2.3. 初始化并启动Hadoop集群(格式化文件系统)
    • 2.4. 快照部署好的集群
    • 2.5. 部署过程中可能会遇到的问题
    • 2.5. Hadoop HDFS集群启停脚本

一、VMware准备Linux虚拟机

1.1. VMware安装Linux虚拟机

VMware虚拟机安装程序下载地址(需要自己想办法激活):https://download3.vmware.com/software/WKST-1750-WIN/VMware-workstation-full-17.5.0-22583795.exe
CentOS操作系统镜像下载地址:https://vault.centos.org/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso

1.1.1. 修改虚拟机子网IP和网关

下载后,先安装VMware虚拟机,安装成功后,需改虚拟机网络配置。
1、在“编辑”-“虚拟网络编辑器”中修改NAT8网卡的子网IP地址;
虚拟网络编辑器
2、进入编辑器后,选择“VMnet8”网卡,然后点击右下角的“更改设置”按钮;
在这里插入图片描述
3、获取管理员权限后,选择“VMnet8”网卡,将其子网IP修改为“192.168.88.0”;
在这里插入图片描述
4、点击“NAT设置”按钮,在NAT设置界面,将网关IP修改为“192.168.88.2”,并保存上述设置。
在这里插入图片描述

1.1.2. 安装Linux虚拟机

1、通过VMware菜单中的“文件”-“新建虚拟机”创建一个新的虚拟机;
在这里插入图片描述
2、选择前面下载的CentOS操作系统镜像;
在这里插入图片描述
3、输入Linux系统用户名和密码(该密码也是root的密码);
在这里插入图片描述
4、填写虚拟机名称和虚拟机的存放位置;
在这里插入图片描述
5、之后一直下一步、完成,然后虚拟机开始自己安装,直至安装完成,此过程视个人电脑和网络情况可能需要半小时左右,中间不用任何操作,待系统安装完毕后,虚拟机会自动重启,看到如下界面,代表安装成功。
在这里插入图片描述

1.2. VMware克隆三台Linux虚拟机

1、将前面安装好的虚拟机关机,然后在VMware左侧的菜单中,鼠标右键刚才安装好的虚拟机,选择“管理”-“克隆”;
在这里插入图片描述
2、然后点击下一页按钮,直到“克隆方法”界面;
在这里插入图片描述
在这里插入图片描述
3、在克隆方法界面选择“创建完整克隆”,然后继续下一页;
在这里插入图片描述
4、重命名虚拟机名称为node1,选择克隆出来的虚拟机存放的路径,然后点击“完成”按钮,VMware就会克隆出一个一摸一样的虚拟机,此过程很快,一般3~5秒的样子;
在这里插入图片描述
5、依照上述方法,再克隆出node2和node3,总共3台虚拟机出来;
6、此时先别启动这3台虚拟机,先对3台虚拟机的内存大小进行调整,分别将node1调整到4GB,node2和node3调整成2GB;
在这里插入图片描述
在这里插入图片描述7、内存调整完毕后,分别将node1、2、3开机,在开机时,VMware会弹窗提示“无法连接虚拟设备 ide1:0…”,直接点“否”即可,至此,虚拟机克隆完毕,后续我们使用的也是这3台虚拟机。

1.3. 为三台虚拟机配置固定IP

1、三台虚拟机分别启动后,在虚拟机中打开命令行,修改主机名,输入如下命令:

# 切换成root用户
[itheima@locahost ~]$ su -
# 修改当前虚拟机的主机名,这里只演示node1,node2和node3命令相同,只是最后的参数需要修改成node2和node3
[root@locahost ~]# hostnamectl set-hostname node1

2、上述命令执行完毕后,关闭命令行,并重新打开命令行,此时可以看到命令行内的主机名已经变成了node1、node2和node3
在这里插入图片描述
3、在命令行里切换到root用户,并执行如下命令:

vim /etc/sysconfig/network-scripts/ifcfg-ens33

4、打开ifcfg-ens33文件后,将其中BOOTPROTO配置项的值修改为static,然后再在文件末尾追加如下内容:

IPADDR="192.168.88.101"
NETMASK="255.255.255.0"
GATEWAY="192.168.88.2"
DNS1="192.168.88.2"

其中,在node1虚拟机中,IPADDR的值为192.168.88.101,node2虚拟机的IPADDR的值为192.168.88.102,node3虚拟机的IPADDR的值为192.168.88.103
在这里插入图片描述

5、修改网网卡配置后,在命令行中重启网卡,执行如下命令:

systemctl restart network

然后可以使用ifconfig命令查看及其的IP地址,查看上述修改是否成功。
在这里插入图片描述

1.4. 配置免密登录

1、修改Windows系统(本机,非虚拟机)的hosts文件(目录为C:\Windows\System32\drivers\etc\),将如下内容追加在hosts文件末尾并保存

192.168.88.101	node1
192.168.88.102	node2
192.168.88.103	node3

2、使用本机的ssh工具连接三台虚拟机(node1、node2、node3),后续所有的命令通过ssh工具操作;
3、分别修改三台虚拟机的hosts文件,此处以node1为例,在命令行中输入

vim /etc/hosts

在hosts文件中追加如下内容:

192.168.88.101  node1
192.168.88.102  node2
192.168.88.103  node3

在这里插入图片描述
保存并退出,然后同样的步骤修改node2和node3的hosts文件。
4、在三台虚拟机上分别执行ssh-keygen -t rsa -b 4096命令,然后一路回车到底,给三台虚拟机分别生成好自己的密钥;
5、在三台虚拟机上都执行如下命令,完成免密登录的授权操作:

ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

执行命令过程中,有配置项需要确认输入yes,然后,还需要输入root密码;
6、可以在node1虚拟机通过命令ssh node2查看是否已经配置好了node1到node2的免密登录,同理,可以在node2验证到另两台服务器的免密登录;
7、至此,我们配置好了三台虚拟机root用户之间的免密登录,接下来,我们还需要配置三台虚拟机之间hadoop用户的免密登录;
8、使用useradd hadooppasswd hadoop命令分别在三台虚拟机上创建hadoop用户;
9、在三台虚拟机上使用su - hadoop命令切换成hadoop用户,然后使用签名用过的ssh-keygen -t rsa -b 4096命令生成hadoop用户的ssh密钥;
10、然后再在三台虚拟机上执行如下命令,实现hadoop用户之间的免密登录:

ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

具体操作和上面配置root用户的免密登录时一样。至此,免密登录配置完成。

1.5. JDK环境部署

1、目前还是使用jdk 1.8版本,下载页面:https://www.oracle.com/cn/java/technologies/downloads/,打开页面一直往下划,划到JDK 1.8的部分,下载x64 Compressed Archive版本;
在这里插入图片描述
2、下载后,在虚拟机里面切换成root用户,然后将刚才下载好的jdk压缩包上传到root目录下,执行如下命令:

 mkdir -p /export/server
# 解压刚才上传的jdk压缩包到/export/server目录
tar -zxvf jdk-8u391-linux-x64.tar.gz -C /export/server/
# 创建软连接
ln -s /export/server/jdk1.8.0_391/ /export/server/jdk

3、配置环境变量,使用命令vim /etc/profile打开环境变量配置文件,然后在文件末尾追加如下内容:

export JAVA_HOME=/export/server/jdk
export PATH=$PATH:$JAVA_HOME/bin

然后使用source /etc/profile命令使环境变量生效;
4、将操作系统自带的jdk替换成我们刚才安装的jdk:

# 删除系统自带的java程序
rm -f /usr/bin/java
# 软连接我们自己安装的java程序
ln -s /export/server/jdk/bin/java /usr/bin/java

此时,jdk配置完成,可以使用java -versionjavac -version命令校验系统所使用的java是否已经是我们自己安装的JDK。
5、使用scp命令,将已解压的jdk文件夹复制到node2和node3

# 复制到node2
scp -r /export/server/jdk1.8.0_391/ node2:`pwd`/
# 复制到node3
scp -r /export/server/jdk1.8.0_391/ node3:`pwd`/

6、然后参考上面的流程,创建软连接、配置环境变量、移除系统自带的java,完成node2和node3的配置。

1.6. 防火墙、SELinux、时间同步配置

1.6.1. 关闭防火墙

在三台虚拟机上分别执行如下命令:

# 关闭防火墙
systemctl stop firewalld.service
# 关闭防火墙的开机自启
systemctl disable firewalld.service

1.6.2. 关闭SELinux

使用vim /etc/sysconfig/selinux打开selinux的配置文件,将其中的SELINUX=enforcing修改为SELINUX=disabled,然后保存退出,并重启虚拟机(可通过reboot命令)即可。

1.6.3. 配置时间同步

在三台虚拟机上分别依次执行以下步骤
1、安装ntp软件

yum install -y ntp

2、更新时区

# 删除系统的默认时区信息
rm -f /etc/localtime
# 设置虚拟机的时区为中国上海时区
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

3、同步时间

# 使用阿里云的ntp服务校准本机时间
ntpdate -u ntp.aliyun.com

4、开启ntp服务并设置开机自启

# 启动NTP服务
systemctl start ntpd.service
# 设置NTP服务开机自启动
systemctl enable ntpd.service

1.7. 使用VMware快照功能保存当前已配置好的初始环境

1、将三台虚拟机全部关机;
2、在VMware中,在左侧虚拟机上右键,选择“快照”-“拍摄快照”,填写快照名称和备注,创建虚拟机快照;
在这里插入图片描述
node2和node3重复上述步骤,完成快照拍摄

二、在虚拟机里部署HDFS集群

下载Hadoop:https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
本次演示部署结构如下图所示:
在这里插入图片描述
本次部署服务清单如下表所示:

节点部署的服务
node1NameNode、DataNode、SecondaryNameNode
node2DataNode
node3DataNode

2.1. 部署node1虚拟机

1、将下载好的Hadoop压缩包上传至node1虚拟机的root目录;
2、将Hadoop压缩包解压至/export/server目录下

tar -zxvf hadoop-3.3.4.tar.gz -C /export/server/

3、创建hadoop目录的软链接

# 切换工作目录
cd /export/server/
# 创建软连接
ln -s /export/server/hadoop-3.3.4/ hadoop

4、hadoop目录结构如下
在这里插入图片描述

目录存放内容
bin存放Hadoop的各类程序(命令)
etc存放Hadoop的配置文件
include存放Hadopp用到的C语言的头文件
lib存放Linux系统的动态链接库(.so文件)
libexec存放配置Hadoop系统的脚本文件(.sh和.cmd文件)
licenses_binary存放许可证文件
sbin管理员程序(super bin)
share存放二进制源码(jar包)

5、配置workers文件

cd etc/hadoop/
vim workers

将workers文件原有的内容删掉,改为

node1
node2
node3

保存即可;
6、配置hadoop-env.sh文件,使用vim hadoop-env.sh打开,修改以下配置:

# 指明JDK安装目录
export JAVA_HOME=/export/server/jdk
# 指明HADOOP安装目录
export HADOOP_HOME=/export/server/hadoop
# 指明HADOOP配置文件的目录
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
#指明HADOOP运行日志文件的目录
export HADOOP_LOG_DIR=$HADOOP_HOME/logs

7、配置core-site.xml文件,使用vim core-site.xml打开文件,修改以下配置:

<configuration>
  <property>
    <!--HDFS 文件系统的网络通讯路径-->
    <name>fs.defaultFS</name>
    <value>hdfs://node1:8020</value>
  </property>
  <property>
    <!--io 操作文件缓冲区大小-->
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>
</configuration>

8、配置hdfs-site.xml文件,修改以下配置:

<configuration>
  <property>
  	<!--hdfs 文件系统,默认创建的文件权限设置-->
    <name>dfs.datanode.data.dir.perm</name>
    <!-- 700权限即rwx------ -->
    <value>700</value>
  </property>
  <property>
  	<!--NameNode 元数据的存储位置-->
    <name>dfs.namenode.name.dir</name>
    <!-- 在 node1 节点的 /data/nn 目录下 -->
    <value>/data/nn</value>
  </property>
  <property>
    <!--NameNode 允许哪几个节点的 DataNode 连接(即允许加入集群)-->
    <name>dfs.namenode.hosts</name>
    <value>node1,node2,node3</value>
  </property>
  <property>
    <!--hdfs 默认块大小-->
    <name>dfs.blocksize</name>
    <!--268435456即256MB-->
    <value>268435456</value>
  </property>
  <property>
    <!--namenode 处理的并发线程数-->
    <name>dfs.namenode.handler.count</name>
    <value>100</value>
  </property>
  <property>
    <!--从节点 DataNode 的数据存储目录,即数据存放在node1、node2、node3三台机器中的路径-->
    <name>dfs.datanode.data.dir</name>
    <value>/data/dn</value>
  </property>
</configuration>

9、根据上一步的配置项,在node1节点创建/data/nn/data/dn目录,在node2和node3节点创建/data/dn目录;
10、将已配置好的hadoop程序从node1分发到node2和node3:

# 切换工作目录
cd /export/server/
# 将node1的hadoop-3.3.4/目录复制到node2的同样的位置
scp -r hadoop-3.3.4/ node2:`pwd`/
# 将node1的hadoop-3.3.4/目录复制到node3的同样的位置
scp -r hadoop-3.3.4/ node3:`pwd`/

11、将Hadoop加入环境变量,使用vim /etc/profile打开环境变量文件,将以下内容添加在文件末尾:

export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile命令使环境变量配置生效;
12、修改相关目录的权限:

chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export/

2.2. 部署node2和node3虚拟机

本小节内容如无特殊说明,均需在node2和node3虚拟机分别执行!

1、为hadoop创建软链接,命令都是一样的,如下所示:

cd /export/server/
ln -s /export/server/hadoop-3.3.4/ hadoop

2、将Hadoop加入环境变量,使用vim /etc/profile打开环境变量文件,将以下内容添加在文件末尾:

export HADOOP_HOME=/export/server/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile命令使环境变量配置生效;
3、修改相关目录的权限:

chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export/

2.3. 初始化并启动Hadoop集群(格式化文件系统)

1、在node1虚拟机上执行以下命令:

# 切换为hadoop用户
su - hadoop
# 格式化namenode
hadoop namenode -format

2、启动集群,在node1虚拟机上执行以下命令:

# 一键启动整个集群,包括namenode、secondarynamenode和所有的datanode
start-dfs.sh
# 查看当前系统中正在运行的Java进程,可以看到每台虚拟机上hadoop的运行情况
jps

3、执行上述步骤之后,我们可以在我们自己的电脑(非虚拟机)上查看 HDFS WEBUI(即HADOOP管理页面),可以通过访问namenode所在服务器的9870端口查看,在本案例中因为namenode处于node1虚拟机上,所以可以访问http://node1:9870/打开。PS:因为之前我们已经配置了本机的hosts文件,所以这里可以使用node1访问,其实这个地址对应的就是http://192.168.88.101:9870/。
4、如果看到以下界面,代表Hadoop集群启动成功了。
在这里插入图片描述

2.4. 快照部署好的集群

为了保存刚部署好的集群,在后续如果出现无法解决的问题,不至于重新部署一遍,使用虚拟机快照的方式进行备份。
1、一键关闭集群,在node1虚拟机执行以下命令:

# 切换为hadoop用户
su - hadoop
# 一键关闭整个集群
stop-dfs.sh

关闭完成后,可以在node1、node2、node3虚拟机中使用jps命令查看相应Java进程是否已消失。
2、关闭三台虚拟机;
3、在VMware中,分别在三台虚拟机上右键,“快照”-“拍摄快照”功能创建快照。

2.5. 部署过程中可能会遇到的问题

  1. 在以Hadoop用户身份执行start-dfs.sh命令时,提示Permission denied。此时需要检查三台虚拟机上相关路径(/data、/export/server及其子路径)上hadoop用户是否具有读、写、执行的权限。
  2. 在执行start-dfs.sh命令后,使用jps命令可以查看已启动的服务,若发现有服务未启动成功的,可以查看/export/server/hadoop/logs目录下的日志文件,若在日志文件中看到类似于无权限、不可访问等报错信息,同样需要检查对应机器的相关路径权限。
  3. 执行hadoop namenode -formatstart-dfs.shstop-dfs.sh等Hadoop相关命令时,若提示command not found,则代表着环境变量没配置好,需要检查三台机器的/etc/profile文件的内容(需要使用source命令使环境变量生效)以及hadoop的软连接是否正确。
  4. 执行start-dfs.sh命令后,node1的相关进程启动成功,但node2和node3没有启动的,需要检查workers文件的配置是否有node2和node3。
  5. 若在日志文件中看到WstxEOFExceptionUnexpected EOF等信息,大概率是xml配置文件有问题,需要仔细检查core-site.xml和hdfs-site.xml文件里面的内容(少了某个字母或字符、写错了某个字母或字符),尤其是符号。
    综上,常见出错点总结为:
  • 权限未正确配置;
  • 配置文件错误;
  • 未格式化

2.5. Hadoop HDFS集群启停脚本

注意:在使用以下命令前,一定要确保当前是hadoop用户,否则将报错或没有效果!!!

  1. Hadoop HDFS 组件内置了HDFS集群的一键启停脚本。

    • $HADOOP_HOME/sbin/start-dfs.sh,一键启动HDFS集群
      执行流程:

      • 在执行此脚本的机器上,启动SecondaryNameNode;
      • 读取core-site.xml内容(fs.defaultFS项),确定NameNode所在机器,启动NameNode;
      • 读取workers内容,确定DataNode所在机器,启动全部DataNode。
    • $HADOOP_HOME/sbin/stop-dfs.sh,一键关闭HDFS集群
      执行流程:

      • 在执行此脚本的机器上,关闭SecondaryNameNode;
      • 读取core-site.xml内容(fs.defaultFS项),确定NameNode所在机器,关闭NameNode;
      • 读取workers内容,确认DataNode所在机器,关闭全部NameNode。
  2. 除了一键启停外,也可以单独控制某个进程的启停。

    • $HADOOP_HOME/sbin/hadoop-daemon.sh,此脚本可以单独控制所在机器的进程启停
      用法:hadoop-daemon.sh (start|status|stop) (namenode|secondarynamenode|datanode)

    • $HADOOP_HOME/sbin/hdfs,此程序也可以单独控制所在机器的进程启停
      用法:hdfs --daemon (start|status|stop) (namenode|secondarynamenode|datanode)

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

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

相关文章

Modbus TCP工业RFID读写器的选型要点

Modbus TCP工业RFID读写器是一种采用Modbus TCP通信协议的RFID读写器。它可以通过TCP/IP网络与计算机或其它设备进行通信&#xff0c;实现远程读取和写入RFID标签数据的目的。 与传统的RFID读写器相比&#xff0c;Modbus TCP工业RFID读写器具有更远的读写距离、更高的读写灵敏度…

uniapp如何与原生应用进行混合开发?

目录 前言 1.集成Uniapp 2.与原生应用进行通信 3.实现原生功能 4.使用原生UI组件 结论: 前言 随着移动应用市场的不断发展&#xff0c;使用原生开发的应用已经不能满足用户的需求&#xff0c;而混合开发成为了越来越流行的选择。其中&#xff0c;Uniapp作为一种跨平台的开…

系统设计概念:生产 Web 应用的架构

在你使用的每个完美应用程序背后&#xff0c;都有一整套的架构、测试、监控和安全措施。今天&#xff0c;让我们来看看一个生产就绪应用程序的非常高层次的架构。 CI/CD 管道 我们的第一个关键领域是持续集成和持续部署——CI/CD 管道。 这确保我们的代码从存储库经过一系列测试…

开发知识点-Maven包管理工具

Maven包管理工具 SpringBootSpringSecuritydubbo图书电商后台实战-环境设置&#xff08;JDK8, STS, Maven, Spring IO, Springboot&#xff09;点餐小程序Java版本的选择和maven仓库的配置视频管理系统&&使用maven-tomcat7插件运行web工程SpringTool suite——maven项目…

promis.all的异步使用

基础 参考 https://blog.csdn.net/qq_52855464/article/details/125376557 简单来说 Promise.all是处理接口返回方法异步的&#xff0c;能够使得接口的获取顺序得到控制&#xff0c;不会出现数据为空的情况 使用 先执行jianshigetGroups->groupIds-> const promises2 …

RNN-T Training,RNN-T模型训练详解——语音信号处理学习(三)(选修三)

参考文献&#xff1a; Speech Recognition (option) - RNN-T Training哔哩哔哩bilibili 2020 年 3月 新番 李宏毅 人类语言处理 独家笔记 Alignment Train - 8 - 知乎 (zhihu.com) 本次省略所有引用论文 目录 一、如何将 Alignment 概率加和 对齐方式概率如何计算 概率加和计…

什么是PDM图纸管理系统?PDM图纸管理系统主要功能有哪些?

PDM (Product Data Management) 图纸管理系统 是用于管理企业内部图纸和相关文件的软件系统。它提供了一个集中存储、组织和跟踪图纸和文件的平台&#xff0c;以确保团队成员能够轻松访问、共享和更新所需的工程设计和制造数据。 彩虹PDM系统|PDM产品数据管理系统|BOM管理|工艺…

代码浅析DLIO(三)---子图构建

0. 简介 我们刚刚了解过DLIO的整个流程&#xff0c;我们发现相比于Point-LIO而言&#xff0c;这个方法更适合我们去学习理解&#xff0c;同时官方给出的结果来看DLIO的结果明显好于现在的主流方法&#xff0c;当然指的一提的是&#xff0c;这个DLIO是必须需要六轴IMU的&#x…

问题记录-maven依赖升级或替换(简单版)

问题背景 项目被检测到有高危漏洞&#xff0c;需要对部分jar进行升级。以一个jar为例记录一下升级过程。 1 找到高危漏洞的包 如果装了maven helper插件则可以在下面查看当前模块依赖包 2 使用maven命令 执行下面这个命令&#xff0c;会将当前项目的信息打印出来&#xff0c;…

基于MYSQL+Tomcat+Eclipse开发的超市订单管理系统

基于MYSQLTomcatEclipse开发的超市订单管理系统 项目介绍&#x1f481;&#x1f3fb; 该系统运行需要基于JDK7来进行运行 超市订单管理系统是一款针对超市订单进行管理的软件&#xff0c;旨在提高订单处理效率&#xff0c;降低管理成本。该系统包括以下功能模块&#xff1a; 系…

Java后端开发——SpringMVC商品管理程序

Java后端开发——SpringMVC商品管理程序 今日目标 Spring MVC框架介绍掌握SpringMVC的核心类的原理及配置掌握SpringMVC的常用注解掌握SpringMVC的增删改查编程 Spring MVC框架介绍 Spring MVC&#xff08;Model-View-Controller&#xff09;是一个基于Java的开源框架&#x…

记一次:Python的学习笔记一

前言&#xff1a;之前学习的Python笔记&#xff0c;已经过去很多年了&#xff0c;不久前重新翻了出来练习练习。不完善的地方在缝缝补补 一、环境搭建 1.1、Python的win环境安装 0、python-3.12.0软件安装&#xff1a;Win11环境搭建python-3.12.0-amd64 这里小小注意一下&a…

NoSql非关系型数据库

前言&#xff1a;Nosql not only sql&#xff0c;意即“不仅仅是sql”&#xff0c;泛指非关系型数据库。这些类型的数据存储不需要固定的模式&#xff08;当然也有固定的模式&#xff09;&#xff0c;无需多余的操作就可以横向扩展。NoSql数据库中的数据是使用聚合模型来进行处…

基于Java SSM框架实现实现四六级英语报名系统项目【项目源码+论文说明】计算机毕业设计

基于java的SSM框架实现四六级英语报名系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个高校四六级报名管理系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作…

U-boot(七):U-boot移植

本文主要探讨基于210官方U-boot源码移植。 移植基础 tar -jxvf android_uboot_smdkv210.tar.bz2cd u-boot-samsung-devrm -rf onenand_ipl onenand_bl1 lib_avr32 lib_blackfin lib_i386 lib_m68k lib_mips lib_microblaze lib_nios lib_nios2 lib_ppc lib_sh lib_sparccd bo…

pycharm怎么同时打开2个项目?

pycharm怎么同时打开2个项目&#xff1f;当使用vue等前端的时候&#xff0c;后台也需要同时用pycharm打开操作&#xff0c;怎么用pycharm同时打开前后端呢&#xff1f; 当我们第一次用pycharm的时候&#xff0c;新建一个项目&#xff0c;习惯选择此窗口&#xff0c;而且勾选不再…

【Linux】OpenSSH 命令注入漏洞(CVE-2020-15778)(iptables屏蔽22端口方式)

背景 漏洞名称&#xff1a;OpenSSH 命令注入漏洞(CVE-2020-15778) 详细描述&#xff1a;OpenSSH&#xff08;OpenBSD Secure Shell&#xff09;是OpenBSD计划组的一套用于安全访问远程计算机的连接工具。该工具是SSH协议的开源实现&#xff0c;支持对所有的传输进行加密&#…

基于Java SSM框架实现高校二手交易平台系统项目【项目源码+论文说明】

基于java的SSM框架实现高校二手交易平台系统演示 摘要 本论文主要论述了如何使用JAVA语言开发一个高校二手交易平台&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将…

在氮化镓和AlGaN上的湿式数字蚀刻

引言 由于其独特的材料特性&#xff0c;III族氮化物半导体广泛应用于电力、高频电子和固态照明等领域。加热的四甲基氢氧化铵(TMAH)和KOH3处理的取向相关蚀刻已经被用于去除III族氮化物材料中干法蚀刻引起的损伤&#xff0c;并缩小垂直结构。 不幸的是&#xff0c;由于化学蚀…

【Node.js】笔记整理 3 -npm

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…