linux

Linux学习笔记

1.window和linux区别

    Window 适合民用,娱乐。有强大的日志系统和桌面应用。但是容易卡(持续不断的进行日志和持续不断的进行桌面应用渲染)

    Linux  正规开发一般是用linux

    正规项目部署在linux上

2.linux历史

     Linux诞生在90年代,是仿制unix而来。Unix是商业版,需要收费。Unix免费版功能比较少。一般公司用unix都是用商业版,付费。

    Unix有的功能linux都有,linux比unix还强大。linux正在逐渐替代unix。Unix不是开源的,Linux是开源的,免费的。

    Linux使用场景,服务器操作系统,移动设备(安卓手机,平板电脑安卓系统),安卓操作系统底层是linux,无线路由器(wifi),交换机,智能家居,java程序开发慢慢移植到linux上

3.linux版本

    

    Linux内核版本:linux内核运维开发小组。  相当于 苹果6  苹果7

                  内核版本源码在一定程度上不是开源的

    Linux发行版本:由各大互联网/软件公司定制  相当于 苹果6绿色的手机壳,苹果7彩色的手机壳

    外围的样式源码完全开放。

    一个内核版本是由多种多样的发行版本。

   Ubuntu:以强大的桌面应用为主,吸收了不少windows用户。因为桌面应用会在一定程度上大量占用系统资源,开发。服务器部署上,不会优先选择ubuntu

   CentOs:对服务器性能进行了一定程度的优化,性能比较高,比较稳定。

         服务器操作系统的优选CentOs

4.虚拟机

   虚拟机:是一台虚拟的计算机(由软件虚拟出来的计算机)

    虚拟记事本:记事本软件(虚拟的记事本)

   虚拟机安装:

       将杀毒软件关闭,将防火墙关闭。 22端口。

       使用管理员权限安装

       5个服务需要启动

5.Linux安装

    Linux有一个超级管理员,用户名root,密码安装的时候设置

6.CRT远程连接Linux

    远程连接。

    CRT是远程连接linux工具。

    鼠标右键  粘贴

    文件上传  alt+p 上传窗口

    Linux桌面  /root,上传的文件可以在 root目录中寻找。

7.Linux命令

Java程序员只用几个目录

    /  根目录

    etc  系统配置文件存放目录。防火墙,网络设置文件,jdk环境配置文件,mysql配置文件,redis配置文件。

    usr  应用程序存放目录。jdk,tomcat,mysql,redis,nginx

    root  系统管理员root的家目录。

         每个用户都有一个家目录。只需记住超级管理员root家目录是  /root,相当于window的桌面,所有的操作都是从root目录开始的,~代表家目录。

    以上的建议并不是强制性约束。

    Linux中的参数一般是无序的  如  ls  -al 、  ls  -la 特殊情况下除外。

    Ifconfig查看ip

    ls命令

    ls(查看目录)

    ls  -a或者-all(展示出所有的文件,有隐藏的文件,带点的是隐藏文件或者隐藏文件夹)

    ls  -l(竖着展示列表)  简写为 ll

    ls  -al

    ls –lah   简写为ll  -h(比较友好的展示,比如单位字节变成K)

需求:想要查看 /etc下的内容   ll  -h  /etc

d表示目录(文件夹)  -表示文件夹  l表示 链接

   cd命令

   cd  ../(或者cd  ..) (向上一层目录)

   cd  /(切换到linux的根目录)

   cd  /目录名  切换到指定目录中     /目录名  是linux的绝对路径

   cd  ~(直接切换到当前用户的家目录中,root用户的家目录是  root目录)

   cd  -(切换到上一次目录)

   Linux绝对路径(一般用这个):cd  /etc/x1  (先切换到/目录,然后在/目录中找到etc,在etc中找到子目录x1),在任意目录都可以用这个命令进行切换

   Linux相对路径:cd  x1/x2   在当前目录中找子目录x1,在x1中找子目录x2.必须确定在当前目录下有子目录x1.

   pwd命令

   pwd(显示工作目录)

   makdir  t1(创建目录)

   需求:需要在/root/t1  目录下创建t2目录

   位置:/root

   命令:mkdir  t1/t2  (相对路径)

         mkdir  /root/t1/t2(绝对路径)

   需求:需要在 /root/t3  目录下创建一个t4目录

   位置:/root

   条件:t3和t4都不存在

   命令:mkdir  -p  t3/t4(父目录不存在的时候自动创建父目录)

   mkdir  -p  文件夹名称(以后就这么玩)

   rmdir  文件夹名称,不常用(删除空目录)

   文件浏览命令

   日志文件,xml文件,properties文件

   cat  文件名(快捷查看当前文件的内容)适合查看少量信息的文件

   more  文件名  (分页显示文件内容,还支持直接跳转行等功能。)适合查看大文件

        操作:

            Enter    向下n行,需要定义。默认1行。

            空格键  向下滚动一屏  或  ctrl+F

            B       返回上一屏  或  ctrl+B

            q       退出more

   less  -mN 文件名  (可以分页查看文件内容,标志每行的行号)   适合大文件查看

        参数:

            -m  显示类似more命令的百分比

            -N   显示每行的行号。

   tail  -数字  文件名   可以查看文件后几行的内容。

   tail  -10  文件名  查看文件的后10行内容

文件操作命令

   文件复制

   cp  (复制文件或者复制目录)

   cp  需要复制的文件  复制的位置  

   需求:把/root/Demo1.java文件 复制到  /root/t1   目录中

   位置:/root

   命令:cp  Demo1.java  t1(这种玩法是相对目录的玩法)

         cp  /root/Demo1.java  /root/t1(这种玩法是绝对路径玩法)

 

   需求:把/root/Demo1.java文件 复制到  /root/t1   目录中,改名为ddd.java

   位置:/root

   命令:cp  Demo1.java  t1/ddd.java(这种玩法是相对目录的玩法)

         cp  /root/Demo1.java  /root/t1/ddd.java(这种玩法是绝对路径玩法)

   复制目录

   cp  -r(r参数是递归处理)需要复制的目录  复制的位置

   需求:把/root/t5 目录  复制到    /root/t1 目录中

   位置:/root

   命令:cp  -r  t5  t1  (相对路径玩法)

         cp  -r  /root/t5  /root/t1(绝对路径玩法)

   mv命令

   文件/目录 移动

   mv  需要移动的文件  移动的位置

   需求:把/root/t5  目录  移动到  /root/t3  目录中

   位置:/root

   命令:mv  t5  t3

 

需求:把/root/t5  目录  移动到  /root/t3  目录中(不询问,直接覆盖)

   位置:/root

   已知:/root/t3目录中  已经有一个t5目录了

   命令:mv  -f  t5  t3

   文件/目录的更名操作

   需求:把/root/Demo1.java  改名为  here.java

   位置:/root

   命令:mv  Demo1.java  here.java

   文件删除

   删除文件

   rm  文件名

   rm  -f  文件名(不询问)

   删除目录

   rm  -rf  目录名(删除目录下的所有目录)(r是递归处理,f是不询问)

   需求:删除 /root/t5  目录

   位置:/root

   已知:t5目录下有子目录或者文件

   命令:rm  -rf  t5

   注意:rm  -rf  *(删除当前目录下的所有内容)

         rm  -rf  /*(删除linux系统根目录下所有内容)

   find命令(查找命令)

   find  目录名  -name  ‘需要查找的字符串’

   find  /root  -name  ‘ins*’

   需求:查找 /root目录下  所有以ins开头的文件或者目录

   位置:/root

   命令:find  /root  -name  ‘ins*’

   文件编辑

   Window有记事本

   Linux也有类似记事本的功能

   vim 命令

   一般模式:可以浏览文件内容,可以进行文本快捷操作。单行复制,多行复制,单行删除,多行删除。。。(按i键可以进入插入模式,按:可以切换到底行模式)

   插入模式:可以编辑文件内容。按(esc键切回一般模式)

   底行模式:可以进行强制退出操作。q!(这个不保存)

可以进行保存并退出。Wq

 

   grep和管道

   grep是正则表达式,可以字符串的搜索工作。

   格式:grep 需要搜索的字符串  搜索的文件名

   符合规则就会返回符合规则的行。

   grep  -i   忽略大小写查询数据

   管道命令:可以连接多个Linux命令

   |  shift+\

   命令1 | 命令2  |命令3

   需求:查询当前目录中所有带ins的行数据

   位置:/root

   思考:查询当前目录  ll

        查询字符串,返回字符串所在行  grep

   命令: ll  | grep  ins

 

   压缩、解压命令【重要】

   Linux压缩包  *.tar(打包,大小不会进行压缩)  

                *.tar.gz(打包并压缩文件的大小)

   压缩:

   tar  -zcvf  压缩包名字.tar.gz   需要压缩的内容

   例如:tar  -zcvf  hehe.tar.gz  *  将当前目录下所有内容进行打包压缩,生成压缩文件  hehe.tar.gz

   解压

   tar  -zxvf   需要解压的压缩包名称   解压到当前目录

   tar  -zxvf   需要解压的压缩包名称   -C  指定压缩目录   解压到指定目录中

   需求:需要把/root/t5/hehe.tar.gz 压缩包  解压到指定目录中。指定目录是/root/t5/t5

   位置:/root/t5

   命令:tar  -zxvf  hehe.tar.gz  -C  /root/t5/t5

      tar  -zxvf  hehe.tar.gz  -C   t5

   系统命令

   查看系统进程

   ps  -ef

   需求:查看进程中和 vim相关的进程

   命令:ps  -ef | grep  -i  vim

   杀死进程

   kill  -9  pid号

   需求:查看进程  和 vim相关的进程有哪些,并将vim进程杀死

   命令:ps  -ef | grep  -i  vim

        kill  -9  pid号

   Ifconfig(查看网络配置)

   ping  ip地址(测试和目标的连通性)会持续不断一直测试,ctrl+c退出

   reboot(重启CentOs)

   halt(直接关机)

   其他命令

   网络设置  setup  建议使用CRT运行  setup  这个会显示中文

   文件权限

   第一部分:第一位,文件的类型(d目录,-普通文件,|超链接文件)

   第二部分:所属用户权限。文件属于哪个用户  u

   第三部分:所属组权限。  所属用户所在组别  g

   第四部分:其他用户权限。 文件不属于该用户,不属于该用户所在组。  O

            所有用户  a

   r   read  读取权限

   w  write  写入权限

   x         执行权限

   -         没有权限

   权限更改

   chmod  权限设置  需要更改权限的文件名

   更改Demo1.java  所属用户的权限为所有权限  chmod u=rwx Demo1.java

   更改Demo1.java  所属组  用户权限为r-x  chmod g=rx Demo1.java

   更改Demo1.java  所有用户  用户权限为r  chmod a=r Demo1.java

   更改文件夹权限

   chmod  -R 权限设置  需要更改权限的目录名

   更改t1文件夹中所有文件的权限。所属用户的权限  r--  chmod -R  u=r  t1

Linux安装jdk,mysql,jdk

1.准备工作

   Window 控制面板  添加/卸载程序

   进行程序安装、更新、卸载、查看。

   Setup.exe

   rpm命令:相当于winow的添加/卸载程序

            进行程序的安葬、更新、卸载、查看。

            本地程序的安装:rpm  -ivh  程序名

            本地程序查看: rpm  -qa

            本地程序卸载:rpm  -e  --nodeps  程序名

   yum命令:相当于可以联网的rpm命令

             相当于先联网下载程序安装包、程序的更新包

             自动执行rpm命令

 

   rpm  -qa(q是查询,a是所有)  查看(linux系统安装的程序)

   rpm -qa | grep -i java

   java  –version

      rpm -qa | grep -i java

      rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64

      rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64

      java –version

Linux安装JDK

 

#set java environment

JAVA_HOME=/usr/local/java/jdk1.7.0_79

CLASSPATH=.:$JAVA_HOME/lib.tools.jar

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME CLASSPATH PATH

     

     source /etc/profile

Linux安装Mysql

  /usr/bin/mysqladmin -u root password '123456'

   chkconfig --add mysql(加入到系统服务中)

   chkconfig mysql on(开启自动启动)

   chkconfig mysql off(关闭自动启动)

   grant all  privileges on *.* to 'root' @'%'identified by '123456';

   flush privileges;

   /sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT

   /etc/rc.d/init.d/iptables save

Linux安装tomcat

   ./是当前目录

   ./startup.sh

   /sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

   /etc/rc.d/init.d/iptables save

Linux安装redis

   关系型数据库(SQL)

     Mysql,oracle 

     特点:数据和数据之间,表和字段之间,表和表之间是存在关系的。

     例如:部门 001部门  员工表 001

           用户表,用户名、密码

           分类表 和商品表,一对多关系。

     优点:1)数据之间有关系,进行数据的增删改查时非常方便的。

           2)关系型数据库,有事务操作。保证数据的完整性。

     缺点:1)因为数据和数据之间是有关系的,关系是由底层大量算法保证的。

              大量算法会拉低系统的运行速度

              大量算法会消耗系统资源

           2)海量数据的增删改查会显得无能为力。某些操作很可能宕机

           3)海量数据环境 下对数据表进行维护,也会变得无能为力。

    适合处理一般量级的数据,数据安全。(钱)

   非关系型数据库(NOSQL)

   为了处理海量数据,需要将关系型数据库的关系  去掉。

   非关系型数据库设计之初 是为了替代 关系型数据库的。

   Redis

   优点:1)海量数据的增删改查非常轻松应对。

         2)海量数据的维护非常轻松。

   缺点:1)数据和数据之间没有关系,所以不能一目了然。

         2)非关系型数据库,没有关系,没有强大的事务保证数据的 完整和安全。

   适合处理海量数据,有效率,数据不一定安全。(统计数据(不重要的数据),奥运健儿奖牌总数)查询频繁。

   关系型数据库+非关系型数据库===》项目

     |                 |

   重要数据      海量操作数据,数据不重要

   Redis的使用环境

   1)关系型数据库的缓存存在。

   2)可以作任务队列

   3)大量数据运算

   4)排行榜(微博热搜)redis非常擅长做大量数据的排行榜

 

NoSQL

 

  

安装redis

   tar -zxvf redis-3.0.7.tar.gz

   cd 

   make(编译)

    make PREFIX=/usr/local/redis  install(安装)

   前端启动(了解,无法部署集群)

   命令:./bin/redis-server

   集群{[1][2][3][4]}4个计算机连在一起

   运行redis客户端

    ./bin/redis-cli -h 127.0.0.1 -p 6379

   Redis后端启动

   daemonize  yes(redis.conf)

   ./bin/redis-server ./redis.conf

    ./bin/redis-cli shutdown(客户端启用shutdown命令)

   Redis数据类型

   redis使用键值对保存数据(map)

   key全部都是字符串

   value有5种数据类型:

   key名字是自定义的

   注意:key名不要过长,否则影响使用效率

        Key不要过短,最好是有意义。

   二进制安全和数据安全是没有关系的。

   Mysql关系型数据库,二进制不安全【乱码丢失数据】

  Redis二进制数据安全。

   赋值

   incrby  num1   10

   decrby  num1   10

   String使用环境:

         主要用于保存json格式的字符串

   hset hash1 uname zhangsan

   hget hash1 uname

   hmset hash2 uname zhangsan age 18 sex man

   hmget hash2 uname age

   hgetall hash2

   del hash2

   hincrby hash1 age 10(只能操作数字)

   hexists hash1 uname(判断uname是否存在)

   hlen hash1(hash1有多少个字段)

   hkeys hash1 (返回所有的key)

   hvals hash1  (返回所有的values)

   keys  *

 

   Redis有什么命令,jedis就有什么方法。

    Jedis   jedis=new Jedis(“192.168.236.123”,6379);

   Jedis连接池

   抽取连接池工具

   Redis-LinkedList【重点】

   Java  list:数组ArrayList

           链表LinkedList

 

   为什么redis选取了链表?

   Redis操作中,最多的操作是进行元素的增删。

   使用环境:1)做大数据的增删。

             2)做任务队列

   lpush list2 a b c d

   rpush list2 a b c d

   lrange list1 0 3

   lrange list1 0 -1

   llen list2

   扩展命令:

 

   Set

   Java HashSet  无序,不重复。

   Redis操作中,涉及到两个大数据集合的并集,交集,差集运算

 

 

   扩展命令

   有序set集合:有序,不重复

   小明,小红,小张  每个元素都需要手动赋予一个分数。

   5000 小明  1000小红  500小张

   集合  500 小张

        1000 小红

        5000 小明

  集合倒序:

          5000 小明

          1000 小红

          500 小张

   有序set集合,专门用来做排行榜。

   通用命令

   keys ?????  (匹配4位)

   默认时间是永久时间

   订阅新闻,新闻的发布

   move username 1(把当前username移动到1号数据库中)

   清空当前数据库:flushdb

   清空redis中所有数据库:flushall

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值