JavaEE初阶学习:Linux 基本使用和 web 程序部署
1.Linux的基本认识
Linux 是一个操作系统.(搞管理的系统)
和Windows都是同类产品~~
Linux 实际的场景:
1.服务器
2.嵌入式设备
3.移动端(手机)Android 其实就是Linux

1991年,还在读大学的 芬兰人 Linus Benedict Torvalds,搞了一个Linux 这样的系统0.01版,正式发布了~
后续为了管理Linux代码,又开发了一个代码管理工具,git
Linux准确来说,是一个"统称",或者可以认为是一个"操作系统内核"
一个完整的系统 = 操作系统内核 + 配套的应用程序
于是就有很多的企业,基于Linux内核,搭配了不同的应用程序,从而诞生了不同的"操作系统" —> 发行版

企业中最主要使用的发行版是 RedHat (红帽). 但是 RedHat 是一个收费的系统
我们使用CentOS
2.获取到一个Linux环境
1. 使用虚拟机软件(下策)
不能解决前面说的,让咱们的服务器被其他主机访问的问题,虚拟机软件存在很多bug,经常会出现很多奇怪的问题
电脑上装一个程序,这个程序通过软件来模拟硬件.(在你的电脑里,虚拟出来一个假的电脑)
接下来就可以在虚拟的电脑里安装Linux了~~
2. 使用 Windows 自带的 WSL 功能.widows subsystem linux(中策)
linux 影响力太大了,Windows 内部集成了 linux 的内核!!
相比于虚拟机,问题是少了很多,但是任无法解决部署的问题
3. 买一个云服务器(上策)
大的厂商,有很多的服务器(配置贼高的服务器),这些机器反正也是闲着~
干脆就把多余的这些机器/算力,租出去,供一些中小企业使用~
云服务器还会有一个外网IP!!!
后续只要把咱们的程序部署到云服务器上,此时,你的程序就可以被别人访问到了!!
3.使用云服务器

选择进行购买

地域随便选
镜像统一选择 centos 7
购买后,点击控制台,就可以看到你的机器了
上面有个IP地址十分重要,你登录这个机器
或者后续让其他用户访问你的服务器都是通过这个IP
用户名:root(固定)
密码:这里重置的时候设定的(这个密码尽量设置的复杂点)
在这个环节我们最重要的是得到三个信息:
- 服务器的外网 IP
- 服务器的管理员账户 (固定为 root)
- 管理员账户密码(在腾讯云网站上设置的
这样我们就可以远程登录到服务器了
4.使用终端软件连接到 Linux
我们使用的是xshell 这样的软件来进行远程登录.
下载安装 XShell
下载地址:https://www.xshell.com/zh/free-for-home-school/

和每个 linux 主机建立连接,都可以使用会话来保存起来,一旦保存好以后,后续直接一点就可以连接上.

主机这里写外网IP
同时,填写用户名,填写密码,每一步都勾选记住~,就可以连接了
5.Linux 常用命令

命令提示符
~ 表示当前所在目录
~ 在 linux 中有特定的含义,表示 home 目录.(用户数据存放的目录)
#表示当前是管理员
$ 表示是普通用户
在 linux 上,不像 Windows 有一个图形化的界面,操作的时候都是靠输入命令的方式来进行的!!
其实, linux 也是有图形化界面的,但是在实际工作中,一般不会使用,甚至不会安装!!
图形化的优势,是适合小白快速上手~~
命令行的优势,更高效,更准确,生产力工具
1.带宽占用非常低
2.系统资源的占用也非常低~~
3.命令行适合通过脚本来实现批量的重复的操作~
ls
list 列出当前目录/指定目录 中都有那些文件~
相当于双击了某个目录,查看里面的内容~

其中,蓝色的是目录
白色的是普通文件
ls 后面跟上一个具体的目录,就可以看到指定目录中的内容.

/ 表示 linux 的"根目录",对标 Windows 中的此电脑.
云服务器上任何一个文件,都是从属于 / 目录的~~
使用ls -l 能够查看目录中的内容细节~(等价于ll)


-a 列出目录下的所有文件,包括以 . 开头的隐含文件。
-d 将目录象文件一样显示,而不是显示其下的文件。 如:ls –d 指定目录
-k 以 k 字节的形式表示文件的大小。ls –alk 指定文件
-l 列出文件的详细信息。
-r 对目录反向排序。
-t 以时间排序。
-R 列出所有子目录下的文件。(递归)
这些选项,也叫做是"命令行参数"
参数和参数之间,需要至少用一个空格来分割.
cd
change directory 切换目录
Linux系统中,磁盘上的文件和目录被组成一棵目录树,每个节点都是目录或文件。
就相当于,咱们在Windows资源管理器中,双击某个目录~
cd 后面跟上你要切换的目录的路径(路径,可以使用绝对路径,也可以使用相对路径)
linux 上的绝对路径是以/开头的,相对路径是以.和…开头的


随着 cd 的进行,当前所在目录就会发生变化.
在输入命令/输入目录文件的时候,可以使用 tab 来补全!!
直接使用 cd 后面不加任何选项/路径,此时就会返回到 home 目录!!
pwd
防止用户迷路
有时候,cd了太多次,都记不得当前处在哪个路径中了.
就可以使用 pwd 查看当前的完整路径是啥~~
touch
创建一个空的文件


cat
concatenate
读取文件内容~
针对简单短小的文件,还好,如果文件很大,很长,cat就不方便了


man
也是一个 linux 命令,用来查看用户手册~

echo
用来写文件


此处的操作,没有把hello显示到控制台上,而是写入了后面java_1.txt 的文件中
“>” 重定向

每次进行echo+重定向,会清空原有内容.
echo 和 cat 这样的命令,只是适合针对简单的文件进行操作~~
如果文件复杂,或者编辑的需求复杂,就不太适合了~
echo 和 cat 一般适用于需要使用脚本批量处理很多操作的时候~
vim
用来针对复杂文件,进行复杂的编辑
vim 是 linux 上自带的文本编辑器,就相当于 Windows 的记事本.
1.打开文件
使用 vim + 文件名/文件路径

2.编辑文件
vim 是一个有特色的程序,为了追求编辑效率,引入了大量的快捷键~
默认情况下,键盘上的按键都是按照快捷键的方式来进行作用的~
此时,键盘按键都被赋予了特殊的含义~~不再是单纯的输入文本了!!
vim中的模式(mode)
默认情况下,vim处于 normal mode (普通模式)
此时,键盘按键都是快捷键
切换到 insert mode (插入模式)
此时键盘按键才是输入文本~
通常我们使用 按 i 来进入插入模式.


在这个模式下,vim 的各种行为就和记事本基本一致了~~
linux 的命令行中,如果要复制粘贴,不是使用Ctrl c 和 Ctrl v
使用Ctrl + insert 复制
使用shift + insert 粘贴
3.保存退出
没有x让你点击退出
也不要按Ctrl + s,不是保存~~
ctrl + s 是 xshell 的功能,冻结当前画面~(终端显示太快)
ctrl + q 解除冻结
(1)要先回到普通模式,按esc

(2)输入 :wq
输入:的时候,光标来到了最下面一行,此时vim处在命令模式
接下来的操作就是vim命令~
mkdir
创建目录


rm
删除文件/删除目录


使用 rm-r 进行递归删除
删除目录的时候,需要同时删除目录中的所有文件和子目录~~
rm -rf
此处的f表示"强制删除",不需要确认了~
rm -rf *
此处 * 就是通配符,能够匹配到当前目录的所有文件.
rm -rf /
最顶级的删除,执行该操作,就是砸自己饭碗了!!切记
在linux中,未定义的变量不会报错,而是直接当做空字符串处理!!
cp
复制文件或目录

此处就是把 test.txt 复制一份,同时重命名成 test2.txt
cp 不光可以复制文件,还可以复制目录.
但是复制目录的时候,必须要加上一个 -r 选项.(r 表示递归)
拷贝的操作,有时候是比较危险的!!
如果拷贝的目标文件,已经存在,就会发生"覆盖"的情况!
cp 是比较慢的~因为它需要大规模的读写硬盘
mv
- 视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。
- 当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。
- 当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。

mv 则比较快~因为文件系统中,每个文件的"路径"就是一个简单的属性
mv就只是修改了这个路径属性而已~~ O(1)
linux 没有回收站,经常会使用 mv 来模拟回收站的效果~~
想删除某个东西,并不是直接 rm ,而是通过 mv 移动到一个单独的目录中~
grep
字符串匹配
快速搜索某个文件中,是否包含某个特定的字符串~


grep 可以同时在很多文件中操作
grep “xxx” * -r
ps
查看进程

直接使用ps 查看的内容非常有限.
往往要使用一些固定选项~

使用 ps aux 能够列出系统上的所有进程~
但是很多时候,我们不会关心所有的进程,只关心咱们想看到的进程~~
配合 grep 就可以快速筛选

| 我们称为"管道"
用来连接两个命令
前一个命令的输出作为后一个命令的输入
可以通过 ps 来查看到某个进程的pid
netstat
查看网络状态

很多时候,只关注这里的一部分信息~~
搭配grep进行查询~

也需要通过 netstat 查看某个进程绑定的端口号~
6.搭建 Java 部署环境
例如,我们写的博客系统,部署到 linux 云服务器上!!
咱们的博客系统,都依赖哪些软件程序??
1.jdk
2.tomcat
3.mysql
jdk
jdk 在 linux 上安装有很多方式
此处就只是介绍最简单的方式~~ 使用"包管理器"进行安装
centos 自带的包管理器 --> yum
yum list 查看当前的软件包有哪些
yum install 安装指定的软件包


devel --> development 开发


使用 javac 命令,观看jdk是否下载完成
Tomcat
yum 安装tomcat是存在问题的,因为 yum 上默认的软件包可能是比较老的~~
更简单的办法,tomcat 手动安装即可~~ tomcat 本身安装就很容易
tomcat 是跨平台的!
同一个zip,既可以在 Windows 上使用,也可以在 linux 上使用.
吧下载好的zip压缩包,上传到 linux 服务器上~~
1.直接把zip压缩包往 xshell 中一拖,就可以完成文件上传(xshell zmode 功能)
2.使用 unzip 命令解压缩
unzip apache-tomcat-8.5.47.zip
3.修改可执行权限
cd apache-tomcat-8.5.47/bin
# 将所有 .sh 后缀的文件加上可执行权限(后面会介绍)
chmod +x *.sh
4.启动Tomcat
先检查下,Tomcat端口是否被占用,使用netstat看看
sh startup.sh

还可以直接在外网访问 Tomcat 的欢迎页面~
看到欢迎页面,说明Tomcat正常工作!
在浏览器地址栏中
http://[服务器外网ip]:8080/

MySQL
我们还是通过 yum 安装
参考https://zhuanlan.zhihu.com/p/49046496


上述命令执行完成以后,就可以直接使用 MySQL 客户端连接了
MySQL -uroot 来进行连接,默认没有密码~~

7.部署 Web 项目到 Linux
1.微调代码,保证代码能够连得上云服务器的数据库~

2.建库建表
之前吧建库建表的sql都写下来了,我们直接复制粘贴.
ctrl + d 退出mysql客户端.
3.打包部署
在IDEA中,基于IDEA 打一个war包,拖到Tomcat的目录中即可~



4.通过浏览器访问

如果部署完成之后,程序有什么问题,咋办?
1.先抓包,判定是前端还是后端问题
2.如果是后端,学会看 Tomcat 日志~~
相关文章:
JavaEE初阶学习:Linux 基本使用和 web 程序部署
1.Linux的基本认识 Linux 是一个操作系统.(搞管理的系统) 和Windows都是同类产品~~ Linux 实际的场景: 1.服务器 2.嵌入式设备 3.移动端(手机)Android 其实就是Linux 1991年,还在读大学的 芬兰人 Linus Benedict Torvalds,搞了一个Linux 这样的系统0.01版,正式发布了~ 后…...
摔杯算法(要求用最少的测试次数找出恰巧会使杯子破碎的楼层。)
题目: 一种杯子,若在第N层被摔破,则在任何比N高的楼层均会破;若在第M层不破,则在任何比M低的楼层均不会破。给你两个这样的杯子,让你在100层高的楼层中测试,要求用最少的测试次数找出恰巧会使杯子破碎的楼层…...
centos7安装docker容器
卸载老版本: $ sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine/var/lib/docker/路径下存在镜像、数据卷、容器等,在卸载的时候是不会自动删除…...
【二叉树】如何构建一个包含大量随机数节点的二叉树测试用例
【二叉树】如何构建一个包含大量随机数节点的二叉树测试用例 前言一、案例准备二、自动生成随机二叉树工具类(TreegenerateUtils)三、如何调用随机二叉树工具类(TreegenerateUtils)? 前言 今天笔者在测试有关二叉树的…...
防火防盗防小人 使用 Jasypt 库来加密配置文件
⚔️ 项目配置信息存放在哪? 在日常开发工作中,我们经常需要使用到各种敏感配置,如数据库密码、各厂商的 SecretId、SecretKey 等敏感信息。 通常情况下,我们会将这些敏感信息明文放到配置文件中,或者放到配置中心中。…...
Spring Cloud学习(二)【Eureka注册中心】
文章目录 Eureka 注册中心Eureka 的作用 动手实践搭建 EurekaServer服务注册服务发现 Ribbon 负载均衡负载均衡原理IRule 接口(负载均衡策略)饥饿加载 Eureka 注册中心 服务调用出现的问题 不能采用硬编码服务消费者该如何获取服务提供者的地址信息&am…...
数据分析实战 | 线性回归——女性身高与体重数据分析
目录 一、数据集及分析对象 二、目的及分析任务 三、方法及工具 四、数据读入 五、数据理解 六、数据准备 七、模型训练 八、模型评价 九、模型调参 十、模型预测 实现回归分析类算法的Python第三方工具包比较常用的有statsmodels、statistics、scikit-learn等&#…...
python回文日期 并输出下一个ABABBABA型回文日期
题目: 输入: 输入包含一个八位整数N,表示日期 对于所有的测评用例,10000101 ≤N≤89991231,保证N是一个合法日期的8位数表示 输出: 输出两行,每行一个八位数。第一行表示下一个回文日期第二…...
Zotero拓展功能之Zotero Style
Zotero Style拓展功能 一、列: 1.简介 首先你必须知道Zotero的基本功能:右键任意一个列的名字,会弹出一个右键菜单,你可以勾选/取消勾选一个列,并且在最后有两个按钮,一个是“列设置”,一个是…...
小程序提交表单之后,清除表单form
构造表单 <form bindsubmit"bindFormSubmit"> <view class"main"><textarea name"textarea" value"{{content}}"></textarea> <button form-type"submit" type"primary" > 提交 &…...
Java程序设计实验5 | Java API应用
*本文是博主对Java各种实验的再整理与详解,除了代码部分和解析部分,一些题目还增加了拓展部分(⭐)。拓展部分不是实验报告中原有的内容,而是博主本人自己的补充,以方便大家额外学习、参考。 (解…...
自媒体项目详述
总体框架 本项目主要着手于获取最新最热新闻资讯,以微服务构架为技术基础搭建校内仅供学生教师使用的校园新媒体app。以文章为主线的核心业务主要分为如下子模块。自媒体模块实现用户创建功能、文章发布功能、素材管理功能。app端用户模块实现文章搜索、文章点赞、…...
客服呼叫中心的语音质检工作
语音质检是呼叫中心运营中必不可缺少的一个环节,呼叫中心语音质检对坐席起着直接监督的作用,也正是这种监督约束推动着客服人员不断提升自身的业务能力。 而客服呼叫中心的质检结果中还蕴藏了大量有价值的信息,可以通过日常的质检工作真正发现…...
深度解密 | 灵脉SAST 3.0最新特性曝光
一、多模智能引擎焕新 2023年6月,灵脉SAST入选国际权威咨询机构Forrester发布的《The Static Application Security Testing Landscape》报告成为全球范围内仅有的两款亚太区SAST代表产品之一。 此次3.0版本重大焕新,灵脉SAST从检测工具的灵魂核心入手…...
NowCode JZ39 数组中出现次数超过一半的数字 简单
题目 - 点击直达 1. JZ39 数组中出现次数超过一半的数字 简单1. 题目详情1. 原题链接2. 题目要求3. 基础框架 2. 解题思路1. 思路分析2. 时间复杂度3. 代码实现 1. JZ39 数组中出现次数超过一半的数字 简单 1. 题目详情 1. 原题链接 NowCode JZ39 数组中出现次数超过一半的数…...
【SA8295P 源码分析 (一)】119 - QNX 中如何在代码中快速配置 TLMM_GPIO 或 PMIC_GPIO 中断 及 中断回调函数
【SA8295P 源码分析】119 - QNX 中如何在代码中快速配置 TLMM_GPIO 或 PMIC_GPIO 中断 及 中断回调函数 一、配置 TLMM GPIO15 中断示例代码二、配置 PMIC2 GPIO1 中断示例代码三、easy_irq 实现源码分析3.1 struct _easy_irq_ctx 结构体内容分析3.2 register_easy_irq_callbac…...
电大搜题:开启智能学习新时代
尊敬的读者朋友们,今天我将向您介绍一款能够让您轻松搜题、高效学习的神奇工具:电大搜题!作为湖北开放大学和广播电视大学的学习者,您一定对于繁重的课业和复杂的试题感到头疼。但是,现在有了电大搜题微信公众号&#…...
19、Flink 的Table API 和 SQL 中的自定义函数及示例(4)
Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...
Vue23-props配置功能
Vue2&3-props配置功能 Vue2-props配置 功能:接收从其他组件传过来的数据,将数据从静态转为动态注意: 同一层组件不能使用props,必须是父组件传子组件的形式。父组件传数据,子组件接收数据。不能什么数据都接收&a…...
怎样使用ovsyunlive在web网页上直接播放rtsp/rtmp视频
业务中需要在网页中直接播放rtsp和rtmp视频,多方比较测试发现ovsyunlive的播放器能直接播放rtsp/rtmp视频,还是非常方便简洁,使用过程如下: 1,Windows系统在github上面下载ovsyunlive绿色包下载解压。 github地址&am…...
MusePublic圣光艺苑快速部署:免编译环境+Streamlit轻量框架优势分析
MusePublic圣光艺苑快速部署:免编译环境Streamlit轻量框架优势分析 1. 项目概述与核心价值 MusePublic圣光艺苑是一个专为艺术创作设计的AI绘画平台,它基于Stable Diffusion XL架构,通过精心设计的用户界面和优化的工作流程,为创…...
如何用 checkValidity 触发 HTML5 表单的原生校验提示
checkValidity()仅返回布尔值,不触发红框和气泡提示;reportValidity()才真正触发UI反馈,但需控件有校验属性、未禁用、已挂载且表单未设novalidate。调用 checkValidity() 本身不会显示错误提示这是最常被误解的一点:checkValidit…...
研一在雁栖湖,研二在中关村:中科院网信中心读研的真实体验与避坑指南
研一在雁栖湖,研二在中关村:中科院网信中心读研的真实体验与避坑指南 第一次踏入雁栖湖校区时,湖面泛起的粼粼波光与远处连绵的青山构成了一幅令人屏息的画面。作为中科院计算机网络信息中心(以下简称"网信中心"&#x…...
HTML头部元信息必知避坑指南
HTML头部元信息避坑指南元信息基础概念定义与作用:<head>标签内元信息的核心功能(SEO、渲染控制、兼容性等)。常见类型:<meta>、<title>、<link>、<script>等标签的分类说明。字符编码声明必须优先…...
期货反向跟单: 千万不要教小白单一技术。
做期货反向跟单的都知道,咱们找小白盘手,图的就是他们没经验、容易踩坑。但好多人培训小白时犯了个致命错 — 只教一种技术,还逼着他们死记硬背严格执行,结果发现:小白执行力是上来了,可咱们跟单却亏得一塌…...
磁轴键盘选霍尔,关键看哪几点?
工程师和厂商朋友们在选型磁轴键盘霍尔方案时,通常会关注哪些核心参数?磁轴键盘的按键性能,很大程度上取决于线性霍尔传感器的参数选型。作为将磁场变化转换为电压信号的器件,线性霍尔的上电时间、响应速度、输出底噪三项指标&…...
Qwen3.5-4B-Claude-Opus应用场景:游戏开发中NPC对话逻辑生成引擎
Qwen3.5-4B-Claude-Opus应用场景:游戏开发中NPC对话逻辑生成引擎 1. 游戏NPC对话系统的挑战与机遇 在游戏开发过程中,NPC(非玩家角色)的对话系统一直是开发者面临的重要挑战。传统NPC对话系统通常采用以下几种方式: …...
警惕AI全自动攻击!Claude Opus成功构建Chrome漏洞武器化链路
在 Anthropic 公司发布 Mythos 和 Project Glasswing 模型引发激烈争论之际,一位安全研究人员展示了前沿 AI 技术对网络安全的实际影响。该研究突破了理论警告的局限,成功利用 Claude Opus 构建出针对 Google Chrome 复杂 V8 JavaScript 引擎的完整漏洞利…...
04华夏之光永存:黄大年茶思屋榜文解法「第10期第4题」 AI运筹优化核心卡点:MIP求解器自学习双路径工程解法
华夏之光永存:黄大年茶思屋榜文解法「第10期第4题」 AI运筹优化核心卡点:MIP求解器自学习双路径工程解法 一、摘要 本题为该领域顶级技术难题,本文采用工程化可复现逻辑,提供两条标准化解题路径,全程符合工程师技术认知…...
**Spring Data Document with MongoDB Support 1.0.0.M3** 是 Spring Data 早期针对 MongoDB 发布的里程碑版本(Milestone
Spring Data Document with MongoDB Support 1.0.0.M3 是 Spring Data 早期针对 MongoDB 发布的里程碑版本(Milestone 3),发布于 2011 年。它是 Spring Data MongoDB 项目的前身,从 1.0.0.M4 版本起,项目正式更名为 Sp…...
