【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linux,教你安装Java常用软件、及spring boot项目部署

【Linux】——从0到1的学习,让你熟练掌握,带你玩转Linux,教你安装Java常用软件、及spring boot项目部署

🎼个人主页:【Y小夜】

😎作者简介:一位双非学校的大三学生,编程爱好者,

专注于基础和实战分享,欢迎私信咨询!

🎆入门专栏:🎇【MySQLJava基础Rust

🎈热门专栏:🎊【PythonJavawebSpringboot】 

感谢您的点赞、关注、评论、收藏、是对我最大的认可和支持!❤️

目录

🎈Linux安装

🎁安装步骤

🎁网卡设置

🎁目录功能及介绍

 🎈常用命令

🎁初体验

🎟命令

 🎟实战

🎟出现乱码

🎟小技巧

🎟Linux命令格式

🎁文件目录操作命令

🎟ls

🎟cd

🎟cat

🎟more

🎟tail

🎟rmdir

🎟rm

🎁拷贝移动命令

🎟cp

🎟mv

🎁打包压缩命令

🎟tar

🎁文本编辑

🎟vi/vim

🎗命令模式

🎗插入模式

🎗底行模式

🎁查找命令

🎟find

🎟grep

🎈软件安装

🎁安装方式

🎁安装jdk

🎁安装Tomcat

🎟验证是否启动成功

🎟防火墙操作

🎟关闭tomcat

🎁安装MySQL

🎟查看并卸载旧版本

🎟开始安装

🎟yum一直尝试其他镜像

🎟启动MySQL

🎟登录Mysql

🎁安装lrzsz

🎈项目部署

 🎁手动部署

🎟部署启动

🎟将程序改为后台运行​

​🎟关闭程序

 🎁Shell脚本自动部署项目

🎟基本步骤

🎟安装git

🎟进行克隆

🎟安装Maven

🎟设置maven的本地仓库

🎟创建一个脚本,将脚本内容复制到其中

🎟为用户授权

🎟执行脚本

🎟配置静态ip


🎈Linux安装

🎁安装步骤

详细内容可参考我写的这篇文章:【VMware安装+centos 7Linux系统+MySQL安装】——在Linux系统中安装MySQL步骤,以及遇见的各种问题(如:vm两个虚拟网卡消失、vm网络适配器有感叹号等等)_linux安装的步骤以及遇到的问题-ZEEKLOG博客

🎁网卡设置

由于启动服时未加载网卡,导致IP地址初始化失败(可以输入ip addr命令尝试)

修改网络初始化配置,设定网卡在启动时初始化:a

进入文件之中,将此处修改为yes

然后进行重启就可以

🎁目录功能及介绍

 🎈常用命令

🎁初体验

🎟命令

 🎟实战

🎟出现乱码

如果出现这个中乱码情况,这是编码问题导致的

执行以下两条命令

🎟小技巧

🎟Linux命令格式

🎁文件目录操作命令

🎟ls

🎟cd

🎟cat

🎟more

🎟tail

默认显示最后10行的内容

如果要显示最后n行,可以使用tail -n

🎟rmdir

🎟rm

提醒:千万不要尝试执行rm -rf /*,这个命令会将你的Linux中全部文件都删除

🎁拷贝移动命令

🎟cp

🎟mv

🎁打包压缩命令

🎟tar

🎁文本编辑

🎟vi/vim

🎗命令模式
🎗插入模式
🎗底行模式

🎁查找命令

🎟find

🎟grep

🎈软件安装

🎁安装方式

🎁安装jdk

上传文件,将下载好的压缩包文件上传至Linux中

将安装包解压到 /usr/local 目录下

 tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local 

配置环境变量,使用vim 修改 /ect/profile 文件,在文件末尾加入如下配置

(输入大写G可以快速到达末尾)

JAVA_HOME=/usr/local/jdk1.8.0_171 PATH=$JAVA_HOME/bin:$PATH 

重新加载profile文件,是更改的配置立刻生效

source /etc/profile 

检查安装是否成功

java -version 

🎁安装Tomcat

上传文件,将下载好的压缩包文件上传至Linux中

将安装包解压到 /usr/local 目录下

 tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local/ 

进入Tomcat的bin目录启动服务

sh startup.sh或者./startup.sh

🎟验证是否启动成功

结果如图所示:

🎟防火墙操作

当防火墙开启时,外部windows系统访问tomca服务器,则无法访问

查看防火墙状态,此时为开始状态

使用 systemctl stop firewalld 命令使得防火墙暂时关闭

然后再次查看状态

firewall-cmd --state 

 

再次用外部windows系统访问tomca服务器,则访问成功

但为了系统安全,我们通常都是开放指定端口号 

firewall-cmd --zone=public --add-port=8080/tcp --permanent 

 

这里顺便可以将MySQL的3306端口也开放

firewall-cmd --zone=public --add-port=3306/tcp --permanent 

使用命令,使其生效 

firewall-cmd --reload 

查看开放的端口

firewall-cmd --zone=public --list-ports 

 

🎟关闭tomcat

非特殊情况,不建议使用kill

🎁安装MySQL

🎟查看并卸载旧版本

查看当前Linux中是否有mysql或者时mariadb(系统自带)

rpm -qa|grep mysql rpm -qa|grep mariadb 

这个结果表明,当前不存在mysql,但存在mariadb,我们需要进行卸载

 rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64 

🎟开始安装

进行上传

创建一个目录

mkdir /usr/local/mysql 

将压缩包移动过去 

 mv mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz /usr/local/mysql/

将压缩包解压到该目录中

 tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz 

这里的.rpm文件相当于windows中的.exe文件,所以我们需要按顺序安装

🎟yum一直尝试其他镜像

可以先检查一下网络是否可以ping通,如果不能ping通,可以看我上一篇linux文章

若能ping通,那我们就要更换镜像

先去阿里云上面看一下自己的教程

centos镜像_centos下载地址_centos安装教程-阿里巴巴开源镜像站

下面我以centos7举例子

先备份原yum配置文件

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 

下载了阿里云提供的CentOS 7的Yum源配置文件,并将其覆盖到系统中 

wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

清除旧缓存 

sudo yum clean all 

生成新缓存 

sudo yum makecache ## 生成缓存

 查看是否有效

yum repolist 

🎟启动MySQL

查看MySQL是否启动

systemctl status mysqld 

开启MySQL,查看状态

 systemctl start mysqld 

设置开机自动开启MySQL服务

systemctl enable mysqld 

使用命令查看已经启动的服务(这个命令只有安装net-tools后才可以使用)

netstat -tunlp 

🎟登录Mysql

第一次登录先查看临时密码

cat /var/log/mysqld.log|grep password 

开始登录

mysql -uroot -p 

然后输出初始密码,就可以登录进来了

 

然后修改MySQL密码:

设置密码最低位数

set global validate_password_length=4; 

 设置安全等级

set global validate_password_policy=LOW; 

设置密码(这里我设为root)

set password=password('root'); 

 开启访问权限,从外部也可以访问mysql

grant all on *.* to 'root'@'%' identified by 'root';

刷新权限

flush privileges;

然后可以退出,使用新密码进行登录

🎁安装lrzsz

安装完成输入rz命令可以上传压缩包以及文件等,如果远程连接工具上有,则无需安装

进行搜索lrzsz (这里我已经安装好了)

yum list lrzsz 

 

若要安装则执行

yum install lrzsz.x86_64 

🎈项目部署

 🎁手动部署

🎟部署启动

拿到一个Java项目,注意要先在属性中配置,在属性里加跳过测试:<properties><skipTests>true</skipTests></properties>

将其打成一个包

找到这个jar包

在Linux中建立一个目录

mkdir /usr/local/app 

上传文件之后,将文件移动到创建目录下

mv springcache-demo-1.0-SNAPSHOT.jar /usr/local/app 

启动该程序

java -jar springcache-demo-1.0-SNAPSHOT.jar 

🎟将程序改为后台运行

将项目于进行在后台运行,并将日志文件输出在test1.log中

nohup java -jar springcache-demo-1.0-SNAPSHOT.jar &> test1.log & 

然后可以自己去访问一下端口 

使用more test1.log 查看日志文件

🎟关闭程序

查看进程

ps -ef|grep java 

杀死进程

kill -9 124664 

 再次查询

 🎁Shell脚本自动部署项目

🎟基本步骤

🎟安装git

🎟进行克隆

克隆完毕

🎟安装Maven

解压后,进行环境变量的配置

vim /etc/profile 
export MAVEN_HOME=/usr/local/apache-maven-3.5.4 PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH 

重新加载文件 

source /etc/profile 

 查看版本

mvn -version 

🎟设置maven的本地仓库

创建文件夹

mkdir repo 

 进入maven中

cd apache-maven-3.5.4/ 

然后进入conf中

进入settings中,加入

a

<localRepository>/usr/local/repo</localRepository>

🎟创建一个脚本,将脚本内容复制到其中

注意脚本中的jar包名称,要与pom.xml中的相同

#!/bin/sh echo ================================= echo 自动化部署脚本启动 echo ================================= echo 停止原来运行中的工程 APP_NAME=reggie tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${tpid} ]; then echo 'Stop Process...' kill -15 $tpid fi sleep 2 tpid=`ps -ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'` if [ ${tpid} ]; then echo 'Kill Process!' kill -9 $tpid else echo 'Stop Success!' fi echo 准备从Git仓库拉取最新代码 cd /usr/local/reggie echo 开始从Git仓库拉取最新代码 git pull echo 代码拉取完成 echo 开始打包 output=`mvn clean package -Dmaven.test.skip=true` cd target echo 启动项目 nohup java -jar reggie.jar &> reggie.log & echo 项目启动完成 

🎟为用户授权

将所有的权限都给它

🎟执行脚本

启动脚本(可能第一次比较慢,因为maven仓库中没东西)

没有target去把原项目中的gitignore里面的/target给删了,在上传一次就行

查看日志,如果报下面错误的

将pom文件这个改为false,上传gitee,重新拉取

再次运行.sh文件,部署成功

🎟配置静态ip

这个我没有实操,没设置,如果有具体问题的话,可以在评论区讨论

Read more

数据结构—顺序表超经典算法

数据结构—顺序表超经典算法

数据结构—顺序表链表经常用到的算法 * 所有题目链接 * 顺序表算法题(双指针法) * 移除元素 * 删除有序数组中的重复项 * 合并两个有序数组 * 链表算法题(快慢指针,三指针法,创建新链表法) * 移除链表元素 * 反转链表 * 链表的中间节点 * 合并两个有序链表 * 链表分割 * 链表的回文结构 * 相交链表 * 环形链表(快慢指针) * 环形链表I * 环形链表II * 代码仓库 所有题目链接 移除元素 删除有序数组中的重复项 合并两个有序数组 移除链表元素 反转链表 链表的中间节点 合并两个有序链表 链表分割 链表的回文结构 相交链表 环形链表I 环形链表II 顺序表算法题(双指针法) 移除元素 题目链接↓ 移除元素 题目讲解↓ 思路:双指针法,创建两个变量dst,src如果src指向的数据是val,src++如果src指向的数据不是val,赋值(

By Ne0inhk
基于深度学习YOLO26算法的矿山煤炭输送场景目标检测传送带物料异常检测 异物入侵检测 矿山智能化巡检效率detr算法第10498期

基于深度学习YOLO26算法的矿山煤炭输送场景目标检测传送带物料异常检测 异物入侵检测 矿山智能化巡检效率detr算法第10498期

煤炭物料检测数据集说明 往期热门主题 主题搜两字"关键词"直达 代码数据获取: 获取方式:***文章底部卡片扫码获取*** . 覆盖了YOLO相关项目、OpenCV项目、CNN项目等所有类别, 覆盖各类项目场景: # 往期热门主题 主题搜两字"关键词"直达 ### 代码数据获取: ```clike 获取方式:***文章底部卡片扫码获取*** 覆盖了YOLO相关项目、OpenCV项目、CNN项目等所有类别, 覆盖各类项目场景: 项目名称项目名称基于YOLO+deepseek 智慧农业作物长势监测系统基于YOLO+deepseek 人脸识别与管理系统基于YOLO+deepseek 无人机巡检电力线路系统基于YOLO+deepseek PCB板缺陷检测基于YOLO+deepseek 智慧铁路轨道异物检测系统基于YOLO+deepseek 102种犬类检测系统基于YOLO+deepseek 人脸面部活体检测基于YOLO+deepseek 无人机农田病虫害巡检系统基于YOLO+deepseek 水稻害虫检测识别基于YOLO+deepseek 安全帽检测系统基于YOLO+de

By Ne0inhk
动态规划 线性 DP 经典四题一遍吃透

动态规划 线性 DP 经典四题一遍吃透

文章目录 * 台阶问题 * 最大子段和 * 传球游戏 * 乌龟棋 线性dp 是动态规划问题中最基础、最常⻅的⼀类问题。它的特点是状态转移只依赖于前⼀个或前⼏个状态,状态之间的关系是线性的,通常可以⽤⼀维或者⼆维数组来存储状态。 我们在⼊⻔阶段解决的《下楼梯》以及《数字三⻆形》其实都是线性dp,⼀个是⼀维的,另⼀个是⼆ 维的。 台阶问题 题目描述 题目解析 本题就是上一节下楼梯的问题的加强版,总体思路不变,下面我们还是按照动规5板斧来分析一下这道题。 1、状态表示 dp[i]表示走到第i个台阶的所有方案数 2、状态转移方程 第i个台阶的方案数等于从i-1阶到i-k阶的所有方案数之和,因为本题数据比较大,用long long都无法保证数据不越界,所以题目规定方案数还需要模100003,第i个台阶的方案数等于从i-1阶到i-k阶的所有方案数之和再模上100003,所以但是注意是可能越界访问的,比如i为3,

By Ne0inhk

优选算法——二分查找

👇作者其它专栏 《数据结构与算法》《算法》《C++起始之路》 二分查找相关题解 1.二分查找 算法思路: a.定义left,right指针,分别指向数组的左右区间。 b.找到待查找区间的中间点mid,找到后分三种情况讨论:         i.arr[mid]==target说明正好找到,返回mid的值;         ii.arr[mid]>target说明[mid,right]这段区间都是大于target的,因此舍去右边区间,在左边[left,mid-1]的区间继续查找,即让right=mid-1,然后重复b过程;         iii.arr[mid]<target说明[left,mid]这段区间的值都是小于target的,因此舍去左边区间,在右边区间[mid+1,right]

By Ne0inhk