Linux --- 软件安装、项目部署
一、软件安装
1.1、软件安装方式
在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下:

1.2、安装JDK
上述我们介绍了Linux系统软件安装的四种形式,接下来我们就通过第一种(二进制发布包)形式来安装 JDK。

JDK具体安装步骤如下:
1、上传安装包
使用FinalShell自带的上传工具将jdk的二进制发布包上传到Linux
由于上述在进行文件上传时,选择的上传目录为根目录 /,上传完毕后,我们执行指令 cd / 切换到 根目录下,查看上传的安装包。
2、解压安装包
执行如下指令,将上传上来的压缩包进行解压,并通过-C参数指定解压文件存放目录为 /usr/local。
tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local
3、配置环境变量
使用vim命令修改/etc/profile文件,在文件末尾加入如下配置
JAVA_HOME=/usr/local/jdk1.8.0_171 PATH=$JAVA_HOME/bin:$PATH具体操作指令如下:
4、重新加载profile文件
为了使更改的配置立即生效,需要重新加载profile文件,执行命令:
source /etc/profile
5、检查安装是否成功
java -version
1.3、安装Tomcat
1.3.1、Tomcat安装
Tomcat的安装和上述JDK的安装采用相同的方式,都是使用二进制发布包的形式进行安装

具体安装步骤如下:
1、上传安装包
使用FinalShell自带的上传工具将Tomcat的二进制发布包上传到Linux(与前面上传JDK安装包步骤 一致)。
2、解压安装包
将上传上来的安装包解压到指定目录/usr/local下,执行命令为
tar -zxvf apache-tomcat-7.0.57.tar.gz -C /usr/local
3、启动Tomcat
进入Tomcat的bin目录启动服务。执行命令为:
cd /usr/local/apache-tomcat-7.0.57/ cd bin sh startup.sh 或者 ./startup.sh
1.3.2、Tomcat进程查看
上述我们将Tomcat启动完成之后,并不能知道Tomcat是否正常运行,那么我们验证Tomcat启动是否 成功,有多种方式,我们这里主要介绍常见的两种方式:
1、查看启动日志
Tomcat的启动日志输出在Tomcat的安装目录下的logs目录中,Tomcat的启动及运行日志文件名为 catalina.out,所以我们查看Tomcat启动日志,主要可以通过两条指令,如下:
分页查询Tomcat的日志信息
more /usr/local/apache-tomcat-7.0.57/logs/catalina.out查询日志文件尾部的50行记录
tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out只要Tomcat在启动的过程中,日志输出没有报错,基本可以判定Tomcat启动成功了。
2、查询系统进程
我们也可以通过Linux系统的查看系统进程的指令,来判定Tomcat进程是否存在,从而判定Tomcat是 否启动。执行如下指令:
ps -ef|grep tomcat
说明:
- ps 命令是linux下非常强大的进程查看命令,通过ps -ef可以查看当前运行的所有进程的详细 信息
- "|" 在Linux中称为管道符,可以将前一个命令的结果输出给后一个命令作为输入
- 使用 ps 命令查看进程时,经常配合管道符和查找命令 grep 一起使用,来查看特定进程
1.3.3、防火墙操作
前面我们已经通过日志的方式及查看系统进程的方式,验证了Tomcat服务已经正常启动,接下来我们 就可以尝试访问一下。访问地址:http://192.168.138.130:8080,我们发现是访问不到的。
那为什么tomcat启动成功了,但就是访问不到呢?原因就在于Linux系统的防火墙,系统安装完毕 后,系统启动时,防火墙自动启动,防火墙拦截了所有端口的访问。接下来我们就需要学习一下,如何 操作防火墙,具体指令如下


那么我们要想访问到Tomcat,就可以采取两种类型的操作:
1、关闭防火墙
执行指令 :
systemctl stop firewalld关闭之后,再次访问Tomcat,就可以访问到了。
注意: 上面我们也提到了,直接关闭系统的防火墙,是不建议的,因为这样会造成系统不安全。
2、开放Tomcat的端口号8080
执行指令:
①先开启系统防火墙
systemctl start firewalld②再开放8080端口号
firewall-cmd --zone=public --add-port=8080/tcp --permanent③重新加载防火墙
firewall-cmd --reload执行上述的操作之后,就开放了当前系统中的8080端口号,再次访问Tomcat。
1.3.4、停止Tomcat
在Linux系统中,停止Tomcat服务的方式主要有两种:
1、运行Tomcat提供的脚本文件
在Tomcat安装目录下有一个bin目录,这个目录中存放的是tomcat的运行脚本文件,其中有一个脚本 就是用于停止tomcat服务的。
我们可以切换到bin目录,并执行如下指令,来停止Tomcat服务:
sh shutdown.sh ./shutdown.sh
2、结束Tomcat进程
我们可以先通过 ps -ef|grep tomcat 指令查看tomcat进程的信息,从进程信息中获取tomcat 服务的进程号。然后通过kill -9 的形式,来杀死系统进程。
通过上述的指令,我们可以获取到tomcat的进程号为 79947。接下来,我们就可以通过指令 ,来杀死tomcat的进程 :
kill -9 79947执行完上述指令之后,我们再访问Linux系统中的Tomcat,就访问不到了。
注意: kill命令是Linux提供的用于结束进程的命令,-9表示强制结束
注意 : 虽然上述讲解的两种方式,都可以停止Tomcat服务,但是推荐使用第一种方式 (./shutdown.sh)执行脚本来关闭tomcat服务,如果通过第一种方式停止不了tomcat了,这 个时候,我们可以考虑使用第二种方式,强制杀死进程。
1.4 安装MySQL
1.4.1、MySQL安装
对于MySQL数据库的安装,我们将要使用前面讲解的第二种安装方式rpm进行安装。那么首先我们先了 解一下什么rpm?
RPM:全称为 Red-Hat Package Manager,RPM软件包管理器,是红帽Linux用于管理和安 装软件的工具。
我们要通过rpm,进行MySQL数据库的安装,主要的步骤如下:
1、检测当前系统是否安装过MySQL相关数据库
需要通过rpm相关指令,来查询当前系统中是否存在已安装的mysql软件包,执行指令如下:
rpm -qa #查询当前系统中安装的所有软件 rpm -qa | grep mysql #查询当前系统中安装的名称带mysql的软件 rpm -qa | grep mariadb #查询当前系统中安装的名称带mariadb的软件通过rpm -qa 查询到系统通过rpm安装的所有软件,太多了,不方便查看,所以我们可以通过管道符 | 配合着grep进行过滤查询。
通过查询,我们发现在当前系统中存在mariadb数据库,是CentOS7中自带的,而这个数据库和 MySQL数据库是冲突的,所以要想保证MySQL成功安装,需要卸载mariadb数据库。
2、卸载现有的MySQL数据库
在rpm中,卸载软件的语法为:
rpm -e --nodeps 软件名称那么,我们就可以通过指令,卸载 mariadb,具体指令为:
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64
我们看到执行完毕之后, 再次查询 mariadb,就查不到了,因为已经被成功卸载了。
3、将MySQL安装包上传到Linux并解压
上传MySQL安装包解压到/usr/local/mysql,执行如下指令:
mkdir /usr/local/mysql tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C /usr/local/mysql
4、按照顺序安装rpm安装包
rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm yum install net-tools rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm说明:
- 因为rpm安装方式,是不会自动处理依赖关系的,需要我们自己处理,所以对于上面的rpm 包的安装顺序不能随意修改。
- 安装过程中提示缺少net-tools依赖,使用yum安装(yum是一种在线安装方式,需要保证 联网)
- 可以通过指令(yum update)升级现有软件及系统内核
1.4.2、MySQL启动
MySQL安装完成之后,会自动注册为系统的服务,服务名为mysqld。那么,我们就可以通过 systemctl指令来查看mysql的状态、启动mysql、停止mysql。
systemctl status mysqld #查看mysql服务状态 systemctl start mysqld #启动mysql服务 systemctl stop mysqld #停止mysql服务说明: 可以设置开机时启动mysql服务,避免每次开机启动mysql。执行如下指令:
systemctl enable mysqld

我们可以通过如下两种方式,来判定mysql是否启动:
netstat -tunlp #查看已经启动的服务 netstat -tunlp | grep mysql #查看mysql的服务信息 ps –ef | grep mysql #查看mysql进程
1.4.3、MySQL登录
查阅临时密码
MySQL启动起来之后,我们就可以测试一下登录操作,但是我们要想登录MySQL,需要一个访问密码, 而刚才在安装MySQL的过程中,并没有看到让我们设置访问密码,那这个访问密码是多少呢? 那实际 上,对于rpm安装的mysql,在mysql第一次启动时,会自动帮我们生成root用户的访问密码,并且输 出在mysql的日志文件 /var/log/mysqld.log中,我们可以查看这份日志文件,从而获取到访问密码。
可以执行如下指令:
cat /var/log/mysqld.log
这种方式,可以看到所有的日志数据,文件比较大时,很不方便查看数据。我们可以通过管道符 | 配 合grep来对数据进行过滤。
cat /var/log/mysqld.log | grep password我们可以通过上述指令,查询日志文件内容中包含password的行信息。
登录MySQL
获取到root用户的临时密码之后,我们就可以登录mysql数据库,修改root的密码,为root设置一个 新的密码。并且我们还需要开启root用户远程访问该数据库的权限,这样的话,我们就可以在 windows上来访问这台MySQL数据库。
执行如下指令:
①登录mysql(复制日志中的临时密码登录)
mysql -uroot -p
②修改密码
set global validate_password_length=4 #设置密码长度最低位数 set global validate_password_policy=LOW #设置密码安全等级低,便于密码可以修改成root set password = password('root') #设置密码为root操作完上述的指令之后,数据库root用户的密码以及远程访问我们就配置好了,接下来,可以执行 exit退出mysql,再次通过新的密码进行登录。
当然我们也可以使用安装在windows系统中的sqlyog或者Navicat来远程连接linux上的MySQL。
注意: 要想在windows上能够访问MySQL,还需要开放防火墙的3306端口,执行如下指令:
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload
1.5、安装lrzsz
lrzsz 是用于在Linux系统中文件上传下载的软件。大家可能会存在疑问,我们用finalShell图形 化界面就可以很方便的完成上传下载,为什么还要使用这个软件来完成上传下载呢?实际上是这样的, Linux的远程连接工具有很多,而finalShell只是其中的一种,而还有很多的远程连接工具并没有上 传下载的功能,这个时候就需要依赖于lrzsz这个软件了。
对于lrzsz的安装,我们需要通过第三种软件安装方式yum来进行安装。这里,我们先对yum做一个简单介绍
Yum: (Yellow dog Updater,Modified),是一个在Fedora和RedHat以及CentOS中的 Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以 自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
安装lrzsz的步骤如下:
1、搜索lrzsz安装包
yum list lrzsz
2、在线安装lrzsz
yum install lrzsz.x86_64
3、测试
在命令行中输入 rz , 就会自动打开一个文件选择的窗口,然后选择要上传的文件。
yum拓展知识:
1、如果在不更改软件来源的情况下,是需要联网才能使用yum的,那么我们安装的软件 是从哪儿下载的呢,这里就涉及到一个概念: yum源。
2、我们可以通过一个指令,来检查当前的yum源
从图中,我们可以看到我们安装的 CentOS7 采用的是网易的163yum源。
3、网络 yum 源配置文件位于 /etc/yum.repos.d/ 目录下,文件扩展名 为"*.repo“
可以看到,该目录下有 7 个 yum 配置文件,通常情况下 CentOS-Base.repo 文件生效。
4、添加阿里云yum源
- 先通过 yum install wget ,安装wget命令
- 备份默认的网易163的yum源,执行指令 :
cd /etc/yum.repos.d/ #切换目录 mkdir bak #创建备份目录 mv *.repo bak/ #移动现有的yum源文件到bak
- 下载阿里云的yum源
wget 10 /etc/yum.repos.d/CentoS-Base.repo http://mirrors.aliyuncom/repo/Centos-7repo
- 执行命令,重新生成cache.
yum clean all yum makecache
- 再次查看yum源
二、项目部署
之前我们讲解Linux操作系统时,就提到,我们服务端开发工程师学习Linux系统的目的就是将来我们 开发的项目绝大部分情况下都需要部署在Linux系统中。那么在本章节,我们将通过两种方式,来演示 项目部署,分别是:手动部署项目 和 基于shell脚本自动部署。
2.1、手动部署项目
1、在IDEA中开发SpringBoot项目并打成jar包
项目是一个很简单的springboot项目(可以自己开发一个,也可以直接导入资料中提供的),结构如下:
可以在本地的idea中先启动当前的demo工程,然后访问一下,看看工程是否正常访问。
执行package指令,进行打包操作,将当前的springboot项目,打成一个jar包。
2、将jar包上传到Linux服务器
通过 rz 指令,将打好的jar包上传至Linux服务器的 /usr/local/app 目录下。 先执行指令创 建app目录
mkdir /usr/local/app #在/usr/local下创建目录app cd /usr/local/app #切换到app目录下 rz #执行指令,进行jar包上传此时这个jar包就上传到 /usr/local/app 目录了。
3、启动SpringBoot程序
由于我们的项目已经打成jar包上传上来到Linux服务器,我们只需要运行这个jar包项目就启动起来 了,所以只需要执行如下指令即可:
java -jar helloworld-1.0-SNAPSHOT.jar
注意: 由于前面安装的Tomcat在启动时,会占用端口号8080,而当前springboot项目我们没有配 置端口号,默认也是8080,所以我们要想启动springboot项目,需要把之前运行的Tomcat停止掉。
4、检查防火墙,确保8080端口对外开放,访问SpringBoot项目
firewall-cmd --zone=public --list-ports
如果防火墙没有放开8080端口,还需要放开对应的端口号,执行如下指令:
firewall-cmd --zone=public --list-ports
5、访问测试
IP地址 + 端口8080 / hello
6、后台运行项目
当前这个demo工程我们已经部署成功了,并且我们也可以访问项目了。但是这个工程目前是存在问题 的,就是当前我们项目启动的这个窗口被霸屏占用了,如果我们把这个窗口关闭掉(或ctrl+c),当前服务也就访问不到了,我们可以试一下。
目前程序运行的问题:
- 线上程序不会采用控制台霸屏的形式运行程序,而是将程序在后台运行
- 线上程序不会将日志输出到控制台,而是输出到日志文件,方便运维查阅信息
后台运行程序:
要想让我们部署的项目进行后台运行,这个时候我们需要使用到linux中的一个命令 nohup ,接下 来,就来介绍一下nohup命令。
nohup命令:英文全称 no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会 影响程序的运行
语法格式: nohup Command [ Arg … ] [&]
参数说明:
- Command:要执行的命令
- Arg:一些参数,可以指定输出文件
- &:让命令在后台运行
举例:
- nohup java -jar boot工程.jar &> hello.log &
- 上述指令的含义为: 后台运行 java -jar 命令,并将日志输出到hello.log文件
那么经过上面的介绍,我们可以推测中,我们要想让当前部署的项目后台运行,就可以使用下面的指令:
nohup java -jar helloworld-1.0-SNAPSHOT.jar &> hello.log &
这样的话,我们的项目就已经启动成功了,我们可以通过ps指令,查看到系统的进程。
接下来,我们再次访问我们的项目,来看看服务是否可用。
7、停止SpringBoot项目
2.2、基于Shell脚本自动部署
2.2.1、介绍
前面介绍的项目部署是手动部署,也就是部署过程中的每一步操作都需要我们手动操作。接下来,我们 需要再讲解一下项目的自动部署,从而来简化项目部署的操作,那么我们先来整体上了解一下项目自动 部署的流程及操作步骤。

操作步骤如下:
- 在Gitee上创建远程仓库,并将本地的项目代码推送到远程仓库中
- 在Linux中安装Git,克隆代码
- 在Linux中安装maven
- 编写Shell脚本(拉取代码、编译、打包、启动)
- 为用户授予执行Shell脚本的权限
- 执行Shell脚本
2.2.2、推送代码到远程
- 创建远程仓库
- 将idea中的代码提交并推送到远程仓库
2.2.3、Git操作
1、Git软件安装
通过yum命令在线安装git,执行如下指令:
yum list git #列出git安装包 yum install git #在线安装git通过上述指令,安装好git之后,我们就可以通过 git --version去验证git的环境。
2、Git克隆代码
cd /usr/local/ git clone https://gitee.com/ChuanZhiBoKe/helloworld.git
2.2.4、Maven安装
由于我们的工程是maven工程,我们要想进行项目的编译打包,需要用到maven的指令,所以需要安装 maven。具体操作步骤如下:
1)、上传maven的安装包
通过 rz 指令上传maven安装包
2、解压maven安装包到/usr/local目录
tar -zxvf apache-maven-3.5.4-bin.tar.gz -C /usr/local
3、在/etc/profile配置文件中配置环境变量
vim /etc/profile
修改配置文件,进入到命令模式,按G切换到最后一行,按a/i/o进入插入模式,然后在最后加入如下内容 :
export MAVEN_HOME=/usr/local/apache-maven-3.5.4 export PATH=$JAVA_HOME/bin:$MAVEN_HOME/bin:$PATH
然后按ESC进入到命令模式,输入 :wq 保存并退出
要想让配置的环境变量生效,还需要执行如下指令:
source /etc/profile
4、修改maven的settings.xml配置文件,配置本地仓库地址
切换目录:
cd /usr/local/apache-maven-3.5.4/conf
编辑settings.xml配置文件:
vim settings.xml
在其中增加如下配置,配置本地仓库地址:
<localRepository>/usr/local/repo</localRepository>
并在settings.xml中的标签中,配置阿里云的私服:
<mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url> </mirror>
2.2.5、Shell脚本准备
Shell脚本(shell script),是一种Linux系统中的脚本程序。使用Shell脚本编程跟 JavaScript、Java编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。
在/usr/local/目录下创建一个目录 sh(mkdir sh),并将shell脚本上传到该目录下。或者直接 在sh目录下创建一个脚本bootStart.sh,然后将资料中的bootStart.sh文件打开,内容拷贝过来即 可。
脚本解读:
2.2.6、Linux权限
前面我们已经把Shell脚本准备好了,但是Shell脚本要想正常的执行,还需要给Shell脚本分配执行 权限。 由于linux系统是一个多用户的操作系统,并且针对每一个用户,Linux会严格的控制操作权 限。接下来,我们就需要介绍一下Linux系统的权限控制。

Linux系统中权限描述如下:
解析当前脚本的权限情况:

chmod命令可以使用八进制数来指定权限(0 - 代表无 , 1 - 执行x , 2 - 写w , 4 - 读r):

举例:
- chmod 777 bootStart.sh 为所有用户授予读、写、执行权限
- chmod 755 bootStart.sh 为文件拥有者授予读、写、执行权限,同组用户和其他用户授予读、执行权限
- chmod 210 bootStart.sh 为文件拥有者授予写权限,同组用户授予执行权限,其他用户没有任何权限
注意:
三个数字分别代表不同用户的权限
- 第1位表示文件拥有者的权限
- 第2位表示同组用户的权限
- 第3位表示其他用户的权限
2.2.7、授权并执行脚本
在测试阶段,我们可以给所有的人都赋予执行该shell脚本的权限。所以可以执行如下指令:
chmod 777 bootStart.sh

权限解读:
- 第一个7,代表当前文件所有者root用户,对该文件具有读写执行权限;
- 第二个7,代表当前文件所有者所属组的用户,对该文件具有读写执行权限;
- 第三个7,代表其他用户,对该文件具有读写执行权限;
执行该shell脚本:

注意: 在执行maven指令进行打包时,第一次执行可能会耗时比较长,因为在进行maven工程的打包 时,需要到中央仓库下载工程依赖的jar包和插件(可以在settings.xml中配置阿里云私服加速下 载)。
启动完成之后, 我们可以查看java进程:

访问项目
2.2.8、设置静态IP
我们目前安装的Linux操作系统,安装完毕之后并没有配置IP地址,默认IP地址是动态获取的,那如 果我们使用该Linux服务器部署项目,IP动态获取的话,也就意味着,IP地址可能会发生变动,那我 们访问项目的话就会非常繁琐,所以作为服务器,我们一般还需要把IP地址设置为静态的。
1、设置静态IP
设置静态ip,我们就需要修改 /etc/sysconfig/network-scripts/ifcfg-ens33 配置文件, 内容如下:
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static IPADDR="192.168.138.100" # 设置的静态IP地址 NETMASK="255.255.255.0" # 子网掩码 GATEWAY="192.168.138.2" # 网关地址 DNS1="192.168.138.2" # DNS服务器 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=afd0baa3-8bf4-4e26-8d20-5bc426b75fd6 DEVICE=ens33 ONBOOT=yes ZONE=public
上述我们所设置的网段为138,并不是随意指定的,需要和我们虚拟机中的虚拟网络编辑器中的NAT模 式配置的网关保持一致。
2、重启网络服务
ip地址修改完毕之后,需要重启网络服务,执行如下指令:
systemctl restart network
注意:重启完网络服务后ip地址已经发生了改变,此时FinalShell已经连接不上Linux系统,需要 创建一个新连接才能连接到Linux。
再次连接上Linux之后,我们再次查看IP地址,就可以看到我们所设置的静态IP:
相关文章:
Linux --- 软件安装、项目部署
一、软件安装 1.1、软件安装方式 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 1.2、安装JDK 上述我们介绍了Linux系统软件安装的四种形式,接下来我们就通过第一种(二进制发布包)形式来安装 JDK。 JDK…...
MATLAB应用笔记
其他 1、NaN值 MATLAB判断数据是否为NaN可以直接使用函数:isnan() 三、数据分析 1、相关性 均值、方差、协方差、标准差、相关系数 mean() %均值 nanmean()%去除NAN值求均值 var() %方差 cov() %协方差 std() %标准差 corrcoef(B,b) %R 相关系数plot()…...
ERTEC200P-2 PROFINET设备完全开发手册(6-2)
6.2 诊断与报警实验 首先确认固件为 App1_STANDARD, 将宏定义改为: #define EXAMPL_DEV_CONFIG_VERSION 1 参照第6节的内容,编译和调试固件,并在TIA Portal 中建立RT项目。启动固件后,TIA Portal 切换到在线,可以看…...
算法套路八——二叉树深度优先遍历(前、中、后序遍历)
算法套路八——二叉树深度优先遍历(前、中、后序遍历) 算法示例:LeetCode98:验证二叉搜索树 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只…...
视频批量剪辑:如何给视频添加上下黑边并压缩视频容量。
视频太多了,要如何进行给视频添加上下黑边并压缩视频容量?今天就由小编来教教大家要如何进行操作,感兴趣的小伙伴们可以来看看。 首先,我们要进入视频剪辑高手主页面,并在上方板块栏里选择“批量剪辑视频”板块&#…...
那些你需要知道的互联网广告投放知识
作为一个合格的跨境电商卖家,我们除了有好的产品之外,还要知道怎么去营销我们自己的产品。没有好的推广,即使你的产品有多好别人也是很难看得到的。今天龙哥就打算出一期基础的互联网广告投放科普,希望可以帮到各位增加多一点相关…...
【hello Linux】进程程序替换
目录 1. 程序替换的原因 2. 程序替换原理 3. 替换函数 4. 函数解释 5. 命名理解 6.简陋版shell的制作 补充: Linux🌷 1. 程序替换的原因 进程自创建后只能执行该进程对应的程序代码,那么我们若想让该进程执行另一个“全新的程序”这 便要用…...
【网络应用开发】实验4——会话管理
目录 会话管理预习报告 一、实验目的 二、实验原理 三、实验预习内容 1. 什么是会话,一个会话的生产周期从什么时候,到什么时候结束? 2. 服务器是如何识别管理属于某一个特定客户的会话的? 3. 什么是Cookie,它的…...
Linux服务器怎么分区
Linux服务器怎么分区 我是艾西,linux系统除了从业某个行业经常要用到的程序员比较熟悉,对于小白或只会用Windows系统的小伙伴还是会比较难上手的。今天艾西简单的跟大家聊聊linux系统怎么分区,让身为小白的你也能一眼看懂直接上手操作感受程序…...
传统机器学习(四)聚类算法DBSCAN
传统机器学习(四)聚类算法DBSCAN 1.1 算法概述 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度的空间聚类算法。 该算法将具有足够密度的区域划分为簇,并在…...
“华为杯”研究生数学建模竞赛2020年-【华为杯】A题:ASIC 芯片上的载波恢复 DSP 算法设计与实现(附获奖论文及matlab代码实现)
目录 摘 要: 1.问题重述 1.1 问题背景 1.2 问题提出 1.3 研究基础 2.模型假设和已知...
1043.分隔数组以得到最大和
题目: 给你一个整数数组 arr,请你将该数组分隔为长度 最多 为 k 的一些(连续)子数组。分隔完成后,每个子数组的中的所有值都会变为该子数组中的最大值。 返回将数组分隔变换后能够得到的元素最大和。本题所用到的测试…...
微服务治理框架(Istio)的认证服务与访问控制
本博客地址:https://security.blog.csdn.net/article/details/130152887 一、认证服务 1.1、基于JWT的认证 在微服务架构下,每个服务是无状态的,由于服务端需要存储客户端的登录状态,因此传统的session认证方式在微服务中不再适…...
数据结构 | 排序 - 总结
排序的方式 排序的稳定性 什么是排序的稳定性? 不改变相同数据的相对顺序 排序的稳定性有什么意义? 假定一个场景: 一组成绩:100,88,98,98,78,100(按交卷顺序…...
crontab -e 系统定时任务
crontab -e解释 crontab 是由 “cron” 和 “table” 两个单词组成的缩写。其中,“cron” 是一个在 Linux 和类 Unix 操作系统中用于定时执行任务的守护进程,而 “table” 则是指一个表格或者列表,因此 crontab 就是一个用于配置和管理定时任…...
前后端交互系列之Axios详解(包括拦截器)
目录 前言一,服务器的搭建二,Axios的基本使用2.1 Axios的介绍及页面配置2.2 如何安装2.3 Axios的前台代码2.4 Axios的基本使用2.5 axios请求响应结果的结构2.6 带参数的axios请求2.7 axios修改默认配置 三,axios拦截器3.1 什么是拦截器3.2 拦…...
定时任务之时间轮算法
初识时间轮 我们先来考虑一个简单的情况,目前有三个任务A、B、C,分别需要在3点钟,4点钟和9点钟执行,可以把时间想象成一个钟表。 如上图中所示,我只需要把任务放到它需要被执行的时刻,然后等着时针转到这个…...
实验4 Matplotlib数据可视化
1. 实验目的 ①掌握Matplotlib绘图基础; ②运用Matplotlib,实现数据集的可视化; ③运用Pandas访问csv数据集。 2. 实验内容 ①绘制散点图、直方图和折线图,对数据进行可视化; ②下载波士顿数房价据集,并…...
【软件工程】为什么要选择软件工程专业?
个人主页:【😊个人主页】 文章目录 前言软件工程💻💻💻就业岗位👨💻👨💻👨💻就业前景🛩️🛩️🛩️工作环…...
5类“计算机”专业很吃香,人才缺口巨大,就业前景良好
说到目前最热门的专业,计算机绝对占有一席之地,是公认的发展前景好、人才缺口大的专业。有人称该专业人数如此众多,势必会导致人才饱和,但是从当前社会互联网发展的趋势来看,计算机专业在很长一段时间都是发展很好的专…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...
数据链路层的主要功能是什么
数据链路层(OSI模型第2层)的核心功能是在相邻网络节点(如交换机、主机)间提供可靠的数据帧传输服务,主要职责包括: 🔑 核心功能详解: 帧封装与解封装 封装: 将网络层下发…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...






















































