LNMP搭建Discuz和Wordpress
1、LNMP
L:linux操作系统
N:nginx展示前端页面web服务
M:mysql数据库,保存用户和密码,以及论坛相关的内容
P:php动态请求转发的中间件
数据库的作用:
-
登录时验证用户名和密码
-
创建用户和密码
-
发布和评论帖子,需要保存到数据库
2、搭建论坛原理图

3、 编译安装nginx
安装前:
先rpm -q nginx,如果显示有这个软件,就yum -y remove nginx
如果显示没有这个软件,或者yum卸载了之后,再nginx -t 看一下有没有执行结果,
如果提示你没有这个命令,说明没有用源码安装过,接下来就可以搞今天的安装内容了;如果不放心,去/usr/local/目录找一下有没有nginx这个目录,有就删掉这个目录。
如果提示有结果,不管是OK还是失败,都说明之前用源码安装过了,这时候去/usr/local/目录下把nginx目录删了,再进行今天的步骤。源码安装只要删除安装目录就行。
准备:关闭防火墙及安全机制,准备接收文件
systemctl stop firewalld #关闭防火墙
setenforce 0 #关闭安全机制
rz -E //接收文件
第一步:把源码包放入到系统之中。
使用xshell终端的可以直接从本机拖进虚拟机
第二步:安装编译过程中需要的依赖环境。
yum -y install gcc pcre-devel openssl-devel zlib-devel openssl openssl-devel
第三步:创建Nginx程序运行需要的用户和组
useradd -M -s /sbin/nologin nginx #不创建家目录,指定/sbin/nologin
第四步:编译安装
-
解压源码包
tar -xf nginx-1.22.0.tar.gz
cd 到解压出来的目录下进行下面的操作(nginx-1.22.0)
-
开始配置,配置程序的安装路径,安装基于程序需要的安装组件(在安装包的目录里进行这个操作,下面有不带注释的版本)
./configure --prefix=/usr/local/nginx \ #配置安装路径
--user=nginx \ #配置用户
--group=nginx \ #配置组
--with-http_ssl_module \ #支持https的加密功能ssl/tsl
--with-http_v2_module \ #支持http2.0协议
--with-http_realip_module \ #支持Nginx获取客户端的真实IP地址
--with-http_stub_status_module \ #支持Nginx获取访问状态信息的功能
--with-http_gzip_static_module \ #支持页面压缩文本
--with-pcre \ #支持pcre库
--with-stream \ #支持4层代理的模块
--with-stream_ssl_module \ #支持对tcp连接的加密
--with-stream_realip_module #持从代理协议中获取客户端的真实ip地址
-
编译和安装
make -j 4 && make install #第一个make:编译;第二个make install:安装
#make -j 4 启动4个CPU进行处理
第五步:后续配置,设置权限和系统管理配置
-
配置权限
cd /usr/local
chown -R nginx.nginx nginx #对/usr/local目录下nginx目录更改所属
-
/usr/local/nginx目录下的四个目录的解释conf:配置文件目录,主配置文件nginx.confhtml:工作目录:50x.html默认的访问操作打开的页面,index.htmllogs:日志目录:访问日志、报错日志sbin:二进制启动脚本nginx -
做一个软连接,让系统能够识别nginx的指令
ln -s /usr/local/nginx/sbin/nginx /usr/bin (/usr/sbin也行)
如果系统提示“该文件已存在”,没有关系,这一步也算完成了
-
设置系统控制,系统能够对nginx这个软件的运行状态进行控制。
vim /lib/systemd/system/nginx.service
-----------------------------------------
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
#表示支持dns解析以及该软件依赖于网络。
Wants=network-online.target
#先启动网络服务,才能启动nginx
[Service]
Type=forking
PIDFile=/usr/local/nginx/run/nginx.pid
#注意文件位置,如果不对 启动不了
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
#注意启动文件位置
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
[Install]
WantedBy=multi-user.target
#支持多用户模
1、修改nginx的配置文件,把pid文件的位置指向到设置的位置
cd /usr/local/nginx
mkdir run
chown -R nginx.nginx /usr/local/nginx/run #递归修改run目录所属
cd /usr/local/nginx/conf
vim nginx.conf #编辑要修改的配置文件
修改 nginx.conf 文件的内容中 pid 指向的位置
pid /usr/local/nginx/run/nginx.pid;
修改完后
nginx -t #检测nginx.conf当中的语法是否正确,提示OK则正常
systemctl daemon-reload #重新加载systemd守护进程
systemctl restart nginx #重启nginx服务
nginx -v #查看nginx版本号
systemctl stop nginx #停止nginx服务
在web页面访问虚拟机IP地址,可以看到“welcome to nginx”
4、安装mysql
本次安装使用的是绿色硬盘版本,无需额外安装依赖环境。
cd /opt
tar -xf mysql安装包
mv 解压出的目录 /usr/local/mysql
#创建程序用户
useradd -M -s /sbin/nologin mysql
#mysql的主配置文件设定所属用户和组
chown -R mysql.mysql /usr/local/mysql/
chown mysql.mysql /etc/my.cnf
修改配置文件:
vim /etc/my.cnf
[client]
port = 3306
#客户端访问的端口
socket=/usr/local/mysql/mysql.sock
#指定MySQL的通信套接字文件[mysqld]
user = mysql
basedir=/usr/local/mysql
#MySQL的安装目录
datadir=/usr/local/mysql/data
#MySQL数据保存的目录
port = 3306
#服务端的端口
character-set-server=utf8
#字符集的编码
pid-file = /usr/local/mysql/mysqld.pid
#pid文件位置
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
#表示任意地址都可以访问数据库
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
#MySQL默认的存储引擎
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#MySQL支持的数据类型和相关的模块
设置环境变量,声明/宣告MySQL命令便于系统识别:
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
初始化数据库:
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
设置系统识别,进行操作:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl restart mysqld
初始化数据库密码:
mysqladmin -u root -p password "123456"
#在交互界面直接回车,不要输入!
进入数据库:
mysql -u root -p123456
#进入数据库交互界面
show databases;
#创建用户并设置密码
create user 'root'@"%" identified by '123456';
#赋予远程连接的权限
grant all privileges on *.* to 'root'@'%';
#刷新生效
flush privileges;
#修改加密方式,可以进行远程连接
alter user 'root'@'%' identified with mysql_native_password by "123456";
exit;
数据库安装完成。
5、安装php
1、安装依赖环境:
yum -y install gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
oniguruma-devel \
sqlite-devel
2、编译安装:
tar -xf php-8.1.27.tar.gz
cd php-8.1.27
./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-pdo-mysql \
--with-openssl \
--with-sqlite-devel \
--with-oniguruma-devel \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zipmake -j 4 && make install
--with-mysqli: 启用MySQLi扩展,用于支持MySQL数据库。
--with-zlib: 启用Zlib库,用于压缩和解压缩数据。
--with-curl: 启用cURL库,用于支持对URL的操作,如下载文件等。
--with-gd: 启用GD库,用于处理图像。
--with-jpeg-dir: 指定JPEG库的路径,用于GD库对JPEG格式图片的处理。
--with-png-dir: 指定PNG库的路径,用于GD库对PNG格式图片的处理。
--with-freetype-dir: 指定FreeType库的路径,用于GD库对字体的支持。
--with-openssl: 启用OpenSSL库,用于支持SSL加密和HTTPS协议。
--enable-fpm: 启用PHP-FPM(FastCGI Process Manager),用于提供更高效的PHP进程管理和请求处理。
--enable-mbstring: 启用多字节字符串支持,用于处理多字节字符集的操作。 --enable-xml: 启用XML支持,用于处理XML文档和数据。
--enable-session: 启用会话支持,用于在不同页面间保持用户会话状态。
--enable-ftp: 启用FTP支持,用于对FTP服务器进行操作。
--enable-pdo: 启用PDO(PHP Data Objects),用于支持数据库访问的统一接口。
--enable-tokenizer: 启用Tokenizer扩展,用于对字符串进行分词处理。
--enable-zip: 启用Zip扩展,用于对ZIP文件进行操作。
3、路径优化:使系统能识别到PHP:
ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/
4、调整PHP配置文件:
PHP有三个配置文件:
php.ini :主配置文件
php_fpm.conf :进程服务配置文件
www.conf :扩展配置文件,在安装包目录下的/php_fpm.d目录下
调整主配置文件
cp /opt/php-8.1.27/php.ini-development /usr/local/php/lib/php.ini
vim /usr/local/php/lib/php.ini
#--976行--取消注释,修改
date.timezone = Asia/Shanghai
#--1181行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
#修改完成,退出并验证安装的模块
php -m
调整进程服务配置文件
cd /usr/local/php/etc/
cp php-fpm.conf.default php-fpm.conf
vim php-fpm.conf
#--17行--去掉";"注释
pid = run/php-fpm.pid
调整扩展配置文件
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default www.conf
5、启动php-fpm
/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini
PHP-FPM(FastCGI Process Manager:FastCGI 进程管理器)是一个 PHPFastCGI 管理器, 由于Nginx服务器不能处理动态页面,需要由 Nginx 把动态请求交给 php-fpm 进程进行解析。
cd /opt/php-8.1.27/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl daemon-reload
systemctl restart php-fpm.service
netstat -anpt | grep 9000
#直接看9000端口是不是PHP占用中
6、 配置 Nginx 支持 PHP 解析
在nginx.conf中修改
location ~ \.php$ {root html;fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;#把当前Nginx的工作目录,作为处理动态请求的目录,访问.php文件就会转发到PHP进行处理include fastcgi_params;
}
systemctl restart nginx.service #重启
7、验证PHP测试页
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
8、验证数据库工作是否正常
进入数据库,创建专门用来保存论坛信息的用户和库
mysql -u root -p123456
#进入数据库交互界面
create database bbs;
create user 'bbsuser'@'%' identified by 'admin123';
#创建用户 bbsuser ,密码 admin123
grant all privileges on bbs.* to 'bbsuser'@'%';
flush privileges;CREATE USER 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';
grant all privileges on bbs.* to 'bbsuser'@'localhost';
flush privileges;
exit
修改测试页:
vim /usr/local/nginx/html/index.php
<?php
$link=mysqli_connect('192.168.10.10','bbsuser','admin123');
#ip地址为提供MySQL服务的主机地址
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>
测试页面返回Success!则成功,失败则返回Fail!!
6、部署Discuz
unzip /opt/Discuz_X3.5_SC_UTF8.zip -d /opt/dis
cp -r /opt/dis/upload/ /usr/local/nginx/html/bbs/
cd /usr/local/nginx/html/#调整论坛目录的权限:懒人版
chown -R nginx.nginx bbs/
chmod -R 777 bbs/#实际需要调整权限的目录
cd /usr/local/nginx/html/bbs/
chown -R nginx ./config/
chown -R nginx ./data/
chown -R nginx ./uc_client/
chown -R nginx ./uc_server/
#以及
chmod -R 777 ./config/
chmod -R 777 ./data/
chmod -R 777 ./uc_client/
chmod -R 777 ./uc_server/浏览器访问
http://192.168.10.10/bbs/install/index.php
安装discuz
访问 192.168.10.10/bbs/index.php
访问 192.168.10.10/bbs/admin.php
7、部署Woedpress
进入数据库,创建专门用来保存论坛信息的用户和库
mysql -u root -p123456
#进入数据库交互界面
create database wordpress;
#创建数据库wordpress
create user 'wdpuser'@'%' identified by 'admin123';
#创建用户 wdpuser ,密码 admin123
grant all privileges on wordpress.* to 'wdpuser'@'%';
flush privileges;CREATE USER 'wdpuser'@'localhost' IDENTIFIED BY 'admin123';
grant all privileges on wordpress.* to 'wdpuser'@'localhost';
flush privileges;
exit
解压WordPress的压缩包命名为wordpress,复制解压缩的包到/usr/local/nginx/html下
cd /usr/local/nginx/html/wordpress
cp wp-config-sample.php wp-config.php
vim wp-config.php
#把对应的数据库名称、用户名、用户密码改成和数据库中的设定一致#对wordpress目录递归赋权和改变所属
cd ..
chmod -R 777 wordpress
chown -R nginx.nginx wordpress
浏览器访问http://20.0.0.10/wordpress/index.php
相关文章:
LNMP搭建Discuz和Wordpress
1、LNMP L:linux操作系统 N:nginx展示前端页面web服务 M:mysql数据库,保存用户和密码,以及论坛相关的内容 P:php动态请求转发的中间件 数据库的作用: 登录时验证用户名和密码 创建用户和密码 发布和…...
java中的构造器
Java 中的构造器(也称为构造方法)是一种特殊的方法,用于初始化对象的状态。在创建 Java 类的实例时,构造器会被自动调用。 构造器的定义: 构造器的名称必须与类名完全相同。构造器没有返回值类型,甚至不包括…...
机器学习筑基篇,Ubuntu 24.04 快速安装 PyCharm IDE 工具,无需激活!
[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] Ubuntu 24.04 快速安装 PyCharm IDE 工具 描述:虽然在之前我们安装了VScode,但是其对于使用Python来写大型项目以及各类配置还是比较复杂的,所以这里我们还是推…...
从0开始基于transformer进行股价预测(pytorch版本)
目录 数据阶段两个问题开始利用我们的代码进行切分 backbone网络训练效果 感觉还行,没有调参数。源码比较长,如果需要我后续会发(因为太长了!!) 数据阶段 !!!注意&#…...
【多GPU训练方法】
一、数据并行 这是最常用的方法。整个模型复制到每个GPU上。训练数据被均匀分割,每个GPU处理一部分数据。所有GPU上的梯度被收集并求平均。通常使用NCCL(NVIDIA Collective Communications Library)等通信库实现。参数更新 使用同步后的梯度…...
2024年PMP考试备考经验分享
PMP是项目管理领域最重要的认证之一,本身是IT行业比较流行的证书,近几年在临床试验领域也渐渐流行起来,是我周围临床项PM几乎人手一个的证书。 考试时间:PMP认证考试形式为180道选择题,考试时间为3小时50分。 考试计划ÿ…...
MT3046 愤怒的象棚
思路: a[]存愤怒值;b[i]存以i结尾的,窗口里的最大值;c[i]存以i结尾的,窗口里面包含✳的最大值。 (✳为新大象的位置) 例:1 2 3 4 ✳ 5 6 7 8 9 则ans的计算公式b3b4c4c5c6b7b8b9…...
深入了解代理IP常见协议:区别与选择
代理服务器在网络使用中扮演着重要的角色,是您设备和互联网之间的中间层。它不仅可以增强网络访问的安全性和隐私保护,还可以提供许多灵活的应用。使用代理时,不同的协议类型对数据交换具有不同的规则和特征。常见的代理协议包括HTTP代理、HT…...
【Linux 线程】线程的基本概念、LWP的理解
文章目录 一、ps -L 指令🍎二、线程控制 一、ps -L 指令🍎 🐧 使用 ps -L 命令查看轻量级进程信息;🐧 pthread_self() 用于获取用户态线程的 tid,而并非轻量级进程ID;🐧 getpid() 用…...
Dify中的工具
Dify中的工具分为内置工具(硬编码)和第三方工具(OpenAPI Swagger/ChatGPT Plugin)。工具可被Workflow(工作流)和Agent使用,当然Workflow也可被发布为工具,这样Workflow(工…...
在Visutal Studio 2022中完成D3D12初始化
在Visutal Studio 2022中完成DirectX设备初始化 1 DirectX121.1 DirectX 简介1.2 DirectX SDK安装2 D3D12初始化2.1 创建Windwos桌面项目2.2 修改符合模式2.3 下载d3dx12.h文件2.4 创建一个异常类D3DException,定义抛出异常实例的宏ThrowIfFailed3 D3D12的初始化步骤3.1 初始化…...
MobaXterm工具
MobaXterm 是一个增强型的 Windows 终端。其为 Windows 桌面提供所有重要的远程网络终端工具(如 SSH、X11、RDP、VNC、FTP、SFTP、Telnet、Serial、Mosh、WSL 等),和 Unix 命令(如 bash、ls、cat、sed、grep、awk、rsync 等&#…...
二分图练习
对于二分图我们可以用染色法 #include<bits/stdc.h> using namespace std;#define int long long const int N 2e65; int e[N],ne[N],h[N],idx 0; int colo[N]; int num 0;void add(int x,int y){e[idx] y;ne[idx] h[x];h[x] idx; } void dfs(int nod,int c){colo…...
创新设计策略:提升大屏幕可视化设计效果的关键方法
随着科技的不断发展和数据量的快速增长,数据可视化大屏在各个行业中的应用越来越广泛,可以帮助人们更好地理解和分析数据,可视化大屏设计也因此成了众多企业的需求。但很多设计师对可视化大屏设计并不了解,也不知道如何制作可视化…...
论文 | Chain-of-Thought Prompting Elicits Reasoningin Large Language Models 思维链
这篇论文研究了如何通过生成一系列中间推理步骤(即思维链)来显著提高大型语言模型进行复杂推理的能力。论文展示了一种简单的方法,称为思维链提示,通过在提示中提供几个思维链示例来自然地激发这种推理能力。 主要发现࿱…...
[机器学习]-人工智能对程序员的深远影响——案例分析
机器学习和人工智能对未来程序员的深远影响 目录 机器学习和人工智能对未来程序员的深远影响1. **自动化编码任务**1.1 代码生成1.2 自动调试1.3 测试自动化 2. **提升开发效率**2.1 智能建议2.2 项目管理 3. **改变编程范式**3.1 数据驱动开发 4. **职业发展的新机遇**4.1 AI工…...
AI学习环境 没有更好的替代 - (Google)Drive + Colab
在开始正题前,请容许我做一番回顾,并夹带一点点私货(谷歌扛旗的开源精神还没有死,并且会是未来的举足轻重的力量) 卧龙凤雏,一时瑜亮。一切的缘起应该是世纪初的门户网站乱战。 彼时,谷歌是从…...
【观成科技】Websocket协议代理隧道加密流量分析与检测
Websocket协议代理隧道加密流量简介 攻防场景下,Websocket协议常被用于代理隧道的搭建,攻击者企图通过Websocket协议来绕过网络限制,搭建一个低延迟、双向实时数据传输的隧道。当前,主流的支持Websocket通信代理的工具有…...
DangerWind-RPC-framework---三、服务端下机
当一台机器下线时,面临很多问题:如何将其从注册中心下线?如何清理释放资源?客户端拉取服务列表时也使用了本地缓存,如何及时更新本地缓存? 服务端机器的优雅下线需要使用ShutdownHook,这相当于添…...
基于Make的c工程No compilation commands found报错
由于安装gcc时只安装了build-essential,没有将其添加到环境变量中,因此打开Make工程时,CLion会产生如下错误: 要解决这个问题,一个方法是将GCC添加到环境变量中,但是这个方法需要修改至少两个配置文件&…...
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...
江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
基于TurtleBot3在Gazebo地图实现机器人远程控制
1. TurtleBot3环境配置 # 下载TurtleBot3核心包 mkdir -p ~/catkin_ws/src cd ~/catkin_ws/src git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3.git git clone -b noetic https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git git clone -b noetic-dev…...
脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
Python 高效图像帧提取与视频编码:实战指南
Python 高效图像帧提取与视频编码:实战指南 在音视频处理领域,图像帧提取与视频编码是基础但极具挑战性的任务。Python 结合强大的第三方库(如 OpenCV、FFmpeg、PyAV),可以高效处理视频流,实现快速帧提取、压缩编码等关键功能。本文将深入介绍如何优化这些流程,提高处理…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
实战设计模式之模板方法模式
概述 模板方法模式定义了一个操作中的算法骨架,并将某些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的前提下,重新定义算法中的某些步骤。简单来说,就是在一个方法中定义了要执行的步骤顺序或算法框架,但允许子类…...
