大数据私房菜--CDH6.2.0搭建的漫漫长路

  • 引言
  • 概述
  • 虚拟机准备
  • 安装准备
    • 1. 配置JDK
    • 2. 配置hosts
    • 3. 关闭防火墙
    • 4. 关闭SELinux
    • 5. 修改Linux swappiness参数
    • 6. 禁用透明页
    • 7. 配置mysql的JDBC
    • 8.克隆虚拟机
    • 6. 配置免密登录
    • 5. 配置NTP
  • 安装部署
    • 1. 安装Mysql
      • 1.1 卸载源生mariadb
      • 1.2 rpm安装mysql
      • 1.3 mysql配置
      • 1.4 mysql数据库配置
    • 2. Http服务安装
    • 3. 配置CM安装本地Yum源
    • 4. 安装Cloudera Manager(CM)
  • 服务安装
    • 1. 群集安装
      • 1.1 Cluster Basics
      • 1.2 Specify Hosts
      • 1.3 选择存储库
      • 1.4 JDK 安装选项
      • 1.5 提供 SSH 登录凭据
      • 1.6 Install Agents
      • 1.7 Install Parcels
      • 1.8 Inspect Cluster
    • 2. 群集设置
      • 2.1 Select Services
      • 2.2 Select Services
      • 2.3 数据库设置
      • 2.4 审核更改
      • 2.5 命令详细信息
      • 2.6 汇总

引言

如果有什么需要明天做的事,最好现在就开始。 --富兰克林
大数据泛指巨量的数据集,因可从中挖掘出有价值的信息而受到重视。步入大数据就要从部署大数据平台开始,所谓大数据平台其实就是一个很多台主机组成的一台新的"computer",这一台高性能"computer"足以让我们处理巨量的数据集。我们可以利用这一台"computer"对数据集进行处理和存储。

概述

CDH,全称Cloudera’s Distribution, including Apache Hadoop。是由Cloudera将Hadoop生态圈中最常使用的开源组件集成为一个Hadoop的发行版。

在安装CDH之前,我们先了解一下CDH的构成。CDH由Cloudera Manager(CM)管理平台和CDH parcel(parcel包含各种Hadoop生态圈组件的安装包)。

下面我们开始离线安装CDH6.2.0,首先要下载三个必要的组件:

  • CM的yum源包
  • parcel组件的下载
  • mysql

CM的官方下载地址为:https://archive.cloudera.com/cm6/6.2.0
parcel的官方下载地址为:https://archive.cloudera.com/cdh6/6.2.0/parcels
mysql的官方下载地址为:https://dev.mysql.com/downloads/mysql

CM:

parcel组件:

Mysql组件(mysql安装包+Mysql JDBC )

虚拟机准备

准备好Centos7的镜像:CentOS-7-x86_64-DVD-1908.iso

集群规划:

主机名 IP 角色 系统版本
CDH00 192.168.0.250 CM Centos7
CDH01 192.168.0.251 数据节点 Centos7
CDH02 192.168.0.252 数据节点 Centos7
CDH03 192.168.0.253 数据节点 Centos7

在Vbox中生成一台Other Linux(64-bit) 作为CDH00,其余数据节点通过克隆得到。

安装准备

1. 配置JDK

在CM的官方下载可以看到CDH6.2.0匹配的JDK版本为1.8以上的版本
若系统没有安装所支持的jdk版本,在启动cloudera-scm-server会出现出现JDK版本不兼容问题

+======================================================================+
|      Error: Unable to find a compatible version of Java on this host,|
|             either because JAVA_HOME has not been set or because a   |
|             compatible version of Java is not installed.             |
+----------------------------------------------------------------------+
| Please install either:                                               |
| - a supported version of the Oracle JDK from the Oracle Java web     |
|   site:                                                              |
|   > http://www.oracle.com/technetwork/java/javase/index.html <       |
| OR                                                                   |
| - a supported version of the OpenJDK from your OS vendor.  Help for  |
|   some OSes are available at:                                        |
|   > http://openjdk.java.net/install/ <                               |
|                                                                      |
| Cloudera Manager requires Oracle JDK or OpenJDK 1.8 or later.        |
| NOTE: Cloudera Manager will find the Oracle JDK when starting,       |
|       regardless of whether you installed the JDK using a binary     |
|       installer or the RPM-based installer.                          |
+======================================================================+
  • rpm -qa | grep java # 查询已安装的jdk
  • yum remove java* # 卸载已安装的jdk
  • #解压jdk压缩包
tar -xzvf jdk-8u212-linux-x64.tar.gz -C /data/app
  • 配置环境变量
    在/etc/profile文件末尾追加
export JAVA_HOME=/data/app/jdk1.8.0_212
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

编辑保存之后,使用source /etc/profile生效

  • java -version# 校验java是否安装成功

由于CDH配置的JAVA_HOME路径为/usr/java,如果一开始jdk的安装路径为/usr/java后续安装CM的时候就不会有jdk版本不匹配的问题,但如果一开始jdk的路径不在这个路径下需要把本地安装jdk的路径通过软连接的方式指向/usr/java

# 建立/usr/java目录
mkdir -p /usr/java
# 通过ln命令将本地的jdk目录指向/usr/java下
ln -s /data/app/jdk1.8.0_212/ /usr/java/jdk1.8.0_212

2. 配置hosts

在/etc/hosts文件末尾追加
192.168.0.250 CDH00
192.168.0.251 CDH01
192.168.0.252 CDH02
192.168.0.253 CDH03

3. 关闭防火墙

# 关闭防火墙
systemctl stop firewalld
# 禁止防火墙开机自启
systemctl disable firewalld

4. 关闭SELinux

vim /etc/selinux/config
SELINUX=enforcing—> SELINUX=disabled

5. 修改Linux swappiness参数

由于CM会要求用户对Linux进行一些系统层面上的优化,主要为修改交换分区设置和禁用透明页,详情可参考官方文档:
https://docs.cloudera.com/documentation/enterprise/latest/topics/cdh_admin_performance.html
通过以下命令查看交换分区参数

cat /proc/sys/vm/swappiness

临时改动:

echo 0 >  /proc/sys/vm/swappiness

永久变更:

vim /etc/sysctl.conf
末尾追加vm.swappiness=0

6. 禁用透明页

首先查看透明大页是否启用,[always] never表示已启用,always [never]表示已禁用

cat /sys/kernel/mm/transparent_hugepage/defrag

在/etc/rc.local增加下列两行

echo never > /sys/kernel/mm/transparent_hugepage/defrag
echo never > /sys/kernel/mm/transparent_hugepage/enabled
# 赋予权限
chmod +x /etc/rc.d/rc.local

7. 配置mysql的JDBC

# 创建/usr/share/java目录
mkdir -p /usr/share/java
# 解压缩jdbc
tar -xzvf mysql-connector-java-5.1.47.tar.gz
# 拷贝mysql jdbc jar包到/usr/share/java目录
cp mysql-connector-java-5.1.47.jar /usr/share/java/
# 将jar包的命名去掉版本号
mv mysql-connector-java-5.1.47.jar mysql-connector-java.jar

8.克隆虚拟机

将配置好的CM虚拟机克隆成三台数据节点虚拟机,以下以vbox为例:

右键已经初步配置好的CDH00,选择复制(clone)

更改名称,MAC地址设定为所有网卡重新生成MAC地址

选择完全复制

等待片刻Vbox就可完成复制,依次分别生成CDH01、CDH02、CDH03。

复制好的虚拟机我们需要更好一下静态IP和hostname

# 通过修改配置文件/etc/hostname来修改hostnma
# 将CDH00更改为CDH01
vim /etc/hostname
# 通过修改配置文件
vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

修改IPADDR="x.x.x.x"为对应的IP地址

6. 配置免密登录

# 在CM节点CDH00上生成公钥文件id_rsa.pub
ssh-keygen -t rsa
# 将公钥追加到authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改权限,不加权限无法实现
chmod 600 ~/.ssh/authorized_keys
# 将ssh文件分发到其余节点中
scp -r ~/.ssh/ root@CDH01:~/.ssh/

各个节点尝试相互SSH验证是否可免密登录

5. 配置NTP

安装ntp

yum -y install ntp

ntp主机配置

vim /etc/ntp.conf

CM节点:

#restrict default nomodify notrap nopeer noquery    #注释掉
restrict CDH00 nomodify notrap nopeer noquery
restrict 192.168.0.0 mask 255.255.252.0 nomodify notrap#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server 127.127.1.0
Fudge 127.127.1.0 stratum 10

其余数据节点:

#restrict default nomodify notrap nopeer noquery    #注释掉
restrict CDH01 nomodify notrap nopeer noquery
restrict 192.168.0.0 mask 255.255.252.0 nomodify notrap
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server CDH00
Fudge CDH00 stratum 10

配置完成后重启ntp服务

重新启动 ntp 服务:service ntpd restart
设置开机自启:systemctl enable ntpd.service

校验ntp服务状态

ntpdc -c loopinfo #查看与时间同步服务器的时间偏差
ntpq -p #查看当前同步的时间服务器
ntpstat #查看状态

由于Centos7中有chronyd时间同步,开机自启会产生冲突这里将其禁止

systemctl disable chronyd

安装部署

经过上述的安装准备,已经将集群四台服务器基础配置完成了,接下来对CM节点(CDH00)安装部署CM,通过CM部署大数据平台

1. 安装Mysql

1.1 卸载源生mariadb

# 查看本地mariadb
rpm -qa|grep mariadb
# 卸载mariadb
rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64

1.2 rpm安装mysql

# 解压mysql
tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar

解压后的数据文件如下:

通过rpm安装mysql

rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm

1.3 mysql配置

# 初始化mysql,mysql的owner为mysql
mysqld --initialize --user=mysql
# 查看初始后生成的随机密码
cat /var/log/mysqld.log

在log中生成的随机密码如下(不同主机生成的不一样):

修改mysql管理者密码

# 设置mysql服务自启
systemctl start mysqld.service
# 重启mysqld
systemctl restart mysqld
# 登录mysql,修改管理者用户密码
mysql -u root -p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'toor';

其余配置
查看mysql的字符库,若server的字符库不是utf-8需要修改

SHOW VARIABLES like 'character%';


修改字符库

# 修改/etc/my.cnf配置文件
vim /etc/my.cnf
# 在 [mysqld] 下面加上这个配置
character-set-server=utf8
# 重启mysql
service mysqld restart

1.4 mysql数据库配置

在CDH当中,需要创建9个数据库和对应用户,具体如下:

Service Database User Password
Cloudera Manager Server scm scm scm
Activity Monitor amon amon amon
Reports Manager rman rman rman
Hue hue hue hue
Hive Metastore Server metastore hive hive
Sentry Server sentry sentry sentry
Cloudera Navigator Audit Server nav nav nav
Cloudera Navigator Metadata Server navms navms navms
Oozie oozie oozie oozie

创建database语句为:

create database scm default character set utf8 default collate utf8_general_ci;
grant all on scm.* to 'scm'@'%' identified by 'scm';create database amon default character set utf8 default collate utf8_general_ci;
grant all on amon.* to 'amon'@'%' identified by 'amon';create database rman default character set utf8 default collate utf8_general_ci;
grant all on rman.* to 'rman'@'%' identified by 'rman';create database hue default character set utf8 default collate utf8_general_ci;
grant all on hue.* to 'hue'@'%' identified by 'hue';create database metastore default character set utf8 default collate utf8_general_ci;
grant all on metastore.* to 'hive'@'%' identified by 'hive';create database sentry default character set utf8 default collate utf8_general_ci;
grant all on sentry.* to 'sentry'@'%' identified by 'sentry';create database nav default character set utf8 default collate utf8_general_ci;
grant all on nav.* to 'nav'@'%' identified by 'nav';create database navms default character set utf8 default collate utf8_general_ci;
grant all on navms.* to 'navms'@'%' identified by 'navms';create database oozie default character set utf8 default collate utf8_general_ci;
grant all on oozie.* to 'oozie'@'%' identified by 'oozie';

通过show databases;验证数据库

2. Http服务安装

yum -y install httpd # 通过yum安装httpd
systemctl start httpd # 启动httpd服务
systemctl enable httpd.service 设置httpd服务开机自启

3. 配置CM安装本地Yum源

# 创建Cloudera Manager包yum源
mkdir -p /var/www/html/cloudera-repos/
# 将下载的cm包文件拷贝到目录下:
cp -r cm6.2.0 /var/www/html/cloudera-repos/
cd /var/www/html/cloudera-repos/cm6.2.0
# 安装createrepo
yum -y install deltarpm-*
yum -y install python-deltarpm-*
yum -y install createrepo-*
# 创建repodata:
createrepo ./
# 配置yum源
vim /etc/yum.repos.d/cloudera-manager.repo
# 键入以下
[cloudera-manager]
name=Cloudera Manager, Version yum
baseurl=http://CDH00/cloudera-repos/cm6.2.0
gpgcheck=0
enabled=1
# 重建yum
yum clean all
yum makecache
# 导入GPG key
rpm --import http://CDH00/cloudera-repos/cm6.2.0/RPM-GPG-KEY-cloudera

4. 安装Cloudera Manager(CM)

在CM节点上安装Cloudera Manager

 yum -y install cloudera-manager-daemons cloudera-manager-agent cloudera-manager-server

安装完成后在/opt目录下会生成cloudera目录
将下载好的组件parcel包移动到指定的目录

cp /data/packages/cdh6.2.0/parcel-6.2.0/* /opt/cloudera/parcel-repo/
cd /opt/cloudera/parcel-repo/
# 在移动后的目录校验shm
sha1sum CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel | awk '{print $1}' > CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
# 对比下载的校验和
# 复制后的校验和
[root@CDH00 parcel-repo]# cat CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha
e9c8328d8c370517c958111a3db1a085ebace237
# 复制前的校验和
[root@CDH00 parcel-repo]# cat CDH-6.2.0-1.cdh6.2.0.p0.967373-el7.parcel.sha1
e9c8328d8c370517c958111a3db1a085ebace237

执行初始化脚本:

# Cloudera Manager Server服务的mysql的数据库为scm,用户名scm,密码scm
# 执行初始化脚本:命令说明:脚本名 数据库类型 数据库名 用户名 密码
/opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm
# 完成后显示如下
[root@CDH00 java]# /opt/cloudera/cm/schema/scm_prepare_database.sh mysql scm scm scm
JAVA_HOME=/data/app/jdk1.8.0_212
Verifying that we can write to /etc/cloudera-scm-server
Creating SCM configuration file in /etc/cloudera-scm-server
Executing:  /data/app/jdk1.8.0_212/bin/java -cp /usr/share/java/mysql-connector-java.jar:/usr/share/java/oracle-connector-java.jar:/usr/share/java/postgresql-connector-java.jar:/opt/cloudera/cm/schema/../lib/* com.cloudera.enterprise.dbutil.DbCommandExecutor /etc/cloudera-scm-server/db.properties com.cloudera.cmf.db.
Tue Jun 23 12:02:10 CST 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
[                          main] DbCommandExecutor              INFO  Successfully connected to database.
All done, your SCM database is configured correctly!

做完以上步骤最好重启一次虚拟机使配置生效并且清楚一下内存。
在CDH00开启CM服务

service cloudera-scm-server start
# 可以通过查看scm服务器的log
tail  -f /var/log/cloudera-scm-server/cloudera-scm-server.log

经过一段时间,等待CM初始化完成后会出现:

2020-06-23 12:54:33,327 INFO WebServerImpl:org.eclipse.jetty.server.Server: Started @256805ms
2020-06-23 12:54:33,327 INFO WebServerImpl:com.cloudera.server.cmf.WebServerImpl: Started Jetty server.

服务安装

输入http://192.168.0.250:7180(这里192.168.0.250是CM节点CDH00的ip地址)
输入用户名/密码:admin/admin进入配置页面

Accept License-点击接受
Select Edition-选择免费版本

1. 群集安装

1.1 Cluster Basics

给集群取一个名称

1.2 Specify Hosts

将四台虚拟机加入群集,这里直接搜索CDH0[0-3],点击搜索获取结果

1.3 选择存储库

配置Yum源地址:这里使用配置的本地地址即repo文件配置的地址:
http://CDH00/cloudera-repos/cm6.2.0

勾选下载的CDH版本:

本地下载的版本为cdh6.2.0.p0.967373所以这里选择cdh6.2.0.p0.967373
PS:如果不选择本地的版本包,他会通过在线方式下载,后续安装。。。自行理解

1.4 JDK 安装选项

由于我们在安装准备的时候就安装好了jdk,这里不勾选。

1.5 提供 SSH 登录凭据

输入各主机的ssh登录账户和密码,这里输入root和密码;
在同时安装的数量这里可以根据自己的主机的配置灵活选择,这里安装的是4台主机组成的群集,
CDH00已经安装成功了,我们这里配置同时安装2台避免宿主机卡死。
PS:博主的电脑12G内存跑四台虚拟机的内存就94%占用率,自行理解。。。。

PS:另外可以自行在其余节点安装agent这样这一步就很快可以完成。
具体步骤为:

1.配置Yum源,配置一个新的repo文件从CDH00获取即可
vim /etc/yum.repos.d/cloudera-manager.repo
键入以下
[cloudera-manager]
name=Cloudera Manager, Version yum
baseurl=http://CDH00/cloudera-repos/cloudera-repos-6.2.0
gpgcheck=0
enabled=1
2.重新加载yum
yum clean all
yum makecache
3.安装agent
yum install cloudera-manager-daemons cloudera-manager-agent

1.6 Install Agents

等待各主机Agents的安装,这里考验的是主机的带宽和性能了。。。

1.7 Install Parcels

由于我们已经配置好了Parcels从CDH00获取,这里就免去了在线下载的过程,等待完成即可。

1.8 Inspect Cluster

在这个过程会检查一下群集是否会满足CDH的要求,一般是交换区设置和禁用透明页的Linux底层优化没有做,自行返回上面步骤解决就行。

如果测试结果问题不大可以勾选"I understand the risks, let me continue with cluster creation."进入下一步。

2. 群集设置

2.1 Select Services

选择自定义安装,一般为了简单,选择HDFS、YARN、ZOOKEEPER后续服务再进行添加。

2.2 Select Services

自定义角色分配,一般NameNode和SecondaryNameNode分开部署,DataNode选择所有节点,Zookeeper选择奇数个部署于除了NN的节点上。

2.3 数据库设置

数据库设置即配置先前的9个CDH必要的数据库,将数据库名和对应的用户名/密码填入即可。

2.4 审核更改

按照默认即可

2.5 命令详细信息

等待各组件安装初始化,CDH的好处就是免去了源生态安装的各种配置的繁琐。

2.6 汇总

这样就是实现了CDH6.2.0平台的搭建。

大数据私房菜--漫漫长路之CDH6.2.0搭建相关推荐

  1. 漫漫长路十多小时,谁是机上WiFi的“业界良心”?

    东航日前开通北美国际远程航线的机上WiFi上网服务,国.海.南.东等四大航以前只限于国内航班的空中上网服务终于挺进有着更高需求的洲际航班.而欧美.中东的主流航空公司,早已将机上WiFi上网当成航班服务 ...

  2. 中国大地保险的大数据应用架构演进之路

    2019年9月20日,中国大地保险信息科技部数据平台处处长助理张磊先生,应邀出席大数据分析技术及解决方案供应商 Kyligence 主办的首届金融科技沙龙,并为大家做了题为<中国大地保险的大数据 ...

  3. 大数据架构师进阶之路-技术学习路线

    大数据架构师进阶之路 自大学毕业从事IT行业已有两年有余,虽在这两年一直没有停止学习的脚步,但总是感觉,不成体系,再就是学过的技术长时间不用,也忘记了,写篇博客的目的,是想在工作之余,一是充实自己,将 ...

  4. 魅族大数据可视化平台建设之路

    本文是根据魅族科技大数据平台架构师赵天烁3月31日在msup携手魅族主办的第十二期魅族技术开放日<魅族大数据可视化平台建设之路>演讲中的分享内容整理而成. 内容简介:本文主要从现状& ...

  5. 王家林 云计算分布式大数据Hadoop实战高手之路第七讲Hadoop图文训练课程:通过HDFS的心跳来测试replication具体的工作机制和流程...

    这一讲主要深入使用HDFS命令行工具操作Hadoop分布式集群,主要是通过实验的配置hdfs-site.xml文件的心跳来测试replication具体的工作和流程. 通过HDFS的心跳来测试repl ...

  6. 王家林的“云计算分布式大数据Hadoop实战高手之路---从零开始”的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题

    王家林的"云计算分布式大数据Hadoop实战高手之路---从零开始"的第五讲Hadoop图文训练课程:解决典型Hadoop分布式集群环境搭建问题 参考文章: (1)王家林的&quo ...

  7. ROS漫漫长路(一)——Gazebo中机器人圆柱,球,长方体惯性矩阵推导与代码实现

    ROS漫漫长路(一)--Gazebo中机器人圆柱,球,长方体惯性矩阵推导与代码实现 目录 ROS漫漫长路(一)--Gazebo中机器人圆柱,球,长方体惯性矩阵推导与代码实现 前言 一.公式推导 一.代 ...

  8. 【PPT及视频资料】360互联网技术训练营第十六期——大数据与微服务之路

    奇技指南 7月21号,在北京360公司总部举办了[360互联网技术训练营第16期--大数据与微服务之路]. 小编这就带大家回顾下大会精彩内容,并打包送上本次的PPT和视频! 面对复杂的业务逻辑和海量用 ...

  9. 2021年大数据Kafka(三):❤️Kafka的集群搭建以及shell启动命令脚本编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的集群搭建以及shell启动命令脚本编写 一.搭建 ...

最新文章

  1. 深入学习Lock锁(2)——LockSupport工具类
  2. Windows性能分析器概述(一)
  3. linux内核自旋锁API
  4. 【PM模块】操作功能概览
  5. 纪中C组模拟赛总结(2019.9.7)
  6. 使用PostgREST的RestAPI操作之 类型转JSON对象 | 嵌入视图
  7. 水泵调速c语言实验程序,C语言实验最原始.doc
  8. java完成项目需要哪些技术_java_web项目开发需要掌握哪些技术
  9. 计算机软件产品开发编写指南,计算机软件产品开发文件编制指南GB 8567-1988(6)[7]...
  10. 动手学 《动手学深度学习》(安装pytorch)
  11. 我的世界服务器修改npc,我的世界npc修改对话框 | 手游网游页游攻略大全
  12. 自适应PC端网页制作使用rem
  13. java paypal 支付集成_java对接PayPal标准支付操作流程
  14. Apche Kafka 的生与死 – failover 机制详解
  15. CAN通讯程序C语言,AT90CAN单片机CAN通信模块介绍及软件编程
  16. winxp找不到服务器或 dns 错误,详解网络无法使用DNS错误的修复步骤
  17. 咸鱼CAD笔记—CAD快捷键
  18. easypoi导入图片_原生POI / EasyPOI 简单上手使用
  19. 迅雷2014C++研发笔试卷C解题分析
  20. 超火的数码产品犀牛rhino模型素材网站合集看过来

热门文章

  1. js @@ 符号含义
  2. 关于msvcp71.dll文件出错的解决办法
  3. TP-Link路由无线WDS桥接
  4. java 正则 预编译_正则表达式预编译功能的正确使用
  5. 【Dubbo】SpringBoot 整合 Dubbo 示例
  6. Token验证——JWT方法(明白了!好文章!!)
  7. 八爪鱼数据抓取,智联招聘为例
  8. Python条件语句的elif
  9. linux释放buff/cache缓存空间
  10. html5 canvas circle,HTML5 canvas 创意:飞翔的凤凰