LNMP搭建

LNMP

LNMP是目前成熟的企业网站的应用模式之一,指的是一套协同工作的系统和相关软件,能够提供静态页面服务,也可以提供动态Web服务。

LNMP四个字母分别代表的意思:

L:Linux系统,操作系统

N:Nginx网站服务,前端,提供前端的静态页面服务,同时具有代理,转发的作用。转发后端请求到PHP;Nginx没有处理动态资源的功能,他有可以支持转发动态请求的模块。

M:Mysql 关系型数据库,保存用户的账号和密码

P:PHP 动态页面的编程语言,负责解释动态网页文件,和Nginx以及数据库协同工作;PHP的主要作用就是Web开发,前端开发。

数据流向

客户端 —— Nginx —— PHP —— Mysql

Nginx、PHP、Mysql都是在Linux当中,客户端用get方式请求Nginx服务
而Nginx只能查看静态页面

当需要用户登录输入账户密码时(有交互操作时为动态页面)通过Nginx支持PHP转发模块到PHP发起后端动态请求

PHP到Mysql:Socket端口和数据库建立通信,post数据传输给Mysql,Mysql查询数据库,匹配账号和密码

而此服务需要用到编译安装
 

编译安装

就是用二进制包,进行安装;而yum安装只是安装了基础的服务模块,其他的模块要想使用,用户要手动重新添加。

编译安装可以自由的指定需要的模块,企业中 Nginx Mysql 都是编译安装。

编译安装特点:

具有较大的自由度,功能可定制

可及时获得最新的软件版本

普遍适用于大多数Linux版本,便于一直使用

搭建LNMP与论坛实验

【安装Nginx服务】

1. 关闭防火墙、安全机制

systemctl stop firewalld        setenforce 0

2. 安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3. 创建程序用户

useradd -M -s /sbin/nologin nginx

4. 解压Nginx压缩包

tar-xf nginx-1.22.0.tar.gz

5. 编译安装

./configure \                                      安装                    
--prefix=/usr/local/nginx \                  指定安装包路径
--user=nginx \                                   指定哪个用户可以打开nginx
--group=nginx \                                 指定所在的组为nginx
--with-http_stub_status_module       可以支持查看http请求状态的模块

make -j 4 && make install                指定4个CPU编译安装,为的是速度快

6. 优化路径

/usr/local/nginx/                                                       安装nginx程序的位置

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/       优化路径,创建一个软连接

7. 添加 Nginx 系统服务

vim /lib/systemd/system/nginx.service

[Unit]
Description=nginx
描述信息
After=network.target
服务单元的依赖条件,服务需要在网络加载后才可启动

这个部分定义了服务单元的元数据。
Description: 描述该服务单元的信息,描述为"nginx"。
After: 定义服务单元所依赖的其他单元,这里表示服务需要在网络加载完成之后启动。


[Service]
Type=forking
指定服务的类型,这里指后台程序
PIDFile=/usr/local/nginx/logs/nginx.pid
指定保存主进程IP的文件路径 
ExecStart=/usr/local/nginx/sbin/nginx
指定启动服务的命令
ExecReload=/bin/kill -s HUP $MAINPID
HUP重载,相当于reload或重启;kill传递信号给内核重启
ExecStop=/bin/kill -s QUIT $MAINPID
指定停止服务的命令;QUIT表示停止服务
PrivateTmp=true
为niginx服务创建 一个独立的临时目录

这个部分定义了服务的运行配置。


[Install]
WantedBy=multi-user.target
指定服务所属的目标(target),多用户模式下运行

这个部分定义了服务的安装配置。

8. 赋权限

chmod 777 /lib/systemd/system/nginx.service

注:nginx -t 看语法和配置文件是否有问题

9. 重启服务 验证

systemctl restart nginx.service

【安装 Mysql 服务】

1. 安装Mysql环境依赖包

yum -y install \
ncurses \
ncurses-devel \
bison \
cmake

2. 创建程序用户

useradd -M -s /sbin/nologin  mysql

3. 解压缩

tar-xf mysql-boost-5.7.20.tar.gz

 

注:free -h 可查看内存空间是否足够

echo 1 > /proc/sys/vm/drop_caches  这个命令可以用来清理内存

4. 编译安装

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1

1

make -j 4 && make install

编译并安装

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
#指定mysql的安装路径
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
#指定mysql进程监听套接字文件(数据库连接文件)的存储路径
-DSYSCONFDIR=/etc \
#指定配置文件的存储路径
-DSYSTEMD_PID_DIR=/usr/local/mysql \
#指定进程文件的存储路径

-DDEFAULT_CHARSET=utf8  \
#指定默认使用的字符集编码,如utf8
-DDEFAULT_COLLATION=utf8_general_ci \
#指定默认使用的字符集校对规则
这两条不重要

-DWITH_INNOBASE_STORAGE_ENGINE=1 \
#安装INNOBASE存储引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
#安装ARCHIVE存储引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#安装BLACKHOLE存储引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
#安装FEDERATED存储引擎
-DMYSQL_DATADIR=/usr/local/mysql/data \
#指定数据库文件的存储路径 
-DWITH_BOOST=boost \
#指定boost的路径,
-DWITH_SYSTEMD=1
#生成便于systemctl管理的文件

5. 修改Mysql 配置文件

vim /etc/my.cnf


[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,

NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,

NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,

ANSI_QUOTES

[client]
port: 客户端连接MySQL服务器使用的端口号,默认为3306。
socket: 客户端连接MySQL服务器使用的Unix socket文件路径,默认为/tmp/mysql.sock。

[mysqld]
user: MySQL服务器运行时的用户名,一般设置为mysql。
basedir: MySQL安装目录的路径。
datadir: 存放MySQL数据文件的路径。
port: MySQL服务器监听的端口。
character-set-server: MySQL服务器使用的默认字符集,这里设置为UTF-8编码(utf8)。
pid-file: 保存MySQL服务器进程ID的文件路径,默认为/var/run/mysqld/mysqld.pid。
socket: MySQL服务器监听的Unix socket文件路径,默认为/tmp/mysql.sock。
bind-address: MySQL服务器绑定的IP地址,默认为127.0.0.1,这里设置为0.0.0.0表示允许任何IP地址访问MySQL服务器。
skip-name-resolve: 禁用DNS反向解析,提高性能
max_connections: MySQL服务器支持的最大并发连接数,默认为151。
default-storage-engine: 设置默认的存储引擎为InnoDB。
max_allowed_packet: 设置MySQL服务器接收的最大数据包大小,默认为4MB。
server-id: 设置MySQL服务器的唯一ID。

模块组件

NO_ENGINE_SUBSTITUTION
如果需要的存储引擎被禁用或未编译,那么抛出错误。不设置此值时,用默认的存储引擎替代,并抛出一个异常
STRICT_TRANS_TABLES
在该模式下,如果一个值不能插入到一个事务表中,则中断当前的操作,对非事务表不做限制
NO_AUTO_CREATE_USER
禁止:GRANT创建密码为空的用户
NO_AUTO_VALUE_ON_ZERO
mysql中的自增长列可以从o开始。默认情况下自增长列是从1开始的,如果你插入值为0的数据会报错
NO_ZERO_IN_DATE
mysql数据库不允许插入零日期,插入零日期会抛出错误而不是警告
ERROR_FOR_DIVISION_BY_ZERO
在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。默认情况下数据被零除时MysQL返回NULL
IPES_AS_CONCAT
将"||"视为字符串的连接操作符而非或运算符,这和oracle数据库是一样的,
ANSI QUOTES
启用ANSI QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符

6. 更改mysql安装目录、配置文件的属主属组

chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf

7. 设置路径环境变量

echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile  

将mysql的环境变量写到系统配置文件实现全局配置对所有终端都生效,让系统来进行识别 
source /etc/profile 

刷新并立即生效

8. 初始化数据库

cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \

初始化
--user=mysql \

指定用户
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

把mysql目录和mysql数据存储文件都进行初始化

9. 添加mysqld系统服务

cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service  /usr/lib/systemd/system/

将mysqld.servicef文件复制到system目录下
systemctl daemon-reload

重新加载配置
systemctl restart mysqld.service

重启服务

10. 修改密码并授权远程登录

mysqladmin -u root -p password "123456"

修改mysql 的登录密码

mysql -u root -p

授权远程登录

注:如无法登录,用户被拒绝访问如下

vim /etc/my.cnf     在此配置文件里添加

skip-grant-tables  可进行免密登录

登陆后再重新设置密码

 再进入刚才的配置文件将免密登录的配置删除,即可使用密码登录!

11. 赋权限

grant all privileges on *.* to 'root'@'%' identified by '123456';      
#授予root用户可以在所有终端远程登录,使用的密码是123456,并对所有数据库和所有表有操作权限

flush privileges;

刷新权限

GRANT: 这是授权语句的关键字,用于授予特定的权限给指定用户。

ALL PRIVILEGES: 表示授予所有权限,包括SELECT、INSERT、UPDATE、DELETE、CREATE、DROP等。

*.*: 这是指定数据库和表的位置,其中*表示所有数据库,第一个*表示所有表。
因此,这个语句授予'root'用户在所有数据库的所有表上的所有权限。

'root'@'%': 这是授予权限的用户和主机的标识。'root'是用户名,'%'表示任何主机。
所以,'root'用户可以从任何主机连接并拥有授予的权限。

IDENTIFIED BY '123456': 这是设置用户'root'的密码为'123456',这样用户在连接时需要提供相应的密码。

【安装配置 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

2. 解压缩

tar jxvf php-7.1.10.tar.bz2

3. 编译安装

./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-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip

make -j 4 && make install

编译并安装

--prefix=/usr/local/php: 指定PHP的安装目录为/usr/local/php。
--with-mysql-sock=/usr/local/mysql/mysql.sock: 指定MySQL的Unix socket文件路径,用于与MySQL数据库建立连接。
--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文件进行操作。

4. 路径优化

ln -s /usr/local/php/bin/* /usr/local/bin/
ln -s /usr/local/php/sbin/* /usr/local/sbin/

5. 调整PHP配置文件 

其中php有三个配置文件: 
php.ini                  主配置文件  
php-fpm.conf        进程服务配置文件 
www.conf             扩展配置文件

主配置文件:php.ini

cp /opt/php-7.1.10/php.ini-development  /usr/local/php/lib/php.ini    

复制改名 做个备份
vim /usr/local/php/lib/php.ini


--1170行--修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
--939行--取消注释,修改
date.timezone = Asia/Shanghai

php -m                     #验证安装的模块

调整进程服务配置文件:php-fpm.conf
cd /usr/local/php/etc/
cp  php-fpm.conf.default php-fpm.conf
vim php-fpm.conf


--17行--去掉";"注释
pid = run/php-fpm.pid

调整扩展配置文件:www.conf 
cd /usr/local/php/etc/php-fpm.d/
cp www.conf.default  www.conf

6. 启动php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/lib/php.ini

启动
netstat -anpt | grep 9000

查看状态 php默认端口号为:9000

做备份 重启服务

cd /opt/php-7.1.10/sapi/fpm
cp php-fpm.service /usr/lib/systemd/system/php-fpm.service
systemctl restart php-fpm.service

7. 配置 Nginx 支持 PHP 解析

    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;    

#将 /scripts 修改为nginx的工作目录
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;  

#$document_root 代表当前请求在root指令中指定的值
    include        fastcgi_params;
}

检测配置文件是否正确

systemctl restart nginx.service

重启服务

8. 验证数据库工作是否正常

mysql -u root -p


CREATE DATABASE bbs;

创建一个数据库,名字叫bbs
GRANT all ON bbs.* TO 'bbsuser'@'%' IDENTIFIED BY 'admin123';

开始赋权,只要用户名叫bbsuser给他所有的权限,登录密码为admin123

GRANT all ON bbs.* TO 'bbsuser'@'localhost' IDENTIFIED BY 'admin123';

本地用户登录也需要输入密码admin123
flush privileges;

权限刷新

改配置文件 测试php服务和数据库之间的通信

vim /usr/local/nginx/html/index.php        
<?php
$link=mysqli_connect('192.168.154.10','bbsuser','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
?>

使用mysqli_connect()函数连接到MySQL数据库服务器。

'192.168.233.10':表示MySQL服务器的IP地址。
'bbsuser':表示要连接的MySQL用户。
'admin123':表示MySQL用户的密码。
判断连接状态:

如果连接成功,即$link不为空,就输出<h1>Success!!</h1>,显示"Success!!"这个标题。
如果连接失败,即$link为空,就输出Fail!!,显示"Fail!!"这个信息。

该脚本的目的是测试连接到MySQL数据库服务器的状态。如果连接成功,
将显示"Success!!",如果连接失败,将显示"Fail!!"
 


【部署 Discuz!社区论坛 Web 应用】

1. 部署论坛

unzip Discuz_X3.4_SC_UTF8.zip  -d /opt/dis
cd /opt/dis/dir_SC_UTF8/
cp -r upload/ /usr/local/nginx/html/bbs/

把整个目录复制到页面配置页面下面nginx/html

起个名字 bbs

2. 调整论坛目录的权限

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/

3. 访问论坛页面

  

 

 

结束

论坛部署完成!!! 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins gitlab多分支构建发布

内容背景介绍 这个是新手教程,普及概念为主 公司现在还使用单分支发布测试环境和生产,多人协同开发同一个项目导致测试环境占用等待等情况 测试环境占用等待问题 测试环境代码直接合并到 master,容易导致误发布到生产的情况 避免多版本同时发布测试不完善的情况出现 中间件…

17. Spring 事务

目录 1. 事务定义 2. MySQL 中的事务使用 3. 没有事务时的插入 4. Spring 编程式事务 5. Spring 声明式事务 5.1 Transactional 作用范围 5.2 Transactional 参数说明 5.3 Transactional 工作原理 1. 事务定义 将⼀组操作封装成一个执行单元&#xff08;封装到一起…

Java基础面试题1

Java基础面试题 一、面向对象和集合专题 1. 面向对象和面向过程的区别 面向过程&#xff1a;是分析解决问题的步骤&#xff0c;然后用函数把这些步骤一步一步地实现&#xff0c;然后在使用的时候一一调用则可。性能较高&#xff0c;所以单片机、嵌入式开发等一般采用面向过程…

【C++】开源:matplotlib-cpp静态图表库配置与使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍matplotlib-cpp图表库配置与使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&…

AI 绘画Stable Diffusion 研究(五)sd文生图功能详解(下)

大家好&#xff0c;我是风雨无阻。 上一篇文章详细介绍了sd文生图的功能及使用注意事项&#xff0c;感兴趣的朋友可以前往查看&#xff1a;AI 绘画Stable Diffusion 研究&#xff08;四&#xff09;sd文生图功能详解&#xff08;上&#xff09; 。 那今天这篇文章&#xff0c;我…

一文学透设计模式

设计模式是什么&#xff1f; 设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案&#xff0c;代表了解决一些问题的最佳实践。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 说白了&#xff0c;设计模式对于软件开发人员来说就…

VSCode和QT联合开发

提示&#xff1a;本文为学习记录&#xff0c;若有错误&#xff0c;请联系作者&#xff0c;谦虚受教。 文章目录 前言一、VSCODE下载二、使用步骤1.下载扩展 二、新建工程1.新建文件夹2.新建工程3.UI界面文件操作4.效果 总结 前言 一、VSCODE下载 下载地址 二、使用步骤 1.下…

【Web开发指南】如何用MyEclipse进行JavaScript开发?

由于MyEclipse中有高级语法高亮显示、智能内容辅助和准确验证等特性&#xff0c;进行JavaScript编码不再是一项繁琐的任务。 MyEclipse v2023.1.2离线版下载 JavaScript项目 在MyEclipse 2021及以后的版本中&#xff0c;大多数JavaScript支持都是开箱即用的JavaScript源代码…

瑞吉外卖实战-笔记

软件开发的流程 角色分工 软件环境 开发环境的搭建 数据库环境 maven环境 1.创建完成后&#xff0c;需要检查一下编码、maven仓库、jdk等 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</a…

牛客网Verilog刷题——VL42

牛客网Verilog刷题——VL42 题目答案 题目 请设计一个可以实现任意小数分频的时钟分频器&#xff0c;比如说8.7分频的时钟信号&#xff0c;注意rst为低电平复位。提示&#xff1a;其实本质上是一个简单的数学问题&#xff0c;即如何使用最小公倍数得到时钟周期的分别频比。设小…

Redis系列二:Clion+MAC+Redis环境搭建

1. ClionMACRedis-3.0-annotated环境搭建 参考&#xff1a; https://github.com/huangz1990/redis-3.0-annotated https://gitee.com/dumpcao/redis-3.0-annotated-cmake-in-clion https://tool.4xseo.com/a/12910.html 1.1 下载并导入Clion git clone https://gitee.com/dum…

链表的总体涵盖以及无哨兵位单链表实现——【数据结构】

&#x1f60a;W…Y&#xff1a;个人主页 在学习之前看一下美丽的夕阳&#xff0c;也是很不错的。 如果觉得博主的美景不错&#xff0c;博客也不错的话&#xff0c;关注一下博主吧&#x1f495; 在上一期中&#xff0c;我们说完了顺序表&#xff0c;并且提出顺序表中的问题 1. 中…

腾讯云TencentOS Server镜像系统常见问题解答

腾讯云TencentOS Server镜像是腾讯云推出的Linux操作系统&#xff0c;完全兼容CentOS生态和操作方式&#xff0c;TencentOS Server操作系统为云上运行的应用程序提供稳定、安全和高性能的执行环境&#xff0c;TencentOS可以运行在腾讯云CVM全规格实例上&#xff0c;包括黑石物理…

[golang gin框架] 40.Gin商城项目-微服务实战之Captcha验证码微服务

本次内容需要 gin框架基础知识, golang微服务基础知识才能更好理解 一.Captcha验证码功能引入 在前面,讲解了微服务的架构等,这里,来讲解前面商城项目的 Captcha验证码 微服务 ,captcha验证码功能在前台,后端 都要用到 ,可以把它 抽离出来 ,做成微服务功能 编辑 这个验证码功能…

echars力引导关系图

效果图 力引导关系图 力引导布局是模拟弹簧电荷模型在每两个节点之间添加一个斥力&#xff0c;每条边的两个节点之间添加一个引力&#xff0c;每次迭代节点会在各个斥力和引力的作用下移动位置&#xff0c;多次迭代后节点会静止在一个受力平衡的位置&#xff0c;达到整个模型…

IO进程线程day6(2023.8.3)

一、Xmind整理&#xff1a; 进程与线程关系&#xff1a; 二、课上练习&#xff1a; 练习1&#xff1a;pthread_create 功能&#xff1a;创建一个线程 原型&#xff1a; #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, vo…

分布式框架dubbo

1.分布式系统相关概念 1.1基本概念 1.2 集群和分布式 1.3 架构演进 A是一个微服务。ADB是一个组件。A可以java&#xff0c;B可以python实现。 2 dubbo 2.1 概述 2.2 dubbo代码 2.2.1 服务提供者的改造-将项目service层对外发布到dubbo 通过dubbo中的service注解&#xff…

2023年华数杯选题人数发布!!

该选题人数&#xff0c;主要基于根据各个平台开赛后12小时各项数据统计&#xff0c;进行评估&#xff08;方法见注释&#xff09;&#xff0c;最终得出2023年华数杯选选题人数&#xff0c;大致为 题号选题人数A120B159C420 注释&#xff1a;选题人数来源&#xff1a;源自各个平…

数据可视化(六)多个子图及seaborn使用

1.多个子图绘制 #绘制多个子图 #subplot&#xff08;*args&#xff0c;**kwargs&#xff09; 每个subplot函数只能绘制一个子图 #subplots&#xff08;nrows&#xff0c;ncols&#xff09; #fig_add_subplot(行&#xff0c;列&#xff0c;区域) #绘制子图第一种方式 plt.subp…

【火炬之光-召唤装备】

头部胸甲手套鞋子武器盾牌项链戒指腰带神格备注*邪龙头冠无限要塞/血抗血抗血抗***终焉复临任意攻速单手武器/黑峡烬盾1召唤等级血抗*原点的寒冬1召唤等级1.刷钢铁炼境监视者-无垢之墙升级。2.不能用典狱官的胸针参考视频机械领主无限要塞––***终焉复临––求生之欲––参考视…