Nginx03-动态资源和LNMP介绍与实验、自动索引模块、基础认证模块、状态模块

news2024/11/17 15:42:26

目录

  • 写在前面
  • Nginx03
    • 案例1 模拟视频下载网站
      • 自动索引autoindex
      • 基础认证auth_basic模块
      • 状态stub_status模块
      • 模块小结
    • 案例2 动态网站(部署php代码)
      • 概述
      • 常见的动态网站的架构
      • LNMP
        • 架构流程
        • 数据库Mariadb
          • 安装
          • 安全配置
          • 基本操作
        • PHP
          • 安装php
          • 修改配置文件
        • Nginx+Wordpress
          • 编辑Nginx
          • 安装wordpress
          • 访问主页

写在前面

这是Nginx第三篇,内容为Nginx自动索引模块、基础认证模块、状态模块、动态资源介绍、LNMP介绍与实验等。
上篇笔记 Nginx02-Nginx虚拟主机介绍、日志介绍、Location规则介绍

Nginx03

案例1 模拟视频下载网站

需求:

  1. 浏览器打开,显示目录结构(autoindex模块)
  2. 部分文件夹需登录认证功能(auth_basic模块)
  3. 统计nginx服务,访问状态(stub_status模块)
  4. 域名:v.test.com,目录:/app/code/v

ngx模块是众多ngx指令的集合.

自动索引autoindex

首页不存在时,会使用autoindex模块

  • autoindex on: 开启目录索引功能(显示站点目录下的文件的列表,首页文件不存在.)
  • autoindex_localtime on: 显示本地时间.
  • autoindex_exact_size off:是否显示精确的文件的大小. off表示以人类可读形式显示大小

实现浏览器打开,显示目录结构(文件模拟即可)
在这里插入图片描述

# 设置子配置文件
[root@front conf.d]# cat v.test.com.conf
server {
        listen 80;
        server_name v.test.com;
        root /app/code/v;

        error_log /var/log/nginx/v.test.com-error.log notice;
        access_log /var/log/nginx/v.test.com-access.log main;

        autoindex on;  #开启目录索引功能(首页文件不存在时,显示站点目录下的文件的列表)
        charset utf8; # 中文字符
        autoindex_localtime on; # 系统本地时间
        autoindex_exact_size off; # 人类可读的大小显示


        location / {
                index index.html;
        }
}

# 新建目录
[root@front conf.d]# mkdir -p /app/code/v
[root@front conf.d]# touch /app/code/v/test{1..10}.mp4

# 检查语法并重启服务
[root@front conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@front conf.d]# systemctl reload nginx

基础认证auth_basic模块

nginx中最基础的认证模块

  • auth_basic “请输入密码:”; #输出提示,根据不同浏览器,可能不显示.
  • auth_basic_user_file conf/htpasswd; #指定用户名,密码文件

登录认证
登陆的用户有auth目录,需要登录才能访问,直接退出会401报错
在这里插入图片描述
在这里插入图片描述

# 修改子配置文件
[root@front conf.d]# cat v.test.com.conf
server {
        listen 80;
        server_name v.test.com;
        root /app/code/v;

        error_log /var/log/nginx/v.test.com-error.log notice;
        access_log /var/log/nginx/v.test.com-access.log main;

        autoindex on;
        charset utf8;
        autoindex_localtime on;
        autoindex_exact_size off;

        location / {
                index index.html;
        }

        location /auth/ { # 新增location
                auth_basic "提示-请输入密码:"; #认证提示
                auth_basic_user_file /etc/nginx/user; #认证密码文件路径
        }
}

# 新建目录
[root@front conf.d]# mkdir -p /app/code/v/auth/
[root@front conf.d]# touch /app/code/v/auth/auth{1..5}.mp5

# 新建密码文件
## 安装httpd-tools,需要用到htpasswd工具
[root@front conf.d]# yum install -y httpd-tools

## 创建加密的密码文件并新增用户
[root@front conf.d]# htpasswd -bc /etc/nginx/user test test #-b不使用交互模式,-c新增一个密码文件(若有内容会清空)
Adding password for user test
[root@front conf.d]# htpasswd -b /etc/nginx/user tassel tassel
Adding password for user tassel
[root@front conf.d]# cat /etc/nginx/user
test:$apr1$DYOgLaoY$GKNgriUjduo/r7s5ous4v.
tassel:$apr1$iQF6rDr0$.Pwe8qmNOi6jxUMD4deI4.

## 修改权限
[root@front conf.d]# chmod 600 /etc/nginx/user
[root@front conf.d]# chown nginx.nginx /etc/nginx/user


# 语法检查并重启
[root@front conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@front conf.d]# systemctl reload nginx

状态stub_status模块

显示nginx当前状态,信息。显示nginx服务的状态,用户访问的状态.
stub_status; #显示nginx
在这里插入图片描述

# 编写子配置文件
[root@front conf.d]# cat v.test.com.conf
server {
        listen 80;
        server_name v.test.com;
        root /app/code/v;

        error_log /var/log/nginx/v.test.com-error.log notice;
        access_log /var/log/nginx/v.test.com-access.log main;

        autoindex on;
        charset utf8;
        autoindex_localtime on;
        autoindex_exact_size off;

        location / {
                index index.html;
        }

        location /auth/ {
                auth_basic "提示-请输入密码:";
                auth_basic_user_file /etc/nginx/user;
        }
        location /status/ { # 新增此部分,注意,此部分是uri,而不是一个文件夹,所以可以不用新建该路径文件夹
                stub_status; #启用统计功能,注意,显示所有站点,而非仅当前虚拟主机
        }
}

# 语法检查并重启
[root@front conf.d]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@front conf.d]# systemctl reload nginx

# 内容解析
## 压测
[root@front conf.d]# ab -n 999999 -c 3 -H Host:v.test.com http://192.168.100.148/
# ab是Apache Bench的缩写,它是一个用于测试Web服务器性能的工具。ab可以发送多个HTTP请求到服务器,并报告服务器的响应时间、传输速度等性能指标。命令行中的参数含义如下:
# -n 999999:指定总共发送的请求次数为999999次。
# -c 3:指定并发连接数为3,即同时有3个请求发送到服务器。
# -H Host:v.test.com:添加一个HTTP请求头,设置Host头的值为v.test.com。这通常用于测试虚拟主机的性能,或者当服务器根据Host头来处理请求时。
# http://192.168.100.148/:指定要测试的服务器的URL。这里是一个本地网络中的IP地址,表示ab将向该地址发送请求。

## status下内容
Active connections: 3 
server accepts handled requests
 61576 61576 61579 
Reading: 0 Writing: 1 Waiting: 2 
# Active connections: 当前活动状态的连接数。这是当前Nginx正在处理的连接数量,包括正在读取请求、正在写入响应或正在等待客户端发送下一个请求的连接。
# server accepts handled requests下的三个参数:
#  accepts: 总共接受的连接数。这是自从Nginx启动以来接受的连接总数。
#  handled: 总共处理的连接数。通常这个数字和accepts相同,因为Nginx能够处理所有接受的连接。
#  requests: 总共处理的请求数。这是自从Nginx启动以来处理的总请求数量。这个数字可能会比accepts大,因为同一个连接可能会发送多个请求(例如,在一个Keep-Alive连接中)。
# Reading: 当前正在读取请求头的连接数。这是Nginx正在从客户端读取请求头的连接数量。
# Writing: 当前正在写入响应的连接数。这是Nginx正在向客户端发送响应的连接数量。
# Waiting: 当前等待请求的空闲连接数。这是打开着但是目前没有读取或写入活动的连接数量。这些连接可能处于Keep-Alive状态,等待客户端发送下一个请求。


  • 状态模块中的指标:
指标说明
Active connections当前已经建立的连接数(est)和等待数量,体现Nginx并发能力
server accepts已经接收到客户端的连接总数
handled服务端已经处理的连接
requests客户端发出请求的总数
reading正在读取的请求头连接数量
writing正在进行的响应的连接数量
waiting排队数量,反映排队情况

模块小结

  • nginx模块就是nginx指令的集合
模块模块中的核心指令
目录索引模块autoindex on;
认证功能模块auth_basic_user_file;
访问控制模块allow,deny
状态模块stub_status
nginx 核心模块root,location,error_log,server_name,listen
nginx 日志模块access_log,log_format,error_log

案例2 动态网站(部署php代码)

概述

网站架构说明与特点性能1句话说明
静态网站网站仅仅包含HTML、CSS样式、JS脚本、图片、视频等静态资源。只需要web服务器即可:nginx,可以承受较高的访问量。不支持动态的功能,如注册、评论,功能单一。浏览器端解析(客户端解析),服务端仅仅负责发送.
动态网站动态网站一般是通过开发语言实现:Java、PHP、Python、Golang等。动态资源页面需要服务器进行处理:nginx+php/tomcat+数据库。一般动态请求需要服务端进行处理与解析,把结果给用户.
  • 区分静态/动态资源:
  • url中包含&?一般都是动态资源

常见的动态网站的架构

L: Linux, N: Nginx, M: Mysql, A: Apache, W: Windows

  • PHP:LNMP(LEMP), LAMP, WNMP/WAMP
  • Java: LNMT(Tomcat,Jetty,Weblogic,Jboss)
  • Python: LNMP(Python,uwsgi)
  • Golang: LNMG(Golang)
  • C/C++

LNMP

架构流程
  • 用户通过http协议发送请求
  • Nginx分流动/静态资源,静态自己处理,动态请求丢给PHP
    - Nginx通过fastcgi协议把动态请求丢给PHP
    - PHP处理动态请求,若需要数据,则连接数据库Mysql
数据库Mariadb
安装
yum install -y mariadb-server
# mariadb-server 服务端
# mariadb 客户端

systemctl start mariadb
systemctl enable mariadb

# 验证
[root@db01 ~]# ss -tunlp | grep mysql
tcp   LISTEN 0      80                 *:3306            *:*    users:(("mysqld",pid=14433,fd=21))
[root@db01 ~]# ps -ef | grep mysql
mysql      14433       1  0 20:35 ?        00:00:00 /usr/libexec/mysqld --basedir=/usr
root       14974   14928  0 20:39 pts/0    00:00:00 grep --color=auto mysql
安全配置
mysql_secure_installation  #仅仅刚安装的时候运行.仅首次运行即可.
#用于设置root密码,清理用户和清理临时库.

Enter current password for root (enter for none): #回车即可
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] y #输入y
New password: #输入密码
Re-enter new password: #再次输入密码
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y #y删除数据库中的匿名用户
 ... Success!

Disallow root login remotely? [Y/n] y #y禁止root远程登陆
 ... Success!

Remove test database and access to it? [Y/n] y #y删除test测试用数据库

Reload privilege tables now? [Y/n] y #y更新权限信息表
 ... Success!

基本操作
  • 进入数据库
mysql -uroot -p密码 [-h IP]
#不要有空格,也可以不输入密码,等交互式时输入

数据库基本概念请自行了解,库->表->字段(属性/投影/列)->记录(元组/行)

  • 查看
# 查看数据库
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.001 sec)

# 查看表
MariaDB [(none)]> show tables from mysql;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
...

#查看某些字段(列),筛选记录(行)
## 筛选mysql数据库中user表的user和host列的记录
## -G行的内容以列显示
MariaDB [(none)]> select user,host from mysql.user ;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+
3 rows in set (0.000 sec)


  • 创建
# 创建数据库
MariaDB [(none)]> create database test;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+
4 rows in set (0.001 sec)

# 创建用户,进行授权
MariaDB [(none)]> grant all on test.* to 'test'@'%' identified by 'test';
Query OK, 0 rows affected (0.000 sec)
## grant 权限 on 数据库.表 to '用户'@'登录白名单' identified by '密码';
## 一般localhost表示只能在数据库本地使用.
## 可以通过192.168.100.% 进行授权局域网访问. 其他局域网机器可以访问数据库.
## 只给个 % 表示所有人可以访问(不安全). %不包含localhost.
### ALL: 所有可用的权限
### CREATE: 创建库、表和索引
### LOCK_TABLES: 锁定表
### ALTER: 修改表
### DELETE: 删除表
### UPDATE: 更新数据
### INSERT: 插入表或列
### SELECT: 检索表或列的数据
### CREATE_VIEW: 创建视图
### SHOW_DATABASES: 列出数据库
### DROP: 删除库、表和视图
  • 删除
# 删除数据库
MariaDB [(none)]> drop database test;
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.000 sec)

# 删除用户(revoke删除授权)
MariaDB [(none)]> drop user 'test'@'%';
Query OK, 0 rows affected (0.001 sec)

MariaDB [(none)]> select user,host from mysql.user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
| root | localhost |
+------+-----------+
3 rows in set (0.001 sec)
PHP

选择php 7.x

安装php
# 安装php
## 若是centos7,可以输入以下yum源和安装命令
[root@front conf.d]# cat /etc/yum.repos.d/php.repo
[webtatic-php]
name = php Repository
baseurl = http://us-east.repo.webtatic.com/yum/el7/x86_64
enabled = 1
gpgcheck = 0

[root@front conf.d]# yum install -y php72w php72w-cli php72w-common  php72w-devel php72w-embedded php72w-gd php72w-mcrypt  php72w-mbstring php72w-pdo php72w-xml php72w-fpm  php72w-mysqlnd php72w-opcache php72w-pecl-memcached  php72w-pecl-redis php72w-pecl-mongodb

## centos8可以直接使用默认的yum源安装
[root@front conf.d]# yum install -y php*
[root@front conf.d]# php -v
PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.24, Copyright (c) 1999-2018, by Zend Technologies



# 启动php
[root@front conf.d]# systemctl enable php-fpm --now
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

修改配置文件

php默认使用的时apache,但要求用nginx,所以修改配置文件,使其使用nginx
yum安装的php,默认listen监听的是socket,要修改成127.0.0.1:9000

[root@front conf.d]# egrep -n "^user|^group" /etc/php-fpm.d/www.conf
24:user = apache
26:group = apache
[root@front conf.d]# egrep -n "^listen" /etc/php-fpm.d/www.conf
38:listen = /run/php-fpm/www.sock



# 修改配置文件
[root@front conf.d]# sed -i 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
[root@front conf.d]# sed -i 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf
[root@front conf.d]# egrep -n "^user|^group" /etc/php-fpm.d/www.conf
24:user = nginx
26:group = nginx

[root@front conf.d]# sed -i 's/listen = /run/php-fpm/www.sock/listen = 127.0.0.1:9000/g' /etc/php-fpm.d/www.conf
sed: -e expression #1, char 18: unknown option to `s'
[root@front conf.d]# sed -i 's|listen = /run/php-fpm/www.sock|listen = 127.0.0.1:9000|g' /etc/php-fpm.d/www.conf
[root@front conf.d]# egrep -n "^listen" /etc/php-fpm.d/www.conf
38:listen = 127.0.0.1:9000
Nginx+Wordpress
编辑Nginx
# 编写子配置文件
[root@front conf.d]# cat blog.test.com.conf
server {
        listen 80;
        server_name blog.test.com;
        root /app/code/blog;

        error_log /var/log/nginx/blog.test.com-error.log notice;
        access_log /var/log/nginx/blog.test.com-access.log main;

        location / {
                index index.php;
        }
        location ~* \.php$ {
                # foward to php
                fastcgi_pass 127.0.0.1:9000;
                fastcgi_index index.php;
                # 修改以下
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }
}

# 
安装wordpress

官方下载链接:https://wordpress.org/download/releases/#branch-61
我选用的是6.1.1

# 解压并移动到对应站点目录
unzip wordpress-6.1.1.zip
mv wordpress/* /app/code/blog/

# 修改权限
[root@front conf.d]# chown -R nginx.nginx /app/code/blog
访问主页

在这里插入图片描述
在这里插入图片描述
wordpress的教程网上特别多,这里不赘述,只是作为动态资源的演示

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

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

相关文章

音视频开发15 FFmpeg FLV封装格式分析

FLV(Flash Video)简介 FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的⾳视频⽂件体积⼩、封装简单等特点,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤ FLV格式封装的⽂件后缀为.flv。 FLV封装格式的组成 FLV封装…

Vxe UI vxe-table 实现自定义列拖拽,列拖拽排序功能

Vxe UI vue vxe-table 实现自定义列拖拽&#xff0c;列拖拽排序功能 开启自定义列 vxe-toolbar 工具栏&#xff0c;通过 custom 启用后就可以开启自定义列功能 <template><div><vxe-toolbar ref"toolbarRef" custom></vxe-toolbar><vx…

泛微开发修炼之旅--09Ecology作为所有异构系统的待办中心,实现与kafka对接源码及示例

文章链接&#xff1a;泛微开发修炼之旅--09Ecology作为所有异构系统的待办中心&#xff0c;实现与kafka对接源码及示例

攻防世界testre做法(考点:base58)

在做这道题目之前&#xff0c;我们先来简单了解一下base64加密和base58加密&#xff0c;先来说一些预备知识&#xff0c;bit为1个位&#xff0c;即一个0或1&#xff0c;八个位组成一个字节&#xff0c;即八个二进制数。 base64编码原理&#xff1a;1&#xff0c;在使用base64加…

覆盖路径规划经典算法 The Boustrophedon Cellular Decomposition 详解

2000年一篇论文 Coverage of Known Spaces: The Boustrophedon Cellular Decomposition 横空出世&#xff0c;解决了很多计算机和机器人领域的覆盖路径问题&#xff0c;今天我来详细解读这个算法。 The Boustrophedon Cellular Decomposition 算法详解 这篇论文标题为"C…

Spring AI 第二讲 之 Chat Model API 第八节Anthropic 3 Chat

Anthropic Claude 是一系列基础人工智能模型&#xff0c;可用于各种应用。对于开发人员和企业来说&#xff0c;您可以利用 API 访问&#xff0c;直接在 Anthropic 的人工智能基础架构之上进行构建。 Spring AI 支持用于同步和流式文本生成的 Anthropic 消息 API。 Anthropic …

【Python机器学习】将PCA用于cancer数据集并可视化

PCA最常见的应用之一就是将高维数据集可视化。一般对于有两个以上特征的数据&#xff0c;很难绘制散点图&#xff0c;。对于Iris&#xff08;鸢尾花&#xff09;数据集&#xff0c;我们可以创建散点矩阵图&#xff0c;通过展示特征所有可能的两两组合来展示数据的局部图像。 不…

[论文笔记]AIOS: LLM Agent Operating System

引言 这是一篇有意思的论文AIOS: LLM Agent Operating System&#xff0c;把LLM智能体(代理)看成是操作系统。 基于大语言模型(LLMs)的智能代理的集成和部署过程中存在着许多挑战&#xff0c;其中问题包括代理请求在LLM上的次优调度和资源分配&#xff0c;代理和LLM之间在交互…

【问题解决】adb remount 失败或刷机无法连接设备(KaiOS)

问题描述 1、设备无法adb remount成功&#xff0c; 2、通过fastboot无法识别设备&#xff0c;一直卡住 3、已经识别到9008端口&#xff0c;但是设备与刷机工具connect fail&#xff0c;甚至软件crash 解决方案 1、安装高通驱动工具&#xff1a;QDLoder HS-USB Driver QDLoade…

暴雨推出基于英特尔® 至强® 6 能效核处理服务器

随着人工智能技术的快速发展&#xff0c;大模型的应用越来越广泛。据预测&#xff0c;到2024年年底&#xff0c;我国将有5%-8%的企业大模型参数从千亿级跃升至万亿级&#xff0c;算力需求增速将达到320%&#xff0c;这进一步推动了数据中心的持续变革。 超凡性能&#xff0c;绿…

网络实用技术答案

&#xff08; C &#xff09;不属于计算机网络四要素。A. 计算机系统 B. 传输介质C. 用户 D. 网络协议计算机网络中广域网和局域网的分类是以&#xff08; D &#xff09;来划分的。A. 信息交换方式 B&#xff0e;传输控制方法C. 网络使用习惯 D&#xff0e;网络覆盖范围计算机…

苹果将推出“Apple Intelligence”AI系统,专注于隐私和广泛应用|TodayAI

据彭博社报道,苹果公司将在下周的 WWDC 2024 开发者大会上揭晓其全新的 AI 系统——“Apple Intelligence”,该系统将适用于 iPhone、iPad 和 Mac 设备。这一新系统将结合苹果自身技术和 OpenAI 的工具,为用户提供一系列新的 AI 功能,同时重点关注隐私保护和广泛应用。 与…

算法导论实战(三)(算法导论习题第二十四章)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;算法启示录 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 前言 第二十四章 24.1-3 24.1-4 2…

【C语言】05.数组

一、数组的概念 本文来介绍数组&#xff0c;首先我们需要了解数组是什么&#xff1f; 数组是⼀组相同类型元素的集合。 • 数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。 • 数组中存放的多个数据&#xff0c;类型是相同的。 数组分为⼀维数组和多维数组…

使用迭代最近点 (ICP) 算法在 Open3D 中对齐点云

一、Open3D 简介及其功能 Open3D 是一个现代库&#xff0c;它提供了用于处理 3D 数据的各种工具。在其功能中&#xff0c;它提供了高效的数据结构和算法来处理点云、网格等&#xff0c;使其成为在计算机视觉、机器人和图形领域工作的研究人员和从业人员的不错选择。Open3D 的特…

网络简史-基于图论的网络

先看一幅图&#xff1a; 如图&#xff0c;我们对类似 crossbar&#xff0c;banyan tree&#xff0c;b-tree&#xff0c;10-tree&#xff0c;256-tree&#xff0c;甚至 dcn fat-tree 等 “规则拓扑” 网络相当熟悉。规则拓扑网络中&#xff0c;地址信息被编码到拓扑本身&#…

继续引爆!5天连出2个里程碑成果,离子阱量子计算机嗨翻天!

5月30日&#xff0c;清华大学的一项成果被Nature审稿人称为“量子模拟领域的巨大进步”&#xff01;“值得关注的里程碑”&#xff01;该成果就是中国科学院院士、清华大学交叉信息研究院教授段路明带领研究组在量子模拟计算领域取得的重要突破。段路明研究组首次实现512离子二…

Java使用XWPFTemplate将word填充数据,并转pdf

poi-tl poi-tl&#xff08;poi template language&#xff09;是基于Apache POI的Word模板引擎。纯Java组件&#xff0c;跨平台&#xff0c;代码短小精悍&#xff0c;通过插件机制使其具有高度扩展性。 主要处理区域有这么几个模块: 依赖 <dependency><groupId>…

【UE5教程】使用蓝图显示鼠标

首先&#xff0c;在您的项目中创建一个新的蓝图类&#xff0c;继承自PlayerController。在蓝图编辑器中&#xff0c;找到Event BeginPlay节点&#xff0c;并从它引出一条线。添加Set Show Mouse Cursor节点&#xff0c;勾选Visible&#xff0c;以确保鼠标在游戏开始时可见。 鼠…

flask_sqlalchemy时间缓存导致datetime.now()时间不变问题

问题是这样的&#xff0c;项目在本地没什么问题&#xff0c;但是部署到服务器过一阵子发现&#xff0c;这个时间会在某一刻定死不变。 重启uwsgi后&#xff0c;发现第一条数据更新到了目前最新时间&#xff0c;过了一会儿再次发送也变了时间&#xff0c;但是再过几分钟再发就会…