Java:55-开发环境搭建和Shell编程

开发环境搭建和Shell编程

开发环境搭建(掌握) :
Xshell和Xftp工具:
下载和安装方式:
下载地址:https://www.netsarang.com/zh/
其他下载地址:
链接:https://pan.baidu.com/s/16U158rvwNbsgH0vzpzfUPQ
提取码:nare
至于选择那个安装,就看你自己了
安装方式:直接一路点击下一步即可,安装过程选择免费版
使用方式:

在这里插入图片描述

网络模式设置:
设置网络连接模式为NAT模式,如下图:

在这里插入图片描述

修改配置文件:
使用root用户打开/etc/sysconfig/network-scripts/ifcfg-eno16777736文件,有些虚拟机软件或者镜像使得该文件可能是不同的,但基本都是ifcfg-e开头的,且基本只有一个,自己看看就知道了,添加或修改的内容如下(如果不知道是哪个对应的信息,则可以百度):
/*
BOOTPROTO=static  使得变成静态ip
ONBOOT=yes 重启生效
IPADDR=192.168.164.128  注意:这里用自己的对应ip范围(查看虚拟机的网络网关,一般在vm软件里面可以查看,具体可以百度,一般修改164这个地方,后面的基本也是如此,即如164.2里的164),ip在网络上的位置 ipaddr
GATEWAY=192.168.164.2 网关网络到其他网络需要的口子,可以叫做路由器 gatewar
NETMASK=255.255.255.0 子网掩码,将ip划分为主机地址和网络地址 netmask
DNS1=114.114.114.114 向指定位置解析申请的域名 dns1
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库
注意:上面只是虚拟机软件虚拟出来的,并不是真正的有对应设备(如网关),但连接时,确会有起作用
*/
配置文件生效:
//一般的我们可以重启虚拟机,来使得该配置文件生效,即reboot命令
//当然,也可以不重启使得生效,如下:
//使用命令使得配置文件被读取生效:service network restart 实际上就是重启网络服务
//要注意:服务和配置文件是有区别的,服务需要开启才可,而配置文件是别人读取这个信息
//一般我们改变时,需要重新执行这个配置文件,实际上就是执行文件里面的操作,而没有文件操作的,执行是没有用的
//所以需要其他的来重新读取,即上面的重启对应服务
//之所以有上面的决定,是因为数据的变化,配置文件,无非就是存放对应数据
//而执行或者重新读取,都是获得改变后的数据而已
//而像windows系统,你会发现,操作配置文件时,并没有进行执行操作,是因为你在操作对应程序时,都会去读取一下的
//如域名的设置,都会去读取一下的
//而上面的重启服务,他已经在执行了,所以为了去读取改变的配置文件,需要重新启动
之后就可以连接了,之所以可以连接,是因为Linux多用户
下面介绍在Linux下载对应开发环境,注意系统版本
JDK的下载和安装:
下载和安装方式:
下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
安装方式:将下载好的jdk安装包通过Xftp工具传输到CentOS系统中,使用tar命令解压即可
在Xshell里点击如下:

在这里插入图片描述

有颜色的那个,当你安装好Xftp时,点击,根据当前状态自动帮你创建连接
若你自己使用Xftp,那么就要注意协议和端口
一般来说Linux是没有对应ftp协议的,所以通常都有将协议的ftp改成sftp,因为sftp是ssh协议的一部分(一般虚拟机都是用ssh)
要注意:协议最好是相同的,因为不同的协议基本是不能互相连接的
且端口也是不能被同样的协议占用的(注意是同样的协议,不同的协议可以),这样基本就可以进行连接操作
文件连接一般使用的是sftp(虚拟机一般是这个,占用端口22),而连接虚拟机的一般是ssh(占用端口22),而ftp一般占用21端口(虚拟机一般不使用这个操作文件)
虚拟机也可以叫做Linux,虽然他是一个对应软件,但也可以称之为对应机子
而端口是必须要没有占用的,一般的连接,21端口基本占用,所以我们通常需要没有占用的端口,如22端口
但实际是端口是可以监听不同的协议的(如ssh,sftp,这两个都可以去占用22端口)
即不同的内容,但相同的就不可以,实际上一个端口可以当成一个容量,每有一个不同数据,开辟一个空间,但只会开辟一个
所以相同的,就连接不上了
配置环境变量:
使用root用户打开配置文件/etc/profile,向文件末尾追加内容如下:
//export JAVA_HOME=/usr/javajdk
//解释:定义变量JAVA_HOME,后面是值
//export PATH=$JAVA_HOME/bin:$PATH
//解释:定义变量PATH,后面$是取变量,:是路径分割符
//再将原来的$PATH放在后面,那么就相当于给PATH添加新的内容,并重新赋值了
//即export是一个用于设置或显示环境变量的命令
保存退出后让文件生效并验证是否配置成功:
//source /etc/profile  重新执行这个配置文件,即使得该配置文件生效
//javac -version
//由前面数据变化可知,当你执行后,就算你删掉这个对应配置,并不会影响数据的设置完毕,因为其他的并没有再次读取
//除非你继续设置
//如果配置好后,还是访问不了,可以看这个博客:https://blog.51cto.com/u_15346267/5055558
//如果还是不行,可以看这个博客:https://blog.51cto.com/u_147655/5379077
//当然,大多数是因为系统的原因导致的(也有可能是对应的jdk的问题,一般是系统,可能操作不了对应的版本的jdk),这里注意即可
Tomcat的下载和安装:
下载和安装方式:
下载地址:https://tomcat.apache.org/download-80.cgi
安装方式:将下载好的Tomcat安装包通过Xftp工具传输到CentOS系统中,使用tar命令解压即可
启动和关闭方式:
//在这里就不是bat了,而是sh,windows是bat,这是对应系统的差别,因为都是对应系统的处理方式
//因为bat是windows识别的,sh是linux识别的,都是他们自带一种方法
//当然了对应的他们没有,所以tomcat就有bat和sh两个方式执行
//其实也可以在对方安装对应方式,只不过大多数默认的系统,都没有对应方式
//startup.sh
//shutdown.sh
//注意:要执行对应的文件,一般不能直接写入上面的文件全名,即显示找不到命令,与windows不同
//之所以这样,主要是因为linux的直接写,只会当作全局命令,而不会去当前目录里去找,这是两个系统的不同
//所以linux也有一个windows也不会当作的操作,即./执行命令
//即linux里要执行对应的操作,一般需要如下操作
//可以使用./startup.sh或者./shutdown.sh来执行,与windows不同
//即使用./后面的代表要执行的二进制文件
//虽然有些命令也算二进制文件,但他们是全局的,所以不需要对应./,windows是不会识别./的执行方式的
//这也是他们两个的不同之处(因为是不同系统,即有很多不同的地方的)
开放防火墙端口:
之所以需要这个,是因为远程访问会受到防火墙的阻塞(内部基本不会)
所以我们需要对相应的端口进行开放,使得我们的电脑可以对我们创建的虚拟机(相当于其他电脑了)可以访问
这里我就说明一下,为什么可以创建对应的虚拟机
我的理解:无论的ip还是什么其他的网络地址,最终的结果,就算网络信息上给出的分组信息,这个信息就可以识别对应电脑
那么电脑的接收网络信息的地方,会根据对应地址,进行相应的存放,而创建的虚拟机,就算作多出来的一个对应地址
即实际上还是通过系统中的相应操作(一般是文件,形成了一个电脑里可以有虚拟机的操作)
所以可以说虚拟机这个软件是可以创建虚拟机的,因为硬件到软件中,那些系统也算是通过操作硬件而已
所以上述接收到的对应地址是可以进行改变的,就如qq也可以进行通信(只是虚拟机网路被创建出来了隔开)
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
//解释,让这个ip的防火墙,允许输入,基于tcp协议的8080端口的接收
//开启8080端口(暂时开通),重启需要重新开通,因为他的对应配置文件的作用
其实linux的命令也是可以加上" ; "冒号的,而;中文冒号,会当作一起,英文冒号则当作结束符号
配置环境变量:
使用root用户打开配置文件/etc/profile,向文件末尾追加内容
//export CATALINA_HOME=/usr/tomcat
//export PATH=$CATALINA_HOME/bin:$PATH
保存退出后让文件生效并验证是否配置成功
//source /etc/profile
//startup.sh
//这时就不用./了,而是直接变成全局了
但建议不要配置tomcat环境变量,是因为,若要开启多个服务器,那么由于配置了环境变量
即全局只能执行该变量对应的服务器,所以,一般不进行配置
在这里可以感兴趣的配置一下
发布Web项目:
将Web项目打成war包,通过Xftp工具将war包放在tomcat/webapp目录并启动
前面也说过,idea的某些选项可以最终访问到这里,其实相当于服务器自己访问自己里面的内容
那么这个时候就可以直接访问对应项目的东西了,如

在这里插入图片描述

你也许会有一点疑惑,为什么idea创建的,可以在linux里面运行
首先,idea只是让你更好的写代码,而对应的执行是jdk运行环境来执行的,而服务器就是进行命令的全部执行
即类似于批量的使用java.exe来执行对应class
所以可以说,只要有对应环境,以及class文件,那么就可以运行项目了
因为idea的操作运行服务器,最终基本就是这样的,他们的配置就是决定资源的访问的
Mysql的下载和安装:
下载Mysql的repo源:
注意:如果报错,先看一下ping www.baidu.com,可不可以进行网路访问,若不行
看一下你配置文件的网关是否正确,这是因为网关是一个口子,必须要正确的
否则会解析不了你所对应访问的位置(位置有网关帮你分配)
//wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
//可以手动访问后面的网站,就会有一个下载出现,实际上上面就是一个快照下载
//快照就是下载对应文件的一系列步骤的封装
//wget下载命令的意思,实际是一种下载工具
//通常一个repo文件定义了一个或者多个软件仓库的细节内容
//记录了包的下载路径,相当于寻宝图,告诉yum去哪里寻找将要下载的软件
//wget命令用来从指定的URL下载文件
//yum用于RPM包的添加,删除,更新,自动解决包的依赖问题以及系统更新升级
//也有下载的意思,可以说他是一系列操作的集合
安装rpm包:
//rpm -ivh mysql57-community-release-el7-8.noarch.rpm
//进行解析快照安装(基本只能操作这个rpm文件)
//可以理解为我们手机上的先解析安装包,然后再通过我们手动的点击安装,这样的整体操作的意思
安装Mysql :
//yum install mysql-server
//这样也可以安装(但首先需要先安装上面的rpm包,安装后会出现对应的新的包,这里就是那个安装)
//上面基本是这样的,先下载好,解析安装后,可能会出来一些对应包(需要yum来操作,rpm基本操作不了),这时需要yum了
//因为rpm基本只能操作rpm结尾的文件,但实际上只是只能操作rpm相关内容的文件,与是否是rpm结尾无关,所以并不是必须是rpm结尾
//然后根据出现的对应包进行下载,当然,其实也可以直接yum下载对应包(需要存在,先远程,然后本地)
若出现了密匙错误,一般是没有对应密匙,或者不匹配,因为下载都是需要对应的密匙的,执行如下即可:
//rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
//直接导入对应快照
//注意:一般对文件造成大的操作的,都需要root权限
引入了最新密匙,使得下载时,会去安装好的这里面去加载对应密匙
下面三种可以理解为:
wget:类似于迅雷,是一种下载工具
yum:是一种软件安装方式
rpm:软件管理,一般下载的都由他管理,或者解析,然后安装
启动服务:
//service mysqld start
//grep password /var/log/mysqld.log
//查看默认分配的密码

//注意:默认情况下,安装好mysql后
//是开机自启的(无论你是否手动的启动过,下次的启动linux,mysql都会自动的启动)
//即,如果你安装好后,直接的重启linux而不手动的启动mysql,那么再次的查看服务状态时,一般都是启动的mysql的

//如果(手动,或者重启linux)启动不了,那么手动的启动自然也启动不了,那么可以百度查看错误
//实在不行,可以删除所有相关的mysql,重新操作即可(百度可以查看如何操作)
//具体删除所有相关的mysql方式的地址如下:https://blog.csdn.net/weixin_65034883/article/details/126039895

查看服务状态 :
//systemctl status mysqld
使用root用户登录:
//mysql -u root //一般是mysql -uroot或者//一般是mysql -uroot -p(一般是这个)
修改临时密码 :
因为不修改密码,基本执行不了mysql命令
//alter user 'root'@'localhost' identified by 'QiDian@666';
//注意:密码又格式要求,要有大写,小写,特殊符号,数字等等,且最低8个数
图形化界面访问数据库:
使用SQLyog工具:
启动图形化界面工具SQLyog连接虚拟机中Mysql数据库,如下图:

在这里插入图片描述

之所以出现这种情况,一般是因为root的默认权限为只能是本机访问,在mysql里面可以设置为%,使得其他电脑访问
解决方案 :
使用root权限登录数据库后选择mysql库:
//mysql -u root -p
//use mysql
查看mysql库中的user表的host值后修改为通配符%:
//select host from user where user='root'; 
//update user set host='%' where user='root';
//flush privileges; 刷新权限信息,防止没有改变(虽然可能改变了)
查看修改结果并重新测试:
//select user,host from user

在这里插入图片描述

若出错了,一般是防火墙阻塞
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
开放对应端口防火墙
Shell编程(熟悉):
基本概念:
Shell是一个命令行解释器,可以接收应用程序或用户命令,然后访问操作系统内核
Shell是一个功能相当强大的编程语言,易编写、易调试、灵活性强
编写第一个程序 :
使用vi工具创建xxx.sh的文件
以#!/bin/bash开头并编写代码后保存
#表示使用bash工具来解释代码
#!/bin/bash
echo HelloWorld!
#是注释
#其中#!可以不写(这是一起的不代表注释,但也使得后面不运行),但有些东西必须要说明,表示是这个使用,如函数等等
在Shell里面,sh后缀可以不写的,与java不同,java编译只识别java后缀,之所以使用sh后缀,是为了方便识别
执行Shell程序的方式 :
方式一:./文件名,此方式需要执行权限
方式二:/bin/bash 文件名,此方式不需要执行权限
一般linux自动配置了bash的环境变量,所以也可以直接bash 文件名执行,也可以简写成sh 文件名
ls -l也可以简写成ll
之所以简写,一般都是一样的操作的不同执行的文件
变量的定义:
语法格式:
定义变量:变量=值
#!/bin/bash
name=zhangfei
echo $name
unset name   #撤销name变量,那么这个变量就不存在了
echo $name   #不存在的变量,相当于一个空值,那么就是输出空值
#注意,name=zhangfei中不能又空格,否则不会识别,即报错
#而且要取得变量,需要加上$符号,才会算作取得变量,否则就算一个数(可以理解为字符串数),即打印name
#注意:有些名称有特殊的会报错,如单词的写ss
#之所以这样,是因为这是执行文件,那么里面的相当于是在命令行里执行的,这与其他语言是不同的
#如java需要编译等等,再jre环境下执行
#所以可以实验一下,在命令行里写出name=zhangfei,回车,虽然每反应,但其实是在一个空间里进行存放的
#然后再echo $name,那么就会打印张飞,由此可见每个终端都有一个存放对应代码的地方
#所以执行文件其实也算作执行里面的代码,由终端帮他执行,即会判别里面的代码操作
#但注意的是,文件之间的变量是不会互相识别的,所以终端自带的文件和执行的文件的变量都只是自己各自的变量,互不影响
#所以你在命令行设置的变量(存放到自带的文件地方),执行文件里的echo $name,是没有值的,即不影响
#所以所既然没有值,那么echo输出的就算空的,那么就会发现输出一个空值(空值占一个命令中的行)
#由上所述,那么就知道为什么=之间不加空格了
#因为加=使得他们会被识别(因为是一起的),而单词的会认为是一个命令*因为隔开就不是一起的了)
#所以报错提示时,会说该命令没找到
撤销变量:unset 变量
定义规则:
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写
不能使用bash里的关键字
中间不能有空格,可以有下划线
在bash中,变量默认类型都是字符串类型,无法直接进行数值运算(因为需要$来取值)
变量的值如果有空格,需要使用双引号或单引号括起来
双引号和单引号的区别是:双引号里面可以读取识别变量,而单引号不会
#!/bin/bash   
name=zhangfei   #定义一个名字为name的变量初始值为zhangfei,=两边不能有空格
echo $name      #打印变量name的数值
#unset name      #撤销name的定义
echo $name
#show='My Self!$name' #若变量值中有空格则使用单引号或双引号,但双引号中可以取出变量的数值 
show="My Self!$name"  
echo $show
常用运算符:
算术运算符 :

在这里插入图片描述

#!/bin/bash

#定义两个变量
ia=5
ib=2 #一般"2"与2是一样的,2会默认为字符串,字母也是一样,注意linux的"和'的区别即可

#打印两个变量的数值
echo "ia=$ia"
echo "ib=$ib"

#实现加法运算,要求+两边必须有空格,否则就不会进行加法运算,expr实际上不会显示,但由于echo优先级高,所以才显示
#即加上``,那么他就会先执行,使得不显示
echo `expr $ia + $ib` #expr一般是操作运算的,可以百度查看
#使用其它方式实现加法运算
ic=$[$ia+$ib] 
#实际上也可以使用expr来赋值,但为了节省代码量,使用$[]的形式对内容进行运算,这时[]里面的变量有无空格都可以
#相当与使用[]将他们变成一个式子,最后使用$取值,使用$取值时,顺便进行运算,无视有无空格
#单纯的[]会显示
echo $ic
id=$(($ia+$ib))
#使用单纯的()不会显示,使用两个(())报错,即$(())一起算作expr的作用
echo $id

关系运算符:

在这里插入图片描述

流程控制语句:
if [ 条件判断式 ] 
  then 
   程序 
fi
#!/bin/bash

#定义一个变量用于描述考试成绩
score=60
echo $score

#使用if判断给出及格或者不及格的提示信息
if [ $score -gt 60 ] #注意,使用if式,[],左右都要空格隔开,否则会当成一体
then 
   echo "恭喜您考试通过了!"
elif [ $score -eq 60 ]; then
   echo "60分万岁,多一分浪费!"
else  #最后一个不加then,其他的必须要,否则报错
   echo "下学期来补考吧!"
fi
#注意:这些代码,可以对连接一起的使用;隔开,这样的隔开后,后面无视空格
#之所以可以隔开,是因为他们就是一条语句
#这样的;隔开,then后面不可以加,否则的话,基本报错
#因为then后面要接代码(所以需要接代码的基本都不可以加,如case),由于他们是一条语句,所以我们不能操作语句内部
#报错都是识别出来的(其他语言基本如此)
#注意:最好不要使用;进行隔开,即换行是最好的操作,因为;容易出错
在前面说过,;可以当作结束符号
case语句:
case $变量名 in 
"值1")   
如果变量的值等于值1,则执行程序1   
;; 
"值2")   
如果变量的值等于值2,则执行程序2   
;;
…省略其他分支… 
*)   
如果变量的值都不是以上的值,则执行此程序   
;; 
esac
#!/bin/bash

#提示用户输入1 ~ 4之间的整数并记录到变量中
echo "请输入1~4之间的整数:"
read num   #表示读取一个整数放到变量num中

#使用case语句进行批评和打印
case $num in #开始
    1) echo "你选择了1号业务!" #当然数字是数字,否则一律都看成字符串,1,"1"
    ;;
    2) echo "你选择了2号业务!"
    ;;
    3) echo "你选择了3号业务!"
    ;;
    4) echo "你选择了4号业务!"
    ;;
    *) echo "你没有选择1~4号之间的业务,你想干啥?"
    ;;
esac #结束


for循环 :
for (( 初始值;循环控制条件;变量变化 )) 
do 
	程序 
done	
#!/bin/bash

#定义一个变量负责记录累加和
sum=0

#使用for循环计算1 ~ 100之间的累加和并记录到上述变量中
for(( i=1;i<=100;i++ )) #这一行可以无视空格,当然(())不能无视,就如for不可分离一样,是语法规则
do #开始
   sum=$[$sum+$i]
done #结束

#打印变量的数值
echo $sum

while循环 :
while [ 条件判断式 ] 
do
	程序 
done
#!/bin/bash

#使用while循环实现1 ~ 100之间的累加和
#定义两个变量分别记录累加和与初始值
sum=0
i=1

#使用while循环
while [ $i -le 100 ] #空格都要加上
do
   sum=$[$sum+$i]
   i=$[$i+1]
done

#打印结果
echo $sum
函数:
[ function ] 
funname[()] 
{   
Action;   
[return int;] 
}
funname 	
#注意:这里有中括号的可以省略不写,但要注意function和()必须要留一个
#shell的函数的return基本只能返回数字,最大为255,超过了按照0处理,若为非数字字符串,那么就是255
#这个返回不是其他编程语言一样的返回,而是一个函数执行号,也可以叫做状态码,且基本赋值不了
#但可以使用echo $?来获得上次调用函数的返回,只能是上一次调用
#!/bin/bash

#定义一个函数负责计算两个输入数据的和并打印
function sum()
{
    s=$[$1+$2]
    echo $s
}

#提示用户从键盘输入两个数据
read -p "input num1:" num1 #-p后面接上提示,使得有提示的输出
read -p "input num2:" num2

#调用函数
sum $num1 $num2

最后不得不说明一点:
在linux中"/“才是路径的处理,而windows中”/“和” \ “通常都一样,但是一些命令需要正确,特别的是关于linux的命令,就算在windows中最好也操作”/“,而且有些命令可能对路径有强指定,比如末尾不能加上”/“或者” \ ",当然,这里了解即可,只是自身特性和命令的部分操作而已
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值