============================================================
1.安装虚拟机和Linux系统
2.学习Linux常见的命令
============================================================
1.安装JDK
2.安装MySQL
3.安装Tomcat
4.学习Redis数据类型(String)
===========================================================
1.学习Redis其余的三种数据类型
2.使用Jedis操作Redis数据(要使用java来操作redis数据库中的数据!)
目的: 能够成功的将我们在windows系统下开发的项目成功的部署到Linux系统里面的tocmat服务器中并成功访问!
============================================================
一.安装虚拟机
参考相关文档进行安装即可(移动硬盘.VMware使用.doc)
二.安装Linux系统(CentOS)【建议联网】
参考相关文档进行安装即可(移动硬盘.Linux(CentOS)安装.doc)
为了更加方便的操作CentOS,安装一个连接Linux的软件CRT(移动硬盘.CRT连接linux.doc)
顺便将相关的依赖进行安装
三.Linux常见命令的使用
初次输入用户名root和密码123456会进入到一个目录结构:符号为~ 代表的是用户主目录!
~:用户主目录(用户上传的文件默认存放的目录)
/:根目录(建议存放目录不要存放文件)
/etc:(etcetera) 系统配置文件存放的目录(Java的环境变量,防火墙配置文件)
/root: 系统管理员root的家目录
/usr:(unix shared resources) 应用程序存放目录(Mysql、tocmat、redis安装)
以上规定了哪个目录是做什么的,但仅仅只是建议,并不是强制性的约束!
1.磁盘管理
ls命令:列出目录结构
掌握:ll -h 以详细列表的方式将非隐藏的文件或者目录展示出来
cd命令:目录切换
cd ~ :进入用户主目录(它可以在任意盘符直接切换到用户主目录)
cd / :进入根目录(它可以在任意盘符直接切换到根目录)
cd ..:返回上一级目录
cd - :查看用户上一次访问的目录(回退)
cd 目录名 :进入子目录
pwd命令:查看当前工作的目录
我在计算机里面进入到我的D/mysql/bin
模拟:cd / 新增进入D
如果你输入cd ../ 计算机
如果输入cd - D/mysql/bin
mkdir命令:创建目录
参数:
p 如果没有父目录它会为你创建一个指定的父目录
v 显示整个创建的过程信息
mkdir -pv a/b
有p参数:如果没有a目录它会先创建a目录再创建b目录
无P参数:如果没有a目录,它会报错
rmdir命令:删除空目录
删除空目录,如果目录中有内容,不能删除,必须先删除里面的内容
2.文件管理(文件浏览)【以后用在查看日志信息】
cat命令(适用快速查看整体内容,文件内容不能多)(重点掌握)【在公司里面经常使用这个命令来查看tomcat的日志信息】
cat install.log 它会查看该文件中所有的内容
补充命令:伪清屏命令clear
more功能:分页显示文件内容,还支持直接跳转行等功能。
more install.log
操作
Enter 向下n行,需要定义。默认为1行
空格键 向下滚动一屏 或 Ctrl+F
B 返回上一屏 或 Ctrl+B
q 退出more
less命令(比more要常用一点)
less功能:分页显示文件内容,操作更详细。
语法:less -mN install.log
-m 显示类似more命令的百分比
-N 显示每行的行号
tail命令
功能:用于显示指定文件末尾内容,不指定文件时,作为输入信息进行处理。常用查看日志文件。
格式:tail[必要参数][选择参数][文件]
-n<行数> 显示行数
-f 循环读取
ping 127.0.0.1 > ip.log &
tail -f ip.log
退出命令:ctrl+c
重点掌握:cat和less命令!
3.文件管理(文件操作)
使用alt+p键可以打开一个文件上传的窗口
cp命令:复制文件或目录。
cp 需要复制的文件 复制到哪里去
例如:cp test.txt test1 复制test.txt到子目录test1中去
cp test.txt /test1 复制test.txt到根目录test1中去
cp 需要复制的文件 复制到哪里去/改什么名字
例如:cp test.txt test1/hehe.txt 复制test.txt到子目录test1中,并改名为hehe.txt
cp –r 需要复制的文件 复制到哪里去
例如:cp –r test test1 复制test目录及其所有内容到当前目录下,改名为test1
mv命令(移动/剪切)
mv 需要移动的文件 移动的位置
例如:mv hehe.txt test 把hehe.txt移动到test子目录中
mv 需要移动的文件 移动的位置/改为什么名
例如:mv ip.log test/lg 把ip.log移动到子目录test中,并更名为lg
rm命令(删除)
rm(remove) rm 功能:删除文件或目录。
语法:rm [-dfirv][--help][--version][文件或目录...]
-f或--force 强制删除文件或目录。
-r或-R或--recursive 递归处理,将指定目录下的所有文件及子目录一并处理。
重点掌握:rm –rf 需要删除的文件/目录
例如:rm -rf test 会将test目录及其所有子目录和文件一并删除
find命令(查询)
find 目录 -name '关键字(可以模糊)'
find ./ -name '*log'
4.文档编辑
vim命令:可以修改指定的文件内容【要求:会使用这个命令修改配置文件,比如web.xml】
vim web.xml :先进入文件中去(一般模式)
i :切换到编辑模式
Esc: 从编辑模式切换到一般模式
:q! :退出不保存
:wq :保存退出
grep命令:根据指定的内容查找指定文件的内容
grep -i mtr ./install.log --color
-i :参数,表示忽略大小写
mtr:指定的内容
install.log:指定的文件
--color :指定的内容(mtr)会高亮
|管道命令:
作用是“命令1”的输出内容,将作为“命令2”的输入内容。
例如:ll -h | grep -i wel ./web.xml -- color 【你得先进入web.xm文件所在目录】
5.系统命令
ps命令:查看所有的进程
ps -ef
kill命令;结束某个进程
kill -9 pid
ifconfig命令:查看IP地址
ping命令:测试连接是否成功
ping ip或者域名
重启:reboot
关机:halt
6.压缩和解压缩命令【f必须在最后,其它的顺序随意】
压缩命令:tar -zcvf
例如:tar -zcvf hehe.tar.gz ./abc/
hehe.tar.gz:压缩之后的文件名
./abc/:将abc目录下所有的文件进行压缩
解压缩命令:tar -zxvf 【重点掌握】
例如:tar -zxvf hehe.tar.gz
============================================================
1.安装JDK
2.安装MySQL
3.安装Tomcat
4.学习Redis数据类型(String)
在安装一下软件的时候请先安装相关的依赖!!!
#JAVA依赖
yum install glibc.i686
yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6
yum update libstdc++-4.4.7-4.el6.x86_64 【这个安不上,是因为你之前没有联网装OS】
#redis的依赖
yum install gcc-c++
JDK安装:
第一步:上传JDK安装包
alt+p弹出上传窗口,将安装包拖拽进去
第二步:在usr目录下面创建一个目录
mkdir -p /usr/local/src/java
第三步:将用户主目录的JDK安装包移动(剪切)到/usr/local/src/java目录下
mv jdkxxxxxx /usr/local/src/java
第四步:解压jdk安装包
tar -zxvf jdkxxxxxxxx
第五步:编辑配置文件(etc目录下面)
vim /etc/profile
(在~目录下操作 注意vim后面有空格)
输入i进入编辑模式,在文件的末尾添加如下两行代码:
export JAVA_HOME=/usr/local/src/java/jdk1.7.0_71
export PATH=$JAVA_HOME/bin:$PATH
输入ESC从编辑模式切换到一般模式
输入:wq保存配置内容并退出
第六步:测试:
输入java -verison
如果出现了:
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b14)
说明JDK安装成功!!!
Tomcat安装
第一步:上传Tomcat安装包
alt+p打开文件上传窗口,将安装包拽进去
第二步:在usr目录下创建一个目录
mkdir -p /usr/local/src/java
第三步:移动安装包到第二步创建的目录中去
mv tomcatxxxx /usr/local/src/java
第四步:解压安装包
tar -zxvf tomcatxxxxxx
第五步:删除安装包
rm apaxxxxx.tar.gz
然后输入yes或者y
第六步:关闭防火墙
service iptables stop
第七步:启动tomcat
首先进入tomcat的bin目录
cd /usr/local/src/java/
启动服务器
./startup.sh
如果出现:
java/tomcat7/apache-tomcat-7.0.57/bin/tomcat-juli.jar
Tomcat started.
说明Tomcat安装成功并且成功启动了!你可以测试一下是否可以成功访问!!!
第八步:在浏览器中进行测试
http://192.168.70.128:8080 如果出现了tom猫,证明全部OK的!
MySQL安装
第一步:查看当前版本并写在
查看输入命令:
rpm -qa | grep -i mysql
卸载已有的版本
yum remove mysql-libs-5.1.71-1.el6.i686
如果你安装一次MySQL之后不能正常操作,可以再次试用yum remove命令将现有的MySQL卸载掉。
第二步:上传mysql安装包(rpm文件)
alt+p打开文件上传窗口,将安装包拽进去
第三步:执行安装命令
yum install MySQL-*.rpm
中途选择Y按Enter键
出现
Complete!
说明安装成功!
第四步:开启mysql服务
service msyql start
第五步:关闭防火墙
service iptables stop
第六步:设置账号(不是必须的!)
进入mysql目录:
cd /usr/local/src/java/mysql
执行命令:
/usr/bin/mysqladmin –u root password ‘root’
你可以单独设置其它账号并授权,不用root账户!
第七步:虚拟机内部登录mysql
mysql -uroot -p
root
如果出现
mysql>
说明登录成功
可以查看里面的库进行验证
show databases
第八步:在window中运行Linux中的mysql
输入:
mysql -h 192.168.70.128 -uroot -proot
如果出现
mysql>
说明登录成功
然后可以操作数据库中的库和表了!!
Redis
它是一个非关系型数据库,它的优点是,适用大数据量和高并发的情形!!!!
目前使用这个数据的公司:新浪、GitHub
应用:
1.缓存(数据查询、短连接、新闻内容、商品内容等等)。(最多使用,变化不大)
2.分布式集群架构中的session分离。
Redis安装
1.先得安装相关依赖(先得安装虚拟机和OS以及CRT)
2.创建一个目录redis,将redis安装包上传并移动到这个目录中
创建目录:mkdir /usr/local/src/java/redis
剪切文件到指定目录:mv redisxxxxxxx /usr/local/src/java/redis
3.解压这个文件
解压:tar -zxvf redisxxxxxx
4.编译:
进入到redis的目录redis-3.0.0
输入 make
5.安装:
make PREFIX=/usr/local/src/java/redis install#安装到指定目录中
到redis-3.0.0文件夹下找到redis.conf文件 复制一份到 安装的bin目录下
编辑vim redis.conf 将no 改成yes
先进入redis目录
cd /usr/local/src/java/redis 【最终操作的是bin目录下面的内容】
执行启动命令:
./bin/redis-server ./redis.conf
Redis停止;
进入redis目录
cd /usr/local/src/java/redis
执行命令:
./redis-cli shutdown
Redis操作
连接Redis客户端
进入到redis的bin目录
cd /usr/local/src/java/redis/bin
执行启动命令:[6379是Redis的端口可以在第一个启动Redis服务窗口查看!]
./redis-cli -h 192.168.70.128 -p 6379
hgetall brands 查看hashMap集合使用
测试是否联通:
输入:ping 得到:pong
可以向Redis数据库中存放数据和获取数据了!!!
set设置值、get获取值、keys * 获得key
如果设置 set name 张三 【存的时候会编码!!!】
那么获取 get name 得到张三 【在控制台得到了是乱码,因为存的时候是什么,取的时候就是什么】
Redis进行操作的时候不要理会期编码!!!!!使用Jedis操作的时候进行讲解!!!存什么取什么。。。
String类型
设置值:
set name 名称(key)
例如:set age 18
获取值
get name
例如:get age
得到18
查看所有的key:
keys *
递增操作:
incr key
例如:incr num :如果num不存在,那么其默认值为0.执行结果为1;如果存在,在原有值的基础上+1
递减操作:
decr key
例如:decr hehe :如果hehe不存在,那么其值默认为0,执行结果为-1;如果存在,在原有值的基础上-1
递增到n操作
incrby key n
例如: incrby key 10 ,在原有的基础上加10
删除操作:
del key
============================================================
一、Redis里面剩余的三种数据结构类型
1.list结构数据类型
A:在操作之前启动redis服务
先进入redis目录:cd /usr/local/src/java/redis
执行启动命令:./bin/redis-server ./redis.conf
B:连接redis
也得先进入到bin目录:cd /usr/local/src/java/redis
执行连接操作:./redis-cli -h 192.168.70.128 -p 6379
C:操作list结构的数据:
【从左侧存值】
lpush key values[value1 value2…]:在指定的key所关联的list的头部插入所有的values。
如果该key不存在,该命令在插入的之前创建一个与该key关联的空链表,之后再向该链表的头部插入数据。插入成功,返回元素的个数。
(l:left ;push:推)
假设redis里面没有mylist1,然后执行 lpush mylist1 1,那么里面就有一个数据(它会先创建一个名为mylist1的链表结构),数据为1
可以查看里面的数据:
lrange mylist1 0 -1
再次向里面添加数据:
lpush mylist1 a b c
那么查询得到的结果是:c b a 1 【类似于压栈的效果】
角标会发生变化:ArrayList链接结构里面数据会发生位移,角标会跟着变
mylist1
c b a 1
0 1 2 3
【从右侧存值】
rpush key values[value1、value2…]:在该list的尾部添加元素。(r:right ;push:推)
现在向mylist1中添加数据(从右侧)
rpush mylist1 a b c
那么结果是:【角标从左到右是逐渐变大的,从左侧插入数据的角标是正数,从右侧插入的是负数(负数中-1最大)】
c b a 1 a b c
0 1 2 3 -3 -2 -1
【查看数据】
lrange key start end key:list集合的名称;start:起始索引(0);end;结束索引(-1)
可以查看list集合中的数据:
lrange mylist 0 -1
得到结果:c b a 1 a b c
【删除数据】
A:从左侧弹出(删除)数据
lpop key:返回并弹出指定的key关联的链表中的第一个元素,即头部元素。如果该key不存在,返回nil;
若key存在,则返回链表的头部元素。
执行删除操作:lpop mylist1 得到的结果是 c ,最终的数据是:b a 1 a b c
查看最终的结果:lrange mylist1 0 -1 结果为:b a 1 a b c
B:从右侧弹出(删除)数据
rpop key:返回并弹出指定的key关联的链表中的最后一个元素,即尾部元素。如果该key不存在,返回nil;
若key存在,则返回链表的尾部元素。
执行删除操作:rpop mylist1 得到的结果:c ,最终结果是:b a 1 a b
查看最终结果:lrange mylist1 0 -1 结果为:b a 1 a b
【获取元素的个数】
llen key:返回指定的key关联的链表中的元素的数量。
执行查看个数操作:llen mylist1 ,得到的结果是:5
【插入数据:key存在】
lpushx key value:仅当参数中指定的key存在时,向关联的list的头部插入value。如果不存在,将不进行插入。
执行插入操作:lpushx mylist1 o 【mylist1存在,插入成功】
查看结果:lrange mylist1 0 -1 结果为:o b a 1 a b
执行插入操作:lpushx mylist2 o 【mylist2不存在,插入失败】
查看结果:里面没有任何数据(empty) lrange mylist2 0 -1 结果为: (empty list or set)
rpushx key value:仅当参数中指定的key存在时,向关联的list的尾部插入value。如果不存在,将不进行插入。
执行插入操作:rpushx mylist1 o 【mylist1存在,插入成功】
查看结果:lrange mylist1 0 -1 结果为:o b a 1 a b o
执行插入操作:rpushx mylist2 o 【mylist2不存在,插入失败】
查看结果:里面没有任何数据(empty) lrange mylist2 0 -1 结果为: (empty list or set)
【删除数据:删除指定个数的指定元素】 count:要删除的个数(如果为正数,表示从左侧删除;如果为负数,表示从右侧删除) value:要删除的元素
lrem key count value:删除count个值为value的元素,如果count大于0,从头向尾遍历并删除count个值为value的元素,
如果count小于0,则从尾向头遍历并删除。如果count等于0,则删除链表中所有等于value的元素。
先准备一些数据
执行:lpush mylist2 a b c ,执行三次!!!
查看结果:lrange mylist2 0 -1 ,结果为:c b a c b a c b a
执行删除操作:lrem mylist2 2 c ,结果为:b a b a c b a
执行删除操作:lrem mylist2 -2 b ,结果为:b a a c a
lset key index value:设置链表中的index的脚标的元素值value,0代表链表的头元素,-1代表链表的尾元素。
操作链表的脚标不存在则抛异常。
【index:角标;value:被设置的值】
查看mylist2中数据的个数:llen mylist2 结果为:5
执行替换操作:lset mylist2 2 x ,结果为:b a x c a
【将角标为2的元素给替换掉】
再次执行替换操作:lset mylist2 5 o ,结果为:(error) ERR index out of range
【里面总共只有5个元素,最大角标为4】
D:list的应用场景:
用于消息队列:如果从左侧输入数据(生产者:lpush),然后从右侧取出数据(消费者:rpop),当取出消息是发生了状态,那么会存在问题!!
解决:在取的时候将取出的数据进行备份(rpoplpush),直至取出操作正常结束,才将备份的数据删除!!!!
2.set结构数据类型
A:添加元素:sadd key value(value1,value2……)
执行添加操作:sadd myset1 a b c
执行查看操作:smembers myset1 ,结果为:a b c三个元素
B:删除操作:srem key members
执行删除操作:srem myset1 c
执行查看操作:smembers myset1 ,结果为:a b两个元素
C:查看元素:smembers key
执行查看操作:smembers myset1 ,结果为:a b两个元素
D:查看指定元素是否存在:sismember key member 【0:不存在;1:存在】
执行查看操作:sismember myset1 c ,结果为:0
E:应用场景;使用set类型的数据结构能够过跟踪一些唯一性的数据,比如IP地址(微博)
3.sorted-set结构数据类型
A:添加元素:(score可以重复,member不可以重复)
zadd key score member score2 member2 … :将所有成员以及该成员的分数存放到sorted-set中。
如果该元素已经存在则会用新的分数替换原有的分数。返回值是新加入到集合中的元素个数,不包含之前已经存在的元素。
执行添加操作:zadd mysort1 30 zhangsan 50 lisi 90 wangwu
再次执行:zadd mysort1 88 lisi 发现存储的个数还是3个!!!,但是lisi的分数被替换为88了
查看lisi的分数:zscore mysort1 lisi 结果为:88
B:获取指定成员的分数:
zscore key member :例如:zscore mysort1 lisi 结果为:88
C:获得成员的个数:
zcard key: 例如:zcard mysort1 结果为:4
D:删除元素:
zrem key member:
现在mysort1里面有四个元素:30 zhansan 88 lisi 90 wangwu 88 gangge
执行删除操作:zrem mysort1 zhangsan
查看元素的个数:zcard mysrot1 结果为:3
再次执行删除操作:zrem mysort1 lisi gangge
查看元素个数:zcard mysrot1 结果为:1 只有王五存在!
E:范围查找:
zrange key start end [withscores]:获取集合中脚标为start-end的成员,[withscores]参数表明返回的成员包含其分数。(withscores可选参数)
目前mysort1里面有四条记录: 【zadd mysort1 30 zhangsan 50 lisi 20 gangge】 结果:30 zhangsan 50 lisi 20 gangge 90 wangwu
执行范围查找操作:zrange mysort1 0 2 结果:zhangsan lisi gangge
执行范围查找带分数操作:zrange mysort1 0 2 withscores 结果为:gangge 20 zhangsan 30 lisi 50
倒序(大到小):zrevrange mysort1 0 -1 withscores 结果为:wangwu 90 lisi 50 zhangsan 30 gangge 20
F:应用常见:
游戏排名,微博热门话题排名
二、使用Java操作Redis数据(存值和取值)
Jedis:使用java操作Redis中的数据!
操作步骤:使用前提:请关闭防火墙
前提:执行命令:service iptables stop
第一步:导入jar包(commons-pool2-2.3.jar和jedis-2.7.0.jar)
第二步:通过构造方法获得Jedis对象,在构造方法中需要指定2个参数(IP地址和端口号)
@Test
public void test(){
//1.获得Jedis对象
Jedis jedis = JedisUtils.getJedis();
//2.设置值
jedis.lpush("mylist3", "宝强绿");
//3.获取值
List<String> result = jedis.lrange("mylist3", 0, -1);
//4.输出数据
for (String string : result) {
System.out.println(string);
}
}
把linux系统图形化改成命令行
把5改成3
============================================================================
zookeeper在linux中的安装步骤
1.将文件上传到root根标签中(
在CRT中 使用快捷键alt+p 记住要修改crt的编码为utf-8,否则会乱码 或者使用linux的工具filezilla.exe上传)
2.在linux的文件下创建zookeeper目录
进入cd /usr/local目录 创建目录 mkdir zookeeper
3.将压缩包移动到该目录下