Hadoop组成

HDFS(Hadoop Distributed File System)架构概述

  NameNode目录--主刀医生(nn);  DataNode(dn)数据; Secondary NameCode(2nn)助手;

YARN框架  常驻 + 临时

ResourceManager(RM) 组长;

NodeManager 组员;

Client客户;Job Submission来任务了  ---->> ApplicationMaster,任务结束它就卸任了;

ApplicationMaster(AM)临时项目任务负责人,由RM任命监视等;

容器Container:底层没有虚拟,只虚拟了应用层,但仍可以隔离cup和内存;(与虚拟机的区别);可以在一个机器里开3个容器(都要是一样的如3个window,因为系统底层没变;)占cpu内存用来运行任务如APP Mster;

 

 MapReduce架构概述  计算引擎

大数据生态体系

查看Hadoop目录结构
[atguigu@hadoop101 hadoop-2.7.2]$ ll
总用量 52
drwxr-xr-x. 2 atguigu atguigu  4096 5月  22 2017 bin
drwxr-xr-x. 3 atguigu atguigu  4096 5月  22 2017 etc
drwxr-xr-x. 2 atguigu atguigu  4096 5月  22 2017 include
drwxr-xr-x. 3 atguigu atguigu  4096 5月  22 2017 lib
drwxr-xr-x. 2 atguigu atguigu  4096 5月  22 2017 libexec
-rw-r--r--. 1 atguigu atguigu 15429 5月  22 2017 LICENSE.txt
-rw-r--r--. 1 atguigu atguigu   101 5月  22 2017 NOTICE.txt
-rw-r--r--. 1 atguigu atguigu  1366 5月  22 2017 README.txt
drwxr-xr-x. 2 atguigu atguigu  4096 5月  22 2017 sbin
drwxr-xr-x. 4 atguigu atguigu  4096 5月  22 2017 share
重要目录
(1)bin目录:存放对Hadoop相关服务(HDFS,YARN)进行操作的脚本
(2)etc目录:Hadoop的配置文件目录,存放Hadoop的配置文件
(3)lib目录:存放Hadoop的本地库(对数据进行压缩解压缩功能)
(4)sbin目录:存放启动或停止Hadoop相关服务的脚本
(5)share目录:存放Hadoop的依赖jar包、文档、和官方案例

Hadoop运行环境搭建

内存4G,硬盘50G
1. 安装好linux
/boot 200M
/swap 2g
/ 剩余
2. *安装VMTools
3. 关闭防火墙
sudo service iptables stop
sudo chkconfig iptables off
4. 设置静态IP,改主机名
改ip: 编辑vim /etc/sysconfig/network-scripts/ifcfg-eth0
改成
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="eth0"
IPADDR=192.168.1.101
PREFIX=24
GATEWAY=192.168.1.2
DNS1=192.168.1.2改用户名:
编辑vim /etc/sysconfig/network
改HOSTNAME=那一行NETWORKING=yesHOSTNAME=hadoop1015. 配置/etc/hosts
vim /etc/hosts
192.168.1.100 hadoop100
192.168.1.101 hadoop101
192.168.1.102 hadoop102
192.168.1.103 hadoop103
192.168.1.104 hadoop104
192.168.1.105 hadoop105
192.168.1.106 hadoop106
192.168.1.107 hadoop107
192.168.1.108 hadoop108
192.168.1.109 hadoop1096. 创建一个一般用户kris,给他配置密码
useradd kris
passwd kris7. 配置这个用户为sudoers
vim /etc/sudoers
在root ALL=(ALL) ALL
添加kris ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存8. *在/opt目录下创建两个文件夹module和software,并把所有权赋给kris
mkdir /opt/module /opt/software
chown kris:kris /opt/module /opt/software9. 关机,快照,克隆从这里开始要以一般用户登陆10. 克隆的虚拟机;改物理地址
[root@hadoop101 桌面]# vim /etc/udev/rules.d/70-persistent-net.rulesSUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:5f:8e:d9", ATTR{type}=="1", KERNEL=="eth*",   NAME="eth0"
11. 搞一个分发脚本 cd ~ vim xsync 内容如下:
#!/bin/bash
#xxx /opt/module
if (($#<1))
then
echo '参数不足'
exit
fi
fl=$(basename $1)
pdir=$(cd -P $(dirname $1); pwd)
for host in hadoop102 hadoop103
do
rsync -av $pdir/$fl $host:$pdir
done
修改文件权限,复制移动到/home/kris/bin目录下chmod +x xsync12. 配置免密登陆1. 生成密钥对

  [kris@hadoop101 ~]$ cd .ssh
  [kris@hadoop101 .ssh]$ ssh-keygen -t rsa

  ssh-keygen -t rsa 三次回车2. 发送公钥到本机ssh-copy-id hadoop101 输入一次密码3. 分别ssh登陆一下所有虚拟机ssh hadoop102exitssh hadoop103exit4. 把/home/kris/.ssh 文件夹发送到集群所有服务器xsync /home/kris/.ssh   ##发送.ssh/是不会成功的;不要加最后的/13. 在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器拷贝文件到/opt/software,两个tar包 sudo vim /etc/profile配置环境变量; 在文件末尾添加
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
保存5. source /etc/profile  6. 将配置文件分发到其他集群中: [kris@hadoop101 module]$ sudo xsync /etc/profile  sudo:xsync:找不到命令[kris@hadoop101 module]$ sudo scp /etc/profile root@hadoop102:/etc/profile[kris@hadoop101 module]$ sudo scp /etc/profile root@hadoop103:/etc/profile在hadoop102/hadoop103各执行 source/etc/profile 7. 在其他机器分别执行source /etc/profile

###所有配置文件都在$HADOOP_HOME/etc/hadoop
14. 首先配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_14415. 配置Core-site.xml<!-- 指定HDFS中NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop101:9000</value></property><!-- 指定Hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/module/hadoop-2.7.2/data/tmp</value></property>16. 配置hdfs-site.xml<!-- 数据的副本数量 --><property><name>dfs.replication</name><value>3</value></property><!-- 指定Hadoop辅助名称节点主机配置 --><property><name>dfs.namenode.secondary.http-address</name><value>hadoop103:50090</value></property>17. 配置yarn-site.xml<!-- Site specific YARN configuration properties --><!-- Reducer获取数据的方式 --><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!-- 指定YARN的ResourceManager的地址 --><property><name>yarn.resourcemanager.hostname</name><value>hadoop102</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>18. 配置mapred-site.xml<property><name>mapreduce.framework.name</name><value>yarn</value></property><!-- 历史服务器端地址 --><property><name>mapreduce.jobhistory.address</name><value>hadoop103:10020</value></property><!-- 历史服务器web端地址 --><property><name>mapreduce.jobhistory.webapp.address</name><value>hadoop103:19888</value></property>启动历史服务器:mr-jobhistory-daemon.sh start historyserver

19. 配置slaves;配置时多一个空格/空行都不可以;hadoop101hadoop102hadoop10320. 分发配置文件xsync /opt/module/hadoop-2.7.2/etc
21. 格式化Namenode 在hadoop102在hadoop101上启动 hdfs namenode -format
22. 启动hdfs 在hadoop101上启动 start-dfs.sh
23. 在配置了Resourcemanager机器上执行 在Hadoop102上启动start-yarn.sh

 25 关 stop-dfs.sh   stop-yarn.sh
    mr-jobhistory-daemon.sh stop historyserver

Hadoop运行模式包括:本地模式、伪分布式模式以及完全分布式模式。

本地式

可运行的程序只有MapReduce(程序);而yarn(内存和cup),HDFS(硬盘)是给MapReduce提供运行的环境;

本地式用的不是hdfs,而是本地的硬盘;而调度的资源也不是来自yarn而是本地的操作系统;

.xml文件就是输入;grep是执行jar包的哪个主类,一个jar包可以有多个主类和主方法;输入文件夹--输出文件夹(起始没有这个文件夹,否则会报错)--' 模板正则等 '

wordcount是一个主类

伪分布式:一台电脑搭出一个集群;HDFS分3个组建NameNode、DataNode、Secondary NameNode;  yarn是分4个组建,实际只搭2个ResourceManage和NodeManager,

既是NameNode也是DataNode;既是ResourceManager也是NodeManager,这些进程都跑在一台机器上;

###所有配置文件都在$HADOOP_HOME/etc/hadoop

hadoop-env.sh、mapred-env.sh、yarn-env.sh三个文件中配置:JAVA_HOME  在每个文件第二行添加 export JAVA_HOME=/opt/module/jdk1.8.0_144core-site.xml 指定HDFS中NameNode的地址;指定Hadoop运行时产生文件的存储目录
hdfs-site.xml 指定HDFS数据的副本数量 为3,就3台机器; 这些副本肯定分布在不同的服务器上;指定hadoop辅助名称节点(secondaryNameNode)主机配置;
mapred-site.xml 指定历史服务器地址;历史服务器web端地址;  指定MR运行在YARN上;
yarn-site.xml   Reducer获取数据的方式;指定YARN的ResourceManager的地址(服务器);日志的配置hdfs namenode -format 格式化HDFS,在hadoop101上; 首次启动格式化
hadoop-daemon.sh start namenode 单独启动NameNode
hadoop-daemon.sh start datanode 单独启动DataNodestart-dfs.sh            启动hdfsstart-yarn.sh            启动yarn
启动前必须保证NameNode和DataNode已经启动
启动ResourceManager;  启动NodeManager
hadoop fs -put wcinput/ /  往集群的跟目录中上传一个wcinput文件
158 hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount /wcinput /output

分发脚本:

[kris@hadoop100 hadoop-2.7.2]$ dirname /opt/module/hadoop-2.7.2/
/opt/module
[kris@hadoop100 hadoop-2.7.2]$ dirname hadoop-2.7.2
.
[kris@hadoop100 hadoop-2.7.2]$ cd -P .
[kris@hadoop100 hadoop-2.7.2]$ pwd
/opt/module/hadoop-2.7.2遍历所有的主机名
##########集群分发脚本
#!/bin/bash
#xxx /opt/module
if (($#<1))
then echo '参数不足'exit
fi
fl=$(basename $1)  #文件名 basename /opt/module/hadoop-2.7.2/-->>hadoop-2.7.2
pdir=$(cd -P $(dirname $1); pwd)  父目录 dirname /opt/module/hadoop-2.7.2/  --->> /opt/module
for host in hadoop102 hadoop103 hadoop104
dorsync -av $pdir/$fl $host:$pdir
done

 scp安全拷贝、rsync远程同步工具

[atguigu@hadoop101 /]$ scp -r /opt/module  root@hadoop102:/opt/module     //-r是递归; 要拷贝的-->目的地

[atguigu@hadoop103 opt]$ scp -r atguigu@hadoop101:/opt/module root@hadoop104:/opt/module  //可在不同服务之间传输;

[atguigu@hadoop101 opt]$ rsync -av /opt/software/ hadoop102:/opt/software  //rsync只能从本机到其他  ;-a归档拷贝、-v显示复制过程

用scp发送
scp -r hadoop100:/opt/module/jdk1.8.0_144 hadoop102:/opt/module/用rsync发送
[kris@hadoop100 module]$ rsync -av hadoop-2.7.2/ hadoop102:/opt/module/ 把当前目录下的全发过去了;-a归档拷贝、-v显示复制过程;
[kris@hadoop102 module]$ ls
bin  include  jdk1.8.0_144  libexec      NOTICE.txt  README.txt  share
etc  input    lib           LICENSE.txt  output      sbin        wcinput
[kris@hadoop102 module]$ ls | grep -v jdk
过滤删除只剩jdk的
[kris@hadoop102 module]$ ls | grep -v jdk | xargs rm -rf
[kris@hadoop100 module]$ ll
总用量 12
drwxr-xr-x. 12 kris kris 4096 1月  15 14:55 hadoop-2.7.2
drwxr-xr-x.  8 kris kris 4096 7月  22 2017 jdk1.8.0_144
-rw-rw-r--.  1 kris kris  223 1月  15 17:13 xsync
[kris@hadoop100 module]$ chmod +x xsync
[kris@hadoop100 module]$ ll
总用量 12
drwxr-xr-x. 12 kris kris 4096 1月  15 14:55 hadoop-2.7.2
drwxr-xr-x.  8 kris kris 4096 7月  22 2017 jdk1.8.0_144
-rwxrwxr-x.  1 kris kris  223 1月  15 17:13 xsync
[kris@hadoop100 module]$
[kris@hadoop100 module]$ ./xsync /opt/module/jdk1.8.0_144

注意:拷贝过来的/opt/module目录,别忘了在hadoop101、hadoop102、hadoop103上修改所有文件的,所有者和所有者组。sudo chown kris:kris -R /opt/module

拷贝过来的配置文件别忘了source一下/etc/profile 

 配置ssh无秘钥登陆; 

[kris@hadoop100 module]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kris/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/kris/.ssh/id_rsa.
Your public key has been saved in /home/kris/.ssh/id_rsa.pub.
The key fingerprint is:
fd:15:a4:68:6e:88:c3:a1:f4:64:1b:aa:95:12:02:4a kris@hadoop100
The key's randomart image is:
+--[ RSA 2048]----+
|.E            .  |
|+          . o   |
|o . . =   o . .  |
| . o O = =     . |
|  . = * S +   .  |
|   +   . . . .   |
|  .         .    |
|                 |
|                 |
+-----------------+
[kris@hadoop100 module]$ ssh-copy-id hadoop100 #给自己也发一份
[kris@hadoop100 module]$ ssh-copy-id hadoop101
[kris@hadoop100 module]$ ssh-copy-id hadoop102
[kris@hadoop100 module]$ ssh-copy-id hadoop103
[kris@hadoop100 module]$ ssh-copy-id hadoop104

100给100、101、102、103、104都赋权了;100<==>100双向通道已经建立,我能到自己了;可以把这个双向通道copy给其他的;

[kris@hadoop100 .ssh]$ ll
总用量 16
-rw-------. 1 kris kris 396 1月 15 18:45 authorized_keys  把公钥放在已授权的keys里边,它跟公钥里边内容是一样的;
-rw-------. 1 kris kris 1675 1月 15 18:01 id_rsa  秘钥
-rw-r--r--. 1 kris kris 396 1月 15 18:01 id_rsa.pub 公钥
-rw-r--r--. 1 kris kris 2025 1月 15 17:37 known_hosts 


[kris@hadoop102 .ssh]$ ll
总用量 4
-rw-------. 1 kris kris 396 1月  15 18:04 authorized_keys[kris@hadoop100 module]$ ./xsync /home/kris/.ssh     #给其他账户发送.ssh ;发送 .ssh/
sending incremental file list
.ssh/
.ssh/id_rsa
.ssh/id_rsa.pub
.ssh/known_hostssent 4334 bytes  received 73 bytes  8814.00 bytes/sec
total size is 4096  speedup is 0.93sudo cp xsync /bin #copy到bin目录,就可全局使用;
[kris@hadoop100 module]$ xsync /opt/module/hadoop-2.7.2/ 

清理数据(每一台):[kris@hadoop100 ~]$ cd $HADOOP_HOME[kris@hadoop100 hadoop-2.7.2]$ rm -rf data logs
101           102               103
NameNode    ResourceManager  SecondaryNameNode
DataNode    DataNode            DataNode
NodeManager NodeManager         NodeManagerpwd $JAVA_HOME
$HADOOP_HOME/etc/hadoop(对mapred-site.xml.template重新命名为) mapred-site.xml
配置hadoop-env.sh,yarn-env.sh,mapred-env.sh文件,配置Java_HOME配置Core-site.xml--->>指定HDFS中NameNode的地址 hdfs://hadoop101:9000 ; 指定Hadoop运行时产生文件的存储目录 /opt/module/hadoop-2.7.2/data/tmp
配置hdfs-site.xml-->>数据的副本数量 ; 指定Hadoop辅助名称节点主机配置 hadoop103:50090
配置yarn-site.xml-->>Reducer获取数据的方式  指定YARN的ResourceManager的地址:hadoop102;  日志聚集功能使能; 日志保留时间设置7天
配置mapred-site.xml-->>历史服务器端地址:adoop103:10020 ;历史服务器web端地址:hadoop103:19888
配置Slaves  hadoop101 hadoop102 hadoop103格式化创建namenode                   hdfs namenode -format
在101上启动HDFS:   start-dfs.sh   (101namenode)
在Hadoop102上启动  start-yarn.sh
关闭:
[kris@hadoop101 hadoop-2.7.2]$ stop-dfs.sh
Stopping namenodes on [hadoop101]
hadoop101: stopping namenode
hadoop101: stopping datanode
hadoop102: stopping datanode
hadoop103: stopping datanode
Stopping secondary namenodes [hadoop103]
hadoop103: stopping secondarynamenode[kris@hadoop102 hadoop-2.7.2]$ stop-yarn.sh
stopping yarn daemons
stopping resourcemanager
hadoop102: stopping nodemanager
hadoop103: stopping nodemanager
hadoop101: stopping nodemanager
no proxyserver to stopjpsall脚本:
#!/bin/bash
for i in hadoop101 hadoop102 hadoop103
doecho "-------$i-------"ssh $i "source /etc/profile && jps" | grep -v jps
done

Windows中hosts的配置:

在windows系统中,HOST文件位于系统盘C:\Windows\System32\drivers\etc中

Hosts是一个没有扩展名的系统文件,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”。

hosts文件能加快域名解析,对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。

hosts文件可以方便局域网用户在很多单位的局域网中,可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。

hosts文件可以屏蔽一些网站,对于自己想屏蔽的一些网站我们可以利用Hosts把该网站的域名映射到一个错误的IP或本地计算机的IP,这样就不用访问了。

根据这个HOSTS文件的作用看的出来 ,如果是别有用心的病毒把你的HOSTS文件修改了!(例如把一个正规的网站改成一个有病毒的网站的IP)。那么你就会打开一个带有病毒的网站,你可想而知你的后果了吧!

查看Windows IP 配置
   C:\Users\Administrator>ipconfig /displaydns  

修改hosts后生效的方法:Windows  开始 -> 运行 -> 输入cmd -> 在CMD窗口输入 ipconfig /flushdns
Linux 终端输入: sudo rcnscd restart

host中的配置没有被识别到,那么是否是因为字符或者换行等原因呢?于是: 
查看了host文件的字符:

发现其结尾是CR而没有LF,这不符合windows下面的换行风格,所以将其风格进行转换。notepad中转换方式:

转换风格之后:

至此,可以实现对该域名的ip配置。此外还需要注意:ip地址与域名间至少要有一空格,另外在最后一行书写映射时一定要加上回车再保存以避免最后一行不生效。

1. Hadoop的几个默认端口及其含义。

1)dfs.namenode.http-address:50070

2)SecondaryNameNode辅助名称节点端口号:50090

3)dfs.datanode.address:50010

4)fs.defaultFS:8020 或者9000

5)yarn.resourcemanager.webapp.address:8088

转载于:https://www.cnblogs.com/shengyang17/p/10274391.html

Hadoop |集群的搭建相关推荐

  1. hadoop集群环境搭建准备工作

    一定要注意hadoop和linux系统的位数一定要相同,就是说如果hadoop是32位的,linux系统也一定要安装32位的. 准备工作: 1 首先在VMware中建立6台虚拟机(配置默认即可).这是 ...

  2. hadoop集群的搭建(分布式安装)

    集群 计算机集群是一种计算机系统,他通过一组松散集成的计算机软件和硬件连接起来高度紧密地协同完成计算工作. 集群系统中的单个计算机通常称为节点,通常通过局域网连接. 集群技术的特点: 1.通过多台计算 ...

  3. hadoop集群_Ambari搭建hadoop集群

    Ambari搭建hadoop集群 Ambari提供了对Hadoop更加方便快捷的管理功能,主要包含: 通过一步一步的安装向导简化了集群供应. 预先配置好关键的运维指标(metrics),可以直接查看H ...

  4. Hadoop集群环境搭建之伪分布式搭建流程

    关防火墙 1.首先关闭window防火墙 service iptables status 查看Linux 防火墙状态 service iptables stop 关闭Linux防火墙 chkconfi ...

  5. 大数据 -- Hadoop集群环境搭建

    首先我们来认识一下HDFS, HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.它其实是将一个大文件分成若干块保存在不同服务器的多个节点中.通过联网 ...

  6. 在Hadoop集群上,搭建HBase集群

    (1)下载Hbase包,并解压:这里下载的是0.98.4版本,对应的hadoop-1.2.1集群 (2)覆盖相关的包:在这个版本里,Hbase刚好和Hadoop集群完美配合,不需要进行覆盖. 不过这里 ...

  7. Hadoop集群配置搭建

    环境:Centos 6.9,Hadoop 2.7.1,JDK 1.8.0_161,Maven 3.3.9 前言: 1.配置一台master服务器,两台或多台slave服务器.    2.master可 ...

  8. CDH版本Hadoop集群环境搭建详解

    CDH版本Hadoop集群搭建 1.CDH版本hadoop重新编译 1.1 为什么要编译? 1.2 编译环境的准备 1.3 进行编译 2.CDH版本的zookeeper环境搭建 2.1 zookeep ...

  9. Hadoop集群的搭建,巨详细的过程,一步步来必成

    目录 一.注意事项 1.环境背景 2.小小请求 二.Hadoop的搭建 1.安装及配置虚拟机 1)配置网络 2)下载远程链接器(可选) (1)下载Xshell (2)Linux虚拟网络 (3)准备连接 ...

  10. 适合小白的 Hadoop 集群配置搭建,非常详细

    准备工作: 1.VMware Workstation 14 中安装虚拟机 ,版本为 CentOS7(我搭建的集群为三台,安装一台克隆两台,这里不做解释,可自行百度) 2.JDK1.8 ,下载地址为 h ...

最新文章

  1. 《.NET与设计模式》学习(一)
  2. 干货 | 机器学习入门方法和资料合集
  3. 如何实现SAP UI5 Web Component React控件的加载效果
  4. LeetCode 20. 有效的括号(栈)
  5. 机器人炒饭小块头一一_一罐好饭,智能机器人炒饭出好味道,小块头坚守本心匠心制作!...
  6. SQL计算宝宝吃奶的时间间隔(二)
  7. awk -f 分隔符 命令_Linux awk命令详解(详解版)
  8. onvif协议之初探
  9. 任务方案思考:序列标注(NER)篇
  10. 运维必读:避免故障、拒绝背锅的六大原则!
  11. zookeeper使用问题汇总
  12. Helloj2ee学Silverlight之五——Silverlight的编程模型
  13. MongoDB之Robo3T客户端安装
  14. 任务栏图标消失怎么办?三种方法教你快速恢复
  15. 应用计算机技术建立起来的地图,韩梅家住鼓楼附近,约好同学夏宇一块儿去景山公园踏青。(15分)...
  16. 计算机组成部件及其作用,计算机硬件组成成分各自的功能 计算机硬件有哪几部分组成?请分别说明各部分的作用?...
  17. 【设计模式】之原型模式详解与应用(五)
  18. educoder——面向对象程序设计java——实验实训——实验三 - 集合框架
  19. [附源码]计算机毕业设计springboot酒店客房管理信息系统
  20. Java 算法 统计单词个数

热门文章

  1. Open suse下 vi 语法加亮设置 显示
  2. 水晶报表各版本打包模块及相关文档
  3. 为什么 JavaScript 的 this 要这么用?
  4. mybatis$和#的区别
  5. NVIDIA | 一种重建照片的 AI 图像技术
  6. NVelocity的宏使用
  7. [Java基础] Java中List.remove报错UnsupportedOperationException
  8. 使用摄像头录像后,需要删除系统缓存数据!
  9. Linux系统利用Crontab命令实现定时重启
  10. Android 菜单选项动态变化