一. nginx学习笔记 又长又臭篇幅

目录

引言

Nginx 简介

Nginx 的特点和优势

适用场景

安装 Nginx

在 Windows 上安装 Nginx

在 Linux (CentOS)上安装 Nginx

基本配置

Nginx 配置文件结构

启动、停止和重载 Nginx

基本的服务器块配置

处理静态文件

设置文档根目录

配置 MIME 类型

优化静态文件服务

反向代理

反向代理概述

反向代理的优点:

配置反向代理服务器

负载均衡基本配置

负载均衡算法

SSL/TLS 配置

获取 SSL 证书

配置 HTTPS

强制 HTTPS 重定向

完整配置示例

访问控制

IP 地址白名单和黑名单

IP 地址白名单

IP 地址黑名单

基于请求的访问控制

基于请求的 URI 访问控制

基于请求方法的访问控制

日志管理

配置访问日志和错误日志

访问日志

错误日志

日志格式定制

日志分析工具

性能优化

缓存配置

Gzip 压缩

Keep-Alive 设置

安全性

基本安全配置

防止 DDoS 攻击

安全性最佳实践

使用 HTTPS

定期更新 Nginx

限制访问控制

使用安全的文件权限

定期检查日志

常见问题与故障排除

常见错误代码及其含义

解决常见配置问题

调试技巧

案例: 


  • 引言

    • Nginx 简介

      • Nginx最初由 Igor Sysoev 开发,旨在解决 C10K 问题,即如何在单台服务器上同时处理一万多个并发连接。Nginx 采用事件驱动架构,相比传统的线程或进程模型,能够更有效地利用系统资源,实现高并发处理。
    • Nginx 的特点和优势

      • 高并发处理:使用事件驱动模型,能够处理大量并发连接,适合高流量网站。
      • 低内存消耗:相比其他服务器,Nginx 的内存占用较低,适合资源有限的环境。
      • 反向代理和负载均衡:支持多种负载均衡算法,能够将请求分发到多个后端服务器,提升网站的可用性和响应速度。
      • 灵活的配置:通过配置文件,用户可以轻松地定制 Nginx 的行为,满足不同需求。
      • 静态文件处理:对于静态文件,Nginx 的处理速度非常快,适合用作静态资源的服务器。
      • 安全性:支持 SSL/TLS 加密和防止 DDoS 攻击,增强网站的安全性。
    • 适用场景

      • 反向代理服务器:将请求转发到后端服务器(如应用服务器),以实现负载均衡和提高安全性。

      • 负载均衡:支持多种负载均衡算法(如轮询、IP 哈希等),可以将流量分配到多台后端服务器,提高系统的可用性和性能。

      • 静态文件服务:能够高效地提供静态资源(如图片、CSS、JavaScript 等),通常性能优于传统的应用服务器。

      • SSL/TLS 终端:处理 HTTPS 请求,卸载加密和解密的负担,减轻后端服务器的压力。

      • 内容缓存:可以缓存静态和动态内容,提高访问速度,减少后端负载。

      • API 网关:适用于微服务架构,作为 API 请求的入口,进行流量管理、认证和监控。

      • WebSocket 代理:支持 WebSocket 协议,适合需要实时通信的应用。

      • HTTP/2 支持:支持 HTTP/2 协议,提升网站的加载速度和用户体验。

  • 安装 Nginx

    • 在 Windows 上安装 Nginx

      • 下载 Nginx

        • 访问 nginx: download
        • 下载适合 Windows 的最新版本(通常是 .zip 文件)。
      • 解压缩

        • 将下载的 .zip 文件解压到您希望安装 Nginx 的目录(例如 D:\nginx)。
      • 运行 Nginx

        • 打开命令提示符(cmd)。
        • 进入 Nginx 的安装目录:
        • start nginx
      • 验证安装

        • 在浏览器中访问 http://127.0.0.1:80/,如果看到 Nginx 欢迎页面,则安装成功。
      • 停止 Nginx

        • 在命令提示符中输入:(然后刷新浏览器就访问不到了)
        • nginx -s stop
    • 在 Linux (CentOS)上安装 Nginx

      • 安装 EPEL 仓库(Nginx 在 EPEL 中可用):
        • sudo yum install epel-release -y
          
      • 安装 Nginx
        • sudo yum install nginx -y
          
      • 启动 Nginx 服务
        • sudo systemctl start nginx
          
      • 设置 Nginx 开机自启动
        • sudo systemctl enable nginx
          
      • 检查 Nginx 是否运行
        • sudo systemctl status nginx
          

      • 打开浏览器,访问127.0.0.1
      • 要关闭 Nginx 服务
        • sudo systemctl stop nginx
          
      • 用 Nginx 的开机自启动
        • sudo systemctl disable nginx
          
  • 基本配置

    • Nginx 配置文件结构

      • user  nginx;  # 指定 Nginx 运行的用户
        worker_processes  auto;  # 自动设置工作进程数events {worker_connections  1024;  # 每个工作进程的最大连接数
        }http {include       mime.types;  # 包含 MIME 类型文件default_type  application/octet-stream;sendfile        on;  # 启用高效文件传输keepalive_timeout  65;  # 设置保持连接的超时时间# 定义服务器块server {listen       80;  # 监听的端口server_name  localhost;  # 服务器名location / {root   /usr/share/nginx/html;  # 网站根目录index  index.html index.htm;  # 默认首页文件}}
        }
        
    • 启动、停止和重载 Nginx

      • sudo systemctl start nginx  //启动
        sudo systemctl stop nginx   //停止
        sudo systemctl reload nginx  //重新加载
        sudo systemctl status nginx  //连接状态
        
        #windows 重新加载
        nginx -s reload
        
    • 基本的服务器块配置

      • server {listen 80;  # 监听 HTTP 请求server_name example.com www.example.com;  # 服务器名location / {root /var/www/html;  # 网站根目录index index.html index.htm;  # 默认首页}location /images/ {root /var/www;  # 指定子目录}# 错误页面配置error_page 404 /404.html;location = /404.html {internal;}# 反向代理示例location /api/ {proxy_pass http://backend_server;  # 代理到后端服务器}
        }
        
  • 处理静态文件

    • 设置文档根目录

      • 在 Nginx 中,可以通过 rootalias 指令设置文档根目录。假设你希望将文档根目录设置为 D:/tu,你可以这样配置:
      • server {listen       8072;server_name  localhost;location / {root   D:/tu;  # 设置文档根目录index  index.html;  # 默认首页文件}
        }
        
    • 配置 MIME 类型

      • Nginx 默认会加载 mime.types 文件来设置 MIME 类型。如果你需要为特定文件类型设置 MIME 类型,可以在 http 块中进行配置。例如:
      • http {include       mime.types;  # 加载 MIME 类型配置default_type  application/octet-stream;# 其他配置...
        }
        
      • 你可以在 mime.types 文件中找到常见文件扩展名的 MIME 类型,如下所示:

        text/html         html htm;
        text/css          css;
        text/javascript   js;
        image/jpeg        jpg jpeg;
        image/png         png;
        
    • 优化静态文件服务

      • 启用 sendfile:可以提高文件传输性能。
        • sendfile on;  # 启用高效文件传输
          
      • 使用 gzip 压缩:可以减少传输数据的大小。

        • gzip on;  # 启用 gzip 压缩
          gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
          
      • 设置缓存:为静态文件设置合理的缓存策略。

        • location / {expires 30d;  # 设置文件过期时间为30天
          }
  • 反向代理

    • 反向代理概述

      • 反向代理 是一种服务器,客户端请求不直接发送到目标服务器,而是发送到反向代理服务器。反向代理服务器接收请求,然后将其转发到适当的后端服务器。后端服务器的响应会通过反向代理返回给客户端。
      • 反向代理的优点:
        • 安全性:隐藏后端服务器的真实地址,增强安全性。
        • 负载均衡:可以将请求分配到多台后端服务器,以实现负载均衡,提高性能。
        • 缓存:反向代理可以缓存后端服务器的响应,减少对后端的请求压力。
        • SSL 终止:可以在反向代理服务器上处理 SSL 加密,简化后端服务器的配置。
    • 配置反向代理服务器

      • server {listen       80;  # 监听 80 端口server_name  zbr.com;  # 你的服务器域名或 IP 地址location /ceshi {proxy_pass http://192.68.1.11:7862;  # 将请求转发到目标服务proxy_set_header Host $host;  # 设置请求头proxy_set_header X-Real-IP $remote_addr;  # 转发客户端 IPproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  # 添加 X-Forwarded-For 头proxy_set_header X-Forwarded-Proto $scheme;  # 添加协议头}
        }
    • 负载均衡基本配置

      • http {upstream backend_servers {server backend1.example.com;  # 第一台后端服务器server backend2.example.com;  # 第二台后端服务器server backend3.example.com;  # 第三台后端服务器}server {listen       80;server_name  example.com;location / {proxy_pass http://backend_servers;  # 将请求转发到负载均衡集群proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}}
        }
        
        负载均衡算法
        • 轮询(默认):按顺序将请求分配到每台后端服务器。

        • 权重:根据权重将请求分配到后端服务器。配置示例:

          • upstream backend_servers {server backend1.example.com weight=3;  # 权重为 3server backend2.example.com weight=1;  # 权重为 1
            }
            
        • IP 哈希:根据客户端 IP 地址将请求分配到特定后端服务器。配置示例:

          • upstream backend_servers {ip_hash;  # 启用 IP 哈希server backend1.example.com;server backend2.example.com;
            }
            
  • SSL/TLS 配置

    • 获取 SSL 证书

      • 网上买一个
    • 配置 HTTPS

      • server {listen 443 ssl;  # 启用 SSLserver_name example.com www.example.com;  # 你的域名ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;  # SSL 证书路径ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  # 私钥路径# 强化 SSL 配置(可选)ssl_protocols TLSv1.2 TLSv1.3;  # 启用 TLS 版本ssl_ciphers 'HIGH:!aNULL:!MD5';  # 设置密码套件location / {# 你的其他配置...}
        }
    • 强制 HTTPS 重定向

      • 如果你希望将所有 HTTP 请求重定向到 HTTPS,可以添加一个新的 server 块来处理 80 端口的请求:
      • server {listen 80;server_name example.com www.example.com;return 301 https://$host$request_uri;  # 强制重定向到 HTTPS
        }
        
    • 完整配置示例

      • # 强制 HTTP 到 HTTPS 重定向
        server {listen 80;server_name example.com www.example.com;return 301 https://$host$request_uri;  # 强制重定向到 HTTPS
        }# HTTPS 配置
        server {listen 443 ssl;server_name example.com www.example.com;ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;  # SSL 证书路径ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  # 私钥路径# 强化 SSL 配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers 'HIGH:!aNULL:!MD5';location / {# 你的其他配置...}
        }
        
  • 访问控制

    • IP 地址白名单和黑名单

      • IP 地址白名单
        server {listen       80;server_name  example.com;location / {allow 192.168.1.100;  # 允许的 IP 地址allow 192.168.1.101;  # 另一个允许的 IP 地址deny all;  # 拒绝其他所有访问}
        }
        
        IP 地址黑名单
        • server {listen       80;server_name  example.com;location / {deny 192.168.1.200;  # 拒绝的 IP 地址deny 192.168.1.201;  # 另一个拒绝的 IP 地址allow all;  # 允许其他所有访问}
          }
          
    • 基于请求的访问控制

      • 基于请求的 URI 访问控制
        • server {listen       80;server_name  example.com;location /admin {allow 192.168.1.100;  # 仅允许特定 IP 地址访问deny all;  # 拒绝其他访问}
          }
          
      • 基于请求方法的访问控制
        • server {listen       80;server_name  example.com;location /api {limit_except GET {deny all;  # 只允许 GET 请求,拒绝其他方法}}
          }
          
  • 日志管理

    • 配置访问日志和错误日志

      • 访问日志
        • Nginx 默认会记录访问日志,可以在 http 或 server 块中进行配置。例如:http {access_log /var/log/nginx/access.log;  # 访问日志文件路径# 其他配置...
          }
          
      • 错误日志
        • 错误日志的配置类似,可以在 http 或 server 块中进行配置:http {error_log /var/log/nginx/error.log;  # 错误日志文件路径error_log /var/log/nginx/error.log warn;  # 设置日志级别为 warn# 其他配置...
          }
          
    • 日志格式定制

      • http {log_format custom_format '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log custom_format;  # 使用自定义格式
        }
        
      • $remote_addr:客户端 IP 地址
      • $remote_user:用户认证信息
      • $time_local:访问时间
      • $request:请求行
      • $status:HTTP 状态码
      • $body_bytes_sent:发送的字节数
      • $http_referer:来源地址
      • $http_user_agent:客户端用户代理
      • $http_x_forwarded_for:转发的客户端 IP(如果存在)
    • 日志分析工具

      • GoAccess
      • AWStats
  • 性能优化

    • 缓存配置

      • 静态文件缓存
        • 可以通过 expires 指令配置静态文件的缓存时间。例如,设置缓存图片、CSS 和 JS 文件:

          location / {expires 30d;  # 缓存 30 天add_header Cache-Control "public, max-age=2592000";  # 设置 Cache-Control 头
          }
          
      • 代理缓存
        • 如果 Nginx 作为反向代理,你可以配置代理缓存来提高性能:

          http {proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;server {listen 80;server_name example.com;location /api {proxy_pass http://backend_server;proxy_cache my_cache;  # 启用代理缓存proxy_cache_valid 200 60m;  # 缓存 200 响应 60 分钟}}
          }
          
    • Gzip 压缩

      • 启用 Gzip 压缩可以减少传输数据的大小,提高网站加载速度。可以在 http 块中配置:

        http {gzip on;  # 启用 Gzip 压缩gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;  # 压缩的 MIME 类型gzip_min_length 1000;  # 最小压缩长度gzip_vary on;  # 支持代理缓存
        }
        
    • Keep-Alive 设置

      • Keep-Alive 允许客户端与服务器之间保持持久连接,减少重复连接的开销。可以在 http 块中配置:
      • http {keepalive_timeout 65;  # 设置 Keep-Alive 超时时间keepalive_requests 100;  # 最大请求数
        }
        
  • 安全性

    • 基本安全配置

      • 关闭不必要的 HTTP 方法
        • server {listen 80;server_name example.com;location / {limit_except GET POST {deny all;  # 只允许 GET 和 POST 方法}}
          }
          
      • 隐藏 Nginx 版本信息
        • http {server_tokens off;  # 隐藏版本信息
          }
          
      • 限制请求速率
        • http {limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;  # 每个 IP 每秒最多 1 个请求server {listen 80;server_name example.com;location / {limit_req zone=one burst=5;  # 突发请求数为 5# 其他配置...}}
          }
          
    • 防止 DDoS 攻击

      • 使用防火墙
      • 使用 Nginx 的限制模块
        • http {limit_conn_zone $binary_remote_addr zone=addr:10m;  # 每个 IP 地址的连接数限制server {listen 80;server_name example.com;location / {limit_conn addr 10;  # 每个 IP 地址最多 10 个连接# 其他配置...}}
          }
          

    • 安全性最佳实践

      • 使用 HTTPS

        强烈建议使用 SSL/TLS 来加密数据传输,保护用户信息。参考之前的 SSL/TLS 配置。

        定期更新 Nginx

        确保 Nginx 和操作系统保持最新,及时修补已知的安全漏洞。

        限制访问控制

        使用 IP 白名单和黑名单来限制访问敏感区域,例如管理面板。

        使用安全的文件权限

        确保 Nginx 配置文件和相关目录的权限设置正确,避免未授权访问。

        定期检查日志

        定期检查 Nginx 访问日志和错误日志,发现异常活动并采取相应措施。

  • 常见问题与故障排除

    • 常见错误代码及其含义

      • 400 Bad Request: 客户端请求无效,可能是请求语法错误或请求数据缺失。
      • 401 Unauthorized: 请求需要身份验证,客户端未提供有效的凭证。
      • 403 Forbidden: 服务器拒绝请求,可能是由于权限设置或文件/目录的访问控制。
      • 404 Not Found: 请求的资源未找到,可能是 URL 错误或文件不存在。
      • 405 Method Not Allowed: 请求方法不被允许,可能是服务器配置错误。
      • 500 Internal Server Error: 服务器内部错误,通常是代码或配置问题。
      • 502 Bad Gateway: Nginx 作为反向代理时,后端服务器不可用或返回错误。
      • 504 Gateway Timeout: Nginx 作为反向代理时,后端服务器超时未响应。
    • 解决常见配置问题

      • 检查 Nginx 配置文件
        • nginx -t
      • 查看错误日志
      • 配置文件的正确缩进
        • 确保配置文件的格式和缩进正确,尤其是在 serverlocation 块中。

      • 资源路径问题
        • 确保静态文件和资源的路径正确配置,使用绝对路径时要注意格式和拼写。

    • 调试技巧

      • 使用 Nginx 的调试日志
        • error_log /var/log/nginx/error.log debug;
          
      • 清理缓存
      • 测试不同配置
        • 在调试时,可以逐步注释掉部分配置,查看问题是否得到解决。

                ​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

案例: 

from flask import Flask, jsonifyapp = Flask(__name__)@app.route('/', methods=['GET'])
def success():return jsonify({"port+": "9082"}), 200if __name__ == '__main__':app.run(host='0.0.0.0', port=9082)  # 监听所有可用的接口,端口
worker_processes 1;events {worker_connections 1024;
}http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;upstream flask_app {server 127.0.0.1:9081;  # 第一个后端服务server 127.0.0.1:9082;  # 第二个后端服务}server {listen 8072;server_name localhost;location / {proxy_pass http://flask_app;  # 使用 upstream 组proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}error_page 500 502 503 504 /50x.html;location = /50x.html {root D:/tu/nginx-1.26.2/nginx-1.26.2/html;  # 确保路径正确}}
}

这样 你每次 刷新浏览器 就会在不同程序上返回了

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

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

相关文章

go中Println和Printf的区别

Don’t worry , just coding! 内耗与overthinking只会削弱你的精力,虚度你的光阴,每天迈出一小步,回头时发现已经走了很远。 go中Println和Printf的区别 package mainimport ( "fmt" )//TIP To run your code, right-click the c…

Windows 部署非安装版Redis

1.下载Redis https://github.com/microsoftarchive/redis/releases 选择下载zip包,如Redis-x64-3.0.504.zip,并解压 2.启动非安装版redis服务 进入到redis目录,打开cmd 执行命令 redis-server.exe redis.windows.conf 3.登录redis客户端…

OpenGL入门003——使用Factory设计模式简化渲染流程

前面两节已经学会了如何使用opengl创建窗口并绘制三角形,我们可以看出有些步骤是固定的,而且都写在main.cpp,这一节我们将了解如何使用Factroy设计模型。将模型渲染逻辑封装在一个单独的类中,简化开发流程,且提高代码复…

Android camera2

一、序言 为了对阶段性的知识积累、方便以后调查问题,特做此文档! 将以camera app 使用camera2 api进行分析。 (1)、打开相机 openCamera (2)、创建会话 createCaptureSession (3)、开始预览 setRepeatingRequest (4)、停止预览 stopRepeating (5)、关闭…

qt QColorDialog详解

1、概述 QColorDialog是Qt框架中的一个对话框类,专门用于让用户选择颜色。它提供了一个标准的颜色选择界面,其中包括基本的颜色选择器(如调色板和颜色轮)、自定义颜色输入区域以及预定义颜色列表。QColorDialog支持RGB、HSV和十六…

# linux系统(如ubuntu)新创建的用户终端命令无颜色,用户名等显示灰色名字而不是绿色问题解决方法

linux系统(如ubuntu)新创建的用户终端命令无颜色,用户名等显示灰色名字而不是绿色问题解决方法 一、问题描述: 在Linux系统中(如ubuntu),如果新创建的用户终端命令无颜色,用户名等…

ASP.NET Core 路由规则 总结 mvc

资料 资料 路由服务 路由服务是在 Program.cs 中使用 builder.Services.AddRouting()注册的, 只是默认在 builder 之前已经注册过了,无需我们再次注册。 AddRouting()方法必须在 UseRouting()方法之前运行,它是路由的基础服务。 MapContro…

koa项目实战 == 实现注册登录鉴权

一. 项目的初始化 1 npm 初始化 npm init -y生成package.json文件: 记录项目的依赖 2 git 初始化 git init生成’.git’隐藏文件夹, git 的本地仓库 3 创建 ReadMe 文件 二. 搭建项目 1 安装 Koa 框架 npm install koa2 编写最基本的 app 创建src/main.js const Koa…

信息学科平台系统构建:Spring Boot框架深度解析

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

【JavaEE】认识进程

一、操作系统(operating system) 操作系统是一组做计算机资源管理的软件的统称,它能够把一个计算机上的所有硬件资源和软件资源都管理好:能够管理好各种硬件资源,让他们很好的相互配合,能够管理好各种软件…

Chromium Mojo(IPC)进程通信演示 c++(4)

122版本自带的mojom通信例子仅供学习参考: codelabs\mojo_examples\01-multi-process 其余定义参考文章: Chromium Mojo(IPC)进程通信演示 c(2)-CSDN博客 01-mojo-browser.exe 与 01mojo-renderer.exe进程通信完整例子。 一、…

像`npm i`作为`npm install`的简写一样,使用`pdm i`作为`pdm install`的简写

只需安装插件pdm-plugin-i即可: pdm plugin add pdm-plugin-i 然后就可以愉快地pdm i了,例如: git clone https://github.com/waketzheng/fast-dev-cli cd fast-dev-cli python -m pip install --user pipx pipx install pdm pdm plugin a…

尚庭公寓-小程序接口

7. 项目开发 7.4 移动端后端开发 7.4.1 项目初始配置 7.4.1.1 SpringBoot配置 1. 创建application.yml文件 在web-app模块的src/main/resources目录下创建application.yml配置文件,内容如下: server:port: 80812. 创建SpringBoot启动类 在web-app…

FPGA视频GTH 8b/10b编解码转PCIE3.0传输,基于XDMA中断架构,提供工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我已有的 GT 高速接口解决方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图输入Sensor之-->芯片解码的HDMI视频数据组包基于GTH高速接口的视频传输架构GTH IP 简介GTH 基本结构GTH 发送和接收处理…

qt QFontDialog详解

1、概述 QFontDialog 是 Qt 框架中的一个对话框类,用于选择字体。它提供了一个可视化的界面,允许用户选择所需的字体以及相关的属性,如字体样式、大小、粗细等。用户可以通过对话框中的选项进行选择,并实时预览所选字体的效果。Q…

华为2288HV2服务器安装BCLinux8U6无法显示完整安装界面的问题处理

本文记录了华为2288HV2服务器安装BCLinux8U6无法显示完整安装界面,在安装过程中配置选择时,右侧安装按钮不可见,导致安装无法继续的问题处理过程。 一、问题现象 华为2288HV2服务器安装BCLinux8U6时无法显示完整的安装界面,问题…

人工智能技术的未来展望:变革行业、优化生活与工作方式的无限可能

文章目录 每日一句正能量前言人工智能技术的发展历程和现状人工智能的应用领域人工智能的前景 人工智能的未来1. AI技术的应用前景是乐观的2. AI技术的发展需要跨学科合作3. AI技术的伦理和隐私问题不容忽视4. AI技术可能带来的就业问题需要重视5. AI技术的发展需要全球合作6. …

【LuatOS】修改LuatOS源码为PC模拟器添加高精度时间戳库timeplus

0x00 缘起 LuatOS以及Lua能够提供微秒或者毫秒的时间戳获取工具,但并没有提供获取纳秒的工具。通过编辑LuatOS源码以及相关BSP源码,添加能够获取纳秒的timeplus库并重新编译,以解决在64位Windows操作系统中LuatOS模拟器获取纳秒的问题&#…

7.2 设计模式

设计模式 7.3.1 设计模式的要素7.3.2 创建型设计模式7.3.3 结构性设计模式1. Adapter (适配器)2. Bridge(桥接)3.Composite(组合)4.Decorator(装饰)5.Facade(外观)6.Flyweight(享元)7.Proxy(代理)8. 结构型模式比较 7.3.4 行为型设计模式1 Chain of Responsibility [ &#xff…

数字信号处理Python示例(6)使用指数衰减函数建模放射性衰变过程

文章目录 前言一、放射性衰变方程二、放射性衰变过程的Python仿真三、仿真结果分析写在后面的话 前言 使用指数衰减函数对放射性衰变进行了建模仿真,给出完整的Python仿真代码,并对仿真结果进行了分析。 一、放射性衰变方程 放射性衰变是一种自然现象&…