Nginx基础01:安装和基本使用

news2024/11/25 12:53:39

背景

  • Nginx是一个高性能的Web服务器,几乎所有的Web服务都需要使用Nginx。

  • 关于Nginx的功能特性这里不再赘述,让我们从0开始,了解Nginx的基本用法,学习它在Web服务中都有哪些应用。

本文主要介绍Nginx的安装以及基础的控制命令

Nginx(“enginex”)

  • 是一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个邮件服务器(支持POP3/SMTP/IMAP协议)

  • 是由伊戈尔·赛索耶夫(俄罗斯人)使用C语言编写的,Nginx的第一个版本是2004年10月4号发布的0.1.0版本

  • 基于BSD许可证开源

安装包下载

  • 最新版下载:http://nginx.org/en/download.html

  • 历史版本:http://nginx.org/download/

Windows环境的安装

  • 下载数据包,解压后直接使用,双击exe启动

  • 在浏览器输出:http://localhost,即可看到欢迎页面

CentOS环境的安装

为了获得较好的学习环境,我们应该考虑安装在一个纯净的虚拟机或者云服务器上。同时,为了避免CentOS防火墙拦截端口上的数据,我们考虑将其关闭

关闭防火墙

  • systemctl stop firewalld 关闭运行的防火墙,系统重新启动后,防火墙将重新打开

  • systemctl disable firewalld 永久关闭防火墙,系统重新启动后,防火墙依然关闭

  • systemctl status firewalld 查看防火墙状态

防火墙控制

  • 查询防火墙中指定的端口是否开放:firewall-cmd --query-port=9001/tcp

  • 开放一个指定的端口:firewall-cmd --permanent --add-port=9002/tcp #参数"--permanent"表示永久开放,不加表示临时开放

  • 批量添加开发端口:firewall-cmd --permanent --add-port=9001-9003/tcp

  • 如何移除一个指定的端口:firewall-cmd --permanent --remove-port=9003/tcp

  • 重新加载:firewall-cmd --reload

安装前的准备

停用selinux

  1. selinux(security-enhanced linux),美国安全局对于强制访问控制的实现,在6内核以后的版本中,selinux已经成功内核中的一部分。

  1. 查看selinux:sestatus

  1. 为了方便,直接关闭:vim /etc/selinux/config

  1. 重启系统

安装GCC

  • 原因:Nginx是使用C语言编写的程序

  • 检查:gcc --version

  • 安装:yum install -y gcc

安装PCRE

  • 原因:Nginx在编译过程中需要使用到PCRE库(perl Compatible Regular Expressoin 兼容正则表达式库),因为在Nginx的Rewrite模块和http核心模块都会使用到PCRE正则表达式语法。

  • 安装:yum install -y pcre pcre-devel

  • 检查:rpm -qa pcre pcre-devel

zlib库

  • 原因:提供了开发人员的压缩算法,在Nginx的各个模块中需要使用gzip压缩,所以我们也需要提前安装其库及源代码zlib和zlib-devel

  • 安装:yum install -y zlib zlib-devel

  • 检查:rpm -qa zlib zlib-devel

OpenSSL

  • 是一个开放源代码的软件库包,应用程序可以使用这个包进行安全通信,并且避免被窃听。

  • SSL:Secure Sockets Layer安全套接协议的缩写,可以在Internet上提供秘密性传输,其目标是保证两个应用间通信的保密性和可靠性。

  • 原因:在Nginx中,如果服务器需要提供安全网页时就需要用到OpenSSL库,所以我们需要对OpenSSL的库文件及它的开发安装包进行一个安装。

  • 安装:yum install -y openssl openssl-devel

  • 检查:rpm -qa openssl openssl-devel

  • 全部安装:yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

通过Nginx源码

下载:wget http://nginx.org/download/nginx-1.22.0.tar.gz

解压:tar -xzf nginx-1.22.0.tar.gz

进入nginx目录后,执行:./configure

编译:make

安装:make install

查看Nginx的默认安装位置:whereis nginx

Nginx安装包目录说明

  • auto:存放的是编译相关的脚本

  • CHANGES:版本变更记录

  • CHANGES.ru:俄罗斯文的版本变更记录

  • conf:nginx默认的配置文件

  • configure:nginx软件的自动脚本程序,是一个比较重要的文件,作用如下:

  • 检测环境及根据环境检测结果生成C代码

  • 生成编译代码需要的Makefile文件

  • contrib:存放的是几个特殊的脚本文件,其中README中对脚本有着详细的说明

  • html:存放的是Nginx自带的两个html页面,访问Nginx的首页和错误页面

  • LICENSE:许可证的相关描述文件

  • man:nginx的man手册

  • README:Nginx的阅读指南

  • src:Nginx的源代码

./configure参数

查看所有”./configure”时的额外参数:./configure --help

参数类别

  • 基础配置

  • --prefix=PATH指定安装根目录,默认是/usr/local/nginx。此设置会更改其他配置目录的相对路径

  • --sbin-path=PATH可执行文件的路径,默认为<prefix>/sbin/nginx

  • --modules-path=PATH模块存储路径

  • --conf-path=PATH配置文件的路径,默认为<prefix>/conf/nginx.conf

  • --pid-path=PATHpid文件的存放路径,默认存放在<prefix>/logs/nginx.pid,是一个存放nginx的master进程ID的纯文本文件,刚安装的时候不会生成,nginx启动的时候会自动生成

  • --lock-path=PATH指向Nginx锁文件的存放路径,默认值为<prefix>/logs/nginx.lock

  • --with-ld-opt:加入第三方链接时需要的参数。编译之后nginx最终的可执行二进制文件是由编译后的目标文件和一些第三方的库链接生成的。如果想要将某个库链接到nginx中,就需要指定–with-ld-opt=目标库名-目标库路径

  • --with-debug:将nginx需要打印debug调试级别日志的代码编译进nginx,这样才可以通过修改配置文件将调试日志打印出来,便于定位服务问题

  • 日志文件

  • --http-log-path=PATH指向访问日志文件的路径,默认值为<prefix>/logs/access.log

  • --error-log-path=PATH错误日志文件存储位置,默认值为<prefix>/logs/error.log

  • 加载额外的模块

  • --with-select_module

  • 排除额外的模块

  • --without-stream_limit_conn_module

实例:./configure--prefix=/usr/local/nginx \

--sbin-path=/usr/local/nginx/sbin/nginx\

--modules-path=/usr/local/nginx/modules\

--conf-path=/usr/local/nginx/conf/nginx.conf\

--error-log-path=/usr/local/nginx/logs/error.log\

--http-log-path=/usr/local/nginx/logs/access.log\

--pid-path=/usr/local/nginx/logs/nginx.pid\

--lock-path=/usr/local/nginx/logs/nginx.lock

第一个实例

通过“whereis nginx”获得Nginx的目录(默认/usr/local/nginx)并进入

进入sbin,执行以下命令即可启动:./nginx

进入浏览器访问:http://localhost

安装目录结构

conf: nginx所有配置文件目录

  • CGI

  • CGI(CommonGateway Interface)通用网关【接口】,主要解决的问题是从客户端发送一个请求和数据,服务端获取到请求和数据后可以调用调用CGI【程序】处理及相应结果给客户端的一种标准规范。

  • fastcgi.conf:fastcgi相关配置文件

  • fastcgi.conf.default:fastcgi.conf的备份文件

  • fastcgi_params:fastcgi的参数文件

  • fastcgi_params.default:fastcgi的参数备份文件

  • scgi_params:scgi的参数文件

  • scgi_params.default:scgi的参数备份文件

  • uwsgi_params:uwsgi的参数文件

  • uwsgi_params.default:uwsgi的参数备份文件

  • mime.types: 记录的是HTTP协议中的Content-Type的值和文件后缀名的对应关系

  • mime.types.default:mime.types的备份文件

  • nginx.conf: 这个是Nginx的核心配置文件,这个文件非常重要,也是我们即将要学习的重点

  • nginx.conf.default:nginx.conf的备份文件

  • 编码:koi-utf、koi-win、win-utf这三个文件都是与编码转换映射相关的配置文件,用来将一种编码转换成另一种编码

html: 存放nginx自带的两个静态的html页面

  • 50x.html:访问失败后的失败页面

  • index.html:成功访问的默认首页

logs:记录入门的文件,当nginx服务器启动后,这里面会有 access.log error.log 和nginx.pid三个文件出现。

sbin:是存放执行程序文件nginx,用来控制Nginx的启动和停止等相关的命令。

卸载

卸载(进入安装目录,通过“whereis nginx”获取)

  1. 需要将nginx的进程关闭:./nginx -s stop

  1. 将安装的nginx进行删除:rm -rf /usr/local/nginx

  1. 回到之前执行make的目录,将安装包之前编译的环境清除掉:make clean

与systemctl整合

基于源码安装的nginx,默认情况下是不能通过systemctl操作的

只能进入到其安装目录下的sbin子目录中的nginx二进制文件控制

整合systemctl

  1. 在`/usr/lib/systemd/system`目录下添加nginx.service文件

  1. 编辑文件内容:

[Unit]
Description=nginx web service
Documentation=http://nginx.org/en/docs/
After=network.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t -c /usr/local/nginx/conf/nginx.conf
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
PrivateTmp=true

[Install]
WantedBy=default.target
  1. 添加完成后如果权限有问题需要进行权限设置:chmod 755 /usr/lib/systemd/system/nginx.service

  1. 使用系统命令来操作nginx

  • 启动: systemctl start nginx

  • 停止: systemctl stop nginx

  • 重启: systemctl restart nginx

  • 重新加载配置文件: systemctl reload nginx

  • 查看nginx状态: systemctl status nginx

  • 开机启动: systemctl enable nginx

添加到环境变量

背景:每次执行nginx的二进制指令时,都要切换到其安装目录下的sbin目录,很麻烦

解决方案:将其添加到环境变量中,让Linux自己去寻找指令所在位置

在/etc/profile文件汇总追加:exportPATH=$PATH:/usr/local/nginx/sbin

使之立即生效:source /etc/profile

测试:nginx -v

通过yum安装

更改CentOS的软件更新源为阿里源

  1. 备份/etc/yum.repos.d/CentOS-Base.repo为CentOS-Base.repo.backup:mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

  1. 下载新的CentOS-Base.repo或者编辑其中的baseurl。下载Ali的CentOS7的yum,repo文件:wget -O /etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repo

  1. 清空缓存:yum clean all

  1. 更新缓存:yum makecache

安装工具:yum install -y yum-utils

添加地址到yum:vim /etc/yum.repos.d/nginx.repo

[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

查看是否安装:yum list | grep nginx

安装:yum install -y nginx

查看安装:whereis nginx

第一个实例

查看nginx的安装位置:whereis nginx

编辑Nginx配置文件:vim /etc/nginx/nginx.conf,添加一个虚拟主机:

启动或重新加载Nginx:nginx -s reload

访问:http://localhost:8000,获取Nginx欢迎主页

与源码安装的区别

源码安装与yum安装的区别

  • 源码安装:所有数据都放在一个文件夹内(默认/usr/local/nginx)

  • yum安装:将数据分散在操作系统的不同位置,符合Linux数据分离的思想(日志文件放在/var/log/,配置文件放在/etc)

yum安装时执行“./configure”指定的参数

控制Nginx

Nginx默认采用的是多进程的方式来工作的

  • Nginx后台进程中包含一个master进程和多个worker进程,master进程主要用来管理worker进程,包含接收外界的信息,并将接收到的信号发送给各个worker进程,监控worker进程的状态,当worker进程出现异常退出后,会自动重新启动新的worker进程。

  • worker进程则是专门用来处理用户请求的,各个worker进程之间是平等的并且相互独立,处理请求的机会也是一样的。

查看Nginx开启的进程:ps -ef | grep “nginx”

控制nginx,实际上是在操作master进程:打开、关闭、重启

获取Nginx的PID

获取进程号

  • ps aux | grep nginx

  • ps -ef | grep nginx

  • 注意:由于前文中已经说过了,控制Nginx主要是操作master进程,所以带有“master process”的进程PID才是Nginx的进程PID

第二列就是进程的PID

通过Nginx的PID文件获取master的进程号

  • 使用find命令全局查找nginx.pid文件:find / -name nginx.pid

  • /表示从根目录下开始查找

  • -name后面指定要查找的文件名

  • 将反引号内命令的执行结果作为另一条命令的参数:cat `find / -name nginx.pid`

  • 注意是反引号、飘号,ESC按键下的那个按键

  • 含义是:将飘号内的命令find / -name nginx.pid的执行结果,作为cat的参数

Linux中将上一条命令的结果作为下一条命令的参数

  • 使用xargs:查找Nginx的PID文件,然后将查找结果交给cat:find / -name nginx.pid | xargs cat

  • 使用反斜杠、飘号:cat`find / -name nginx.pid`

  • 使用findexec命令

  • find/ -name nginx.pid -exec cat {} \;

  • 这里的{}和\;是成对使用的。将find的查找结果作为参数

  • 使用$( )

  • cat$(find / -name nginx.pid)

  • 将$( )的执行结果作为cat的参数

信号控制

控制语法:kill -信号类型 PID进程号

信号类型

作用

TERM/INT

立即关闭整个服务

QUIT

"优雅"地关闭整个服务

master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,再把进程都关闭掉

HUP

重读配置文件并使用服务对新配置项生效

USR1

重新建立日志文件,可以用来进行日志切割

USR2

平滑升级到最新版的nginx

WINCH

所有子进程不在接收处理新连接,相当于给work进程发送QUIT指令

发送TERM/INT信号给master进程,会将Nginx服务立即关闭。

  • kill-TERM PID

  • kill-TERM $(cat `find / -name nginx.pid`)

发送QUIT信号给master进程,master进程会控制所有的work进程不再接收新的请求,等所有请求处理完后,再把进程都关闭掉。

  • kill-QUIT PID

  • kill-QUIT $(cat `find / -name nginx.pid`)

发送HUP信号给master进程,master进程会把控制旧的work进程不再接收新的请求,等处理完请求后将旧的work进程关闭掉,然后根据nginx的配置文件重新启动新的work进程

  • kill-HUP PID / kill -HUP $(cat `find / -name nginx.pid`)

发送USR1信号给master进程,告诉Nginx重新开启日志文件

  • kill-USR1 PID / kill -USR1 $(cat `find / -name nginx.pid`)

发送USR2信号给master进程,告诉master进程要平滑升级

  1. 这个时候,会重新开启对应的master进程和work进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在/run/nginx.pid。通过命令“find / -name nginx.pid”获取pid文件的位置

  1. 而之前的旧的master进程PID会被记录在/run/nginx.pid.oldbin文件中,接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭

  • kill-USR2 PID / kill -USR2 $(cat `find / -name nginx.pid`)

  • kill-QUIT PID / kill -QUIT $(cat `find / -name nginx.pid.oldbin`)

发送WINCH信号给master进程,让master进程控制不让所有的work进程在接收新的请求了,请求处理完后关闭work进程。注意master进程不会被关闭掉

  • kill-WINCH PID /kill -WINCH $(cat `find / -name nginx.pid`)

命令控制

通过Nginx安装目录下的sbin下的可执行文件nginx来进行Nginx状态的控制

通过“whereis nginx”获得Nginx的目录(默认/usr/local/nginx)并进入

进入sbin,执行以下命令即可启动:./nginx

./nginx-h 查看帮助信息

./nginx-s 信号类型

stop[快速关闭,类似于TERM/INT信号的作用]

quit[优雅的关闭,类似于QUIT信号的作用]

reopen[重新打开日志文件类似于USR1信号的作用]

reload[类似于HUP信号的作用]

./nginx-t: 测试nginx的配置文件语法是否正确并退出

./nginx-T: 测试nginx的配置文件语法是否正确并列出用到的配置文件信息然后退出

./nginx-p: prefix,指定Nginx的prefix路径,(默认为:/usr/local/nginx/)

./nginx-c: filename,指定Nginx的配置文件路径,(默认为: conf/nginx.conf)

./nginx-g: 用来补充Nginx配置文件,向Nginx服务指定启动时应用全局的配置

Examples

  • 修改了配置文件后进行正确性检查:./nginx -t

  • 对指定的配置文件进行正确性检查:./nginx -c 配置文件路径 -t

平滑升级

不关闭Nginx的情况下进行升级

需求:将Nginx-1.14.2升级到Nginx-1.16.1,要求Nginx不能中断提供服务。

主要思想

  • Stage1:编译高版本,获取二进制文件

  • 将高版本的Nginx像安装一样,进行参数配置和编译,但不执行安装

  • 编译后数据包文件夹中的objs目录下有nginx二进制文件

  • Stage2:将高版本的nginx二进制文件替换原来低版本的文件

  • Stage3:发送USR2信号给master进程,告诉master进程要平滑升级

  • 这个时候,会重新开启对应的master进程和work进程,整个系统中将会有两个master进程,并且新的master进程的PID会被记录在/run/nginx.pid

  • 而之前的旧的master进程PID会被记录在/run/nginx.pid.oldbin文件中,接着再次发送QUIT信号给旧的master进程,让其处理完请求后再进行关闭

  • kill -USR2 PID / kill -USR2 `cat /run/nginx.pid`

  • kill -QUIT PID / kill -QUIT `cat /run/nginx.pid.oldbin`

升级前准备:将Nginx1.16.1进行参数配置和编译,不需要进行安装。

  1. 进入数据包目录

  1. ./configure

  1. make

方案一:使用Nginx服务信号进行升级

  • 第一步:将14.2版本的sbin目录下的nginx进行备份

  • cd /usr/local/nginx/sbin

  • mv nginx nginxold

  • 第二步:将16.1安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下

  • cd ~/nginx/core/nginx-1.16.1/objs

  • cp nginx /usr/local/nginx/sbin

  • 第三步:发送信号USR2给Nginx的14.2版本对应的master进程:kill -USR2 `cat /run/nginx.pid`

  • 第四步:发送信号QUIT给Nginx的14.2版本对应的master进程:kill -QUIT `more /run/nginx.pid.oldbin`

方案二:使用Nginx安装目录的make命令

  • 第一步:将14.2版本的sbin目录下的nginx进行备份

  • cd /usr/local/nginx/sbin

  • mv nginx nginxold

  • 第二步:将16.1安装目录编译后的objs目录下的nginx文件,拷贝到原来/usr/local/nginx/sbin目录下

  • cd ~/nginx/core/nginx-1.16.1/objs

  • cp nginx /usr/local/nginx/sbin

  • 第三步:进入到安装目录,执行make upgrade

  • 第四步:查看是否更新成功:./nginx -v

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168108.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

讨论| 电视行业已是落日夕阳?

如今&#xff0c;随着移动设备、互联网技术的发展&#xff0c;电视似乎逐渐淡出人们的视野。近期&#xff0c;与电视相关的热门讨论似乎都是对于各大视频平台的会员投屏制度&#xff0c;这似乎更加减少了大众对于电视的使用欲望。那么电视领域是否真的趋于淘汰了呢&#xff1f;…

PASCAL VOC 数据集的标注格式

PASCAL VOC 数据集的标注格式 PASCAL VOC 挑战赛 &#xff08; **The PASCAL Visual Object Classes &#xff09;是一个世界级的计算机视觉挑战赛。 PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning&#xff0c;很多优秀的计算机视觉模型…

区块链知识系列 - 系统学习EVM(一)

EVM有一个基于栈的架构&#xff0c;在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”&#xff08;这主要是为了方便处理哈希运算和椭圆曲线运算操作&#xff09; 这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中…

拉伯证券|锂离子动力电池有哪些优缺点?锂离子电池的优缺点详解

锂离子动力电池是20世纪开发成功的新型高能电池。这种电池的负极是石墨等资料&#xff0c;正极用磷酸铁锂、钴酸锂、钛酸锂等。70年代进入实用化。因其具有能量高、电池电压高、工作温度规模宽、贮存寿命长等优点&#xff0c;已广泛应用于军事和民用小型电器中。 锂离子动力电池…

jvm垃圾回收笔记

JVM基础知识笔记 1. 垃圾回收相关算法 标记清除-标记整理-复制 这三个看上面的文章 1.1 分代收集算法 将不同生命周期的对象采用不同的收集方式&#xff0c;以便提高回收效率&#xff0c;一般是将Java堆分为新生代和老年代&#xff0c;这样可以根据各个年代的特点使用不同的…

拉伯证券|A股涨势趋缓,个股分化,北向资金继续“买买买”

今天上午&#xff0c;A股商场涨势趋缓&#xff0c;主要指数涨跌互现。 个股方面也现较大分解&#xff0c;接连涨停股和接连大幅跌落股同时呈现。 值得注意的是&#xff0c;作为近期最为坚定买入A股的力量之一&#xff0c;北向资金今天上午继续“买买买”&#xff0c;上午半个交…

Wider Face+YOLOV7人脸检测

1 Wider Face标注格式转成YOLO格式1.1 Wider Face标注介绍The format of txt ground truth. File name Number of bounding box x1, y1, w, h, blur, expression, illumination, invalid, occlusion, pose0--Parade/0_Parade_marchingband_1_849.jpg 1 449 330 122 149 0 0 0 0…

Java开发 - Spring Test知多少?

前言 在前文中&#xff0c;我们也使用了测试代码来进行简单的单元测试&#xff0c;但是我们会发现&#xff0c;里面有大量的重复代码&#xff0c;实际给我们的体验并不是太好&#xff0c;所以这篇&#xff0c;我们来学习Spring Test&#xff0c;Spring Test不仅仅限于在Mybati…

AUTOSAR RTE 总结

1. Interface和在Interface下面包含哪些data element在SWC创立之前就定义好了&#xff0c;存储在一个arxml文件里面&#xff0c; 它相当于一个库文件&#xff0c;在新建AUTOSAR project的第一步就应该被导入进来 2. port在SWC创建的阶段被create&#xff0c;因为Interface没有…

某博数据挖掘:使用Scrapy构建自定义数据采集提取洞察信息

想要深入了解某博上最新的动态和信息吗?那么学习如何使用Scrapy构建一个某博数据采集将是不二之选。Scrapy是一个强大的框架,能够快速地爬取网站上的数据。 新版API构建的某博数据采集拥有最丰富的字段信息,能够更好地深入挖掘某博上的数据。提供了多种采集模式,包括用户、…

邮件定时发送java实现

本文总结如何通过java实现邮件接口的定时发送任务。1、邮箱服务器地址和端口以139邮箱为例&#xff0c;获取服务器地址和端口。139邮箱的路径&#xff1a;设置-常见设置-邮箱协议设置2、客户端配置工具&#xff1a;springboot2.4.3使用maven&#xff0c;使用java11pom.xml引入m…

华为机试题:HJ14 字符串排序(python)

文章目录知识点详解1、input()&#xff1a;获取控制台&#xff08;任意形式&#xff09;的输入。输出均为字符串类型。2、print() &#xff1a;打印输出。3、int() &#xff1a;将一个字符串或数字转换为整型&#xff08;强转&#xff09;。4、range() &#xff1a;输出指定范围…

《Linux Shell脚本攻略》学习笔记-第十二章

12.1 简介 我们可以通过关闭无用的服务、调整内核参数或是添加新的硬件来改善系统性能。 12.2 识别服务 Linux系统可以同时运行数百个任务&#xff0c;其中可能也会有那么一两个你不需要的守护进程。 有三种可以用于启动守护进程和服务的工具&#xff0c;Linux发行版支持其中任…

LeetCode题解 贪心(一):455 分发饼干;376 摆动序列;53 最大子序和

随想录 && LeetCode 贪心算法 贪心之于算法&#xff0c;内核是一个最优解是由多个局部最优解组合而成的 比如&#xff0c;如何在一个月之内最有效的减肥&#xff0c;子问题就是每周如何减肥&#xff0c;再拆分就是每一天如何减肥 如果能找到令每一天都有效减肥的策…

vue实现购物车思想

vue实现购物车思想一、问题&#xff1a;二、解决步骤一、问题&#xff1a; 实现购物车功能&#xff0c;具体如下 在该界面显示所有物品的列表&#xff0c;点击开菜显示购物车 在该界面只显示订单的列表 如何实现购物车数据的同步呢&#xff1f; 二、解决步骤 具体思路如…

day21-反射枚举

day21_反射&枚举 课程目标 1. 【理解】类加载器 2. 【理解】什么是反射 3. 【掌握】获取Class对象的三种方式 4. 【掌握】反射获取构造方法并创建对象 5. 【掌握】反射获取成员变量并使用 6. 【掌握】反射获取成员方法并使用 7. 【掌握】反射综合案例 8. 【理解】枚举类加…

在Ubuntu上安装 Hadoop 3详细过程(验证+填坑总结)

在Ubuntu上安装 Hadoop 3 前提条件&#xff1a; Python 推荐3.8JDK 推荐1.8 解压安装 sudo tar -zxvf hadoop-3.3.0.tar.gz -C /usr/local cd /usr/local sudo mv hadoop-3.3.0 hadoop sudo chown -R hadoop ./hadoop 配置环境变量 vim ~/.bashrc # hadoop export…

5、数组的创建和操作

目录 一、创建空数组、行向量、列向量 二、访问数组 三、 子数组的赋值&#xff08;Assign&#xff09; 四、其他创建数组的方式 1. 通过冒号创建一维数组 2.通过logspace函数创建一维数组 3.通过linspace函数创建一维数组 在MATLAB中一般使用方括号“[ ]”、逗号“,”、…

Python FastAPI 框架入门(一)【用于后端API快捷开发】

FastAPI 框架&#xff0c;高性能&#xff0c;易于学习&#xff0c;高效编码&#xff0c;生产可用 官方中文文档&#xff1a;FastAPI 框架中文文档 官方介绍&#xff1a; FastAPI 是一个用于构建 API 的现代、快速&#xff08;高性能&#xff09;的 web 框架&#xff0c;使用 Py…

【GD32F427开发板试用】-05-GD32F427移植Coremark

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动&#xff0c;更多开发板试用活动请关注极术社区网站。作者&#xff1a;申小林 如何在GD32F427开发板上移植CoreMARK? 1 下载CoreMARK源码 CoreMark开源的代码可以在Gitbub上自己做下载。 下载地址&#xff1a;ht…