网站建设公司推广方案/seo常用工具
contents
- 服务器
- 一、相关概念
- 1.1 云服务器与实例
- 1.2 关于域名解析延时与80端口
- 1.3 关于备案
- 1.4 关于SSL证书
- 1.5 关于SSL证书的签发
- 1.6 关于SSL证书的部署
- 1.7 关于LNMP和LAMP
- 1.8 关于bt面板
- 二、单服务器+单一级域名=多网站
- 2.1 创建多个二级域名
- 2.2 解析二级域名绑定到服务器上
- 2.3 理解二级域名的访问
- 2.4 实现不同的域名访问不同的文件
- 部署flask
- 一、远程连接服务器
- 二、配置MySQL
- 2.1 放通端口
- 2.2 安装MySQL并启动
- 2.3 配置MySQL
- 2.4 更改config.py
- 2.5 本地连接远程数据库
- 2.6 本地构造数据库信息
- 三、配置Nginx
- 3.1 放通端口
- 3.2 安装Nginx并启动
- 四、配置python
- 4.1 安装python
- 4.2 安装python环境管理包
- 五、项目相关
- 5.1 创建py虚拟环境
- 5.2 Git管理
- 5.3 配置flask运行环境
- 5.4 运行flask应用
- 1 内测阶段
- 2 公测阶段
- 5.4 一些bug
服务器
一、相关概念
1.1 云服务器与实例
一个云服务器相当于一个抽象的类,在其中购买配置了指定的实例后相当于实例化一个类,从而一个云服务器对应一个实例
1.2 关于域名解析延时与80端口
在给购买好的域名进行解析的时候,即指向自己服务器的公网IP的时候,可能会有一段时间的延时。但其实可能是没有给云服务器放通80端口导致的
1.3 关于备案
首先需要清除的概念是,备案指的是给网站主机,也就是云服务器进行备案,而一般而言的域名备案其实就是给云服务器备案,只不过叫做域名备案很可能是因为大家在使用域名的时候才发现不备案是无法通过域名访问网站的。这是因为云服务器厂家做的设定,也只是顺应了政策的需求
当前的形式是,对于指向中国大陆 ip 的云服务器需要备案,如果指向的是非中国大陆的 ip,就不需要备案了。一般而言,中文的指向HK,英文的指向UK
1.4 关于SSL证书
http协议默认使用的是80端口,而申请了SSL证书后,通过https协议访问的网站默认使用的是443端口,因此需要提前在实例的安全组中,放通443端口
1.5 关于SSL证书的签发
- 如果是基于bt面板操作的话。可以通过ssl选项中“Let’s Encrypt”的选项免费申请三个月的用量
- 由于是基于bt面板管理,需要打开强制通过https进入这个选项,从而直接默认使用https协议访问网站
- 如果想要通过官方渠道获取。可以在阿里云或者腾讯云等直接免费领取一定额度的ssl证书
1.6 关于SSL证书的部署
获得已签发的ssl证书后,下载下来,再通过bt面板进行部署
- 证书文件:pem 文件
- 密钥文件:key 文件

1.7 关于LNMP和LAMP
- LNMP是一组Linux操作系统下的Nginx、MySQL、PHP和Perl的组合安装包,常用于构建高性能的Web服务器。通过使用LNMP,可以快速搭建一个功能强大的网站系统
- LAMP是指Linux、Apache、MySQL和PHP的组合,它是一个开源的Web开发平台。这个组合通常被用来构建高性能的Web应用程序
1.8 关于bt面板
简介:其实就是一个类windows的linux环境下的可视化管理工具
安装:服务器安装宝塔面板,基于不同的linux系统会有不同的指令,详情见宝塔面板安装地址,选择相应的指令进行安装即可
进入:通过bt指令进入服务器可视化管理界面

管理:安装网站运行所需的环境,耗时如下:

二、单服务器+单一级域名=多网站
参考:通过Nginx在一台服务器部署多个Web应用
2.1 创建多个二级域名
多个网站可以通过二级域名的形式只依赖一个一级域名,从而实现一个域名衍生出多个子域名的形式,即一级域名为 baidu.com
,二级域名为 mcn.baidu.com
、career.baidu.com
等等
2.2 解析二级域名绑定到服务器上
每一个二级域名都需要解析到相应的IP地址,即主机记录对应记录值,才能进行后续的访问。其实可以理解为,将不同的二级域名都绑定到当前的服务器上,像这样:

2.3 理解二级域名的访问
我们通过不同的二级域名访问网站时,其实就是访问不同的文件夹中的文件信息,像这样:
2.4 实现不同的域名访问不同的文件
这时我们就需要配置 nginx 的代理服务器了, nginx 中的 nginx.conf 文件示例配置如下
##### example project #####
server {listen 443 ssl; # 监听的端口server_name test.cn; # 监听的网址# ssl证书的相关文件路径ssl_certificate /usr/local/nginx/ssl/test.cn_bundle.pem;ssl_certificate_key /usr/local/nginx/ssl/test.cn.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;# 项目路径location / {proxy_pass https://localhost:8080/; # 转向“本地”8080端口# root path; # 根目录# index demo.html; # 设置默认页# proxy_pass http://mysvr; # 请求转向 mysvr 定义的服务器列表# deny 127.0.0.1; # 拒绝的ip# allow 172.18.5.54; # 允许的ip }
}
假如此时我们需要 docs.example.com 访问文档分站(静态),www.example.com 与 example.com 都访问主站(动态),我们就需要配置 nginx 中的 nginx.conf 文件,如下
#----- docs.example.com -----#
server {listen 443 ssl; # 监听的端口server_name docs.example.com; # 监听的网址# ssl证书的相关文件路径ssl_certificate /usr/local/nginx/ssl/test.cn_bundle.pem;ssl_certificate_key /usr/local/nginx/ssl/test.cn.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;# 项目路径location / {root /usr/web/docs; # 根目录}
}#----- www.example.com -----#
server {listen 443 ssl; # 监听的端口server_name www.example.com; # 监听的网址# ssl证书的相关文件路径ssl_certificate /usr/local/nginx/ssl/b.test.cn_bundle.pem;ssl_certificate_key /usr/local/nginx/ssl/b.test.cn.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {root /usr/web/www; # 根目录}
}#----- example.com -----#
server {listen 443 ssl; # 监听的端口server_name www.example.com; # 监听的网址# ssl证书的相关文件路径ssl_certificate /usr/local/nginx/ssl/b.test.cn_bundle.pem;ssl_certificate_key /usr/local/nginx/ssl/b.test.cn.key;ssl_session_cache shared:SSL:1m;ssl_session_timeout 5m;ssl_ciphers HIGH:!aNULL:!MD5;ssl_prefer_server_ciphers on;location / {proxy_pass https://www; # 请求转向 mysvr 定义的服务器列表}
}
部署flask
一、远程连接服务器
服务器信息
[root@DwjDemo1 ~]# cat /etc/os-releaseNAME="Alibaba Cloud Linux" 发行版的名称
VERSION="3 (Soaring Falcon)" 发行版的版本号
ID="alinux" 唯一的标识符
ID_LIKE="rhel fedora centos anolis" 一些类似的发行版
VERSION_ID="3" 发行版的版本编号
PLATFORM_ID="platform:al8" 平台的标识符
PRETTY_NAME="Alibaba Cloud Linux 3 (Soaring Falcon)" 可读的发行版名称和版本号
ANSI_COLOR="0;31" ANSI终端输出的颜色: "0;31",通常用于表示错误或警告信息
HOME_URL="https://www.aliyun.com/" 发行版的官方网站链接
连接方法
-
方法一:利用阿里云自带的服务器连接入口,远程连接服务器
-
方法二:使用MobaXterm端口连接工具并更新全局软件
yum update
-
输入 username 和 password
二、配置MySQL
2.1 放通端口
服务器放通端口3306
2.2 安装MySQL并启动
参考:Linux安装mysql8.0(官方教程!)
2.3 配置MySQL
设置mysql登录密码
在服务器中连接mysql
mysql -uroot -p
授予权限给自己
# MySQL 5 版本
GRANT ALL ON *.* TO root@'%' IDENTIFIED BY '替换成你的root密码' WITH GRANT OPTION;# MySQL 8 版本
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '替换成你的root密码';
使用数据库
use mysql
允许远程登录数据库
update user set host = '%' where user = 'root';
刷新更新配置
FLUSH PRIVILEGES;
2.4 更改config.py
修改项目中 config.py
中的配置信息
# @Time : 2023-12-03 23:25
# @File : config.py
# @Author : Mr_Dwj'''
配置文件:1. 数据库配置信息2. ...
'''# 数据库的配置信息
HOSTNAME = ''
PORT = '3306'
DATABASE = 'test1'
USERNAME = ''
PASSWORD = ''
DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
SQLALCHEMY_DATABASE_URI = DB_URI
2.5 本地连接远程数据库


2.6 本地构造数据库信息
拷贝数据库表 - 直接在DataGrip中寻找进行复制即可

三、配置Nginx
参考:Linux安装Nginx(超详细步骤)
3.1 放通端口
服务器放通80端口
3.2 安装Nginx并启动
进入nginx官网并下载稳定版至本地:
上传服务器(直接通过mobaxterm拖拽)并解压到当前目录下并进入nginx文件夹
tar -zxvf nginx-1.20.tar.gz
cd "/home/nginx-1.20/"
配置nginx并编译安装
# 配置configure
# --prefix 代表安装的路径
# --with-http_ssl_module 安装ssl
# --with-http_stub_status_module 查看nginx的客户端状态
./configure --prefix=/usr/local/nginx-1.20 --with-http_ssl_module --with-http_stub_status_module# 编译安装
make && make install
进入sbin目录,启动nginx
# 启动nginx
./nginx
解决启动遇到的端口占用的问题
![]()
killall -9 nginx
杀掉 nginx 的进程,然后重启
然后浏览器通过http的80端口访问公网ip,就可以看到欢呼雀跃的一幕
![]()
四、配置python
4.1 安装python
参考:linux安装python
命令集合
# 安装python依赖
If you want a release build with all stable optimizations active (PGO, etc),please run ./configure --enable-optimizations# 本地下载拖拽上传至服务器,解压安装包
tar -xvf Python-3.11.tgz# 进入安装包,配置安装路径
cd Python-3.10.6
./configure --prefix=/usr/local/python311# 编译安装
make && make install# 将最新的python创建软链链接
ln -s /usr/local/python311/bin/python3.11 /usr/bin/python311# 修改yum依赖默认的python版本
vi /usr/libexec/urlgrabber-ext-down
vi /usr/bin/yum# 修改防火墙
vi /usr/bin/firewall-cmd
vi /usr/sbin/firewalld# 创建pip软连接
ln -s /usr/local/python311/bin/pip3.11 /usr/bin/pip311
vim的编辑指令
# 进入编辑模式
i# 退出编辑模式进入命令模式
Esc# 保存并关闭文件
:w# 退出vim编辑模式
:q
4.2 安装python环境管理包
安装python虚拟环境管理依赖
pip install virtualenvwrapper
配置虚拟环境
# 在根目录下进入.bashrc文件进行编辑
vi .bashrc
i# ctrl+f进入末尾,粘贴一下文字,保存并退出
export WORKON_HOME=$HOME/.virtualenvs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python311
source /usr/local/bin/virtualenvwrapper.sh# 刷新配置文件
source ~/.bashrc
刷新配置文件时报错:
virtualenvwrapper.sh: There was a problem running the initialization hooks.
解决方案参考:virtualenvwrapper.sh报错: There was a problem running the initialization hooks.解决
五、项目相关
5.1 创建py虚拟环境
创建虚拟py环境
mkvirtualenv --python=/usr/bin/python311 <EnvName>
启动虚拟环境
workon <EnvName>
退出虚拟环境
deactivate
5.2 Git管理
进入python虚拟环境目录<EnvName>
初次部署:拉取远程源文件
git clone https://github.com/Explorer-Dong/YunJinWeb.git
后续更新:覆盖原始代码并重新运行应用
git pull
# 找到所有uwsgi进程
ps -ef|grep uwsgi
# 杀死所有进程
kill -9 <进程号>
# 退出uwsgi但是不停止服务的操作
uwsgi -d --ini uwsgi.ini
5.3 配置flask运行环境
检查本项目所需py模块
pip freeze >requirements.txt
安装所需py模块
pip install -r requirements.txt
5.4 运行flask应用
1 内测阶段
使用flask自带的服务器运行
运行flask主接口文件 app.py
python app.py
运行app.py时报错,端口已被占用,解决方案:
方法一:换一个端口运行
方法二:杀死其余的端口占用进程,重启应用
# 检测端口占用 netstat -npl | grep "端口"# 查找占用端口的进程的PID sudo lsof -i:"端口"# 根据PID杀死该进程 sudo kill -9 <PID>
2 公测阶段
使用uwsgi应用服务器运行
安装并配置uwsgi应用服务器
-
安装uwsgi包
pip install uwsgi
-
创建uwsgi.ini文件并编辑
touch uwsgi.ini
[uwsgi]# -------------------- 路径相关的设置 --------------------# 项目的路径 chdir = /root/.virtualenvs/test111/demo/# Flask的uwsgi文件配对的应用 wsgi-file = /root/.virtualenvs/test111/demo/app.py# 回调的app对象 callable = app# Python虚拟环境的路径 home = /root/.virtualenvs/test111# -------------------- 进程相关的设置 --------------------# 主进程 master = true# 最大数量的工作进程 processes = 10# 监听5000端口(或监听socket文件,与nginx配合) http = :5000 # socket监听 # socket = /srv/[项目名称]/[项目名称].sock# 设置socket的权限 # chmod-socket = 666# 退出的时候是否清理环境 vacuum = true
-
通过uwsgi应用服务器运行flask应用
uwsgi启动flask项目(venv虚拟环境)
# 初始启动uwsgi指令 uwsgi --ini uwsgi.ini
-
退出uwsgi但是不停止服务的操作
# 退出uwsgi但是不停止服务的操作 uwsgi -d --ini uwsgi.ini# 此时想要停止就需要找到uwsgi的进程并全部杀死# 找到所有uwsgi进程ps -ef|grep uwsgi# 杀死所有进程kill -9 <进程号>
5.4 一些bug
问题一:读取json时出现问题
error: UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xc3 in position 39: invalid continuation byte
reason: 对 string 解码时出现错误
solve:
将app.py中的
with open('static/json/image_text.json', 'r') as f:image_text = json.load(f)
改为
with open('static/json/image_text.json', 'r', encoding='gbk') as f:image_text = json.load(f)
参考:https://bobbyhadz.com/blog/python-unicodedecodeerror-utf-8-codec-cant-decode-byte
相关文章:

Operation
contents 服务器一、相关概念1.1 云服务器与实例1.2 关于域名解析延时与80端口1.3 关于备案1.4 关于SSL证书1.5 关于SSL证书的签发1.6 关于SSL证书的部署1.7 关于LNMP和LAMP1.8 关于bt面板 二、单服务器单一级域名多网站2.1 创建多个二级域名2.2 解析二级域名绑定到服务器上2.3…...

Kong关键概念 - 服务(Services)
服务(Services) 在Kong Gateway中,服务是代表外部上游(upstream)API或微服务的实体。例如,数据转换微服务、计费API等。 服务的主要属性是其URL。您可以使用一个字符串来指定URL,或者通过分别…...

IDEA更改页面不重启
IDEA更改页面不重启 idea若依 修改包名 idea 1、修改IDEA设置 File -> Settings -> Build Execution Deployment -> Build Project automatically 勾选2、勾选Running Ctrl Shift Alt / 然后选择 Registry,勾上 Compiler.autoMake.allow.when.app.runn…...

golang学习-channel管道
1、定义 管道是golang语言提供的goroutine间的通讯方式,channel可以让一个goroutine发送特定的值给另一个goroutine的通讯机制。 管道是引用类型。 golang语言中channel是一种特殊的类型。像一个队列一样,先进先出。 var 变量 chan 元素类型 var ch1 …...

oracle 12 查询数据库锁
在Oracle 12c中,查询数据库锁信息可以通过以下视图进行: v$locked_object:这个视图显示了当前被锁定的对象(如表、行等)的信息。 SELECT l.session_id sid, s.serial#, l.locked_mode,o.object_name,s.osuser,s.userna…...

【LeetCode-135】分发糖果(贪心)
LeetCode135.分发糖果 题目描述 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分。 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。…...

5G_射频测试_发射机测量(四)
6.2 Base station output power 用于测量载波发射功率的大小,功率越大小区半径越大但是杂散也会越大 载波功率(用频谱仪测)天线口功率(用功率计测)载波功率是以RBW为单位的filter测量的积分功率不同带宽的多载波测试时…...

MySQL经典50题
目录 一、数据表介绍 二、练习题 1. 查询" 01 "课程比" 02 "课程成绩高的学生的信息及课程分数 2. 查询同时存在" 01 "课程和" 02 "课程的情况 3. 查询存在" 01 "课程但可能不存在" 02 "课程的情况…...

常用的Qt开源库分享
1. Qwt (https://qwt.sf.net): Qwt是一个基于Qt的数据可视化库,提供了绘制曲线、图表、仪表盘等功能。 2. QJson (https://qjson.sourceforge.net): QJson是一个用于JSON数据解析和生成的库,使Qt应用程序能够方便地处理JSON格式的数据。 3. QCustomP…...

Unity开发授权系统
Unity开发授权系统 引子 因为有些客户尾款到账不及时,因此研究了一套授权系统,当授权到期后,系统就提示软件授权已到期,不能继续使用云云,这样方便尾款的收回。 大体需求就是 时间相关性,可以自由设置授…...

一周时间,开发了一款封面图生成工具
介绍 这是一款封面图的制作工具,根据简单的配置即可生成一张好看的封面图,目前已有七款主题可以选择。做这个工具的初衷来自平时写文章,都为封面图发愁,去图片 网站上搜索很难找到满意的,而且当你要的图如果要搭配上文…...

【.NET Core】深入理解异步编程模型(APM)
【.NET Core】深入理解异步编程模型(APM) 文章目录 【.NET Core】深入理解异步编程模型(APM)一、APM概述二、IAsyncResult接口2.1 BeginInvoke2.2 EndInvoke2.3 IAsyncResult属性2.4 IAsyncResult异步演示 三、通过结束异步操作来…...

pyqtgraph绘图类
pyqtgraph绘图类 pyqtgraph绘图有四种方法: 方法描述pyqtgraph.plot()创建一个新的QWindow用来绘制数据PlotWidget.plot()在已存在的QWidget上绘制数据PlotItem.plot()在已存在的QWidget上绘制数据GraphicsLayout.addPlot()在网格布局中添加一个绘图 上面四个方法都接收同样…...

C#6-10新增的内容
目录 异常筛选器 属性语法 表达式主体定义 Null 条件运算符 ?. 和 ?[] 使用 $ 的字符串内插 nameof 表达式 元组类型 模糊匹配 本地函数 Expression-bodied 成员 Reference 变量 ?、??和??= .. 模式匹配功能(C# 9) Record init c#8.NET Framework 4.8…...

【立创EDA-PCB设计基础】3.网络表概念解读+板框绘制
前言:本文对网络表概念解读板框绘制(确定PCB板子轮廓) 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2,将设计的原理图转为了PCB,在PCB界面下出现了所有的封装,以及所有的飞线属性&…...

在Python环境中运行R语言的配环境实用教程
前情提要 在做一些生物信息与医学统计的工作,本来偷懒希望只靠python完成的,结果还是需要用R语言,倒腾了一会儿,调成功了,就记录一下这个过程。 我的环境: win10, pycharm, R-4.3.2 首先,我们…...

2023年总结我所经历的技术大变革
📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!📢本文作者:由webmote 原创📢作者格言:新的征程,我们面对的不仅…...

基于YOLOv7算法的高精度实时车载摄像头下车辆检测系统(PyTorch+Pyside6+YOLOv7)
摘要:基于YOLOv7算法的高精度实时车载摄像头下车辆检测系统可用于日常生活中检测与定位车辆,此系统可完成对输入图片、视频、文件夹以及摄像头方式的目标检测与识别,同时本系统还支持检测结果可视化与导出。本系统采用YOLOv7目标检测算法来训…...

深度学习(3)--递归神经网络(RNN)和词向量模型Word2Vec
目录 一.递归神经网络基础概念 二.自然语言处理-词向量模型Word2Vec 2.1.词向量模型 2.2.常用模型对比 2.3.负采样方案 2.4.词向量训练过程 一.递归神经网络基础概念 递归神经网络(Recursive Neural Network, RNN)可以解决有时间序列的问题,处理诸如树、图这样…...

【江科大】STM32:中断系统(理论)
文章目录 中断系统为什么要使用中断中断优先级中断嵌套STM32的中断系统如何管理这些中断NVIC的结构 优先级窗口看门狗(WWDG):外部中断模块的特性&#…...

JAVA 学习 面试(六)数据类型与方法
数据类型 基本数据类型 为什么float3.4报错 3.4 默认是浮点double类型的,如果赋值给float是向下转型,会出现精度缺失,,需要强制转换 Switch支持的数据类型? byte、short、int、char 、 enum 、 String 基本类型与包…...

Java 一个数组集合List<People> 赋值给另一个数组集合List<NewPeople> ,两个数组集合属性部分一致。
Java 一个数组集合List 赋值给另一个数组集合List ,两个数组集合属性部分一致。 下面是一个Demo, 具体要根据自己的业务调整。 import java.util.ArrayList; import java.util.List;class People {private String name;private int age;private String address;publ…...

基于神经网络的电力系统的负荷预测
一、背景介绍: 电力系统负荷预测是生产部门的重要工作之一,通过准确的负荷预测,可以经济合理地安排机组的启停、减少旋转备用容量、合理安排检修计划、降低发电成本和提高经济效益。负荷预测按预测的时间可以分为长期、中期和短期负荷预测。…...

OpenCV第 1 课 计算机视觉和 OpenCV 介绍
文章目录 第 1 课 计算机视觉和 OpenCV 介绍1.机器是如何“看”的2.机器视觉技术的常见应用3.图像识别介绍4. 图像识别技术的常见应用5.OpenCV 介绍6.图像在计算机中的存储形式 第 1 课 计算机视觉和 OpenCV 介绍 1.机器是如何“看”的 我们人类可以通过眼睛看到五颜六色的世界…...

C++面试:stl的栈和队列介绍
目录 栈 栈(stack)的声明: push(): 将元素推入栈顶 pop(): 弹出栈顶元素 top(): 访问栈顶元素,但不弹出 empty(): 检查栈是否为空 size(): 返回栈中元素的数量 …...

从0开始学习C++ 第十二课:指针强化
第十二课:指针强化 学习目标: 理解常量指针与指针常量的区别。学习如何使用函数指针。掌握指针与数组的高级使用技巧。 学习内容: 常量指针与指针常量 概念: 常量指针是一个指向常量的指针,这意味着不能通过这个指针…...

mongodb和python交互
1. mongdb和python交互的模块 pymongo 提供了mongdb和python交互的所有方法 安装方式: pip install pymongo 2. 使用pymongo 2.1 导入pymongo并选择要操作的集合 数据库和集合能够自动创建 2.1.1 无需权限认证的方式创建连接对象以及集合操作对象 from pymongo import Mong…...

力扣279. 完全平方数
动态规划 思路: 假设 dp[i] 为最少组成数 i 的平方数个数;则其上一个状态为 dp[i - j^2] 1,1 为 j^2: 即 i 的最少完全平方数 i - j^2 的最少完全平方数 1,其中 j^2 < i 为最接近 i 的平方数;初始值…...

【C++】list容器功能模拟实现
介绍 上一次介绍了list队容器的迭代器模拟,这次模拟实现list的简单功能,尤其要注意构造函数、析构函数、以及赋值运算符重载的实现。 list容器需要接纳所有类型的数据,因此,结构设置与迭代器设置同理,需要引入结点&…...

linux 安装ffmpeg
一、下载 ffmpeg-4.3.1 下载地址:链接:https://pan.baidu.com/s/1xbkpHDfIWSCbHFGJJHSQcA 提取码:3eil 二、上传到服务器root目录下 三、给ffmpeg-4.3.1 读写权限 chmod -R 777 /root/ffmpeg-4.3.1 四、创建软连接 1.进入/bin 目录 2.…...