??个人博客:www.hellocode.top??
所有文章均在上方博客首发,其他平台同步更新
??本文专栏:《Java Web从入门到实战》
??> 如没有Java基础,请先前往《Java零基础指南》专栏学习相应知识
如有问题,欢迎指正,一起学习~~
文章目录
-
- Linux
-
- 初识Linux
- Linux的安装和使用
-
- Vmware
- SecureCRT
- 目录和文件
- 时间同步
- 克隆与快照
- 系统与设置命令
-
- 账号管理
- 用户组
- 系统管理相关命令
- 进程相关命令
- 目录管理
- 文件基本属性
- 综合案例
- 文件管理
-
- touch
- vi/vim编辑器
- 文件查看
- echo命令
- awk命令
- 软连接
- 压缩命令
-
- 查找命令
- gzip命令
- gunzip命令
- tar命令
- zip命令
- unzip命令
- bzip2命令
- 网络与磁盘管理
-
- 网络管理
- 磁盘管理
- yum
- rpm
- shell
-
- 初识shell
- 注释和变量
- 数组
- 运算符
- 选择语句
- 循环语句
- 函数
- Nginx
-
-
- 概述
- 安装
- 发布项目
-
- JavaWeb核心
-
- 企业开发简介
-
- JavaEE规范
- WEB概述
- 系统结构
- tomcat
-
- 服务器
- Tomcat
- 基本使用
- Java WEB项目
- 配置文件
- HTTP协议
-
- 概述
- 协议的请求
- 协议的响应
- 发布资源案例
-
- Servlet介绍
- Servlet
-
- 概述
- 执行过程
- 实现方式
- 生命周期
- 线程安全问题
- 映射方式
- 创建时机
- 默认Servlet
- ServletConfig
-
- 配置方式
- 常用方法
- ServletContext
-
- 域对象
- 配置方式
- 常用方法
- 注解开发
-
- 自动注解开发
- 手动创建容器(了解)
- 学生管理系统1
- 请求对象
-
- 获取各种路径
- 获取请求头
- 获取请求参数信息
- 流对象获取请求信息
- 中文乱码问题
- 请求域
- 请求转发
- 请求包含
- 响应对象
-
- 常见状态码
- 字节流响应消息
- 字符流响应消息
- 响应图片
- 设置缓存
- 定时刷新
- 请求重定向
- 文件下载
- 学生java web实战经典基础篇管理系统2
- Cookie
-
- 会话
- 概述
- Cookie属性
- 方法
- 练习
- 注意事项
- Session
-
- 常用方法
- 对象获取
- 练习
- 注意事项
- JSP
-
- 快速入门
- 执行过程
- 语法
- 指令
- 注意事项
- MVC模型
- 学生管理系统3
- EL表达式
-
- 快速入门
- 获取数据
- 注意事项
- 运算符
- 隐式对象
- JSTL
-
- 核心标签
- Filter
-
- 概述
- FilterChain
- 过滤器使用
- 使用细节
- 生命周期
- FilterConfig
- 五种拦截行为
- Listener
-
- 监听器
- 监听器的使用
- 学生管理系统优化
-
- 解决乱码
- 检查登录
- 优化JSP页面
- MYSQL
-
- 基本概念
-
- 数据库
- Mysql
- 安装
- DDL
-
- 数据库、数据表、数据的关系
- SQL的介绍
- 查询和创建数据库
- 修改、删除、使用数据库
- 查询数据表
- 创建数据表
- 数据表的修改
- 数据表的删除
- DML
-
- 新增表数据
- 修改和删除表数据
- DQL
-
- 查询语法
- 查询全部
- 条件查询
- 聚合函数查询
- 排序查询
- 分组查询
- 分页查询
- 约束
-
- 主键约束
- 主键自增约束
- 唯一约束
- 非空约束
- 外键约束
- 外键级联操作(了解)
- 多表操作
-
- 一对一
- 一对多
- 多对多
- 多表查询
- 练习
- 视图
-
- 数据准备
- 创建和查询
- 修改和删除
- 数据库备份和恢复
- 存储过程和函数
-
- 创建和调用
- 查看和删除
- 变量
- if语句
- 参数传递
- while循环
- 存储函数
- 触发器
-
- 触发器的操作
- 查看和删除
- 事务
-
- 基本使用
- 提交方式
- 四大特征(ACID)
- 隔离级别
- 存储引擎
-
- 体系结构
- 存储引擎
- 基本操作
- 存储引擎的选择
- 索引
-
- 分类
- 创建和查询
- 添加和删除
- 索引的原理
- 设计原则
- 锁
-
- InnoDB共享锁
- InnoDB排他锁
- MyISAM 读锁
- MyISAM 写锁
- 悲观锁和乐观锁
- MyCat
-
- 安装
- 集群环境
- 主从复制
- 读写分离
- 分库分表
- JDBC
-
- 快速入门
- 功能类详解
- 案例
-
- 数据准备
- 需求实现
- 代码展示
- 工具类
-
- 抽取工具类
- 优化学生案例
- 注入攻击
- 事务管理
- 连接池
-
- 自定义数据库连接池
- 归还连接
- 动态代理
- 开源数据库连接池
- 连接池的工具类
- 框架
-
- 源信息
- update方法
- 查询功能
- Mybatis
- JavaScript
- jQuery
- AJAX
- Vue + Element
- Redis
- Maven基础
- Web项目实战-黑马页面
Linux
初识Linux
操作系统:管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。
主流操作系统
- 桌面操作系统:Window系列、macOS、Linux
- 服务器操作系统:Linux、Windows Server
- 嵌入式操作系统:Linux
- 移动设备操作系统:Unix(Linux、ios)
Linux发展历程
- 1984年Minix(只用于教学)
- 1991年编写驱动程序,年底公开Linux内核源码
- 1994年Linux1.0(Linus Torvalds)
- 至此开始流行起来
Linux特点
- Linux是一套免费使用和自由传播的类Unix操作系统
- 是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统
- 它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件
- 继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统
- 两个基本思想
- 一切都是文件
- 每个软件都有确定的用途
- 完全兼容POSIX1.0标准
- 多用户、多任务
- 良好的界面
- 支持多种平台
Linux与其它操作系统的区别
- 开源情况
- 硬件适用
- 本质不同
- 系统界面
- 驱动程序
- 系统使用
- 软件与支持
Windows更适用于家庭个人使用
Linux更适用于企业服务器使用
Linux发行商和常见发行版
- Redhat公司--------Red Hat Linux(最著名的Linux版本、收费)-----免费的CentOS
- CentOS特点:主流、免费、更新方便
Linux的安装和使用
先安装虚拟机,再安装Centos
Vmware
Vmware简介
- 不需要分区或者重开机就能在同一台PC上使用两种以上的操作系统
- 完全隔离并且保护不同操作系统的环境以及所有的软件、资料
- 不同的操作系统之间还可以进行互动操作
- 有复原功能
- 能够设置并且随时修改操作系统的操作环境
- 常见虚拟机软件:VMware workstation、VirtualBox
Vmware下载:https://www.vmware.com/cn.html
CentOS镜像下载:https://www.centos.org/download/
高速下载地址
- http://mirrors.aliyun.com
- http://mirrors.sohu.com
- http://mirrors.163.com
- http://mirrors.cqu.edu.cn/CentOS
SecureCRT
简介:SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录Unix或Linux服务器主机的软件。
目录和文件
- Linux没有盘符这个概念,只有一个根目录/,所有文件都在他下面
- etc表示系统中的配置文件
- usr、usr/bin、usr/sbin都表示系统预设执行文件的放置目录
- var/log表示程序运行日志的存放目录
- 切换根目录:
- 查看目录内容:
时间同步
克隆与快照
克隆:将原系统完完全全的拷贝一份,原系统丢失后克隆的系统还能正常使用
- 占用空间大
- 原系统不存在,克隆体还能用
快照:记录系统当前状态,并不会把系统完整拷贝
- 占用空间小
- 原系统不存在,快照也就无法使用
克隆和拍摄快照时都需要关闭虚拟机
系统与设置命令
账号管理
与用户相关的命令,必须在管理员权限下才能执行
命令:
- 创建用户:
- 用户口令:
- 密码不能是一个回文
- 长度必须大于8位
- 必须是字母和数字的结合
在root权限下切换其它用户可直接切换,无需输入密码
- 修改用户:
- 删除用户:
用户组
将用户分成小组,方便对用户的管理
- 创建用户组:
- 修改用户组:
- 查询用户所属组:
- 删除用户组:
- 管理用户组内成员:
gpasswd是Linux下的管理工具,用于将一个用户添加到组或者从组中删除
- -a:添加用户到组
- -d:从组中删除用户
- -A:指定管理员
- -M:指定组员和-A的用途差不多
- -r:删除密码
- -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
系统管理相关命令
- 日期管理:
参数选项:- :显示字符串所指的日期与时间。字符串前后必须加上双引号
- :根据字符串来设置日期与时间。字符串前后必须加上双引号
- :显示GMT(北京时间为CST)
- :在线帮助
- :显示版本信息
- 显示登陆账号的信息:
- 切换用户:
- 查看当前用户详细信息(用户id、群组id、所属组):
- 提高普通用户的操作权限:
进程相关命令
实时显示process的动态 :
pid:每个进程的id
user:进程是属于哪个用户
PR:进程的优先级
NI:进程优先级(负数为高优先级,正数为低优先级)
VIRT:当前进程占用虚拟内存的总量
S:当前进程的状态
- 实时显示所有进程信息(显示完整命令):
- 实时显示指定进程的信息:
- 结束实时监控:
查看当前正在运行的进程信息:
- 显示系统中所有的进程信息:
- 显示系统中所有的进程信息(完整信息):
- 显示指定用户的进程信息:
中断执行中的程序:
- 例如:表示杀死PID为1111的进程
- :强制杀死指定PID的进程
- :杀死这个用户中的所有进程
- :杀死指定用户的所有进程
- :查看对应编号
关机命令:(延迟关机)
- :立即关机
- :延迟一分钟以后关机,并给出警告信息
- :延迟一分钟以后重启,并给出警告信息
- :取消关机命令
重启命令:(立即重启)
显示当前登录系统的用户:
- :显示明细(标题)信息
校正服务器时间、时区:
几个小概念
项目
说明
时区
因时区不同显示的时间不同,牵扯到夏令时和调整等问题,date命令可查看
系统时钟:System Clock
Linux OS的时间,date命令可查看
硬件时钟:RTC:Real Time Clock
主板上由电池供电的BIOS时间,hwclock -r可查看
NTP:Network Time Protocol
本机时间和实际的时间之间的经常会有差别,一般使用NTP服务器进行时间校准
- :显示系统的当前时间和日期
- :查看所有可用的时区
- :设置本地时区
- :禁用时间同步
- :设置时间
- :启用时间同步
清除屏幕:
目录管理
常见命令
作用
ls
列出目录
cd
切换目录
pwd
显示目前的目录
mkdir
创建新目录
rmdir
删除空目录
cp
复制文件或目录
rm
删除文件或目录
mv
- ls命令相当于在Windows系统中打开文件夹,看到的目录以及文件的明细。
- 语法:
- :显示所有文件或目录(包含隐藏)
- :仅列出目录本身,而不是列出目录内的文件数据(常用)
- :长数据串列出,包含文件的属性与权限等等数据(常用)
:显示不隐藏的文件与文件夹
:显示不隐藏的文件与文件夹的详细信息
:显示所有文件与文件夹的详细信息 - :查看当前所在目录
- :切换目录
- :返回上一级目录
-
- :创建单级目录
- 创建多级文件夹,使用
-
- :删除空目录
- :删除多级目录(先删bbb,如果删完aaa也为空,则aaa也一起删除)
-
- :删除文件
- :删除目录和目录里面所有的内容(单级目录或多级目录都行)
- :创建一个文件
-
- :文件复制(仅文件)
- :将aaa目录中的所有文件及目录拷贝到ccc中(代指所有)
-
- :改名(数据源和目的地相同)、移动文件或文件夹
- :将源文件名改为目标文件名
- :目标目录已存在,将源目录移动到目标目录;目标目录不存在则改名
文件基本属性
- 文件权限(共10位)
- 第一位为d表示是一个文件夹;是 - 表示是一个文件;| 表示是一个链接文档(快捷方式)
- r表示可读;w表示可写;x表示可执行; - 表示没有当前权限
- 2-4位表示属主权限(文件所属的用户可以做的事情)
- 5-7位表示属组权限(文件所在用户组可以对它做的事)
- 8-10位表示其它用户权限
- 命令(change group)
- :更改所属组
- :将aaa文件夹所属组更改为root
- :将aaa的属组改为root(-v会多一句提示语)
- 命令
- :更改属主
- :更改属主和属组
- -R:处理指定目录以及其子目录下的所有文件
- 命令
- 作用:修改属主、属组、其他用户的权限
- 数字方式语法:
- 符号方式语法:
- -R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
修改方式
- 数字方式
- r-----4
- w----2
- x----1
- -----0
- 符号方式
- user属主权限----u
- group属组权限----g
- others其它权限----o
- all全部身份----a
- +(加入)、-(除去)、=(设定)
- r(可读)、w(可写)、x(可执行)
综合案例
思路
- 创建三个用户,并把他们加入到对应的用户组(dev-group)
- 将tmp/work文件夹所属组更改为dev-group
- 修改文件夹所属组的权限
文件管理
touch
- 语法:
如果文件不存在就创建文件,如果存在就修改时间属性
- :创建a1.txt一直到a10.txt共10个文件(批量创建空文件)
- :查看文件的详细信息
vi/vim编辑器
- vi编辑器:只能是编辑文本内容,不能对字体、段落进行排版
- 不支持鼠标操作
- 没有菜单
- 只有命令
- vim编辑器:vim是从vi发展出来的一个文本编辑器。
- 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用
简单来说:
vi是老式的文字处理器,不过功能已经很齐全了,但是还是有可以改进的地方
vim则可以说是程序员开发者的一项很好用的工具
- vi/vim三种模式
- 阅读模式(命令模式)
- 编辑模式(编辑模式)
- 保存模式(末行模式)
命令模式下只能读不能写
在命令模式下输入可以进入编辑模式,在编辑完成之后按下又可以退出到命令模式
在命令模式下输入可以进入末行模式,在保存完之后还可以按下两次继续回退到命令模式 - 打开和新建文件
- 语法:
- 如果文件已经存在,会直接打开文件(命令模式)
- 如果文件不存在,打开一个临时文件,在保存且退出后,就会新建一个文件
- 进入编辑模式
命令
英文
功能
常用
i
insert
在当前字符前插入文本
常用
I
insert
在行首插入文本
较常用
a
append
在当前字符后添加文本
A
append
在行末添加文本
较常用
o
在当前行后面插入一空行
常用
O
在当前行前面插入一空行
常用
- 进入末行模式保存文件
- :当vim进入文件没有对文件内容做任何操作可以按“q”退出
- :当vim进入文件对文件内容有操作但不想保存退出
- :正常保存退出
- :强行保存退出,只针对于root用户或文件所有人
- vim定位行
- 语法::查看文件并定位到具体行数
- :查看a.txt文件并定位到第5行
- 异常处理
- 如果vim异常退出,在磁盘上可能会保存有交换文件
- 如果有交换文件,在下次使用vim编辑文件时,系统会提示是否对交换文件继续操作(将交换文件删除即可)
文件查看
命令
功能
cat 文件名
查看小文件内容
less -N 文件名
分屏显示大文件内容
head -n 文件名
查看文件的前一部分
tail -n 文件名
查看文件的最后部分
grep 关键字 文件名
根据关键字搜索文本文件内容
- :可以加入参数选项显示行号
- 只能阅读小文件
- 阅读大文件可能显示不完整
- :查看大文件
- 加入可显示行号
- ctrl + F :向前移动一屏
- ctrl + B :向后移动一屏
- ctrl + D :向前移动半屏
- ctrl + U :向后移动半屏
- j :向前移动一行
- k :向后移动一行
- G:移动到最后一行
- g:移动到第一行
- q/ZZ:退出less命令
- :默认查看文件最后10行内容
- :查看文件最后3行内容
- :动态显示文件最后10行内容(ctrl + C停止)
- :显示文件b.txt的内容,从第2行至文件末尾
- :显示文件最后45个字符
- :查看文件前10行内容
- 其它内容和tail类似
-
- 类似于Windows下打开文件后ctrl+F的查找功能
- 查找对应的进程
- 语法::根据关键字,搜索文本文件内容
- -n:把包含关键字的行号展示出来
- -i:把包含关键字的行展示出来,搜索时忽略大小写
- -v:把不包含关键字的行展示出来
- :将进程中含有sshd的进程展示出来
- :将进程中含有sshd的进程的个数展示出来
echo命令
- :展示文本
- :将字符串写到文件中(覆盖文件内容)
- :将字符串写到文件中(不覆盖原内容)
- :将命令的失败结果追加到指定的文件的后面
awk命令
- AWK是一种处理文本文件的语言,是一个强大的文本分析工具(名字取自三位创始人名字中的字母)
- 语法:
- 过滤::查看a.txt文件中包含zhang或者li的行
- 切割
选项
含义
使用指定字符分割
获取第几段内容
获取当前行内容
向外输出时的段分割字符串
字符转成大写
字符转成小写
返回字符长度
:将a.txt中的内容按空格分割并打印第1-3列
:将a.txt中的内容分隔后并将$1中的内容转为大写字符后输出
:将a.txt中的内容分隔后并用—重新分隔后输出
- 计算
命令
含义
awk
BEGIN{初始化操作}
{每行都执行}
END{结束时操作}
文件名
固定语法
BEGIN{这里面放的是执行前的语句}
{这里面放的是处理每一行要执行的语句}
END{这里面放的是处理完所有的行后要执行的语句}
文件名
软连接
- 类似于Windows里面的快捷方式
- 语法:
压缩命令
查找命令
- 语法::在指定目录下查找文件
- 参数选项
- -name filename:查找名为filename的文件
- -ctime -n或+n:按时间来查找文件,-n指n天以内,+n指n天以前
- :查找当前目录下所有以txt为后缀的文件
- :当前文件夹下1天内操作过的文件
将 . 替换为 / 则表示在全盘范围进行查找
gzip命令
- 语法::压缩文件
- :将a.txt文件压缩
- :将当前目录下所有文件都进行压缩(已经压缩过的不能再次被压缩)
- :解压文件并显示详细信息
gunzip命令
- 语法::解压文件
- :解压压缩文件
- :解压当前目录下的所有压缩文件
tar命令
- 语法::打包、压缩和解压(文件/文件夹)
- 注意:tar本身不具有压缩功能,它是调用压缩功能实现的
- 参数选项
- -c:建立新的压缩文件
- -v:显示指令执行过程
- -f <备份文件>:指定压缩文件
- -z:通过gzip指令处理压缩文件
- -t:列出压缩文件中的内容
- -x:表示解压
- :打包文件并指定打包之后的文件名(仅打包不压缩)
- :通过gzip指令将b.txt压缩为b.gz并显示过程(打包压缩)
- :将aaa文件夹压缩为aaa.gz
- :查看压缩文件中的内容
- :解压aaa.gz文件
zip命令
- 语法::压缩
- 注意:zip是个使用广泛的压缩程序,文件经他压缩后会另外产生具有".zip"扩展名的压缩文件
- 参数选项
- -q:不显示指令执行过程
- -r:递归处理,将指定目录下的所有文件和子目录一并处理
- :压缩对应的文件/文件夹
unzip命令
- 语法::解压
- 注意:只能解压".zip"扩展名的压缩文件
- 参数选项
- -l:显示压缩文件内所包含的文件
- -d <目录>:指定文件解压缩后要存储的目录
- :查看aaa.zip压缩文件所包含的文件
- :将aaa.zip压缩文件解压到aaa文件夹中(aaa文件夹可以不存在,会自动创建)
bzip2命令
- 语法::压缩文件
- 注意:使用新的压缩算法,和zip相比压缩后的文件比原来的要小,但花费时间变长
- 若没有加上任何参数,bizp2压缩完文件后会产生bz2的压缩文件,并删除原始文件
- :压缩并删除a.txt
- bunzip2命令::解压
- -v:解压文件时,显示详细的信息
- :解压并显示详细信息
网络与磁盘管理
网络管理
- ifconfig命令
- 语法::显示或配置网络设备的命令
- :关闭ens37这张网卡
- :开启网卡ens37
- :将ens37网卡的ip更改为192.168.23.199
- :配置ip地址和子网掩码
- ping命令
- 语法::检测是否与主机联通
- -c <完成次数>:设置完成要求回应的次数
- :指定接收包的次数
- netstat命令
- 语法::显示网络状态
- -a:显示所有连线中的Socket
- -i:显示网卡列表
磁盘管理
- lsblk命令
- 语法::列出硬盘的使用情况
- 理解为:list block的英文缩写
- :显示系统信息
- df命令
- 语法::显示目前在Linux系统上,磁盘的使用情况
- –total:显示所有的信息
- -h:换算成KB,MB,GB等形式进行展示(方便阅读)
- :显示整个硬盘的使用情况
- :显示文件夹使用情况
- :显示所有的信息
- :将结果变成kb、mb、gb等形式展示,利于阅读
- mount命令
- 语法::用于挂载Linux系统外的设备
- 类似与Windows中的U盘,但在Linux中需要手动新建一个文件夹,并把该文件夹和U盘关联起来(挂载点和挂载)
注意:“挂载点”的目录需要以下几个要求:
目录事先存在,可以用mkdir命令新建目录
挂载点目录不可被其它进程使用到
挂载点下原有文件将被隐藏- :将光驱和PPP文件夹挂载
- :卸载PPP文件夹所挂载的光驱
yum
- 在Linux中,如果我们需要查找、安装、下载或者卸载另外的软件,就需要通过yum来进行操作。英文全称为:Yellow dog Updater,Modified
- yum常用命令
- 列出所有可更新的软件清单命令:
- 更新所有软件命令:
- 仅安装指定的软件命令:
- 仅更新指定的软件命令:
- 列出所有可安装的软件清单命令:
- 删除软件包命令:
- 查找软件包命令:
- 清除缓存命令:
- :清除缓存目录下的软件包
- :清除缓存目录下的headers
- :清除缓存目录下旧的headers
- :清除缓存目录下的软件包及旧的headers
- -y:在安装过程中,如果有选择提示,全部选择y
- 注意:使用yum必须联网且在root权限下
- :安装tree
- :执行tree,展示当前目录结构
- :移除tree
- :查找以tom为开头的软件名称
- yum源
- 在下载软件的时候,都是从yum源中获取的,默认是centos中默认的yum源(在国外,下载速度慢)
- 更换国内yum源
- :安装一个下载工具
- :进入yum的相关文件夹中
- :对原yum文件改名(备份)
- :下载阿里yum源文件
- :清理缓存,并重新加载yum
- :为新yum源建立缓存文件
- :查找软件,验证阿里云的yum源是否可以正常使用
rpm
- 在最初,RedHat Linux发行版专门用来管理Linux各种套件的程序
- 和yum的区别
- rpm只能安装已经下载到本地机器上的rpm包
- yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题,这个是rpm工具所不具备的
shell
初识shell
在计算机科学中,shell就是一个命令解释器
shell是位于操作系统和应用程序之间,是他们二者最主要的接口。
shell负责把应用程序的输入命令信息解释给操作系统,将操作系统指令处理后的结果解释给应用程序
一句话,shell就是在操作系统和应用程序之间的一个命令翻译工具。
Windows和Linux中的shell
- Windows系统:cmd.exe 命令提示字符
- Linux系统:sh / csh / ksh / bash(默认) / …
shell的使用方式
- 手工方式
手工敲击键盘,直接输入命令,按Enter后。
执行命令,显示命令执行的结果
重点:逐行输入命令,逐行进行确认执行
- 脚本方式
编写第一个shell脚本
- 新建一个文件后缀名为sh
- 编写内容
- 执行
注释和变量
注释
- 单行注释
#!/bin/bash
这是单行注释
echo ‘hello world’
- 多行注释
#!/bin/bash
:<<! 这是多行注释
多行注释
多行注释
!
echo ‘hello world’:<<字符
注释内容
字符
变量
- 定义变量
-
- 方式一:(变量值必须是一个整体,中间没有特殊字符)
- 方式二:(单引号中的内容,原样赋值)
- 方式三:(如果双引号中有其它变量,会把变量的结果进行拼接,然后赋值)
- 命令变量(将命令的结果赋值给变量)
- 方式一:变量名=`命令`(这里是反引号<tab键上方>)
- 方式二:(常用)
-
- 使用变量
- 方式一:(非标准写法,图省事)
- 方式二:(非标准写法,图省事)
- 方式三:(在双引号里面要使用变量的值)
- 方式四:(标准使用方式)
- 只读变量:
- 删除变量:
数组
定义数组
数组名=(值1 值2 … 值n)
arr=(1 2 3 4 5)
给数组的元素赋值
数组名[索引]=值
arr[0]=1
获取元素
${数组名[下标]}
${arr[0]}
获取长度
运算符
运算符
说明
举例
加法
expr $a + $b
-
减法
expr $a - $b
*
乘法
expr $a * $b
/
除法
expr $b / $a
%
取余
expr $b % $a
=
赋值
a=$b (把b变量的值赋给a变量)
++ / –
自增 / 自减
((a++))
注意点
- 原生的bash不支持简单的数学运算。可以通过其它命令实现:expr
- 表达式和运算符之间要有空格
- 完整的表达式要被反引号包含
- 乘法中不能直接使用*,需要在乘号前加转义
举例:`expr 2 + 2`
字符串运算符
运算符
说明
举例
=
检测两个字符串是否相等,相等返回true
[ $a = $b ]
!=
检测两个字符串是否不相等,不相等返回true
[ $a != $b ]
-z
检测字符串长度是否为0,为0返回true
[ -z $a ]
-n
检测字符串长度是否不为0,不为0返回true
[ -n $a ]
$
检测字符串是否为空,不为空返回true
[ $a ]
与里面的代码命令有个空格隔开,不能贴在一起
可以获取上一条语句的执行结果
在shell中,0为真,1为假
获取字符串长度
关系运算符
运算符
说明
举例
-eq
检测两个数是否相等,相等返回true(equals)
[ $a -eq $b ]
-ne
检测两个数是否不相等,不相等返回true(not equals)
[ $a -ne $b ]
-gt
检测左边的数是否大于右边的,如果是,则返回(truegreater than)
[ $a -gt $b ]
-lt
检测左边的数是否小于右边的,如果是,返回true(less than)
[ $a -lt $b ]
-ge
检测左边的数是否大于等于右边的,如果是,则返回true(greater equals)
[ $a -ge $b ]
-le
检测左边的数是否小于等于右边的,如果是,则返回true(less equals)
[ $a -le $b]
关系运算符只支持数字,不支持字符串,除非字符串的值是数字
布尔运算符
运算符
说明
举例
!
取反运算
[ ! false ] 返回true
-o
或运算,有一个表达式为true 则返回true (or)
[ $a -lt 20 -o $b -gt 100 ]
-a
与运算,两个表达式都为true 才返回true(and)
[ $a -lt 20 -a $b -gt 100 ]
逻辑运算符
运算符
说明
举例
&&
逻辑的 AND
[[ true && true ]] 返回true
||
逻辑的 OR
[[ false || false ]] 返回false
选择语句
if语法
小练习
case语法
循环语句
for循环
while循环
函数
无参无返回值
有参无返回值
有参有返回值
小练习
:表示把键盘录入的数据赋值给这个变量
Nginx
这部分应该是HTML + CSS + Nginx,因为HTML和CSS是之前学过的,当时并没有记笔记,这部分也相当简单些,如果有没学过的可以自行搜索资料学习一下~
概述
- Nginx是一款服务器软件
- 其核心功能是可以和服务器硬件相结合,从而可以将程序发布到Nginx服务器上,让更多用户浏览
安装
- 上传压缩包:(CRT中按alt+p键进入sftp)
- 解压压缩包:
- 进入解压目录:
- 安装依赖环境
- 安装nginx
(安装完会在/usr/local/下有一个nginx目录) - 进入对应目录:
- 启动nginx服务:
停止:
重启: - 查看nginx服务状态:
- 测试nginx服务:浏览器打开对应Linux服务器ip地址
最后这里在浏览器打开对应ip地址无法访问,解决方法:
第一步,对80端口进行防火墙配置:
第二步,重启防火墙服务:
然后重新在浏览器中访问你的ip,应该就可以访问了。
发布项目
- 在 /home 下创建一个web目录:
- 将项目上传到该目录下:
- 解压项目压缩包:
- 编辑nginx配置文件:
找到server的大括号范围,修改location的路径
- 进入对应目录:
- 关闭nginx服务:
- 启动nginx服务并加载配置文件:
- 通过浏览器测试网站
JavaWeb核心
企业开发简介
JavaEE规范
- JavaEE(Java Enterprise Edition):Java企业版
- 它是由SUN公司领导、各个厂家共同制定并得到广泛认可的工业标准。
- JavaEE早期叫做J2EE,但是没有继续采用其命名规则。J2EE的版本从1.0开始到1.4结束。而JavaEE版本是从JavaEE 5 版本开始,目前最新的版本是JavaEE 8。
- JavaEE规范是很多Java开发技术的总称。这些技术规范都是沿用自J2EE的。一共包括了13个技术规范。
- 包括:JDBC, JNDI, EJB, RMI, IDL/CORBA, JSP, Servlet, XML, JMS, JTA, JTS, JavaMail, JAF。
WEB概述
概述
- WEB在计算机领域中代表的是网络。
- 像我们之前所用的WWW,它是World Wide Web 三个单词的缩写,称为:万维网
- 网络相关技术的出现是为了让我们在网络的世界中获取资源,这些资源的存放之处,我们把它叫做网站。
- 我们通过输入网站的地址(网址),就可以访问网站中提供的资源(不区分局域网或广域网)
资源分类
- 静态资源
网站中提供给人们展示的资源是一成不变的,也就是说不同人或者在不同时间,看到的内容都是一样的。
作为开发者来说,我们编写的HTML, CSS, JavaScript 都属于静态资源。 - 动态资源
网站中提供给人们展示的资源是由程序产生的,在不同的时间或者不同的人由于身份的不同,所看到的内容是不一样的。
作为网站开发者来说,我们编写的JSP、Servlet等都属于动态资源。
系统结构
在之前的学习中,开发的都是Java工程。这些工程在企业中称之为项目或者产品。都是有系统架构的!
- 基础结构划分
- CS结构:(Client Server)客户端+服务器的方式(把不同的应用直接安装在客户端上)
- BS结构:(Browser Server)浏览器+服务器的方式
- 技术选型划分
- Model1模型
- Model2模型
- MVC模型
- 三层架构 + MVC模型
- 部署方式划分
- 一体化结构
- 垂直拆分结构
- 分布式结构
- 微服务结构
tomcat
服务器
- 服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。==服务器在网络中为其它客户机(如PC机、智能设备等)提供计算或者应用服务。==服务器具有高速的CPU运算能力、长时间的可靠运行、强大的I/O外部数据吞吐能力以及更好的扩展性。
- 而我们这里所说的服务器,其实是web服务器,或者应用服务器。它本质就是一个软件,通过和硬件相结合,从而达到帮助我们来发布应用的功能,让用户通过客户机访问我们的应用。
- 常用的应用服务器
服务器名称
说明
weblogic
实现了JavaEE规范,重量级服务器,又称为JavaEE容器
websphereAS
实现了JavaEE规范,重量级服务器
JBOSSAS
实现了JavaEE规范,重量级服务器,免费的
Tomcat
实现了jsp/servlet规范,是一个轻量级服务器,开源免费
Tomcat
- Tomcat是Apache软件基金会的Jakarta项目组中的一个核心项目,由Apache、Sun和其它一些公司及个人共同开发而成。由于有了Sun公司的参与和支持,最新的Servlet、JSP规范总能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定,而且免费,所以深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
- Tomcat官网:https://tomcat.apache.org/
- Tomcat各个版本所需要的支持
下载和安装
- 下载:官网下载
- 安装:直接解压即可
- 目录组成
- bin:一些二进制可执行文件
- conf:保存配置文件的路径
- lib:Tomcat在运行过程中所需要的jar包
- logs:日志文件
- temp:临时文件
- webapps:项目发布目录(一个文件夹代表一个web应用)(ROOT代表根项目)
- work:工作目录
基本使用
- 启动
:Windows下启动执行文件
:Linux下启动执行文件启动后浏览器访问:http://localhost:8080可以进入欢迎界面(Tomcat默认端口为8080)
- 停止
:Windows下关闭执行文件
:Linux下关闭执行文件 - 部署项目
在webapps目录下创建一个文件夹
将资源放到该文件夹中
启动tomcat,输入正确路径
常见问题
- 启动问题
启动窗口一闪而过:没有配置jdk环境变量
java.net.BindException:端口8080被占用
- 控制台乱码问题解决
conf-logging.properties
修改Tomcat默认UTF-8,CMD命令窗口默认GBK,将UTF-8改为GBK即可解决乱码问题
IDEA集成Tomcat
- 点击Run -》 Edit Configurations
- 点击Defaults -》 Tomcat Servlet -》 Local
- 点击Configure -》Tomcat Home -》 选择tomcat所在路径
Linux下的安装
- 上传压缩包到/home路径:
- 解压压缩包:
- 进入bin目录下:
- 启动tomcat服务:
- 使用浏览器测试:浏览器打开对应Linux服务器ip地址:8080
Java WEB项目
- 新建项目模型,选择Java Enterprise
确定JDK版本、Appalication Server版本 - 右键Add Framework Support…
- 勾选Web Appalication选项
项目组成详解
- src:存放Java源代码
- web:存放项目相关资源(html、css、js、jsp、图片等)
- WEB-INFO:存放相关配置的(web.xml等)
IDEA发布项目
- 点击Run -》 Edit Configurations
- 点击Tomcat Server -》 Deployment
Application Context是项目访问路径,/代表默认路径,多个项目中只能有一个默认路径 - 点击Tomcat Server -》 Server
设置关联浏览器
两个Update resources设置
设置JDK、端口号 - 启动Tomcat服务
- 验证结果(浏览器)
通过war包发布项目
- 在项目的web路径下打war包:
- 将打好的war包剪切到tomcat的webapps路径下
- 启动tomcat服务,自动解压war包
- 验证结果
配置文件
配置默认端口号
主配置文件server.xml
标签中,port属性代表Tomcat默认端口号(8080)
http协议默认端口号为80,Tomcat默认端口号与其不一致,所以每次访问网站需要加上端口号
如果是80端口,就不需要加端口号
真正发布网站的时候,都需要将tomcat默认端口号改为80,这样在访问网站的时候就不需要加端口号了
配置虚拟目录
- 作用:可以发布任意目录下的项目
- 编辑server.xml 配置文件,找到标签
- 加入以下内容
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/3979.html