第二十八天 Java基础知识(二十二)

文章详细介绍了Linux操作系统的稳定性、安全性以及软件安装的便利性,强调了其在设备系统中的应用。此外,文中还阐述了如何在VMware中设置静态IP以避免IP变动带来的问题。接着,概述了Linux目录结构和常用命令,如cd、pwd和vi/vim等。同时,文章讨论了Maven在项目管理和构建中的作用,包括依赖管理、项目类型和生命周期,并对比了Maven与Ant。最后,提到了Maven项目的部署方法和生命周期中的不同阶段。
摘要由CSDN通过智能技术生成

一、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属性,表示依赖不是来源于本地库,而是来源于其他目录。使用较少,在一些特殊项目中才可能被使用。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值