本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为“云同桌”。

每月预计保持更新数量三章起,每章都会从整体框架入手,介绍章节所涉及的重要知识点及相关练习题,并会设置推荐学习时间,每篇博客涉及到的点都会在开篇目录进行总览。(博客中所有高亮部分表示是面试题进阶考点)


阔别两个星期,博主也对前面所学的技术进行了一个实践,完成了自己的毕业设计项目,不知道各位小伙伴下去有没有练练手呢?接下来我们就要进行框架的学习了,所谓磨刀不误砍柴功,在此之前,还需要大概三、四章的内容学习几个额外的知识点。

Linux系统

    • 1.Linux系统发展与概述
    • 2. Linux系统的安装
    • 3. Linux系统目录结构
    • 4. ==Linux系统常用命令==
    • 5. ==Linux文件权限==
    • 6. Shell脚本编程
      • 6.1 运行shell脚本
      • 6.2 shell脚本变量
      • 6.3 Shell数组
      • 6.4 shell接收外部参数
      • 6.5 shell运算符
      • 6.6 常用命令
      • 6.7 流程控制
      • 6.8 shell函数
    • 7.Xshell与SecureFXPortable工具
  • 8. Ubuntu18.0.4 配置静态IP地址

学习时间:四天
学习建议:大多数Java项目的运行环境都是Linux系统,包括由于Linux系统的特性,服务器所用的系统也都是Linux系统,因此,学会Linux系统是非常必要的。

1.Linux系统发展与概述

当前主流的操作系统,主要是两大分支:Windows系统和Unix系统

而Unix系统又逐渐发展为两大分支,一个便是大名鼎鼎的苹果的操作系统——Mac系统,而对于我等贫穷人民来说,更受欢迎的另一个免费、开源、稳定可移植性高的类Unix系统——Linux系统

也正是因为上述的特点,Linux的发展极快,已经成为了IT行业的主流操作系统,大多数服务器的主要需求便是:安全性、稳定性、高效性

如果是window是很难这些要求的,所以一般企业级用户会选择unix和linux。
对于我们作为应用程序开发者来选择OS:开发的时候可能会用到window或者unix,但是在部署的时候大多数都是unix.所以就需要对unix有一定的了解。

2. Linux系统的安装

  1. 如果你有钱,可以购买苹果电脑来使用Unix系统,这是最方便简单的步骤

  2. 如果你没钱(譬如博主),就比较麻烦了,需要通过在Windows系统上安装虚拟机然后通过发行版镜像来使用Linux

    1. 安装VMware虚拟机
    2. Linux发行版镜像下载(博主使用的是Ubuntu)
    3. Linux系统安装图文讲解

3. Linux系统目录结构

在 Linux 或 Unix 操作系统中,所有的文件和目录都被组织成以一个根节点开始的倒置的树状结构。

文件系统的最顶层是由根目录开始的,系统使用 / 来表示根目录。在根目录之下的既可以是目录,也可以是文件,而每一个目录中又可以包含子目录文件。如此反复就可以构成一个庞大的文件系统。


开发人员首要关注的目录为:

配置目录/etc:软件安装后配置文件选择放入的地址。
软件安装目录/opt:部署的API程序一般放在这个目录。

此外:

bin 存放二进制可执行文件(ls,cat,mkdir等)
boot 存放用于系统引导时使用的各种文件
dev 用于存放设备文件
home 存放所有用户文件的根目录
lib 存放跟文件系统中的程序运行所需要的共享库及内核模块
mnt 系统管理员安装临时文件系统的安装点
usr 用于存放系统应用程序,比较重要的目录/usr/local 本地管理员软件安装目录

4. Linux系统常用命令

建议查看更加详细的菜鸟编程-linux系统

命令 描述
pwd 查看当前所在路径
ls -l 查看目录内容详细信息
mkdir 创建新文件夹目录
cd 切换目录
touch 创建新文件
cat 查看文件内容
more 分页查看文件内容,空格换页
cp 复制文件
rm 删除文件
uname -a 显示详细系统信息
top 查看当前进程耗时与占用,每3秒刷新一次,ctrl+c中断退出
ps -aux 查看当前进程快照
kill -9 进程PID 强制杀死该PID对应的进程
grep 关键字查询,可以使用管道|来结合其他命令使用,如查看java进程:ps -aux | grep java
du -sh 查看文件大小
df -lh 查看磁盘使用情况
ifconfig 查看或配置网卡信息
netstat -anp | grep 端口号 查看某个端口的占用情况
命令 --help 命令参数提示
sudo 命令 临时管理员身份执行命令
su 切换为管理员root身份
gedit 使用Ubuntu自带的编辑器
  • 向文件写入内容:
    echo “内容” >文件名 输出流覆盖写入文件aa.txt
    echo "内容" >> 文件名 输出流追加写入文件aa.txt

    使用Vi编辑器:vi 文件名

    vi编辑器命令 描述
    dd 删除光标所在当前行
    ndd 删除从光标所在行向下的n行内容
    yy 复制当前行
    nyy 复制多行
    p 黏贴复制的内容
    u 反悔 相当于windows系统下的ctrl+z
    $ 光标到行位最后一个字符
    0 光标到行首第一个字符
    a 进入编辑模式,光标定位到当前位置的下一个字符位
    o 进入编辑模式, 光标定位到当前位置的下一行
    A 进入编辑模式, 光标直接定位到行尾
    O 进入编辑模式, 光标定位到当前位置的上一行
    I 进入编辑模式, 光标定位到当前行第一个非空的字符位
  • 查看端口相关netstat

    常用参数:

      -a或--all:显示所有连线中的Socket;-l或--listening:显示监控中的服务器的Socket;-n或--numeric:直接使用ip地址,而不通过域名服务器;-p或--programs:显示正在使用Socket的程序识别码和程序名称;-t或--tcp:显示TCP传输协议的连线状况;
    
  • 打包与拆包

    tar - cxzjvf <打包后的文件> <欲打包的目录>

       c :创建的一个归档文件x :拆包z :以gzip 格式压缩 j :以bzip2格式压缩v :显示打包或者拆包的文件信息f : 后面紧接一个 归档文件打包及压缩:tar -czvf 打包后的文件名.gz 打包后的路径拆包及解压缩: tar -xzvf 待解压的文件名.gz
    
  • 安装文件命令

    • yum(用于Fedora 和 RedHat):yum [options] [command] [package ...]

        options:可选,选项包括-h(帮助),-y(当安装过程提示选择全部为 "yes"),-q(不显示安装的过程)等等。command:要进行的操作。package:安装的包名。
      
    • apt(用于 Debian 和 Ubuntu ):apt [options] [command] [package ...]

        options:可选,选项包括 -h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。command:要进行的操作。package:安装的包名。
      

5. Linux文件权限


① 字母选项方式chmod u   // u代表设置主的权限chmod g    // g代表设置组的权限chmod o // o 代表设置其他用户权限chmod a  // 设置所有用户的权限
权限操作符:  +  增加权限   - 撤销权限   = 赋予新的权限,会覆盖掉之前
② 采用数字的方式操作我们将每一个权限为看成二进制的1或0,对应权限为有权限为 1,没有为0。r--   换算为10进制为  4-w-   换算为10进制为  2--x   换算为10进制为  1
比如: 给一个文件设置权限  rw-r—r—可以写为   chmod  644  filename

6. Shell脚本编程

推荐阅读:菜鸟编程-linux教程
Shell 是一种命令语言,也是一种程序设计语言。
Shell 脚本(shell script),是一种为 shell 编写的脚本程序。

本次我们学的是Bourne Again Shell(/bin/bash),也是就Bash,Bash 也是大多数Linux 系统默认的 Shell。

6.1 运行shell脚本

  1. 作为可执行程序

     chmod +x ./test.sh  #使脚本具有执行权限./test.sh  #执行脚本
    

    注意,要写成 ./test.sh,而不是 test.sh

  2. 作为解释器参数

    这种运行方式是,直接运行解释器,其参数就是 shell 脚本的文件名,如:

     /bin/sh test.sh/bin/php test.php
    

6.2 shell脚本变量

定义变量时,可以直接进行定义

test=“this is a test”

使用变量时,需要在定义好的变量前用美元$符号表示,以及用{}包裹

echo ${test}

只读变量:(类似与java的常量)使变量不可以被改变

readonly test

删除变量:被删除的变量不可以再使用,只读变量不可被删除

unset variable_name

字符串变量创建:

  • 单引号:单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;
  • 双引号:双引号里可以有变量,双引号里可以出现转义字符
your_name="runoob"
# 使用双引号拼接
greeting="hello, "$your_name" !"
greeting_1="hello, ${your_name} !"
echo $greeting  $greeting_1
# 使用单引号拼接
greeting_2='hello, '$your_name' !'
greeting_3='hello, ${your_name} !'
echo $greeting_2  $greeting_3

输出结果为:

hello, runoob ! hello, runoob !
hello, runoob ! hello, ${your_name} !

6.3 Shell数组

Bash中只支持一维数组,数组中可以存放多个值

array_name=(value1 value2 ... valuen)

同样,读取数组中的元素可以通过下标

${array_name[index]}

6.4 shell接收外部参数

在执行shell脚本程序时,可以顺便传递外部的参数

echo "Shell 传递参数实例!";
echo "执行的文件名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:$2";
echo "第三个参数为:$3";
参数处理 说明
$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数。如"$*“用「”」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$ 脚本运行的当前进程ID号
$! 后台运行的最后一个进程的ID号
$@ 与 ∗ 相 同 , 但 是 使 用 时 加 引 号 , 并 在 引 号 中 返 回 每 个 参 数 。 如 " *相同,但是使用时加引号,并在引号中返回每个参数。如" ∗相同,但是使用时加引号,并在引号中返回每个参数。如"@“用「”」括起来的情况、以"$1" “ 2 " … " 2" … " 2"…"n” 的形式输出所有参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

6.5 shell运算符

大多数运算符都是常用的运算符,但存在一些特殊的运算符需要了解一下

运算符 说明 举例
-eq 检测两个数是否相等,相等返回 true。 [ $a -eq $b ] 返回 false。
-ne 检测两个数是否不相等,不相等返回 true。 [ $a -ne $b ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true。 [ $a -gt $b ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true。 [ $a -lt $b ] 返回 true。
-ge 检测左边的数是否大于等于右边的,如果是,则返回 true。 [ $a -ge $b ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true。 [ $a -le $b ] 返回 true。
! 非运算,表达式为 true 则返回 false,否则返回 true。 [ ! false ] 返回 true。
-o 或运算,有一个表达式为 true 则返回 true。 [ $a -lt 20 -o $b -gt 100 ] 返回 true。
-a 与运算,两个表达式都为 true 才返回 true。 [ $a -lt 20 -a $b -gt 100 ] 返回 false。
= 检测两个字符串是否相等,相等返回 true。 [ $a = $b ] 返回 false。
!= 检测两个字符串是否相等,不相等返回 true。 [ $a != $b ] 返回 true。
-z 检测字符串长度是否为0,为0返回 true。 [ -z $a ] 返回 false。
-n 检测字符串长度是否不为 0,不为 0 返回 true。 [ -n “$a” ] 返回 true。
$ 检测字符串是否为空,不为空返回 true。 [ $a ] 返回 true。

6.6 常用命令

  • read:从标准输入流中读取一行,并把输入行的每个字段的值指定给 shell 变量

  • echo:输出命令

    • echo -e :可以开启转义

      echo -e "OK! \n" # -e 开启转义
      echo "It is a test"
      # 输出:
      #OK!
      #
      #It is a testecho -e "OK! \c" # -e 开启转义 \c 不换行
      echo "It is a test"
      #输出:
      #OK! It is a test
      
    • 输出命令的显示结果

      echo `date`
      # 注意此处是反引号,而不是单引号
      # 输出:
      #Thu Jul 24 10:08:46 CST 2014
      
  • test:用于检查某个条件是否成立

    num1=100
    num2=100
    if test $[num1] -eq $[num2]
    thenecho '两个数相等!'
    elseecho '两个数不相等!'
    fi
    # 输出:
    #两个数相等!
    

    可用于对文件类型的判断

    参数 说明
    -e 文件名 如果文件存在则为真
    -r 文件名 如果文件存在且可读则为真
    -w 文件名 如果文件存在且可写则为真
    -x 文件名 如果文件存在且可执行则为真
    -s 文件名 如果文件存在且至少有一个字符则为真
    -d 文件名 如果文件存在且为目录则为真
    -f 文件名 如果文件存在且为普通文件则为真
    -c 文件名 如果文件存在且为字符型特殊文件则为真
    -b 文件名 如果文件存在且为块特殊文件则为真

6.7 流程控制

  • if…else
if condition
thencommand1 command2...commandN
elsecommand
fi
  • for循环
for var in item1 item2 ... itemN
docommand1command2...commandN
done
  • while循环
while condition
docommand
done
  • case多分支选择语句
case 值 in
模式1)command1command2...commandN;;
模式2)command1command2...commandN;;
esac

6.8 shell函数

函数的使用非常简单

demoFun(){echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun
echo "-----函数执行完毕-----"

对于带有返回值的函数,需要通过$?来指代返回的数据

demoFun(){echo "这是我的第一个 shell 函数!"return 5
}
echo "-----函数开始执行-----"
demoFun
echo $?
echo "-----函数执行完毕-----"

7.Xshell与SecureFXPortable工具

  • Xshell 如遇问题请查看

    Xshell是一个强大的安全终端模拟软件,Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。同样,也可以用于连接我们的虚拟的linux系统

    找到Linux虚拟机的ip,新建一个Xshell会话,将主机地址设置为虚拟机的IP地址,即可实现连接,便可实现在Windows系统界面操作linux虚拟机,不用在主机与虚拟机之间来回进行切换

    如下图所示可以在Xshell中正常使用linux命令则连接成功

  • SecureFXPortable 如遇问题请查看

    SecureFXPortable是一个可以方便的与服务器交互文件的工具,也是类似与Xshell一样根据ip地址进行连接,连接成功后可以把Windows本地文件很方便的传输给虚拟机Linux

8. Ubuntu18.0.4 配置静态IP地址

首先,本次例子环境使用的是VMware15以及Ubuntu18.0.4

  1. 找到Windows主机的虚拟机网卡VMnet8,配置IP地址及网关、DNS解析器

  2. 将虚拟机网络连接模式改为NAT模式

  3. 修改/etc/netplan/01-network-manager-all.yaml文件,在其中配置自定义的IP地址,以及对应上面的网关、DNS

    network:version: 2ethernets:ens33:dhcp4: noaddresses: [192.168.188.131/24] #自定义ipgateway4: 192.168.188.2 #网关nameservers:addresses: [8.8.8.8,114.114.114.114] #DNS解析器地址
    
  4. 执行netplan apply使其生效即可

  5. 之后就可以ifconfig、ping外网进行测试了


作者寄语:坚持就是胜利,相信学到这里的小伙伴也都是意志坚韧之辈,戒骄戒躁,每个章节打好基础,才能在之后的框架学习中得心应手。

Java云同桌学习系列(十九)——Linux系统相关推荐

  1. Java云同桌学习系列(十五)——MySQL数据库

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...

  2. java云同桌学习系列(十四)——JavaScript语言

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以随着我的步伐一起进步,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...

  3. java云同桌学习系列(十)——网络编程

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...

  4. java云同桌学习系列(七)——集合

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌". 每月预计保持 ...

  5. Java云同桌学习系列(十三)——前端技术之HTML与CSS

    本博客java云同桌学习系列,旨在记录本人学习java的过程,并与大家分享,对于想学习java的同学,可以跟随我的步伐一起学习,我希望这个系列能够鼓励大家一同与我学习java,成为"云同桌& ...

  6. Linux学习系列十九:如何高效的阅读Linux源码

    1.引言 如何阅读代码还要单独写一篇文章?难道不是随便用一个IDE就可以了吗?回到上一篇文章里介绍的那个问题,需要修改uboot里board_mmc_init函数里的writel(0x66666666 ...

  7. Java学习系列(十九)Java面向对象之数据库编程

    JDBC(Java Data Base Connectivity:java数据库连接):它定义了一组标准的操作数据库的接口,既然是接口,那它就是一种规范,是Java操作数据库的技术规范. Java数据 ...

  8. 【Python学习系列十九】基于scikit-learn库进行特征选择

    场景:特征选择在模型训练前是非常有意义的,实际上就是先期对特征相关性进行分析. 参考:http://blog.csdn.net/fjssharpsword/article/details/735503 ...

  9. Linux学习之CentOS(二十九)--Linux网卡高级命令、IP别名及多网卡绑定

    本篇随笔将详细讲解Linux系统的网卡高级命令.IP别名以及Linux下多网卡绑定的知识 一.网卡高级命令 在之前的一篇随笔里Linux学习之CentOS(九)--Linux系统的网络环境配置,详细讲 ...

最新文章

  1. 网络工程师_想要记录下来的一些题_1
  2. “上海名媛群”事件,我来说几句
  3. 红帽论坛北京站召开 设立亚太开放创新实验室
  4. Visio中插入mathtype公式,解决直线交叉弯曲的问题
  5. 解决Visual Studio “无法导入以下密钥文件”的错误
  6. 如何运用DDD - 实体
  7. YII2 服务器验证码不显示
  8. oracle 对应的JDBC驱动 版本
  9. 年初新立Flag,新华三解决方案部做了点儿啥?
  10. 【电信增值业务学习笔记】3 语音类增值业务
  11. 应对“反洗钱”,银丰新融反洗钱自主监测系统为机构保驾护航
  12. Superior Scheduler:带你了解FusionInsight MRS的超级调度器
  13. 盘点:移动服务 #AzureChat
  14. jQuery学习(九)—常用的包裹方法
  15. [Erlang 0127] Term sharing in Erlang/OTP 上篇
  16. 网页打开摄像头_只要5分钟,快速掌握摄像头课件直播技巧
  17. android 平板root,安卓平板电脑怎么root 安卓平板一键root方法_硬件教程
  18. 独立站运营成败,7个细节不可忽视
  19. 从中序与后序遍历序列构造二叉树
  20. pytest接口自动化测试框架 | 为什么要做pytest插件的二次开发

热门文章

  1. 祝福大家新年快乐,身体健康,工作顺利,万事如意!
  2. jsp页面读取txt乱码
  3. php车秘,2020秘趣导航自动收录网站导航源码原版 自动审核|批量检查友链有效性...
  4. Vue项目启动时卡在98% after emitting CopyPlugin
  5. React + Ant Design Pro项目实现keep-alive页签
  6. N-Tiers设计系列(二):三层式应用系统架构
  7. 计算机毕业设计java的婚恋交友动态网站
  8. okGo框架的使用,下载列表显示
  9. 分享几个好用的WP插件,让你的网站牛逼起来
  10. html怎么画正方形的斜线,html – 斜线的样式