当前位置: 首页 > news >正文

运维学习Day21——LAMP/LNMP 最佳实践

LAMP/LNMP 最佳实践

LAMP/LNMP 组件

LAMPLinux+Apache+Mysql/Mariadb+PHP/Python/Perl。

LNMPLinux+Nginx+Mysql/Mariadb+PHP/Python/Perl。

  • Linux:操作系统,提供程序运行基础。
  • Apache/Nginx:Web 服务器,提供网页访问。
  • Mysql/Mariadb:数据库,提供数据管理。
  • PHP/Python/Perl:脚本语言,提供动态执行生成。

PHP FastCGI 进程管理器,是PHP的一个扩展模块,用于管理PHP 进程池的软件,用于接受web服务器的请求。PHP-FPM 全名 PHP FastCGI Process Manager,作为FastCGI进程管理器,与Web服务器(例如Nginx、Apache等)配合使用。

PHP-FPM的主要功能是管理和调度PHP脚本的执行。它通过创建和管理PHP进程池来处理PHP请求。每个PHP进程池中运行多个PHP-FPM进程,每个进程可以处理一个或多个PHP请求。PHP-FPM会根据配置的参数来管理这些进程的数量、生命周期和资源分配。

PHP-FPM提供了一些高级功能,例如进程池的动态调整、请求限制和超时控制、进程重生、日志记录等。它还支持基于Unix域套接字或TCP/IP套接字的进程间通信,以及基于文件和共享内存的进程管理。

LAMP/LNMP 工作原理

在这里插入图片描述

  1. 客户端通过HTTP协议请求web服务器资源

  2. web 服务器根据资源类型进行处理:

    • 静态资源:web直接把资源返回至客户端。

    • 动态资源:通过指定的通讯方式将脚本网页交给后端程序执行。如果运算期间需要连接mysql数据库,则通过mysql连接器连接mysql。后端程序将运算结果返回给web服务。

  3. web服务将结果返回给客户端。

PHP 与 WEB 协同工作模式

PHP 与 WEB 协同工作模式:

  1. CGI:Web 进程动态调用相应脚本解释器执行动态页面 ,执行完后再释放。特点:性能差。
  2. Modules:Web 进程动态加载相应模块执行动态页面 。特点:性能较好。
  3. FastCGI:后端进程独立运行管理,通过独立的网络套接字接口接收Web进程传过来的请求。特点:真正地实现前后端分离。适合于性能要求比较高的场景。Web 服务器需要开启反向代理功能,将请求转发到后端服务器。

ALL-IN-ONE

以部署 wordpress 应用为例。

实验环境
主机名IP 地址角色
blog.laoma.cloud10.1.8.20all

以部署 wordpress 应用为例。

部署 Mysql 服务

部署软件

[root@blog ~]# yum install -y mysql-server
[root@blog ~]# systemctl enable mysqld --now

准备数据库

[root@blog ~]# mysql
mysql> CREATE DATABASE wordpress;
mysql> CREATE USER wp@'%' identified by 'Laoma@123';
mysql> GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'%';
mysql> FLUSH PRIVILEGES;
mysql> exit
部署 Web 服务

不同类型 Web 服务器只需要部署一个。

部署 Apache
[root@blog ~]# yum install -y httpd
[root@blog ~]# echo 'ServerName blog.zzh	.cloud:80' >> /etc/httpd/conf/httpd.conf
[root@blog ~]# echo 'Hello World !' > /var/www/html/index.html
[root@blog ~]# systemctl enable httpd --now
部署 Nginx
[root@blog ~]# yum install -y nginx
[root@blog ~]# echo 'Hello World !' > /usr/share/nginx/html/index.html
[root@blog ~]# systemctl enable nginx --now
部署 PHP 服务
部署 php 服务
[root@blog ~]# yum install -y php php-fpm php-mysqlnd
[root@blog ~]# systemctl enable php-fpm.service --now
[root@blog ~]# systemctl restart httpd
准备 php 测试文件
# 准备 index.php
[root@blog ~ 14:26:52]# cat > index.php <<EOF
<?phpecho "<h1>Hello World !</h1>\n";
?>
EOF# 准备 test-mysql.php
[root@blog ~ 14:27:32]# cat > test-mysql.php <<'EOF'
<?php$link=mysqli_connect('10.1.8.10','wordpress','123');if($link)echo "<h1>Connect Mysql Success !</h1>\n";elseecho "<h1>Connect Mysql Failed !</h1>\n";$link->close();
?>
EOF# 准备 info.php
[root@server ~ 14:28:59]# cat > info.php <<EOF
<?phpphpinfo()
?>
EOF# Apache 服务器
[root@blog ~]# cp *.php /var/www/html# Nginx 服务器
[root@blog ~]# cp *.php /usr/share/nginx/html
php 程序测试
[root@blog ~]# php -f index.php
<h1>Hello World !</h1>[root@blog ~]# php -f test-mysql.php
<h1>Connect Mysql Success !</h1>
浏览器测试

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

部署 wordpress 应用

下载wordpress,上传到家目录。

# 如果 Web 服务是 Apache,则解压文件到/var/www/html/
[root@blog ~]# unzip -o wordpress-4.9.4-zh_CN.zip -d /var/www/html
[root@blog ~]# chown -R apache:apache /var/www/html/wordpress/# 如果 Web 服务是 Nginx,则解压文件到/usr/share/nginx/html
[root@blog ~]# unzip -o wordpress-4.9.4-zh_CN.zip -d /usr/share/nginx/html
[root@blog ~]# chown -R nginx:nginx /usr/share/nginx/html/wordpress# php-fpm 进程默认以 apache 用户身份运行,修改运行用户为 nginx,并重启服务
[root@blog ~]# vim /etc/php-fpm.d/www.conf
user=nginx
group=nginx
[root@blog ~]# systemctl restart php-fpm

客户端配置 blog.laoma.cloud 名称解析。访问http://blog.laoma.cloud/wordpress/。

在这里插入图片描述

在这里插入图片描述

如果是nginx服务,则单击提交后,会出现如下提示:

在这里插入图片描述

根据提示创建文件,然后单击现在安装

在这里插入图片描述

后续步骤省略。

分析 Web 对接 PHP 配置
PHP 配置
[root@blog ~]# systemctl is-active php-fpm.service
active[root@blog ~]# ss -lnp|grep php-fpm
u_str LISTEN 0      511                 /run/php-fpm/www.sock 38251                  * 0     users:((php-fpm",pid=5465,fd=8),("php-fpm",pid=5461,fd=8),("php-fpm",pid=5460,fd=8),("php-fpm",pid=5459,fd=8),("php-fpm",pid=5458,fd=8),("php-fpm",pid=5457,fd=8),("php-fpm",pid=5456,fd=6))
Apache 对接 PHP 配置

Apache 服务器与PHP协同工作,需要启用代理模块和fcgi模块。

配置文件 /etc/httpd/conf.modules.d/00-proxy.conf 默认已经启用了代理模块和fcgi模块。

[root@www ~]# cat /etc/httpd/conf.modules.d/00-proxy.conf | \
> egrep -n 'mod_proxy(_fcgi)?.so'
2:LoadModule proxy_module modules/mod_proxy.so
11:LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

Apache 默认通过 unix:/run/php-fpm/www.sock 对接 PHP 。

[root@blog ~]# egrep -v '^ *#|^$' /etc/httpd/conf.d/php.conf
<Files ".user.ini">Require all denied
</Files>
AddType text/html .php
DirectoryIndex index.php
<IfModule !mod_php5.c><IfModule !mod_php7.c>SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1<FilesMatch \.(php|phar)$>SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"</FilesMatch></IfModule>
</IfModule>
<IfModule  mod_php7.c><FilesMatch \.(php|phar)$>SetHandler application/x-httpd-php</FilesMatch>php_value session.save_handler "files"php_value session.save_path    "/var/lib/php/session"php_value soap.wsdl_cache_dir  "/var/lib/php/wsdlcache"
</IfModule>
Nginx 对接 PHP 配置

/etc/nginx/default.d/php.conf

[root@blog ~]# egrep -v '^ *#|^$' /etc/nginx/default.d/php.conf
index index.php index.html index.htm;
location ~ \.(php|phar)(/.*)?$ {fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;fastcgi_intercept_errors on;fastcgi_index  index.php;include        fastcgi_params;# 到虚拟主机主目录下查找对应php文件fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;fastcgi_param  PATH_INFO $fastcgi_path_info;# 转发到后端 php-fpmfastcgi_pass   php-fpm;
}

/etc/nginx/conf.d/php-fpm.conf

[root@blog ~]# cat /etc/nginx/conf.d/php-fpm.conf
# PHP-FPM FastCGI server
# network or unix domain socket configurationupstream php-fpm {server unix:/run/php-fpm/www.sock;
}

Standalone

以部署 wordpress 应用为例。

实验环境
主机名IP 地址角色
www.zzh.cloud10.1.8.21apache
php.zzh.cloud10.1.8.22php
db.zzh.cloud10.1.8.23mariadb
storage.zzh.cloud10.1.8.24nfs

nfs 服务器提供共享存储 web 应用文件。

部署 STORAGE 服务器

由于静态文件和动态文件没有分开,所以 Web 服务器和 PHP 服务器都要存一份。实验环境通过NFS共享提供wordpress应用。

下载 wordpress,上传到家目录。

[root@storage ~ 16:26:08]# yum install -y nfs-utils[root@nfs ~]# mkdir -m 777 /www
[root@nfs ~]# echo '/www 10.1.8.0/24(rw)' > /etc/exports
[root@nfs ~]# systemctl enable nfs-server.service --now# 准备 wordpress资源
[root@nfs ~]# unzip -o wordpress-4.9.4-zh_CN.zip -d /www/# 准备网页测试文件
[root@storage ~ 16:30:34]# echo 'Hello World !' > /www/index.html
[root@storage ~ 16:31:04]# cat > /www/index.php <<EOF
<?php
echo "<h1>Hello World !</h1>\n";
?>
EOF[root@storage ~ 16:36:38]# cat > /www/test-mysql.php <<'EOF'
<?php
$link=mysqli_connect('db.zzh.cloud','wordpress','123');
if($link)
echo "<h1>Connect Mysql Success !</h1>\n";
else
echo "<h1>Connect Mysql Failed !</h1>\n";
$link->close();
?>
EOF[root@storage ~ 16:36:50]# cat > /www/info.php <<EOF
<?php
phpinfo();
?>
EOF
部署 Mysql 服务器
[root@db ~ 16:39:17]# yum install -y mariadb-server
[root@db ~ 16:39:46]# systemctl enable mariadb --now
[root@db ~ 16:39:54]# mysql_secure_installation# 准备wordpress数据库和用户
[root@db ~ 16:40:10]# mysql -uroot -p123
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 10
Server version: 5.5.68-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> CREATE USER 'wordpress'@'%' identified by '123';
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpress'@'%';
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> exit
Bye
部署 Web 服务器

不同类型 Web 服务器只需要部署一个。

部署 Apache 服务
# 部署 Apache 服务
[root@www ~ 16:43:19]# yum install -y httpd
[root@www ~ 16:43:42]# echo 'ServerName www.zzh.cloud:80' >> /etc/httpd/conf/httpd.conf
[root@www ~ 16:43:59]# systemctl enable httpd --now# 安装 nfs 工具
[root@www ~ 16:44:03]# yum install -y nfs-utils# 挂载存储
[root@www ~ 16:59:34]# echo 'storage.zzh.cloud:/www /var/www/html nfs defaults 0 0' >> /etc/fstab
[root@www ~ 17:00:00]# vim /etc/fstab
[root@www ~ 17:00:27]# systemctl daemon-reload 
[root@www ~ 17:00:34]# mount /var/www/html/
[root@www ~ 17:20:42]# df -h /var/www/html/
文件系统                容量  已用  可用 已用% 挂载点
storage.zzh.cloud:/www   50G  4.6G   46G   10% /var/www/html
[root@www ~ 17:00:43]# ls /var/www/html/
index.html  index.php  info.php  test-mysql.php  wordpress
部署 Nginx 服务
# 部署 Nginx 服务
[root@www ~ 17:00:47]# yum install -y nginx
[root@www ~ 17:01:28]# systemctl enable nginx --now# 安装 nfs 工具(上述已完成)
[root@www ~]# yum install -y nfs-utils# 挂载存储
[root@www ~ 17:13:09]# echo 'storage.zzh.cloud:/www /usr/share/nginx/html nfs defaults 0 0' >> /etc/fstab 
[root@www ~ 17:13:32]# systemctl daemon-reload 
[root@www ~ 17:13:37]# mount /usr/share/nginx/html/
[root@www ~]# df -h/usr/share/nginx/html/
Filesystem            Size  Used Avail Use% Mounted on
nfs.laoma.cloud:/www   64G  3.2G   61G   5% /usr/share/nginx/html
[root@www ~ 17:13:49]# ls /usr/share/nginx/html/
index.html  index.php  info.php  test-mysql.php  wordpress
部署 PHP 服务器
部署 php 服务
[root@php ~ 16:46:25]# yum install -y php php-fpm php-mysqlnd
[root@php ~]# vim /etc/php-fpm.d/www.conf
#使用;号注释掉原有listen行
;listen = /run/php-fpm/www.sock
# 新增listen 监听所有ip的9000端口
listen = 9000
# 支持监听特定ip的9000端口,格式10.1.8.22:9000# 使用;号注释掉原有 listen.allowed_clients 行
# 允许所有客户端访问
;listen.allowed_clients = 127.0.0.1[root@php ~]# systemctl enable php-fpm.service --now

挂载存储

# 安装 nfs 工具(上述已完成)
[root@php ~ 16:54:47]# yum install -y nfs-utils# 挂载存储
[root@php ~ 16:54:58]# echo 'storage.zzh.cloud:/www /www nfs defaults 0 0' >> /etc/fstab 
[root@php ~ 16:55:05]# mkdir /www
[root@php ~ 16:55:10]# mount /www
[root@php ~ 16:56:38]# df -h /www
文件系统                容量  已用  可用 已用% 挂载点
storage.zzh.cloud:/www   50G  4.6G   46G   10% /www\
[root@php ~ 16:58:19]# ls /www
index.html  index.php  info.php  test-mysql.php  wordpress
php 程序测试
[root@www ~]# php -f index.php
<h1>Hello World !</h1>[root@www ~]# php -f test-mysql.php
<h1>Connect Mysql Success !</h1># 执行 info.php 的输出内容太多,这里省略。
配置 Web 对接 PHP
Nginx 对接 PHP
[root@www ~ 17:13:59]# cat > /etc/nginx/conf.d/vhost-www.conf <<‘EOF’
server {listen 80;server_name www.zzh.cloud;# 静态资源处理location / {root /usr/share/nginx/html;index index.html index.htm index.php;}# PHP 请求处理location ~ \.php$ {# 配置 PHP-FPM 监听的地址和端口fastcgi_pass php.zzh.cloud:9000;fastcgi_index index.php;# 配置 php 服务器上 wordpress 应用所在位置fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name;include fastcgi_params;}
}
EOF
# 重启服务
[root@www ~ 17:20:17]# systemctl restart nginx
测试应用

客户端配置 www.laoma.cloud 名称解析。访问http://www.zzh.cloud/wordpress/。

根据提示:在存储节点创建配置文件。

[root@nfs ~]# vim /www/wordpress/wp-config.php
<?php
/*** WordPress基础配置文件。** 这个文件被安装程序用于自动生成wp-config.php配置文件,* 您可以不使用网站,您需要手动复制这个文件,* 并重命名为“wp-config.php”,然后填入相关信息。** 本文件包含以下配置选项:** * MySQL设置* * 密钥* * 数据库表名前缀* * ABSPATH** @link https://codex.wordpress.org/zh-cn:%E7%BC%96%E8%BE%91_wp-config.php** @package WordPress*/// ** MySQL 设置 - 具体信息来自您正在使用的主机 ** //
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress');/** MySQL数据库用户名 */
define('DB_USER', 'wp');/** MySQL数据库密码 */
define('DB_PASSWORD', 'Laoma@123');/** MySQL主机 */
define('DB_HOST', 'mysql.laoma.cloud');/** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8mb4');/** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');/**#@+* 身份认证密钥与盐。** 修改为任意独一无二的字串!* 或者直接访问{@link https://api.wordpress.org/secret-key/1.1/salt/* WordPress.org密钥生成服务}* 任何修改都会导致所有cookies失效,所有用户将必须重新登录。** @since 2.6.0*/
define('AUTH_KEY',         '7yZqc1!YY*8Um(;hw#Cu@&C<oRt|(Qjd!exg|n=#>(&/v|1(:=-E?KB;AGUVy&7.');
define('SECURE_AUTH_KEY',  '{sdmX?Io3}r8 km:r{g/uigwrcWPWO+7740kuiXMzYR&Nu7kQlt8s@7y.-#X_2Xt');
define('LOGGED_IN_KEY',    'uk^ s?-9K5xyNPT8nXI$t)$K6vb71qP[}[pZvk^::WN &%GO;*702MmI(U#TFgH+');
define('NONCE_KEY',        'zLA^fMij!?X +#vs+G` nGf6gel<a*QNhYL[5$}91nkif7ylJMAiqxotzgZ]/{:x');
define('AUTH_SALT',        '-%_ji|zC-:#7dJZ7W6+@XZvJ^Ij,I%^R69K]kZobmWi{6.+w8Sw!u]~;FJ-d+?a)');
define('SECURE_AUTH_SALT', '?r*#JoJ}Xy~kSXEzWRZI;a3MBMd*RDbx<KQI@T4e?8 pKE~08c=Q(I_<Sd.OZ}lk');
define('LOGGED_IN_SALT',   ')u7KKy1$#82.ZY8#^X99=#Vgzaw>g!>_f-_3LFoOM^Wi8+N@R`x`re$bJQA1;2^I');
define('NONCE_SALT',       '<_HUy#}dPUtcJ0$fsq/>N(Ds53rEV6)?VEtSm,Djs7]L6]3;Q}2Xov|VL/P;`Fg$');/**#@-*//*** WordPress数据表前缀。** 如果您有在同一数据库内安装多个WordPress的需求,请为每个WordPress设置* 不同的数据表前缀。前缀名只能为数字、字母加下划线。*/
$table_prefix  = 'wp_';/*** 开发者专用:WordPress调试模式。** 将这个值改为true,WordPress将显示所有用于开发的提示。* 强烈建议插件开发者在开发环境中启用WP_DEBUG。** 要获取其他能用于调试的信息,请访问Codex。** @link https://codex.wordpress.org/Debugging_in_WordPress*/
define('WP_DEBUG', false);/*** zh_CN本地化设置:启用ICP备案号显示** 可在设置→常规中修改。* 如需禁用,请移除或注释掉本行。*/
define('WP_ZH_CN_ICP_NUM', true);/* 好了!请不要再继续编辑。请保存本文件。使用愉快! *//** WordPress目录的绝对路径。 */
if ( !defined('ABSPATH') )define('ABSPATH', dirname(__FILE__) . '/');/** 设置WordPress变量和包含文件。 */
require_once(ABSPATH . 'wp-settings.php');

配置完成后,单击现在安装,继续。后续步骤省略。

Tomcat

Tomcat 由来

最初是由Sun公司詹姆斯·邓肯·戴维森开发的,后来他将其变为开源项目,并由Sun贡献给Apache软件基金会。由于大部分开源项目O’Reilly都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为Tomcat(英语公猫或其他雄性猫科动物)。而O’Reilly出版的介绍Tomcat的书籍(ISBN 0-596-00318-8)[1]的封面也被设计成了一个公猫的形象。而Tomcat的Logo兼吉祥物也被设计为一只公猫。

Tomcat 介绍

Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和用户并发访问不多的场合下使用,是开发和调试JSP 程序的首选。因为Tomcat技术先进、性能稳定而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

Tomcat 不仅仅是一个Java容器,同时也具有传统的Web服务器的功能:处理HTML页面,但是与Apache/Nginx 相比,其处理静态HTML的能力不如Apache/Nginx。通常将Tomcat和Apache/Nginx集成到一起,让Apache/Nginx处理静态HTML,让Tomcat处理JSP和Java

JSP全名为Java Server Pages,中文名叫java服务器页面,是一个简化的Servlet设计,由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。

官方网站:http://tomcat.apache.org/

Tomcat 虽然可以跑 jsp 网页,通常不会使用它作为web服务器,而是作为中间件。

Tomcat 部署
# 安装tomcat,会自动安装java-1.8.0-openjdk-headless
[root@server ~ 11:08:57]# yum install -y tomcat# 验证版本
[root@server ~ 11:13:48]# java -version
openjdk version "1.8.0_412"
OpenJDK Runtime Environment (build 1.8.0_412-b08)
OpenJDK 64-Bit Server VM (build 25.412-b08, mixed mode)# 启动tomcat
[root@server ~ 11:13:53]# systemctl enable --now tomcat.service# tomcat 默认发布目录是 /var/lib/tomcats/webapps
[root@server ~ 11:14:16]# grep ^TOMCATS_BASE /etc/tomcat/tomcat.conf
TOMCATS_BASE="/var/lib/tomcats/"
[root@server ~ 11:14:34]# grep appBase /etc/tomcat/server.xml <Host name="localhost"  appBase="webapps"# 准备测试页面
[root@server ~ 11:14:43]# cd /var/lib/tomcat/webapps/
[root@server webapps 11:15:23]# mkdir test
[root@server webapps 11:15:53]# vim test/index.jsp
<html><head><title>第一个 JSP 程序</title></head><body><%out.println("Hello World!");%></body>
</html># 测试
[root@www ~]# curl http://www.laoma.cloud:8080/test/index.jsp
http://www.lryc.cn/news/617506.html

相关文章:

  • react+vite-plugin-react-router-generator自动化生成路由
  • 论文阅读 arxiv 2024 MemGPT: Towards LLMs as Operating Systems
  • Linux:进程调度
  • linux下部署 dify,并配置本地ollama大模型
  • 关系型数据库:原理、演进与生态全景——从理论基石到云原生的深度巡礼
  • 论文阅读:Aircraft Trajectory Prediction Model Based on Improved GRU Structure
  • AD8475ARMZ-RL ADI放大器/缓冲器 集成电路IC 半导体芯片
  • AI Coding 概述及学习路线图
  • 【IntelliJ IDEA】修改堆内存
  • window显示驱动开发—多平面覆盖硬件要求
  • A2O MAY确认发行新曲《B.B.B (Bigger Badder Better)》 8月13日强势回归!
  • 【论文阅读】BEVFormer论文解析及Temporal Self-Attention、Spatial Cross-Attention注意力机制详解及代码示例
  • 基于领域事件驱动的微服务架构设计与实践
  • 【10】微网优联——微网优联 嵌入式技术一面,校招,面试问答记录
  • 15. xhr 对象如何发起一个请求
  • SAE J2716多协议网关的硬件架构与实时协议转换机制解析
  • pdf转word教程
  • 轻量级解决方案:如何高效处理Word转PDF?
  • ubuntu20.04交叉编译vlc3.0.21 x64 windows版本
  • C/C++练习面试题
  • WebSocket-java篇
  • 使用frp内网穿透实现远程办公
  • etf期权剩余0天还能交易吗?
  • Rust学习笔记(一)|Rust初体验 猜数游戏
  • 面试题-----RabbitMQ
  • 微算法科技(NASDAQ:MLGO)通过蚁群算法求解资源分配的全局最优解,实现低能耗的区块链资源分配
  • Linux入门DAY21
  • Dify在Windows系统的部署
  • 【运维进阶】LAMPLNMP 最佳实践
  • Nginx学习笔记(一)——Nginx的简介