JavaWeb - 开发环境搭建和 Shell 编程
开发环境搭建
Xshell
和 Xftp
工具
下载地址:https://www.netsarang.com/zh/
设置网络连接模式为 NAT 模式
使用 root 用户打开 /etc/sysconfig/network-scripts/ifcfg-eno16777736
文件,添加内容如下:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.91.128
GATEWAY=192.168.91.2
NETMASK=255.255.255.0
DNS1=114.114.114.114
使用命令使得配置文件生效:service network restart
JDK 的下载和安装
下载地址:https://www.oracle.com/java/technologies/javase-downloads.html
将下载好的 JDK 安装包通过 Xftp
工具传输到 CentOS 系统中,使用 tar 命令解压即可。
使用 root 用户打开配置文件 /etc/profile
,向文件末尾追加内容如下:
export JAVA_HOME=/usr/javajdk
export PATH=$JAVA_HOME/bin:$PATH
保存退出后让文件生效并验证是否配置成功:
source /etc/profile
javac -version
Tomcat 的下载和安装
下载地址:https://tomcat.apache.org/download-80.cgi
将下载好的 Tomcat 安装包通过 Xftp
工具传输到 CentOS 系统中,使用 tar 命令解压即可。
# 启动和关闭方式
startup.sh
shutdown.sh
# 暂时开放防火墙 8080 端口(重启后失效)
/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
使用 root 用户打开配置文件 /etc/profile
,向文件末尾追加内容(为了方便后续搭建服务器集群,一般不做这个 tomcat 的环境变量配置):
export CATALINA_HOME=/usr/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
保存退出后让文件生效并验证是否配置成功:
source /etc/profile
startup.sh
将 Web 项目打成 war 包,通过 Xftp
工具将 war 包放在 tomcat/webapp
目录并启动。
MySQL 的下载和安装
# 下载 MySQL 的 repo 源
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
# 查看安装结果
rpm -qa | grep mysql
# 启动服务
service mysqld start
# 查看服务状态
systemctl status mysqld
# 查看临时密码
grep password /var/log/mysqld.log
# 使用 root 用户登录并输入临时密码
mysql -u root -p
# 修改临时密码
alter user 'root'@'localhost' identified by 'RendaZhang@666';
# 暂时开放防火墙 3306 端口(重启后失效)
/sbin/iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
图形化界面访问数据库
使用 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;
启动图形化界面工具 SQLyog
连接访问虚拟机中 MySQL 数据库。
Shell 编程
基本概念
Shell 是一个命令行解释器,可以接收应用程序或用户命令,然后访问操作系统内核
Shell 是一个功能相当强大的编程语言,易编写、易调试、灵活性强
编写第一个程序
使用 vi 工具创建 xxx.sh
的文件。
以 #!/bin/bash
开头并编写代码后保存。
执行 Shell 程序的方式
方式一:./文件名
,此方式需要执行权限。
方式二:/bin/bash 文件名
,此方式不需要执行权限。
变量的定义
语法格式
定义变量(等号两边不能有空格):变量=值
撤销变量:unset 变量
定义规则
变量名称可以由字母、数字和下划线组成,但是不能以数字开头,环境变量名建议大写。
不能使用 bash 里的关键字。
中间不能有空格,可以有下划线。
在 bash 中,变量默认类型都是字符串类型,无法直接进行数值运算。
变量的值如果有空格,需要使用双引号或单引号括起来。如果使用双引号可以进行变量连接,如:
#!/bin/bash
name=rendazhang
echo $name # rendazhang
show='Renda Zhang'
echo $show # Renda Zhang
show2="RendaZhang $name"
echo $show2 # RendaZhang rendazhang
常用运算符
算术运算符
# 定义两个变量
ia=5
ib=2
# 打印两个变量的数值
echo "ia=$ia"
echo "ib=$ib"
# 实现加法运算,要求 expr 的 + 两边必须有空格
echo `expr $ia + $ib`
ic=$[ $ia + $ib ]
echo $ic
id=$(($ia+$ib))
echo $id
echo `expr $a - $b`
echo `expr $a * $b`
echo `expr $b / $a`
echo `expr $b % $a`
a=$b
echo $[ $a == $b ] # 1
echo $[ $a != $b ] # 0
关系运算符
echo $[ $a -eq $b ]
echo $[ $a -ne $b ]
echo $[ $a -gt $b ]
echo $[ $a -lt $b ]
echo $[ $a -ge $b ]
echo $[ $a -le $b ]
流程控制语句
if 判断
#!/bin/bash
# 定义一个变量用于描述考试成绩
score=100
echo $score
# 使用 if 判断
if [ $score -ge 90 ]
then
echo "考试成绩优秀"
elif [ $score -ge 60 ]; then
echo "考试成绩合格"
else
echo "考试不及格"
fi
case 语句
#!/bin/bash
# 提示用户输入 1~4 之间的整数并记录到变量中
echo ”请输入 1 ~ 4 之间的整数:“
read num
# 使用 case 语句进行输出打印
case $num in
1) echo "选择了 1"
;;
2) echo "选择了 2"
;;
3) echo "选择了 3"
;;
4) echo "选择了 4"
;;
*) echo "无选择"
;;
esac
for 循环
#!/bin/bash
# 定义一个变量负责记录累加和
sum=0
# 使用 for 循环计算
for(( i=1;i<=100;i++ ))
do
sum=$[$sum+$i]
done
# 打印变量数值
echo $sum
while 循环
#!/bin/bash
# 使用 while 循环实现 1 ~ 100 的累加和
sum=0
i=1
while [ $i -le 100 ]
do
sum=$[$sum+$i]
i=$[$i+1]
done
echo $sum
函数
#!/bin/bash
# 打印用户输入的两个整数的和
function sum()
{
s=$[$1+$2]
echo $s
}
read -p "input num1: " num1
read -p "input num2: " num2
sum $num1 $num2
- 用Python做证券指数的三种策略分析
- 明确告诉你,眼界不够,JS再好也成不了好前端
- 手把手教你整合最优雅的SSM框架
- WCF后续之旅(9):通过WCF的双向通信实现Session管理[上篇]
- 周末小贴士之“什么是语法糖”?有啥意义?
- Java反射机制深入详解
- 由for V.S. for each想到的
- 日调度5万亿次,腾讯云微服务架构体系TSF深度解读
- sed的粉丝
- 在Managed Code通过Google Gmail发送邮件以及如何通过Outlook配置Gmail
- 平方根的C语言实现(一) —— 浮点数的存储
- 用awk写递归
- bc计算A股上市新股依次涨停股价
- ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法