一、Linux作为操作系统优势
●Linux系统的稳定性
Linux采取了许多安全技术措施,其中有对读、写进行权限控制、审计跟踪、核心授权等技术,这些都为安全提供了保障。据说Linux系统可以十年不关机,依然保证系统的稳定运行(本人没亲测,不敢说真假)
●Linux系统的安全性
Linux系统在设计的时候就是针对多用户环境的,所以对系统文件,用户文件都做了明确的区分,每个文件都有不同的用户属性,作为一个普通用户,通常只能读写自己的文件,而对一般的系统文件只能读取不能改动,一些敏感的系统文件甚至连读取都是被禁止的,这种设计从根本上保证了系统的安全性,当一个用户文件出现了问题,也不会殃及整个系统。
●Linux软件安装的便利性
Linux中的软件绝大多数支持在线安装。只要在联网状态下通过简单的一个命令就可以完成整个软件的安装。可以说是方便快捷。
●Linux内核
Linux的内核只有几兆,非常适合作为一些设备的系统。例如安卓系统底层就使用的是Linux系统。
二、设置静态IP
1.为什么要设置静态IP
在VMWare中安装好的系统默认都是动态IP。IP生成规则为192.168.xx.128。其中xx是网段,是随机的,每个人安装后都是255以内的随机数。
在VMWare中第一个新建虚拟机IP都是128,第二个新建虚拟机为129,依次类推。
但是可能出现这样一种情况,昨天网段是192.168.136.128,第二天来到教室后就变成了192.168.136.129。虽然这种情况并不是每个人都能碰到的,为了防止这种事情,还是配置上静态IP,防止IP自动更改。
小提示:
后面学习Docker后软件都是和IP绑定的,IP一旦改变了,就会导致软件无法使用。
2.修改网段
需要从修改网段开始设置。
VMware 菜单编辑-->虚拟网络编辑器>右下角“更改设置”-->选择“VMNet 8"-->修改子网IP为自己希望的网段->DHCP设置中修改两处网段
网段的数字8不是必须为8,任意小于255的正数都可以。
3.静态IP的设置
修改ifcfg-ens160文件
注意:在VMware中是无法复制粘贴的,需要在XShell中执行此命令。Xshell是Linux客户端工具,里面快捷键和Windows不一样。里面粘贴和复制时都时,需要通过鼠标右键进行复制或粘贴。
三、Linux目录结构及路径
Linux磁盘中默认就一个分区,不像Windows中C盘、D盘、E盘。可以理解为Linux中只有一个C盘。CentOS Stream 8中默认根目录下包含下面文件夹。
●常用目录:
etc:系统配置所在文件夹
home:除了root用户以外,其他所有用户都会在home中有一个同名文件夹,且用户对自己的文件夹具有完整操作权限。
root:只有root用户才有权限操作。
usr:里面包含1oca1目录,所有用户自己安装的软件都放在1ocal中。
tmp:系统临时文件等所在目录。
bin:命令工具。
●路径
• 全路径
从filesystem根目录开始寻找文件。
写法:以/开头
•相对路径
从当前资源路径开始寻找,找到其他资源路径过程。
写法:一定不是以/开头。找当前资源的子目录直接写子目录名称,如果向上跳一级文件夹写法:../
•特殊路径写法
/ 表示磁盘根
~ 表示/root,root文件夹的根目录
四、常用命令
●cd
进入到指定自录中
语法:cd 路径(相对路径/全路径)
示例:
cd..向上跳一级
cd目录。表示进入目录,目录路径可以是相对路径,也可以是全路径。
●pwd
显示当前所在路径的全路径
语法:pwd
● clear
清空当前屏幕
语法:clear
●Is/II
Is以平铺方式显示当前目录包含内容
II以详细列表形式显示当前目录包含内容。
Is目录:指定目录下包含内容
●mkdir
新建一个空文件夹
语法:mkdir 路径
mkdir -p 路径:如果路径中包含了不存在的路径,自动创建。
●rm
删除文件。默认删除文件。
示例:
rm-r 文件夹路径:删除目录。所有文件夹及文件夹中子内容都需要通过输入y进行确认删除。
rm -rf 文件夹路径:删除文件夹不需要确认。
rm-f文件路径:删除文件不需要确认
●touch
创建指定名称一个空文件。在1inux中文件不是必须带有扩展名。带有扩展名的文件都是具有特定格式的文件。语法:touch 文件路径
●vi/vim
vi 普通编辑,vim是vi的升级版,带有颜色的标记。如果编辑的文件不存在,且给文件输入内容后进行保存,会自动帮助创建文件。
语法:vim 文件路径
注意:
键盘i或insert键启用编辑。 Esc 退出编辑状态。
在退出編辑状态下
按d两次表示删除当前行。
d+数字+回车表示删除数字行。
:q退出。只在没有做任何改变的时候能使用。
:wq 保存并退出。
:q!强制退出。
强制退出可能出现临时文件,包含强制退出状态,在进入文件实际内容时,会先进入一个界面,输入c才会看见真实文件路径。因为存在临时文件,通过rm -f .xxxxxx.swap删除临时文件解决出现额外界面文件。
●cat
查看文件全部内容
语法:
cat 文件路径
●tail
默认查看文件后10行
语法:
tail 文件路径
tail -n 文件路径
tail -f 文件路径:动态监听文件内容。Ctr1+C释放光标echo“内容”>> 文件路径:尾加内容到文件中。
●mv
剪切文件(夹)
语法:mv 原文件路径 新文件路径
●cp
复制文件。
语法:
cp 原文件路径 新文件路径
cp -r 原文件夹路径 新文件夹路径
●tar
解压压缩文件。
.tar.gz或.tar
语法:
tar zxvf 文件路径。
z:是否具有gzip格式,简单理解扩展名是否是.tar.gz
x:解压内容
v:显示解压过程
f:必须写到最后,后面紧跟文件路径(有空格)。
● systemctl
systemct1enable 服务名 开机自启动
systemct1disable 服务名 开机不启动
systemct start服务名 启动服务
systemctl stop 服务名 停止服务
systemctl restart 服务名 重启服务
systemctl status 服务名 查看状态
●ip addr
查看ip地址
也可以使用 ifconfig命令查看
五、Linux 中快照
快照
作用:快照就是备份一份当前系统,类似windows的还原点。使用快照可以还原系统,也可以克隆系统。要求:快照功能是在关机状态使用的。
六、Maven
Maven是使用Java语言编写的基于项目对象模型(POM)项目管理工具软件。开发者可以通过一小段描述信息来管理项目构建、报告和文档。使用Maven可以更好的帮助完成项目的管理,具体来说有:
1.依赖管理
Maven给每个项目提供了一个pom.xml文件,可以在其中配置需要的第三方资源,当pom.xml文件发生变化的时候Maven会重新加载该配置文件,根据配置信息查找对应的第三方资源并导入到项目中使用。
2.项目构建:
Maven提供了统一的项目构建方式,从编译到部署,并且操作简单。
3.插件
Maven提供了丰富的插件,比如项目打包插件,测试插件等等。
●Maven加载原理
Maven工具会根据pom模型(pom.xml)加载当前项目需要使用的资源。每次加载都是从本机某个指定的文件夹去加载。如果本机文件夹中没有这个资源,会从Maven远程服务器中下载到本机文件夹,Maven再去加载本机文件夹中资源。
中央仓库(Central Repository):Maven官方服务器。里面存放了绝大多数市面上流行的jar。允许用户注册后,上传自己的项目到官方服务器。
本地仓库(Local Repository):本机的文件夹
镜像仓库(Mirror Repository):对于国内来说,访问国外的Maven仓库会特别慢。镜像仓库就是另一台备份/复制了中央仓库的服务器。
资源坐标:每个Maven需要使用的资源都有一个坐标,通过坐标可以精确告诉服务器需要的是哪个资源,由三部分组成:
Groupld:一般是逆向公司域名 com.bjsxt。同一个公司的Groupld都是相同的。
Artifactld:一般是项目(jar)名 mysql-connector-java。
Version:版本号 8.0.28。
●Maven和Ant对比
Ant和Maven都是Apache的项目管理工具,也都是Java程序非常常用的编译、运行、测试、打包工具。
Maven是基于Ant研究出来的,Ant有的功能Maven都有,但是Maven有的功能Ant不一定有。无论是IDEA还是Eclipse,默认的Java项目就是使用Ant进行项目管理的。
在老Ant项目需要自己添加build文件,但是在目前的java项目中都不需要自己进行管理,都可以通过idea或eclipse帮助进行管理即可。
Maven项目在创建时需要明确的指定项目类型为maven项目,整个Maven项目采用约定的方式,文件等内容都有固定的位置,通过pom模型进行管理项目。
Maven具有中央仓库和本地仓库,这点也是优于Ant的一大特点,在移植项目时只需要移植源码即可。并且Maven项目是有完整生命周期的,而Ant是没有的。
七、Maven项目类型
●项目类型介绍
Maven的项目类型有三种:
jar:相当于使用idea创建的java项目。打包主要打包java文件。
war:web项目类型。打包时除了SrC中内容,还会包含webapp目录,要比jar类型文件打包的内容更多。
pom:在聚合项目中使用。聚合项目中如果一个项目为父项目,项目类型应该为pom类型。当项目类型为pom类型时,表示该项目除了会配置pom.xml以外不会有任何其他类或资源文件。
●修改项目类型
在pom.xml文件中通过<packaging>设置项目类型。
八、使用Maven创建Web项目
●使用Maven创建Web项目有两种方式:
•创建普通Maven项目,手动添加webapp目录。
•使用原型创建Maven项目,手动添加src目录。
● 创建项目后添加webapp目录
• 创建普通Maven项目
•手动添加目录
在src/main下新建webapp/WEB-lNF/web.xml。
注:
1.webapp目录名称不要写错了,写错了即使在WEB模块进行配置也无效。同时位置也应该放在src/main下,如果放在别的位置,也会出现即使配置了也无效的情况。
2.WEB-INF目录注意全是大写的,
3.如果不按照图示进行创建,可能导致最后发布到tomcat后出现404。
●war项目的构建方式
•手动构建
正常的建立一个jar项目 然后再pom.xml中指定项目类型<packaqing>war</packaqing>
在main-->新建一个文件夹名字为webapp 在webapp下新建文件夹为WEB-INF在WEB-INF下新建web.xml一定要标记web.xml和webapp这两个目录
•使用模板构建
直接使用模板构建war项目 选择模板的时候一定选择webapp这个模板 然后在补全java和 resources 这两个目录
建议:修改一个模板中自带的web.xml文件 改成之前使用的web.xml即可
九、POM模型中的几种关系
在POM模型中定义了三种关系:依赖、继承、聚合。
Maven基于POM模型的项目管理工具,所以这三种关系在Maven中都存在。
聚合关系一般都出现在分布式、微服务架构的项目中。
●依赖关系
描述:依赖关系就是平时说的导包 把一个项目依赖到另外一个项目中
作用:依赖关系最主要的作用是为了调用另外一个项目中【封装的代码】
注意事项:
•如果我们依赖的是自己定的项目 这个时候一定要把自定义依赖项目 安装到本地库中[先清空 再安装]
•依赖关系之间 存在传递性
采用关系 就是 就近原则依赖
使用该标签可以排除指定的依赖
●继承关系
描述:项目和项目之间可以通过继承关系 从而实现pom.zml文件配置内容减少
作用:把项目中使用到共同的坐标 都抽取到一个项目中使用继承关系 从而实现配置内容的减少
注意事项:
•项目和项目继承是单继承
•充当父项目的项目类型没有特殊要求 建议 使用pom类型项目 作为父项目
•父项目一定安装到本地库中如果父项目中内容做了改变 一定重新的清空然后再次安装到本地库
•dependencyManagement 把依赖定义到这个标签中 在子项目中可以进行选择性的继承
子项目中直接写项目名称和组名即可不需要写版本号 版本号在父项目已经定义
这样定义的好处:可以选择性继承 并且所有的坐标可以在父项目中统一管理
●聚合关系
聚合关系的前提:继承。
聚合主要用在后面的分布式架构或微服务架构的项目,对于目前的单体架构项目来说很少使用聚合项目。
聚合项目最大的好处:在同一个窗口中创建多个项目。且项目之间依赖时不需要install,也可以依赖。而且还能保证所有项目都是独立的,可以独立运行。
●聚合和继承的区别
1.父项目类型不同:聚合关系父项目一定是pom,但是继承关系中父项目可以是jar也可以是pom
2.是否包含子项目不同:聚合项目的父项目会包含<modules>标签,把所有子项目都包含上。而在继承关系中,父项目不需要有任何特殊处理。
十、部署Maven项目到服务器
●部署说明
随意编写一个web项目,使用JDBC连接服务器中数据库,然后部署到服务器中。
部署Maven项目到服务器的方式有两种:
•传统方式。把项目打包成war,然后上传到服务器的Tomcat中。
•热部署。一键部署项目到服务器的Tomcat中。
●手动部署
•打包项目
保证项目的<packaging>为war类型。
然后点击Maven面板的package进行打包。
如果当前项目有编译错误是无法正常进行打包的。
●部署到服务器中
和Linux中部署项目到服务器的流程是相同的。
把war包上传到服务器的Tomcat中,然后重启。
●热部署方式
使用Maven的Tomcat插件可以实现把项目一键部署到服务器的Tomcat中,这种部署方式不需要重启Tomcat,称为热部署。
•配置Tomcat远程访问
想要使用热部署就必须先配置Tomcat自带的manager项目。Manager项目支持可视化管理Tomcat中项目,也知道使用命令管理Tomcat中项目。
可以通过Tomcat的Root项目首页中Manager App按钮进入到Manager项目
●修改项目的Tomcat插件配置
在配置好Tomcat的远程账号和密码以及角色信息后,Tomcat不能关闭,保持运行状态。在需要远程部署的Maven的项目的pom.xml文件配置远程部署的账号密码以及url地址。
注:
URL:IP和端口为服务器IP和服务器中Tomcat的端口,/manager/text是固定的
username:为配置的用户名
password:为配置的密码
十一、Maven命令和项目生命周期
●常用命令
mvn
help:system 打印系统属性和环境变量
mvn clean 删除target目录,清理所有之前所有编译的内容。手动删除target目录和运行此命令是等效的。
mvn validate 验证项目是否可用
mvn compile 编译项目,生成target目录
mvn test 执行测试。执行测试时会自动运行src/test/java 目录下所有/*Test.java、/Test.java、**/TestCase.java文件,采用约定方式执行。
mvn package 打包项目
mvn deploy 发布项目
mvn verify 校验包是否正确
mvn install 安装到本地仓库
mvn site 生成站点。但是需要添加插件才能使用。
●Maven项目生命周期
•Maven有三套相互独立的生命周期(Lifecycle):
•Clean Lifecycle:做一些清理工作;
•Default Lifecycle:构建的核心部分、编译、测试、打包、部署等;
• Site Lifecycle:生成项目报告、站点、发布站点;
•其中Default Lifecycle包含如下阶段:
• validate 验证项目是否正确并且所有必要的信息都可用
•compile 编译项目的源代码
•test 使用合适的单元测试框架测试编译的源代码。这些测试不应该要求打包或部署代码
•package 将编译后的代码打包成可分发的格式,例如JAR。
•verify 对集成测试的结果进行任何检查,以确保满足质量标准
•install 将包安装到本地存储库中,作为本地其他项目的依赖项
•deploy 在构建环境中完成,将最终包复制到远程存储库以与其他开发人员和项目共享
十二、scope
在pom.xml中<dependency>标签有一个<scope>子标签,表示当前依赖的域(域:有效范围)。
●scope可取值:
compile 默认值,不配置scope时的取值,表示依赖参与整个项目的编译、打包、测试、发布。也就是说:编译时需要使用、测试时需要使用、最终打包时会包含。属于一种强依赖。
provided 只是编译时生效,项目最终被打包时不会包含该依赖。常见servlet的依赖时需要配置。
runtime 运行时生效。表示编译时不参与,但是参与项目的测试、打包。该依赖被打包时会被包含。
test 只在测试时生效,这个包中的类只能在src/main/test中使用。常用在junit依赖时需要被配置。
system 类似provided,但是需要结合systemPath属性,表示依赖不是来源于本地库,而是来源于其他目录。使用较少,在一些特殊项目中才可能被使用。