0.写在前面
到现在为止,在这个训练营里面也要有四个月了。这几个月相比之前,自己变得特别的忙碌,当前自己学到了第六阶段模块二——Spring框架。
现在几乎每天的时间,除去自己上课,做实验,剩下的几乎所有的时间都花在了看视频,看代码,思考代码,敲代码上面。在训练营的这段时间,自己的收获也特别多,在技术水平上也有了很大的提高。
前段时间第五阶段,完成了一整个课程管理模块前后端的开发,对自己的学习的自信心有了极大的提升——我也能完成一个完整的作品 :),同样也对自己这前面几个阶段的基础知识也有了一次全面性的巩固。
1.拉勾课程
拉勾教育的JAVA就业急训营是面向零基础的。
互联网从业者提供工作机会的招聘网站。拉勾教育是拉勾专门为互联网人打造的"实战大学"。拉勾网在多年的招聘经验中积累了大量的企业对人才的需求和人才的自身能力数据信息。但是符合企业要求的高端人才比较稀缺,而拉勾又掌握了企业的需求。所以拉勾本着为企业培养候选人的愿景开启教育培训业务,主要目的是通过系统培训为企业输送符合的高质量人才。
这个训练营适合那些对与编程有一些基础,想深入学习的人群,也适合那些对自己的专业就业前景不理想,没有项目经验的大学生。现在到了大学四年级,到了今年上半年才认真思考这件事情,土木专业出来之后的一个项目就要3~5年,我也了解自己的性格,我其实不喜欢这么长周期项目。
相比之下,我更喜欢"小步快跑,快速迭代"的互联网行业。同样,Java是一门工业级语言,它的规范都经过ISO标准化,而且都有工业界厂商组成的标准化委员会来制定工业标准。JAVA的安全性,跨平台,稳定性也是这门语言的优秀之处。
整个课程分为12个阶段,从开始的Java SE基础知识,到后来的开发一个系统模块,再到SSM框架的整合开发,分布式互联网系统的搭建,最后能够设计开发一套微服务架构的互联网系统。
整个课程学完之后,既可以把JAVA这门语言学的深入,同样自己能够不断的刻意练习,锻炼自己的学习能力。
课程的学习模式是非常棒的。课程属于在线学习,直播+录播的方式来进行,总共12个阶段,每个阶段下有几个模块,每个模块下面又有三到五个任务,每一个任务都是对一个新的知识点,新的概念从认识到编程实现,再到深入 ,每个任务完成都会有几道测验题目,可以用来检查自己这个小任务的学习情况。
每个模块学习完之后,会有一道编程题,每到编程题目都是在一个很简单的题目上面,不断的增加新的功能,使用新的方式来实现,整体的结构是从简单到复杂,从表面到深入的实现方式。
做完这道题目之后,自己要把自己所完成的代码,自己这个模块做的笔记,并且自己要录制一个这道题目的讲解视频,录制视频同样也锻炼自己的表达沟通能力, 要把自己对于这道题目的思路,代码清晰的表达出来。
2.拉勾老师
现在接触的老师主要有班主任——Karry老师,导师—卡卡,教学老师——奇点,九渊,子幕老师。每个老师都很负责。
班主任每周都会咨询自己最近学习的情况,聊聊自己最近学习的状态,自己的学习效果,同样还会在群里面给大家鼓励加油。
卡卡导师真的非常有耐心,有次周六下午,自己写的代码,自己检查了几遍都没发现错误,代码运行起来却总是报错,出现一大片屏幕的红色报错提示,自己也不能理解这些报错信息。就把整个项目发给了卡卡,不一会后,卡卡导师就发现了我的问题——jar包添加的过多,存在了各个依赖之间的冲突。
导师也非常有耐心,哪里出错会给给自己认真讲解一个问题。要知道,自己刚学一个新的知识点的时候,总是出现各种各样的问题的时候,自己的心态是要崩的。
每周都会有当前学习进度的老师来给我们进行直播,直播通常会先回顾这个阶段的知识要点,之后讲解面试题,讲解这个模块的重点知识,讲解这个模块的课后题目,讲解这个阶段学生提交上来的问题,最后还有一段时间用来和老师一起互动,互动可以把自己想要了解的知识发出来,老师会实时互动沟通。
每周二,周四的晚上八点都会有导师发在群里几道面试题目来进行讨论,讨论的问题既有这个阶段的重难点题目,也有之前阶段遇到过的经典问题。
同学们这个时候也会回答的非常热烈,各自持有不同的意见,之后卡卡导师会分析几个答案,哪个正确,错误的错在哪里。班群的讨论氛围也是热烈的。如果有问题可以在班群提出,有空的同学会给予答复,当然大家都解决不了的时候导师会给你解答。
3.linux 部分的笔记分享
3.1首先是一张Linux 操作系统这块的一张思维导图
Linux 思维导图
Linux 操作系统开源,免费跨平台,安全性,稳定性等多项优点,使得其被广泛的应用在企业服务器领域。
现在我们使用Apache + MySql + Java 来搭建环境,在tomcat 中可以部署我们打包完成的war包。之后通过本地的浏览器可以查看整个项目。
3.2 关于操作系统的知识
3.2.1 操作系统的发展历史
要想学习某项技术,我们就要去了解这项技术的发展历史。现在java 的LTS(稳定长期版)是java11。java从1995年诞生开始,迄今已经25年了,同样java在过去的这么多年时间里经历了很多版本的迭代。java的应用框架也经历了很多的变化。
现代技术是不断迭代的,每一项过时的东西,不是现在不能满足这个功能了,而是如今对于这个需求的满足有了更好的解决方案,了解技术发展的历史,掌握技术发展的脉络,我们也能有一天,创造更有价值,更能满足需求的技术,使用更新的技术,站上世界发展的浪潮。
操作系统是人们在使用计算机硬件的时候,为了满足两大需求:提高资源利用率、增强计算机系统性能,才诞生,并随着计算机硬件的技术发展不断进步。 现在来说, “操作系统”是控制和管理整个计算机硬件和软件资源、实现资源分配和任务调配、为系统用户以及其他软件提供接口和环境的程序的集合。
手工操作阶段
1946年第一台计算机诞生--20世纪50年代中期,还未出现操作系统,计算机工作采用手工操作方式。
程序员将对应于程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果;用户取走结果并卸下纸带(或卡片)后,才让下一个用户上机。
批处理系统阶段
批处理系统:加载在计算机上的一个系统软件,在它的控制下,计算机能够自动地、成批地处理一个或多个用户的作业(这作业包括程序、数据和命令)
批处理系统又可以分为单道批处理系统、多道批处理系统、联机批处理系统、脱机批处理系统。
多道程序系统
所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行。即同时把多个程序放入内存,并允许它们交替在CPU中运行,它们共享系统中的各种硬、软件资源。当一道程序因I/O请求而暂停运行时,CPU便立即转去运行另一道程序。
分时系统和实时系统
分时系统是把处理器的运行时间分成很短的时间片,按时间片轮流把处理机分配给各联机作业使用。 若某个作业在分配给它的时间片内不能完成其计算,则该作业暂时中断,把处理机让给另一作业使用,等待下一轮调度时再继续其运行。由于计算机速度很快,作业运行轮转得很快,给每个用户的感觉是他独占了一台计算机。而每个用户可以通过自己的终端向系统发出各种操作控制命令,在充分的人机交互情况下,完成作业的运行。为了解决分时系统不能及时响应用户指令的情况,又出现了能够在在严格的时间范围内完成事件处理,及时响应随机外部事件的实时系统。
通用的操作系统
(1) 1960年 IBM的System/360系列的机器有了统一的操作系统OS/360。
(2) 1965年:AT&T的贝尔实验室加入GE和MIT的合作计划开始开发MULTICS。
(3)1969年:MULTICS项目失败,Ken Tompson赋闲在家,为了玩“Space Travel”游戏用汇编语言在当时已经被淘汰的PDP-7上开发了Unics
(4) 1970年~1971年:Ken Tompson和Dennis Ritchie用B语言在PDP-11上重写了Unics,并在Brian Kernighan的建议下将其更名为Unix。
(5)1972年~1973年:Dennis Ritchie发明了C语言来取代可移植性较差的B语言,并开启了用C语言重写Unix的工作。
(6)1974年:Unix推出了里程碑意义的第5版,几乎完全用C语言来实现。
(7)1979年:从Unix第7版开始,AT&T发布新的使用条款,将Unix私有化。
(8)1987年:Andrew S. Tanenbaum教授为了能在课堂上为学生讲解操作系统运作的细节,决定在不使用任何AT&T的源代码前提下,自行开发与Unix兼容的操作系统以避免版权上的争议,该系统被命名为Minix。
(9)1991年:Linus Torvalds就读于芬兰赫尔辛基大学期间,尝试在Minix上做一些开发工作,但因为Minix只是作为教学用途的操作系统,功能并不强大,为了方便在学校的新闻组和邮件系统中读写和下载文件,Linus编写了磁盘驱动程序和文件系统,这些东西形成了Linux系统内核的雏形。
帅气的 Linus Torvalds
3.3 Linux 系统的概述
3.3.1
- Linux系统是一套免费、自由、开发源代码的类Unix操作系统,是一个基于Posix(Portable
Operating System Interface)标准和多用户、多任务、支持多线程的操作系统。
- Linux能运行主要的Unix工具软件、应用程序和网络协议,支持32位和64位硬件。
- Linux是一个通用操作系统。一个操作系统要负责任务调度、内存分配、处理外围设备I/O等操作。操作系统通常由内核(运行其他程序,管理像磁盘、打印机等硬件设备的核心程序)和系统程序(设备驱动、底层库、shell、服务程序等)两部分组成。
系统的结构
Linux 系统的优点
- 通用操作系统,不跟特定的硬件绑定。
- 用C语言编写,可移植性强,有内核编程接口。
- 支持多用户和多任务,支持安全的分层文件系统。
- 大量的实用程序,完善的网络功能以及强大的支持文档。
- 可靠的安全性和良好的稳定性,对开发者更友好。
3.3.2Linux 的主要发行版本
主要的发行版本
- Redhat:目前最大的Linux发行商,功能全面并且稳定,于2018年10月被IBM以340亿美元的价格
- Ubuntu:目前最好的Linux桌面版,拥有很人性化的亮丽的交互界面,强大的软件源支持。
- CentOS:是RHEL的克隆版本,可以认为是免费版本的Redhat系统。
3.4 Linux系统 的安装
3.4.1 VM 的安装(略过 傻瓜式操作)
可我的电脑,可能是版本老的问题, 安装老师发放的VM15版本,在进行Linux系统的安装的时候,频繁出现刚安装好CentOS系统之后,立马黑屏的情况。之后自己手动换了个低版本的WorkStation版本,紧接着把系统装进去,按着奇点老师的步骤,一步一步的安装CentOS7的版本,完成。
3.4.2 系统的安装
首先我们下载下来CentOS的iso光盘镜像。
-> 使用自定义安装的方式, 学习阶段,使用自定义,手动操作安装的每一个过程
-> 安装程序光盘的镜像文件, 此时就需要我们把自己先前下载的 很大的(大概4个G大小)的光盘镜像文件放到这个文件目录下。
->此时需要我们自定义自己系统的名称,用户名, 密码等相关信息
-> 处理器的数量默认指定为1个,内核数量也默认指定为1个
-> 设置当前的内存空间为 2048(2G)大小
->使用NAT 网络地址连接的方式来进行连接,这一步方便接下来为虚拟机下载文件,传输文件做准备
-> 控制器, 磁盘类型都选择为默认安装
-> 指定磁盘的大小,磁盘就是整个系统所占大小,但大部分情况都不会装满,为了保险起见,多指定10个G的大小,即为30G磁盘大小, 并将虚拟磁盘拆分为多个文件
——>
当当当当 配置完成。
最后指定自己的时区,语言,通过协议,就可以开机了。注意,密码的输入时没有密码显示的,直接输入就可以。
linux 的目录结构
3.5 Linux 的常用命令 (重要 -需要多练 )
Shell也被称为“壳”或“壳程序”,它是用户与操作系统内核交流的翻译官,简单的说就是人与计算机交互的界面和接口
(1)基础命令
获取登录信息
[libaice@localhost ~]$ w # 当前登录用户
07:43:01 up 1 min, 2 users, load average: 0.23, 0.07, 0.03
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
libaice tty1 07:42 37.00s 0.02s 0.02s -bash
libaice pts/0 192.168.79.1 07:42 5.00s 0.03s 0.02s w
[libaice@localhost ~]$ who
libaice tty1 2020-11-18 07:42
libaice pts/0 2020-11-18 07:42 (192.168.79.1)
[libaice@localhost ~]$ last
libaice pts/0 192.168.79.1 Wed Nov 18 07:42 still logged in
libaice tty1 Wed Nov 18 07:42 still logged in
reboot system boot 3.10.0-1127.19.1 Wed Nov 18 07:41 - 07:43 (00:01)
libaice pts/0 192.168.79.1 Sun Nov 15 08:35 - 09:36 (01:00)
libaice tty1 Sun Nov 15 06:53 - 09:36 (02:42)
reboot system boot 3.10.0-1127.19.1 Sun Nov 15 06:52 - 07:43 (3+00:50)
...
wtmp begins Sun Nov 1 19:02:59 2020
[libaice@localhost ~]$ lastb
lastb: /var/log/btmp: Permission denied
清除屏幕上显示的内容 - clear。
查看帮助文档 - man / info / --help / apropos。
[libaice@localhost ~]$ ps -help
error: unsupported SysV option
Usage:
ps [options]
Try 'ps --help <simple|list|output|threads|misc|all>'
or 'ps --help <s|l|o|t|m|a>'
for additional help text.
For more details see ps(1).
[libaice@localhost ~]$ man ps
PS(1) User Commands PS(1)
NAME
ps - report a snapshot of the current processes.
SYNOPSIS
ps [options]
DESCRIPTION
ps displays information about a selection of the active processes. If you want a
repetitive update of the selection and the displayed information, use top(1)
instead.
This version of ps accepts several kinds of options:
1 UNIX options, which may be grouped and must be preceded by a dash.
2 BSD options, which may be grouped and must not be used with a dash.
3 GNU long options, which are
~~~~~
查看系统和主机名 - uname / hostname。
[libaice@localhost ~]$ uname
Linux
[libaice@localhost ~]$ hostname
localhost.localdomain
[libaice@localhost ~]$ cat /etc/centos-release
CentOS Linux release 7.8.2003 (Core)
时间和日期 - date / cal。
[libaice@localhost ~]$ date
2020年 11月 18日 星期三 18:33:06 CST
[libaice@localhost ~]$ cal
十一月 2020
日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
重启和关机 - reboot / shutdown。
退出登录 - exit / logout。
查看历史命令 - history。
[libaice@localhost ~]$ history
1 ls
2 mkdir 01
3 ls
4 reboot
5 shutdown
6 su
7 ls
8 ifconfig
9 ls
10 tar -zxvf jdk-11.0.7_linux-x64_bin.tar.gz
11 ls
12 su
创建/删除文件 - touch / rm。
[root ~]# touch readme.txt
[root ~]# touch error.txt
[root ~]# rm error.txt
rm: remove regular empty file ‘error.txt’? y
[root ~]# rm -rf xyz
touch
命令用于创建空白文件或修改文件时间。在Linux系统中一个文件有三种时间:
- 更改内容的时间 - mtime。
- 更改权限的时间 - ctime。
- 最后访问时间 - atime。
-
rm
的几个重要参数:
-
-i
:交互式删除,每个删除项都会进行询问。 -
-r
:删除目录并递归的删除目录中的文件和目录。 -
-f
:强制删除,忽略不存在的文件,没有任何提示。
查看目录内容 - ls。
-
-l
:以长格式查看文件和目录。 -
-a
:显示以点开头的文件和目录(隐藏文件)。 -
-R
:遇到目录要进行递归展开(继续列出目录下面的文件和目录)。 -
-d
:只列出目录,不列出其他内容。 -
-S
/-t
:按大小/时间排序。
[libaice@localhost ~]$ ls
01 apache-tomcat-8.5.55.tar.gz jdk-11.0.7_linux-x64_bin.tar.gz sohu.html
02 a.sh Python-3.7.3
[libaice@localhost ~]$ ls -l
总用量 187128
drwxrwxr-x. 3 libaice libaice 76 11月 2 06:30 01
drwxrwxr-x. 2 libaice libaice 20 11月 3 13:24 02
-rw-rw-r--. 1 libaice libaice 10371538 11月 1 19:35 apache-tomcat-8.5.55.tar.gz
-rw-r--r--. 1 root root 11 11月 1 21:07 a.sh
-rw-rw-r--. 1 libaice libaice 181015877 11月 1 19:35 jdk-11.0.7_linux-x64_bin.tar.gz
drwxr-xr-x. 18 libaice libaice 4096 11月 3 13:21 Python-3.7.3
-rw-r--r--. 1 root root 215094 11月 3 12:40 sohu.html
[libaice@localhost ~]$ ls -S
jdk-11.0.7_linux-x64_bin.tar.gz sohu.html 01 a.sh
apache-tomcat-8.5.55.tar.gz Python-3.7.3 02
[libaice@localhost ~]$ ls -t
02 sohu.html a.sh jdk-11.0.7_linux-x64_bin.tar.gz
Python-3.7.3 01 apache-tomcat-8.5.55.tar.gz
功能描述 查看目录下的文件
# 用list显示文件,显示当前目录下的所有文件
[libaice@localhost ~]$ ls
01 a.sh Python-3.7.3
02 backup sina.html
apache-tomcat-8.5.55.tar.gz jdk-11.0.7_linux-x64_bin.tar.gz sohu.html
# ls-l 或 ll 用来显示文件的所有信息
[libaice@localhost ~]$ ls -l
总用量 187136
drwxrwxr-x. 3 libaice libaice 76 11月 2 06:30 01
drwxrwxr-x. 2 libaice libaice 20 11月 3 13:24 02
-rw-rw-r--. 1 libaice libaice 10371538 11月 1 19:35 apache-tomcat-8.5.55.tar.gz
-rw-r--r--. 1 root root 11 11月 1 21:07 a.sh
drwxr-xr-x. 2 root root 28 11月 18 18:48 backup
-rw-rw-r--. 1 libaice libaice 181015877 11月 1 19:35 jdk-11.0.7_linux-x64_bin.tar.gz
drwxr-xr-x. 18 libaice libaice 4096 11月 3 13:21 Python-3.7.3
-rw-r--r--. 1 root root 6170 11月 18 18:43 sina.html
-rw-r--r--. 1 root root 215094 11月 3 12:40 sohu.html
#list -a 显示全部(包含隐藏文件)文件
[libaice@localhost ~]$ ls -a
. apache-tomcat-8.5.55.tar.gz .bash_logout Python-3.7.3
.. a.sh .bash_profile sina.html
01 backup .bashrc sohu.html
02 .bash_history jdk-11.0.7_linux-x64_bin.tar.gz
# ls-a 和 ls-l 上两个指令的合体
[libaice@localhost ~]$ ls -al
总用量 187156
drwx------. 6 libaice libaice 4096 11月 18 18:47 .
drwxr-xr-x. 3 root root 20 4月 11 2018 ..
drwxrwxr-x. 3 libaice libaice 76 11月 2 06:30 01
drwxrwxr-x. 2 libaice libaice 20 11月 3 13:24 02
-rw-rw-r--. 1 libaice libaice 10371538 11月 1 19:35 apache-tomcat-8.5.55.tar.gz
-rw-r--r--. 1 root root 11 11月 1 21:07 a.sh
drwxr-xr-x. 2 root root 28 11月 18 18:48 backup
-rw-------. 1 libaice libaice 1693 11月 21 03:37 .bash_history
-rw-r--r--. 1 libaice libaice 18 3月 6 2015 .bash_logout
-rw-r--r--. 1 libaice libaice 193 3月 6 2015 .bash_profile
-rw-r--r--. 1 libaice libaice 231 3月 6 2015 .bashrc
-rw-rw-r--. 1 libaice libaice 181015877 11月 1 19:35 jdk-11.0.7_linux-x64_bin.tar.gz
drwxr-xr-x. 18 libaice libaice 4096 11月 3 13:21 Python-3.7.3
-rw-r--r--. 1 root root 6170 11月 18 18:43 sina.html
-rw-r--r--. 1 root root 215094 11月 3 12:40 sohu.html
#指定某个文件夹来显示其中所有文件
[libaice@localhost ~]$ ls 01
Hello.java welcome.txt World.class World.java
目录切换
# 返回到上一级目录
[libaice@localhost ~]$ cd ..
# cd dirname 进入到子目录下
[libaice@localhost home]$ cd libaice/01/
# cd 直接回到用户的家目录
[libaice@localhost 01]$ cd
# cd/ 回到系统的根目录下
[libaice@localhost ~]$ cd /
# 此处可以查看到linux 下根目录的所有文件
[libaice@localhost /]$ ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
查看完整的路径
#pwd 查看当前目录所在的位置
[libaice@localhost ~]$ pwd
/home/libaice
查看当前的用户
# whoami 查看当前用户的名称
[libaice@localhost ~]$ whoami
libaice
用户的切换
# su 普通用户切换到root用户 密码依然输入不会显示,直接输入就好
[libaice@localhost ~]$ su
密码:
# 这里前置会变为 root@localhost 使用 su 用户名 切换到普通用户
[root@localhost libaice]# su libaice
# 再次 切换到root用户
[libaice@localhost ~]$ su root
密码:
# 再次 退出root用户
[root@localhost libaice]# exit
exit
# 最好使用su和exit搭配使用,否则多次使用su指令会导致用户的”叠加”
用户的管理
# 使用 useradd 创建一个名为jack 的用户
[root@localhost libaice]# useradd jack
[root@localhost libaice]# su jack
[jack@localhost libaice]$ su
密码:
# 通过userdel 删除指定用户
[root@localhost libaice]# userdel jack
userdel: user jack is currently used by process 1405
查看命令的所在目录
# which 查看指定命令所在的路径信息
[root@localhost libaice]# which ps
/usr/bin/ps
[root@localhost libaice]# which mkdir
/usr/bin/mkdir
文件的操作
#在用户libaice 的目录下02文件夹是一个空的文件夹,在这个文件夹内执行相关操作
# 进入到02空目录文件中
[root@localhost libaice]# cd 02
[root@localhost 02]# ls
# 创建文件 helllo.java
[root@localhost 02]# touch hello.java
# 此时目录结构下会有一个文件
[root@localhost 02]# ls
hello.java
# echo 显示自己输入的内容
[root@localhost 02]# echo test
test
# 将自己输入的内容添加到该文件中 把内容覆盖写到文件中,若文件不存在则创建
[root@localhost 02]# echo helloworld > hello.java
# cat 打印文件内容到终端
[root@localhost 02]# cat hello.java
helloworld
[root@localhost 02]# echo delete it create a new one > hello.java
[root@localhost 02]# cat hello.java
delete it create a new one
# >> 将内容可以追加到 文件中
[root@localhost 02]# echo append it to the last >> hello.java
[root@localhost 02]# cat hello.java
delete it create a new one
append it to the last
# more fileName 分屏查看文件各行内容,不支持回看
#less fileName 查看文件各部分内容,支持回看
# 这里使用根目录下的etc/passwd文件来查看其中内容
# head -n fileName 查看文件的前n行内容
[root@localhost 02]# head -5 /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
#tail -n fileName 查看文件末尾n行内容
[root@localhost 02]# tail -4 /etc/passwd
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
nginx:x:998:996:nginx user:/var/cache/nginx:/sbin/nologin
tom:x:1001:1001::/home/tom:/bin/bash
jack:x:1002:1002::/home/jack:/bin/bash
# wc fileName 查看文件的行数 25行 47单词个数, 文件大小
[root@localhost 02]# wc /etc/passwd
25 47 1217 /etc/passwd
目录的操作
[root@localhost 02]# ls
hello.java
#使用mkdir 创建普通文件夹
[root@localhost 02]# mkdir hello
# 此时目录下会有一个新的文件夹,且有独特的蓝色文件夹字体显示
[root@localhost 02]# ls
hello hello.java
# 递归方式创建多级父子文件夹
[root@localhost 02]# mkdir -p a/b/c
[root@localhost 02]# ls
a hello hello.java
[root@localhost 02]# ls a
b
[root@localhost 02]# ls a/b/
c
# mv dir1 dir2 将dir1移动到dir2中
[root@localhost 02]# mv hello a/
[root@localhost 02]# ls
a hello.java
# 回头查看当前a目录下,有hello文件夹
[root@localhost 02]# ls a
b hello
# mv dir1/dir2 ./ 将dir1中dir2移动到当前目录下
# mv dir1 name 将dir1改名为name
# 移动与重名名, 判断后置文件是否存在
[root@localhost 02]# mv a aaa
[root@localhost 02]# ls
aaa hello.java
#cp dir1 name 将dir1拷贝为name
[root@localhost 02]# cp hello.java aaa/
[root@localhost 02]# ls aaa/
b hello hello.java
# cp -r dir1 dir2 需要设置参数 -r (recursive递归) 无视目录层次
[root@localhost 02]# cp -r world/ a
[root@localhost 02]ls -a
hello.java b world
# rm 删除文件,删除目录
[root@localhost 02]# rm hello.java
rm:是否删除普通文件 "hello.java"?y
# 输入y 便可以删除文件
[root@localhost 02]# ls
02 aaa
# rm -r 目录 递归删除目录(无视目录层次)
[root@localhost 02]# rm -r 02/
rm:是否进入目录"02/"? y
rm:是否删除目录 "02/c"?y
rm:是否删除目录 "02/"?y
[root@localhost 02]# ls
aaa
# rm -rf 文件/目录 -r force(强制) 删除文件/目录
[root@localhost 02]# rm -rf aaa/
[root@localhost 02]# ls
[root@localhost 02]#
# 最后整个剩下一个空的文件夹
查找文件
#find / -name passwd[完整名称] 查找passwd文件
# 此处用户权限不足
[libaice@localhost ~] # find / -name passwd
ind: ‘/proc/55/ns’: 权限不够
find: ‘/proc/56/task/56/fd’: 权限不够
find: ‘/proc/56/task/56/fdinfo’: 权限不够
find: ‘/proc/56/task/56/ns’: 权限不够
find: ‘/proc/56/fd’: 权限不够
find: ‘/proc/56/map_files’: 权限不够
find: ‘/proc/56/fdinfo’: 权限不够
# 使用模糊查询
# find ./ -name “p*” 查找带”p”的文件
[libaice@localhost ~]$ find ./ -name "*.html"
./sohu.html
./sina.html
./backup/sina_index.html
# 在指定目录中查询
# find ./ -type f 查找所有文件
# grep 内容 fileName 从指定文件中查找指定的内容
[libaice@localhost 01]$ grep Hello welcome.txt
Hello, The world;
权限的管理
# chmod 权限 文件/目录名 管理指定文件的权限信息,r读:4 w写:2 x执行:1
# 先来查看这个文件的权限
[libaice@localhost 01]$ ls -l welcome.txt
-rw-rw-r--. 1 libaice libaice 18 11月 2 06:22 welcome.txt
r 属主
w 属组
x 其他人的权限
# 修改权限信息
[libaice@localhost 01]$ chmod u+x welcome.txt
[libaice@localhost 01]$ ls -l welcome.txt
-rwxrw-r--. 1 libaice libaice 18 11月 2 06:22 welcome.txt
# 为其他用户添加权限
[libaice@localhost 01]$ chmod o+x welcome.txt
[libaice@localhost 01]$ ls -l welcome.txt
-rwxrw-r-x. 1 libaice libaice 18 11月 2 06:22 welcome.txt
# 可以使用数字的方式来直接修该对于权限 默认664
[libaice@localhost 01]$ chmod 664 welcome.txt
[libaice@localhost 01]$ ls -l welcome.txt
-rw-rw-r--. 1 libaice libaice 18 11月 2 06:22 welcome.txt
[libaice@localhost 01]$ chmod 777 welcome.txt
[libaice@localhost 01]$ ls -l welcome.txt
-rwxrwxrwx. 1 libaice libaice 18 11月 2 06:22 welcome.txt
进程管理
# ps 查看当前终端窗口里的进程
[libaice@localhost 01]$ ps
PID TTY TIME CMD
1186 pts/0 00:00:00 bash
1238 pts/0 00:00:00 bash
1353 pts/0 00:00:00 bash
1572 pts/0 00:00:00 bash
3604 pts/0 00:00:00 ps
# ps -aux 查看系统中的所有进程
ps -aux 查看系统中的所有进程
[libaice@localhost 01]$ ps -aux | more
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.6 128148 6756 ? Ss 11月26 0:04 /usr/lib/systemd/system
d --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 11月26 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 11月26 0:00 [kworker/0:0H]
root 5 0.0 0.0 0 0 ? S 11月26 0:00 [kworker/u64:0]
root 6 0.0 0.0 0 0 ? S 11月26 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 11月26 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 11月26 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 11月26 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 11月26 0:00 [lru-add-drain
# ps -ef 查看进程列表
libaice@localhost 01]$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 11月26 ? 00:00:04 /usr/lib/systemd/systemd --switched-root
root 2 0 0 11月26 ? 00:00:00 [kthreadd]
root 4 2 0 11月26 ? 00:00:00 [kworker/0:0H]
root 5 2 0 11月26 ? 00:00:00 [kworker/u64:0]
root 6 2 0 11月26 ? 00:00:00 [ksoftirqd/0]
root 7 2 0 11月26 ? 00:00:00 [migration/0]
root 8 2 0 11月26 ? 00:00:00 [rcu_bh]
-----
# kill 进程号 杀死指定的进程
如杀死一个bash shell ,
# kill-9 强制杀死指定的进程
一些其他的命令
# ifconfig 查看当前系统的IP地址等信息
[libaice@localhost 01]$ ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.79.128 netmask 255.255.255.0 broadcast 192.168.79.255
inet6 fe80::20c:29ff:fe66:a862 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:66:a8:62 txqueuelen 1000 (Ethernet)
RX packets 5400 bytes 431137 (421.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 2791 bytes 446674 (436.2 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 4 bytes 348 (348.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 348 (348.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
# 压缩文件 tar zcvf
# 解压缩解包 tar zxvf
这两个之后,在之后配置环境需要用到
# man 查询指定的命令或函数
[libaice@localhost 01]$ man ps
PS(1) User Commands PS(1)
NAME
ps - report a snapshot of the current processes.
SYNOPSIS
ps [options]
DESCRIPTION
ps displays information about a selection of the active processes. If you want
a repetitive update of the selection and the displayed information, use top(1)
instead.
This version of ps accepts several kinds of options:
1 UNIX options, which may be grouped and .....
使用wget -O下载并以不同的文件名保存
它是一个网络下载器程序,可以从指定的URL下载资源。
[root@localhost libaice]# wget http://www.weibo.com/ -0 sina.html
wget:无效选项 -- 0
用法: wget [选项]... [URL]...
请尝试使用“wget --help”查看更多的选项。
[root@localhost libaice]# wget http://www.weibo.com/ -O sina.html
--2020-11-18 18:43:05-- http://www.weibo.com/
正在解析主机 www.weibo.com (www.weibo.com)... 180.149.153.187, 180.149.139.248, 49.7.40.133, ...
正在连接 www.weibo.com (www.weibo.com)|180.149.153.187|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
位置:https://www.weibo.com/ [跟随至新的 URL]
--2020-11-18 18:43:05-- https://www.weibo.com/
正在连接 www.weibo.com (www.weibo.com)|180.149.153.187|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Moved Temporarily
位置:https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fweibo.com%2F&domain=.weibo.com&ua=php-sso_sdk_client-0.6.36&_rand=1605667402.3732 [跟随至新的 URL]
--2020-11-18 18:43:05-- https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fweibo.com%2F&domain=.weibo.com&ua=php-sso_sdk_client-0.6.36&_rand=1605667402.3732
正在解析主机 passport.weibo.com (passport.weibo.com)... 180.149.138.190
正在连接 passport.weibo.com (passport.weibo.com)|180.149.138.190|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:未指定 [text/html]
正在保存至: “sina.html”
[ <=> ] 6,170 --.-K/s 用时 0s
2020-11-18 18:43:05 (214 MB/s) - “sina.html” 已保存 [6170]
[root@localhost libaice]# cat sina.html
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=gb2312"/>
<title>Sina Visitor System</title>
</head>
<body>
<span id="message"></span>
<script type="text/javascript" src="/js/visitor/mini_original.js?v=20161116"></script>
<script type="text/javascript">
# 查看最后五行内容
[root@localhost libaice]# tail -5 sina.html
};
</script>
</body>
</html>
3.6Vi 工具的使用
- 启动vim。可以通过
vi
或vim
命令来启动vim,启动时可以指定文件名来打开一个文件,如果没有指定文件名,也可以在保存的时候指定文件名。
[libaice@localhost 01]$ vi World.java
- 三种模式
命令模式、编辑模式和末行模式:启动vim进入的是命令模式(也称为Normal模式),在命令模式下输入英文字母i
会进入编辑模式(Insert模式),屏幕下方出现-- INSERT --
提示;在编辑模式下按下Esc
会回到命令模式,此时如果输入英文:
会进入末行模式,在末行模式下输入q!
可以在不保存当前工作的情况下强行退出vim;在命令模式下输入v
会进入可视模式(Visual模式),可以用光标选择一个区域再完成对应的操作。
三种操作模式
- 保存和退出vim:在命令模式下输入
:
进入末行模式,输入wq
可以实现保存退出;如果想放弃编辑的内容输入q!
强行退出,这一点刚才已经提到过了;在命令模式下也可以直接输入ZZ
实现保存退出。如果只想保存文件不退出,那么可以在末行模式下输入w
;可以在w
后面输入空格再指定要保存的文件名。 - 命令行模式的删除命令
x 删除一个字符
dw 删除当前词
3dw 删除三个词
dd 删除当前行
5dd 删除五行
- 命令行模式的修改命令
r 替换一个字符
cw 替换一个单词
cc 替换一行
C 替换从光标至行尾
6.底行模式的操作
:w 存盘
:w newfile 存成新文件
:wq 存盘退出Vi(或ZZ,或:x)
:q! 强行退出不存盘
:1,2co3 拷贝行1,行2在行3之后
:4,5mo6 移动行4,行5在行6之后
:%s /源字符串/目标字符串
:%s /源字符串/目标字符串/g 替换每一行中的所有
3.7JAVA+Tomcat+ Mysql环境的搭建
所需工具
- Xshell 用来连接本机与虚拟机
- xftp 用来两者之间文件的传输
注意: xshell 需要网络模式为NAT模式,连接方式为桥连
之后需要我们手动配置文件, 使用root用户在配置文件下配置相关ip, 网关,子网掩码等信息
使用root用户打开/etc/sysconfifig/network-scripts/ens33文件,添加内容如下:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.72.128
GATEWAY=192.168.72.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
# 当前的ip地址为 192.168.79.128
最后的结果如下
JDK下载安装
在网络下下载好指定的jdk的linux版本,之后通过xftp 工具传输到CentOS系统中
之后在linux 中使用tar 命令来解压
之后修改配置文件
export JAVA_HOME=/usr/javajdk
export PATH=$JAVA_HOME/bin:$PATH
最后可以显示输入这样的结果
[libaice@localhost ~]$ java -version
java version "11.0.7" 2020-04-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.7+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.7+8-LTS, mixed mode)
# 当前配置为 java11版本
Tomcat的下载安装
将下载好的Tomcat安装包通过Xftp工具传输到CentOS系统中,使用tar命令解压即可
使用startup.sh 和 shutdowm.sh 这两个命令来开启与关闭Tomcat
开放防火墙的端口
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT 开启8080端口(暂时开通)
Tomcat 下不建议配置环境变量。之后需要搭建集群,在任意目录下使用同一个Tomcat,这样不容易搭建集群。
追后可以使用命令打开tomcat 的主页
[root@localhost bin]# ./startup.sh
Using CATALINA_BASE: /usr/tomcat
Using CATALINA_HOME: /usr/tomcat
Using CATALINA_TMPDIR: /usr/tomcat/temp
Using JRE_HOME: /usr/javajdk
Using CLASSPATH: /usr/tomcat/bin/bootstrap.jar:/usr/tomcat/bin/tomcat-juli.jar
Tomcat started.
在chrome 中打开对应用地址会看到相关
tomcat 配置成功
mysql 的安装与配置
mysql 我们使用rpm包的方式来下载与安装mysql,之后在外部主机上使用sqlYog来查看管理linux中的数据库、
#下载Mysql 的repo源, 这里我们使用 5.7的社区版本
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
# 安装rpm包
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
# 安装mySql
yum install mysql-server
# 启动mySql服务
service mysqld start
# 查看服务状态
systemctl status mysqld
# 使用root用户登录
mysql -u root
# 修改临时密码
alter user 'root'@'localhost' identified by 'libaice@666';
# 系统默认需要我们手动的修改密码
# 这是最终整个数据苦安装成功的显示页面
[root@localhost bin]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.7.32 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| db_student |
| db_study |
| lagou_edu |
| mysql |
| performance_schema |
| sys |
+--------------------+
7 rows in set (0.00 sec)
使用外部的sqlYog来管理我们的数据库,这是我们需要修改相关root 权限
查看mysql库中的user表的host值后修改为通配符%
select host from user where user='root';
update user set host='%' where user='root';
flush privileges;
最终显示的结果是这个样子的~~~
sqlyog
3.8Shell 编程
基本概念
Shell是一个连接用户和操作系统的应用程序,它提供了人机交互的界面(接口),用户通过这个界面访问操作系统内核的服务。Shell脚本是一种为Shell编写的脚本程序,我们可以通过Shell脚本来进行系统管理,同时也可以通过它进行文件操作。总之,编写Shell脚本对于使用Linux系统的人来说,应该是一项标配技能。
shell程序执行的方法
方式一:./文件名,此方式需要执行权限。
方式二:/bin/bash 文件名,此方式不需要执行权限。
Shell 脚本的语法
#!/usr/bin/bash
# 变量
语法格式
定义变量:变量=值
撤销变量:unset 变量
# 常用的运算符
+ - * /
% = == !=
# 关系运算符
-eq 判断两个数是否相等
-ne 判断两个数是否不相等
-gt 左边> 右边?
-lt 左边 < 右边 ?
-ge 左边 >= 右边?
-le 左边 <= 右边 ?
shell 的分支
# 流程控制, 严格控制空格数量与大小写
# if分支
if [ 条件判断式 ]
then
程序
fi
# case 分支
#!/bin/bash
#使用case语句进行批评和打印
case $num in
1) echo "你选择了1号业务!"
;;
2) echo "你选择了2号业务!"
;;
3) echo "你选择了3号业务!"
;;
4) echo "你选择了4号业务!"
;;
*) echo "你没有选择1~4号之间的业务,你想干啥?"
;;
esac
shell的循环
# for 循环
#使用for循环计算1 ~ 100之间的累加和并记录到上述变量中
for(( i=1;i<=100;i++ ))
do
sum=$[$sum+$i]
done
#打印变量的数值
echo $sum
# while 循环
#使用while循环实现1 ~ 100之间的累加和
#定义两个变量分别记录累加和与初始值
sum=0
i=1
#使用while循环
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
#打印结果
echo $sum
最后一个shell编程的案例
输入两个整数m和n,计算从m到n的整数求和的结果。
#!/usr/bin/bash
printf 'm = '
read m
printf 'n = '
read n
a=$m
sum=0
while [ $a -le $n ]
do
sum=$[ sum + a ]
a=$[ a + 1 ]
done
echo '结果: '$sum