Spark2.1.0安装与配置(单机版)
Spark2.1.0安装与配置(单机版)
B站同步视频:Spark2.1.0安装与配置(单机版)
前言
该安装教程是承接Spark源码编译B站教程所制,因此所使用的安装包是在Spark源码编译
教程中得到spark-2.1.0-bin-rh27hive.tgz
文件以及官网的spark-2.1.0-bin-hadoop2.7.tgz
,其实两个文件的功能几乎相同。
关于为什么进行Spark源码编译,主要是因为个人喜好 ,编译在个人看来只是一种体验。
下载官网https://archive.apache.org/dist/spark/
提供的安装包,毕竟是官方的,会可靠点,其中有without-hadoop和hadoop2.x或hadoop3.x的,spark-2.1.0-bin-hadoop2.7.tgz
是含hive支持的,spark-2.1.0-bin-without-hadoop.tgz
是不含hive支持的,含支持的编译命令与自定义编译的命令是相同的(除了hadoop版本,可查看安装包文件中根目录的RELEASE
文件)
这里主要想通过这两个含支持和不含支持的安装包介绍多版本Spark的安装,关于选择哪个安装,这里不做引导,各有各的好,不含支持的比较轻量,含支持的比较完整!
关于其它介绍,这里就不过多展开了,毕竟自己也是小白一枚。
一、单版本(含Hive支持官方版&自定义编译)
官网的和自定义编译得到的两个功能一致,选其一安装即可。如步骤中不分类,则说明两者的操作是相同的。
第一步 获取安装包
① 官方提供的安装包
这里主要介绍Spark2.1.0
的安装(spark-2.1.0-bin-hadoop2.7.tgz
),其它版本类似,如需安装其它版本,请自行更改版本哦。下载链接见上面提到的官网https://archive.apache.org/dist/spark/,请自行找到合适的版本获取下载链接。这个下载会很慢,建议是在Windows平台下使用迅雷下载,下载完再拖进去。
如果是安装Spark3.x的话可以使用清华源:https://mirrors.tuna.tsinghua.edu.cn/apache/spark/
cd ~
wget https://archive.apache.org/dist/spark/spark-2.1.0/spark-2.1.0-bin-hadoop2.7.tgz
迅雷下载会相对快一点点,这里已经下载好了的,就不演示了
② 自定义编译得到的安装包
详见视频:Ubuntu下Spark2.1.0源码编译打包(https://www.bilibili.com/video/BV1eB4y187Gf?spm_id_from=333.999.list.card_archive.click&vd_source=3c792130f317de0ed318a3e6ad0e583b)
得到的安装包为:spark-2.1.0-bin-rh27hive.tgz
第二步 解压安装
① 官网提供的安装包
sudo tar -zxf ~/spark-2.1.0-bin-hadoop2.7.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.1.0-bin-hadoop2.7 ./spark
sudo chmod -R 777 ./spark
② 自定义编译得到的安装包
sudo tar -zxf ~/spark-2.1.0-bin-rh27hive.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.1.0-bin-rh27hive ./spark
sudo chmod -R 777 ./spark
第三步 配置
因为包含Hive支持
,这里Hive安装配置
时是基于MySQL 5.7
的,所以需要用到MySQL 5.7
的驱动mysql-connector-java-5.1.40-bin.jar
。
① 拷贝Hive配置文件(hive-site.xml
和MySQL驱动)
如果你的Hive是基于MySQL的,那么应该会配置过MySQL驱动,可以使用Hive的(其中mysql-connector-java-5.1.40-bin.jar
请改为自己的)
cd /usr/local/hive
cp ./conf/hive-site.xml /usr/local/spark/conf/
mkdir /usr/local/spark/jars/mysql
cp ./lib/mysql-connector-java-5.1.40-bin.jar /usr/local/spark/jars/mysql
如果hive里面没有MySQL,则请先下载
如果没有,可以通过该链接(https://wwt.lanzouf.com/ivdPR08couhc)下载,由于是动态链接,好像不能使用wget下载,所以需要在虚拟机的浏览器打开下载,默认保存在~/下载
目录。如果是其它版本的MySQL,上述驱动应该不适用,请自行准备,至于在哪里可以下载,这里搜刮了一些版本的,请自己去查是适合哪个版本的。
( 阿里云盘 https://www.aliyundrive.com/s/PdJJPvNuYTg 提取码: ydny)
cp ~/下载/mysql-connector-java-5.1.40-bin.jar /usr/local/spark/jars/mysql
给出 hive-site.xml
的内容
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value><description>JDBC connect string for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value><description>Driver class name for a JDBC metastore</description></property><property><name>javax.jdo.option.ConnectionUserName</name><value>hive</value><description>username to use against metastore database</description></property><property><name>javax.jdo.option.ConnectionPassword</name><value>hive</value><description>password to use against metastore database</description></property><property><name>hive.metastore.schema.verification</name><value>false</value></property><property><name>datanucleus.schema.autoCreateAll</name><value>true</value></property><!-- Hive产生的元数据存放位置--><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>
</configuration>
② 添加环境变量
gedit ~/.bashrc
#确保配置hadoop的环境变量时下存在下面的内容,不存在则添加(取消#注释即可)
#export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/
#[Spark]
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
source ~/.bashrc
③ Spark配置
关于这个slf4j-log4j12-1.7.16.jar是日志文件,因为配置了hadoop的classpath之后会重复,启动spark时会输出一些警告,当然可忽略,个人不喜欢,就去掉了一个,如果需要,可以反向操作,恢复即可。
cd /usr/local/spark
mv ./jars/slf4j-log4j12-1.7.16.jar ./jars/slf4j-log4j12-1.7.16.jar.template
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
gedit ./conf/spark-env.sh
在开头第二行空白
位置,添加下面内容,里面的XXX_HOME是环境变量中自己已经配置好的。,其中PYSPARK_PYTHON
只能指向小于3.6的,因为Spark2.1.0还不支持3.6及以上的。
export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)
export LD_LIBRARY_PATH=${JAVA_LIBRARY_PATH}
export JAVA_HOME=${JAVA_HOME}
export CLASSPATH=$CLASSPATH:${HIVE_HOME}/lib
export SCALA_HOME=${SCALA_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3.5
# 单机版配置为本机 ip
export SPARK_MASTER_IP=127.0.0.1
export SPARK_LOCAL_IP=127.0.0.1
④ 设置输出日志的等级
cd /usr/local/spark
cp ./conf/log4j.properties.template ./conf/log4j.properties
gedit ./conf/log4j.properties
在开头位置找到下面的内容
# Set everything to be logged to the console
log4j.rootCategory=INFO, console
将INFO
改为WARN
log4j.rootCategory=WARN, console
⑤ 设置类(依赖包)路径
cd /usr/local/spark
cp ./conf/spark-defaults.conf.template ./conf/spark-defaults.conf
gedit ./conf/spark-defaults.conf
在最后添加以下两行内容
extraJavaOptions属性中是定向使用日志文件的配置,如果适用该文件进行配置,原日志文件的配置不会自动生效,可能是被覆盖的原因,这里需要重新指向,
extraClassPath属性是类路径,如果后续需要添加例如Hbase或kafka依赖,就可以在后面继续添加,就不用在程序提交时指定这些依赖的路径,多个类路径以:
分隔
spark.driver.extraJavaOptions -Dlog4j.configuration=file:/usr/local/spark/conf/log4j.properties
spark.driver.extraClassPath /usr/local/spark/jars/*:/usr/local/spark/jars/mysql/*
给出一个添加Hbase类路径的例子
cd /usr/local/spark/jars
mkdir hbase
cp /usr/local/hbase/lib/hbase*.jar ./hbase
cp /usr/local/hbase/lib/guava-12.0.1.jar ./hbase
cp /usr/local/hbase/lib/htrace-core-3.1.0-incubating.jar ./hbase
cp /usr/local/hbase/lib/protobuf-java-2.5.0.jar ./hbase
cd /usr/local/spark
gedit ./conf/spark-defaults.conf
在extraClassPath属性原有基础上加上::/usr/local/spark/jars/hbase/*
spark.driver.extraClassPath /usr/local/spark/jars/*:/usr/local/spark/jars/mysql/*:/usr/local/spark/jars/hbase/*
到这里就安装完成了!!
第四步 测试
下面进行简单的测试,输出圆周率的近似数
cd /usr/local/spark
./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
为了测试连接Hadoop,这里做点前期工作
gedit ~/test.csv
X国,1,1,0,0,2020-01-20
Y国,0,1,0,0,2020-01-21
Z国,0,1,0,0,2020-01-22
Q国,0,1,0,0,2020-01-23
A国,1,2,0,0,2020-01-24
C国,0,2,0,0,2020-01-25
cd /usr/local/hadoop
./sbin/start-dfs.sh
./bin/hdfs dfs -mkdir /SparkTest
./bin/hdfs dfs -put ~/test.csv /SparkTest
./bin/hdfs dfs -cat /SparkTest/test.csv | head -5
启动mysql服务(一般安装后是默认自启动的)
sudo service mysql start
启动Spark-Shell(注意hive
中不能存在global_temp
数据库)
cd /usr/local/spark
./bin/spark-shell
第一行的global_temp
数据库警告可忽略,因为这个是缓存数据库,如果hive中事先已经存在,那么Spark启动时会报错的。这个警告应该只是输出一下,并没有影响。
第一次启动会出现hive版本的问题,前面的hive-site.xml中配置了不进行版本验证,可能第一次会验证,后续启动就不会了
测试hadoop
val inputDF = spark.read.csv("hdfs://localhost:9000/SparkTest/test.csv")
inputDF.show()
测试是否有hive支持,(hbase),支持时会重复输出导包内容和hive中存在的数据库
关于hive支持与spark sql的区别,这里不太清楚,因为spark sql是spark本身的一部分
import org.apache.spark.sql.hive.HiveContext
spark.sql("show databases").show()
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
:quit
启动pyspark
cd /usr/local/spark
./bin/pyspark
exit()
二、多版本(官方版without-hadoop)
这里提供官方版without-hadoop
的单版本
安装和多版本
安装两个方法,自行选择。
这里前面已经安装过一个了,就演示多版本的安装。
多版本在这里认为的是,上面已经安装的是主版本
,而其它额外安装的为子版本
,如果需要将原版本作为子版本,则请先对原版本安装目录更名(sudo mv /usr/local/spark /usr/local/spark-sub
),再对原版本进行该模块的教程更改内容,或者卸载原版本也可以,再重装。方法很多,看个人喜欢。
卸载就是删除原安装目录文件和移除环境变量即可
##如无需卸载,请勿执行该内容
sudo rm -rf /usr/local/spark
gedit ~/.bashrc
source ~/.bashrc
第一步 获取安装包
官方提供的安装包
这里主要介绍Spark2.1.0
的安装(spark-2.1.0-bin-without-hadoop.tgz
),其它版本类似,如需安装其它版本,请自行更改版本哦。下载链接见上面提到的官网https://archive.apache.org/dist/spark/,请自行找到合适的版本获取下载链接。这个下载会很慢,建议是在Windows平台下使用迅雷下载,下载完再拖进去。
cd ~
wget https://archive.apache.org/dist/spark/spark-2.1.0/spark-2.1.0-bin-without-hadoop.tgz
第二步 解压安装
① 单版本安装
sudo tar -zxf ~/spark-2.1.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.1.0-bin-without-hadoop ./spark
sudo chmod -R 777 ./spark
② 多版本安装
注意多版本安装时,安装的目录名时不一致的,这里使用的是spark-sub,可以改成自己喜欢的,但不能与已存在的相同
sudo tar -zxf ~/spark-2.1.0-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.1.0-bin-without-hadoop ./spark-sub
sudo chmod -R 777 ./spark-sub
第三步 配置
虽然不包含hive支持,但可能需要操作MySQL,所以也是需要用到MySQL 5.7
的驱动mysql-connector-java-5.1.40-bin.jar
。
① 拷贝MySQL驱动
如果没有,可以通过该链接(https://wwt.lanzouf.com/ivdPR08couhc)下载,由于是动态链接,好像不能使用wget下载,所以需要在虚拟机的浏览器打开下载,默认保存在~/下载
目录。如果是其它版本的MySQL,上述驱动应该不适用,请自行准备,至于在哪里可以下载,这里搜刮了一些版本的,请自己去查是适合哪个版本的。
( 阿里云盘 https://www.aliyundrive.com/s/PdJJPvNuYTg 提取码: ydny)
1)单版本
mkdir /usr/local/spark/jars/mysql
cp ~/下载/mysql-connector-java-5.1.40-bin.jar /usr/local/spark/jars/mysql
2)多版本
mkdir /usr/local/spark-sub/jars/mysql
cp ~/下载/mysql-connector-java-5.1.40-bin.jar /usr/local/spark-sub/jars/mysql
② 添加环境变量
1)单版本
gedit ~/.bashrc
#确保配置hadoop的环境变量时下存在下面的内容,不存在则添加(取消#注释即可)
#export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native/
#[Spark]
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin
source ~/.bashrc
2)多版本
因为是安装多个spark,这里需要采用临时添加环境变量
的方式,即在启动时重新更新环境变量SPARK_HOME,更新后并不会影响原本的spark配置,如不添加,则会启动默认(原有)的spark。当然有添加不同的环境变量的方式,但这样会使启动命令有所改变,而临时添加的方式不需要更改命令(看个人习惯),不过需要注意到是:临时添加环境变量的方式需要使用完整路径才能启动子版本,因为它只在启动的时候才会重定向。对于添加不同的环境变量,这种话方式比较麻烦,需要移除原有的SPARK_HOME环境变量,使用不同的名称,例如SPARK1_HOME,SPARK2_HOME,因为一旦存在SPARK_HOME,不管哪个版本,都会指向配置的那个版本。
cd /usr/local/spark-sub
gedit ./bin/spark-shell
开头空白行添加内容
export SPARK_HOME=/usr/local/spark-sub
export PATH=$PATH:SPARK_HOME/bin
对pyspark,sparkR,spark-sql,spark-submit也需要进行同样的操作
cd /usr/local/spark-sub
gedit ./bin/pyspark
gedit ./bin/sparkR
gedit ./bin/spark-sql
gedit ./bin/spark-submit
③ Spark配置
1)单版本
cd /usr/local/spark
2)多版本
cd /usr/local/spark-sub
1,2共同内容:
mv ./jars/slf4j-log4j12-1.7.16.jar ./jars/slf4j-log4j12-1.7.16.jar.template #没有没关系
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
gedit ./conf/spark-env.sh
在开头第二行空白
位置,添加下面内容,里面的XXX_HOME是环境变量中自己已经配置好的。
export SPARK_DIST_CLASSPATH=$(${HADOOP_HOME}/bin/hadoop classpath)
export JAVA_HOME=${JAVA_HOME}
export SCALA_HOME=${SCALA_HOME}
export HADOOP_HOME=${HADOOP_HOME}
export HADOOP_CONF_DIR=${HADOOP_HOME}/etc/hadoop
export LD_LIBRARY_PATH=${JAVA_LIBRARY_PATH}
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.7-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3.5
# 单机版配置为本机 ip
export SPARK_MASTER_IP=127.0.0.1
export SPARK_LOCAL_IP=127.0.0.1
④ 设置输出日志的等级
1)单版本
cd /usr/local/spark
2)多版本
cd /usr/local/spark-sub
1,2共同内容:
cp ./conf/log4j.properties.template ./conf/log4j.properties
gedit ./conf/log4j.properties
在开头位置找到下面的内容
# Set everything to be logged to the console
log4j.rootCategory=INFO, console
将INFO
改为WARN
log4j.rootCategory=WARN, console
⑤ 设置类(依赖包)路径
1)单版本
cd /usr/local/spark
2)多版本
cd /usr/local/spark-sub
1,2共同内容:
cp ./conf/spark-defaults.conf.template ./conf/spark-defaults.conf
gedit ./conf/spark-defaults.conf
在最后添加以下两行内容
extraJavaOptions属性中是定向使用日志文件的配置,如果适用该文件进行配置,原日志文件的配置不会自动生效,可能是被覆盖的原因,这里需要重新指向,
extraClassPath属性是类路径,如果后续需要添加例如Hbase或kafka依赖,就可以在后面继续添加,就不用在程序提交时指定这些依赖的路径,多个类路径以:
分隔
1)单版本
spark.driver.extraJavaOptions -Dlog4j.configuration=file:/usr/local/spark/conf/log4j.properties
spark.driver.extraClassPath /usr/local/spark/jars/*:/usr/local/spark/jars/mysql/*
2)多版本
spark.driver.extraJavaOptions -Dlog4j.configuration=file:/usr/local/spark-sub/conf/log4j.properties
spark.driver.extraClassPath /usr/local/spark-sub/jars/*:/usr/local/spark-sub/jars/mysql/*
到这里就安装完成了!!
第四步 测试
为了测试连接Hadoop,这里做点前期工作,如果前面已经做过,可跳过
gedit ~/test.csv
X国,1,1,0,0,2020-01-20
Y国,0,1,0,0,2020-01-21
Z国,0,1,0,0,2020-01-22
Q国,0,1,0,0,2020-01-23
A国,1,2,0,0,2020-01-24
C国,0,2,0,0,2020-01-25
cd /usr/local/hadoop
./sbin/start-dfs.sh
./bin/hdfs dfs -mkdir /SparkTest
./bin/hdfs dfs -put ~/test.csv /SparkTest
./bin/hdfs dfs -cat /SparkTest/test.csv | head -5
① 单版本
下面进行简单的测试,输出圆周率的近似数
cd /usr/local/spark
./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
启动Spark-Shell
cd /usr/local/spark
./bin/spark-shell
测试hadoop
val inputDF = spark.read.csv("hdfs://localhost:9000/SparkTest/test.csv")
inputDF.show()
测试是否有hive支持,应该是不支持的
import org.apache.spark.sql.hive.HiveContext
:quit
启动pyspark
cd /usr/local/spark
./bin/pyspark
exit()
② 多版本
下面进行简单的测试,输出圆周率的近似数
cd /usr/local/spark-sub
./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
启动Spark-Shell
cd /usr/local/spark-sub
./bin/spark-shell
测试hadoop
val inputDF = spark.read.csv("hdfs://localhost:9000/SparkTest/test.csv")
inputDF.show()
测试是否有hive支持,应该是不支持的,支持时会重复输出
import org.apache.spark.sql.hive.HiveContext
:quit
如果把临时添加环境变量去掉,再测试是否支持Hive,因为启动的是支持hive的,这个效果在使用不同Spark版本时,可能会更明显。
可以看到启动without hadoop的是没有那个数据库警告的,但去掉临时环境变量之后,就出现了,说明启动的并不是without -hadoop的spark,而且也含有hive支持
cd /usr/local/spark-sub
gedit ./bin/spark-shell
将配置的环境变量注释
#export SPARK_HOME=/usr/local/spark-sub
#export PATH=$PATH:SPARK_HOME/bin
再执行上面的操作。
启动pyspark
cd /usr/local/spark-sub
./bin/pyspark
exit()
Spark2.1.0安装与配置(单机版)相关推荐
- hadoop 2.5.0安装和配置
安装hadoop要先做以下准备: 1.jdk,安装教程在 http://www.cnblogs.com/stardjyeah/p/4640917.html 2.ssh无密码验证,配置教程在 http: ...
- Maven3.5.0安装与配置
Maven3.5.0安装与配置 下载Maven3.5.0 Maven3.5.0下载地址 Maven3.5.0的安装 将下载后的apache-maven-3.5.0-bin.zip解压,如"g ...
- tomcat9.0安装与配置
tomcat9.0安装与配置 准备工作 通常情况下,是先下载JDK.JRE之后再下载tomcat的,所以在安装配置tomcat之前,需要检查一下你的jdk.jre环境变量是否配置完成. ·控制面板-& ...
- 国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令
国产达梦数据库学习笔记(一):NeoKylin7.0安装及配置与常用基础命令 以VMware Workstation Pro 15环境下的NeoKylin7.0与DM8为例 中标麒麟系统NeoKyli ...
- 在CDH上用外部Spark2.2.1安装和配置 CarbonData
在CDH上用外部Spark2.2.1 (hadoop free版本)standalone 模式安装和配置 CarbonData 一.cdh中外部spark(standalone模式安装) 1.把安装包 ...
- 查询linux kafka安装目录,Kafka 1.0.0安装和配置--Linux篇
阅读目录: 1. 关闭防火墙和Selinux 2. 安装所需环境JDK,Zookeeper 3. 下载Kafka 1.0.0版本 4. 配置Kafka 5. 启动Kafka并验证 6. 报错及解决 7 ...
- UE5 C++ Rider 编程指南 0.安装和配置
目录 0. 前言 1. Rider特性 1.1 快速跨平台C++支持 1.2 连接代码和UE编辑器 1.3 协助反射机制和RPC 1.4 代码分析和命名风格 1.5 调试器 1.6 单元测试 2. 安 ...
- VMware NSX 4.0安装、配置和升级实战
本文通过一个Vmware NSX 4的安装配置实例,扼要说明了一个典型的NSX系统配置.升级过程需要注意的正确步骤,并列出了作者在学习过程中踩过的坑,为同行绕过提供借鉴. 1.系统软硬件环境说明 本安 ...
- mysql8.0安装及配置超详细教程_系统城教你mysql8.0安装与配置教程
一.下载mysql 安装mysql有两种方式,一种是下载安装包安装,另一种是下载压缩包解压配置,这里使用安装包方式. 进去后点击下面的Download 点击No thinks进入下载 二.安装mysq ...
最新文章
- 在Web页面上启动运行Linux系统
- 网站百度索引量受哪些因素影响呢?
- 02-MyBatis配置SQL打印
- 在java中5 % 3_Java基础5
- 广州程序员辞职创业卖菠萝油,放弃30万年薪
- PSIM软件中 Simplified C Block模块 和 C Block模块区别
- Trick(三)——循环左移的实现
- 乔布斯:你须寻得所爱(转)
- bootstrap创建响应式网站
- 尚品汇笔记——尚硅谷
- 关于微博api返回内容不全内容
- RK3066移动鼠标,有时会卡顿一会儿
- 计算机u盘病毒清除方式,清除文件夹exe病毒方法
- ctab提取dna流程图_ctab 提取dna配方
- 悟空crm配置mysql_超简单的悟空crm安装教程!看完不信你不会
- git仓库账号或着密码修改之后需要重新配置SSH公钥
- 基于html篮球网页游戏,基于html5和jquery的篮球跳动游戏
- SRAM cell 详解
- 打击标题党,痛斥灌水文
- 每日格言积累及总结——更新中
热门文章
- Linux系统编程—进程—system函数
- 2018杭州-云栖大会
- win7 屏蔽全角/半角快捷键(Shift+Space)
- java大一下期末作业老鼠迷宫Swing窗口实现
- 多位中青年科研人员早逝!985教授:不要拿生命做研究...
- 差分进化算法求解函数最值问题
- jmeter启动出现not able to find java executable or version的解决方法
- 什么是多边形网格?对于3D建模来说是个怎样的存在?你知道吗?
- “毕业5年,年薪50万,我总结了职场最值钱的5句【转需】
- 中国服装行业要走服装智能制造路线