深度解析Nginx:高性能Web服务器的奥秘(下)

news2024/12/23 4:34:03

🐇明明跟你说过:个人主页

🏅个人专栏:《洞察之眼:ELK监控与可视化》🏅

🔖行路有良友,便是天堂🔖

目录

一、前言

1、Nginx概述 

二、Nginx核心功能

1、URL重写与重定向

2、反向代理

3、负载均衡

4、访问控制

5、SSL/TLS配置

三、Nginx模块讲解

1、HTTP模块

2、Stream模块

四、Nginx实际应用

1、Nginx在Web开发中的应用

2、Nginx在CDN中的应用 


一、前言

1、Nginx概述 

Nginx("engine x"的发音类似于"引擎 X")是一款高性能的开源Web服务器和反向代理服务器,由Igor Sysoev创建,并于2004年首次公开发布。它以其卓越的性能、高度的可靠性、简单的配置和低资源消耗而闻名。

以下是Nginx的概述:

  1. 高性能:Nginx以其高效的事件驱动架构而闻名,能够处理大量并发连接和高流量。它使用异步非阻塞I/O模型,有效地处理客户端请求,并且在高负载下表现优异。
  2. 反向代理:Nginx作为反向代理服务器时,可以接收客户端的请求并将其转发给后端服务器。它能够进行负载均衡、缓存静态内容、处理SSL终止等操作,提高了Web应用程序的性能和可靠性。
  3. 负载均衡:Nginx可以将请求分发给多个后端服务器,以实现负载均衡。通过配置不同的负载均衡算法,例如轮询、IP哈希、最少连接等,可以根据不同的需求实现请求的合理分发。
  4. 静态文件服务:Nginx非常擅长提供静态文件服务,能够高效地提供HTML、CSS、JavaScript、图像等静态内容,并且支持文件压缩和HTTP缓存等功能。
  5. 反向代理缓存:Nginx可以缓存后端服务器返回的响应,以减轻后端服务器的负载并提高响应速度。它支持不同类型的缓存,包括文件缓存、内存缓存和代理缓存等。
  6. HTTPS支持:Nginx支持SSL/TLS协议,能够进行HTTPS加密通信,并且支持SSL终止、SSL重定向、证书验证等功能,保障了Web应用程序的安全性。
  7. 简单配置:Nginx的配置文件采用简洁直观的语法,易于理解和维护。它支持模块化配置,可以通过加载不同的模块来扩展其功能,满足不同的需求。
  8. 高度可扩展:Nginx是一个模块化的Web服务器,可以通过加载不同的模块来扩展其功能,例如HTTP反向代理、负载均衡、缓存、安全性等。这使得Nginx可以根据不同的需求进行定制和扩展,适用于各种规模和类型的Web应用程序。

  

二、Nginx核心功能

1、URL重写与重定向

在 Nginx 中,URL 重写和重定向是常见的任务,用于处理客户端请求并将其发送到适当的位置。它们经常用于修改 URL 结构、处理旧 URL、执行 URL 路由等。

下面是 Nginx 中的 URL 重写和重定向的概念和用法:

URL 重写(URL Rewriting)

  • URL 重写是指修改客户端请求的 URL 路径,而不改变客户端看到的 URL。这个过程通常在 Nginx 的配置文件中通过 rewrite 指令来完成。URL 重写可以用于修改 URL 结构、处理错误的 URL 请求等。

例如,假设想要将所有 /old-url 的请求重写到 /new-url,可以使用如下配置:

location /old-url {
    rewrite ^/old-url/(.*)$ /new-url/$1 permanent;
}

  • 这个配置中的 rewrite 指令将匹配以 /old-url 开头的 URL,然后将其重写为以 /new-url 开头的 URL,并使用 permanent 关键字表示这是一个永久重定向。重定向后的 URL 将保留原始的查询参数。

 

URL 重定向(URL Redirection)

  • URL 重定向是指将客户端请求的 URL 重定向到另一个 URL 地址。这个过程会向客户端返回一个 HTTP 状态码(如 301 永久重定向或 302 临时重定向),告诉客户端要跳转到另一个 URL。
  • 在 Nginx 中,可以使用 return 指令或 rewrite 指令来实现 URL 重定向。

例如,要将所有访问根目录的请求重定向到一个新的域名,可以使用如下配置:
 

server {
    listen 80;
    server_name old-domain.com;

    location / {
        return 301 http://new-domain.com$request_uri;
    }
}

  • 这个配置中的 return 指令将所有访问 old-domain.com 根目录的请求重定向到 new-domain.com。

 

URL 重写用于修改 URL 路径,而 URL 重定向则用于将客户端请求重定向到另一个 URL 地址。这两个功能在 Nginx 中都有其独特的用途,可以根据需求选择合适的方法来处理请求。

2、反向代理

Nginx 反向代理是一种常见的用途,它允许 Nginx 接收来自客户端的请求,并将这些请求转发给后端的服务器或应用程序,然后将后端服务器的响应返回给客户端。这种方式可以隐藏后端服务器的实际 IP 地址和配置,并提供负载均衡、缓存、SSL 终端等功能。

下面是一个简单的 Nginx 反向代理配置示例:
 

server {
    listen 80;
    server_name your_domain.com;

    location / {
        proxy_pass http://backend_server;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}


在这个配置中:

  • listen 指令指定了 Nginx 监听的端口,这里是 80 端口,用于 HTTP 访问。
  • server_name 指令指定了你的域名。
  • location / 指令定义了处理客户端请求的位置。这里的配置表示当客户端访问网站时,Nginx 将会代理所有的请求。
  • proxy_pass 指令指定了后端服务器的地址,Nginx 会将客户端的请求转发给该地址。
  • proxy_set_header 指令用于设置 HTTP 请求头。在这个例子中,设置了 Host、X-Real-IP 和 X-Forwarded-For 头,用于传递客户端的真实 IP 地址和其他信息给后端服务器。

实际使用中,需要将 backend_server 替换为实际的后端服务器的地址,可以是 IP 地址或域名。此外,可能需要根据实际情况配置其他选项,例如 SSL 配置、缓存配置等。

通过这样的配置,Nginx 将充当反向代理,将客户端的请求转发给后端服务器,并将后端服务器的响应返回给客户端,从而实现了反向代理的功能。

3、负载均衡

Nginx 可以作为负载均衡器,用于将来自客户端的请求分发到多个后端服务器,以提高系统的性能、可用性和可扩展性。Nginx 提供了几种负载均衡算法,如轮询、IP Hash、最少连接等,可以根据需求选择适合的算法。

下面是一个简单的 Nginx 负载均衡配置示例:

http {
    upstream backend_servers {
        server 192.168.1.10;
        server 192.168.1.11;
        server 192.168.1.12;
    }

    server {
        listen 80;
        server_name your_domain.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;
        }
    }
}


在这个配置中:

  • upstream 指令定义了后端服务器的集群,其中包含了多个服务器的地址和端口。这些服务器可以是真实的后端服务器,也可以是代理服务器或其他类型的服务器。
  • server 指令定义了每个后端服务器的地址和端口。
  • listen 指令和 server_name 指令定义了 Nginx 监听的端口和服务器名。
  • location / 指令定义了处理客户端请求的位置。这里的配置表示当客户端访问网站时,Nginx 将会代理所有的请求给 upstream 中定义的后端服务器集群。
  • proxy_pass 指令将客户端的请求转发给后端服务器集群。
  • proxy_set_header 指令用于设置 HTTP 请求头,以传递客户端的真实 IP 地址和其他信息给后端服务器。

通过这样的配置,Nginx 将会根据负载均衡算法(默认是轮询算法)将客户端的请求分发到多个后端服务器上,从而实现了负载均衡的功能。可以根据实际需求配置更多的后端服务器,并根据需要选择适合的负载均衡算法。

4、访问控制

Nginx 提供了多种方法来实现访问控制,包括基于 IP 地址、基于用户身份、基于 HTTP 请求头等。这些方法可以帮助你限制访问某些资源,保护你的网站免受恶意攻击和未经授权的访问。

下面是几种常见的 Nginx 访问控制方法:

基于 IP 地址的访问控制


使用 allow 和 deny 指令可以实现基于 IP 地址的访问控制。你可以在 Nginx 配置文件中设置允许或拒绝访问的 IP 地址列表。

例如,下面的配置将允许来自指定 IP 地址范围的访问,拒绝其他所有 IP 地址的访问:

location / {
    allow 192.168.1.0/24;
    deny all;
}


基于 HTTP 请求头的访问控制
可以使用 if 指令结合 HTTP 请求头来实现更细粒度的访问控制。

例如,下面的配置将拒绝所有没有 Referer 请求头或者 Referer 不是指定域名的请求:

location / {
    if ($http_referer !~* (your-domain.com)) {
        return 403;
    }
}


基于用户身份的访问控制
如果应用程序需要用户登录,可以结合应用程序的身份验证机制来实现访问控制。

例如,下面的配置要求用户登录后才能访问网站的特定部分:

location /private {
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
}


在这个例子中,auth_basic 指令用于设置基本身份验证,auth_basic_user_file 指令指定了存储用户名和密码的文件路径。

5、SSL/TLS配置

配置 Nginx 的 SSL/TLS 是保护网站和用户数据安全的重要措施。SSL/TLS 配置包括证书的安装和使用,加密算法的选择,以及其他安全相关的设置。

以下是一个基本的 Nginx SSL/TLS 配置示例:

server {
    listen 443 ssl;
    server_name your_domain.com;

    ssl_certificate /path/to/your/certificate.crt;
    ssl_certificate_key /path/to/your/private.key;

    # 安全参数配置
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 10m;
    ssl_session_tickets off;
    ssl_stapling on;
    ssl_stapling_verify on;

    # 可选的安全性增强配置
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Frame-Options "SAMEORIGIN";
    add_header X-Content-Type-Options "nosniff";

    # 配置 SSL 会话的结束方式
    ssl_session_tickets off;

    location / {
        # 其他配置...
    }
}


在这个配置中:

  • listen 443 ssl; 指令表示该服务器块监听 443 端口,并启用 SSL/TLS 加密。
  • server_name 指令指定了你的域名。
  • ssl_certificate ssl_certificate_key 指令指定了 SSL 证书和私钥的路径,这两个文件是 SSL/TLS 加密的必要组件。
  • ssl_protocols 指令用于指定允许使用的 SSL/TLS 协议版本。
  • ssl_prefer_server_ciphers on; 指令表示优先使用服务器端定义的加密套件。
  • ssl_ciphers 指令定义了可用的加密算法套件。
  • ssl_session_cache 指令设置 SSL 会话缓存的大小和存储位置。
  • ssl_session_timeout 指令设置 SSL 会话的超时时间。
  • ssl_session_tickets 指令控制 SSL 会话票据的使用。
  • ssl_stapling ssl_stapling_verify 指令启用 OCSP Stapling 和 OCSP Stapling 验证。
  • add_header 指令用于添加额外的安全头,如 Strict-Transport-Security、X-Frame-Options 和 X-Content-Type-Options。

以上是一个基本的 SSL/TLS 配置示例,可以根据实际需求对其进行调整和扩展,以满足网站安全性和性能需求。

 

三、Nginx模块讲解

1、HTTP模块

Nginx 的 HTTP 模块是 Nginx 的核心模块之一,它处理 HTTP 请求和响应,并提供了丰富的功能和配置选项,包括反向代理、负载均衡、缓存、访问控制等。

以下是一些常用的 Nginx HTTP 模块及其功能:

  1. Core Module(核心模块):提供了基本的 HTTP 服务器功能,包括定义服务器块、监听端口、设置服务器名称等。例如,listen、server_name 等指令都属于核心模块。
  2. Access Module(访问模块):用于控制客户端对服务器的访问权限。包括 allow 和 deny 指令,可以根据客户端的 IP 地址或其他条件来允许或拒绝访问。
  3. Rewrite Module(重写模块):用于重写或修改 URL。提供了 rewrite 指令,可以根据匹配规则修改客户端请求的 URL。
  4. Proxy Module(代理模块):提供了反向代理功能,允许将客户端的请求转发给后端的服务器或应用程序。包括 proxy_pass、proxy_set_header 等指令。
  5. Load Balancing Module(负载均衡模块):用于将客户端的请求分发到多个后端服务器,以提高系统的性能和可用性。包括 upstream 和 server 指令。
  6. SSL Module(SSL 模块):提供了 SSL/TLS 加密功能,用于保护网站和用户数据的安全。包括 ssl_certificate、ssl_certificate_key 等指令。
  7. Headers Module(头部模块):用于添加、修改或删除 HTTP 请求和响应头。包括 add_header、more_set_headers 等指令。
  8. Gzip Module(压缩模块):用于压缩 HTTP 响应体,减小传输数据的大小,提高网站的加载速度。包括 gzip、gzip_types 等指令。
  9. Cache Module(缓存模块):用于缓存静态和动态内容,减轻后端服务器的负载,并提高响应速度。包括 proxy_cache、proxy_cache_key 等指令。

 

以上是一些常见的 Nginx HTTP 模块及其功能,可以根据需求在 Nginx 配置文件中使用这些模块和指令来实现各种功能。 Nginx 的模块化设计使得它可以灵活地适应不同的应用场景和需求。

2、Stream模块

Nginx 的 Stream 模块是 Nginx 的一个核心模块之一,用于处理 TCP 和 UDP 流量。与 HTTP 模块不同,Stream 模块不处理 HTTP 请求和响应,而是处理基于传输层协议的数据流,例如 TCP 连接、UDP 包等。Stream 模块通常用于实现反向代理、负载均衡、TCP/UDP 代理等网络层级别的功能。

以下是一些常见的 Nginx Stream 模块及其功能:

  1. Core Module(核心模块):提供了基本的 Stream 服务器功能,包括定义服务器块、监听端口等。与 HTTP 模块的核心模块类似。
  2. Proxy Module(代理模块):提供了 TCP 和 UDP 的反向代理功能,允许将客户端的 TCP/UDP 流量转发给后端的服务器或应用程序。包括 proxy_pass、proxy_set_header 等指令。
  3. Load Balancing Module(负载均衡模块):用于将客户端的 TCP/UDP 流量分发到多个后端服务器,以提高系统的性能和可用性。包括 upstream 和 server 指令。
  4. SSL Module(SSL 模块):提供了 TCP 的 SSL/TLS 加密功能,用于保护 TCP 连接的安全。包括 ssl_certificate、ssl_certificate_key 等指令。
  5. UDP Module(UDP 模块):用于处理 UDP 流量,可以实现 UDP 的反向代理、负载均衡等功能。Nginx 1.19.0 版本引入了对 UDP 的支持。

 

Stream 模块的使用方式与 HTTP 模块类似,你可以在 Nginx 配置文件中定义 Stream 服务器块,并在其中使用相应的指令来配置 TCP 或 UDP 的代理、负载均衡等功能。通过 Stream 模块,Nginx 可以成为一个功能强大的 TCP/UDP 代理服务器,可以处理各种类型的网络流量,并提供高性能和可靠性。

四、Nginx实际应用

1、Nginx在Web开发中的应用

Nginx 在 Web 开发中有许多应用,它是一个高性能的 Web 服务器和反向代理服务器,提供了许多功能和特性,适用于各种不同的 Web 开发场景。

以下是一些 Nginx 在 Web 开发中常见的应用:

  1. 静态文件服务: Nginx 可以作为一个高性能的静态文件服务器,用于提供网站的静态资源,如 HTML、CSS、JavaScript、图片等。它可以快速地响应静态文件的请求,并有效地缓存静态内容,提高网站的访问速度和性能。
  2. 反向代理: Nginx 可以作为反向代理服务器,将客户端的请求转发给后端的服务器或应用程序,并将后端服务器的响应返回给客户端。这种方式可以隐藏后端服务器的实际 IP 地址和配置,并提供负载均衡、高可用性、安全性等功能。
  3. 负载均衡: Nginx 可以作为负载均衡器,将客户端的请求分发到多个后端服务器上,以提高系统的性能和可用性。它支持多种负载均衡算法,如轮询、IP Hash、最少连接等,并可以根据服务器的健康状态进行动态调整。
  4. 缓存服务: Nginx 可以作为缓存服务器,缓存静态和动态内容,减轻后端服务器的负载,并提高响应速度。它支持内存缓存和磁盘缓存,并可以根据需要配置缓存规则和过期时间。
  5. SSL/TLS 终端: Nginx 支持 SSL/TLS 加密,可以用于安全地传输数据和保护用户隐私。它可以用作 SSL/TLS 终端,对客户端进行 SSL 握手,并在后端服务器之间使用非加密的 HTTP 或 HTTPS 连接。
  6. 反向 WebSocket 代理: Nginx 可以代理 WebSocket 请求,用于实现实时通信和双向数据传输。它支持 WebSocket 协议的代理和负载均衡,可以处理大量的并发连接。
  7. HTTP/2 支持: Nginx 支持 HTTP/2 协议,可以提供更快的网页加载速度和更低的延迟。它可以与现代的 Web 浏览器和服务器一起使用,以实现最新的 Web 性能优化。

2、Nginx在CDN中的应用 

在 CDN(内容分发网络)中,Nginx 是一个非常常见和重要的组件,它提供了多种功能和特性,用于优化内容分发、提高网站性能、加强安全性等。

以下是 Nginx 在 CDN 中的一些常见应用:

  1. 内容缓存: Nginx 可以作为 CDN 的缓存服务器,缓存静态和动态内容,如 HTML、CSS、JavaScript、图片、视频等。通过缓存静态内容,Nginx 可以减轻后端服务器的负载,并提高内容的访问速度和性能。
  2. 反向代理: Nginx 可以作为 CDN 的反向代理服务器,将客户端的请求转发给最近的缓存服务器或源服务器,并将响应返回给客户端。这种方式可以加速内容传输,提高网站的可用性和可靠性。
  3. 负载均衡: CDN 通常包含多个缓存节点,Nginx 可以作为负载均衡器,将客户端的请求分发到多个缓存节点上,以提高系统的性能和可用性。它支持多种负载均衡算法,如轮询、IP Hash、最少连接等,并可以根据节点的健康状态进行动态调整。
  4. SSL/TLS 终端: Nginx 支持 SSL/TLS 加密,可以用于安全地传输内容和保护用户隐私。在 CDN 中,Nginx 可以作为 SSL/TLS 终端,对客户端进行 SSL 握手,并在缓存节点之间使用非加密的 HTTP 或 HTTPS 连接。
  5. 内容压缩: Nginx 支持内容压缩,可以减小传输数据的大小,提高内容的传输速度和节省带宽。在 CDN 中,Nginx 可以压缩静态和动态内容,并提供 Gzip 压缩、Brotli 压缩等功能。
  6. 安全防护: Nginx 提供了丰富的安全特性,如访问控制、反向代理防护、DDoS 防护等。在 CDN 中,Nginx 可以用于防止恶意攻击、保护网站安全,并提供安全日志和监控功能。

 

💕💕💕每一次的分享都是一次成长的旅程,感谢您的陪伴和关注。希望这些关于Nginx的文章能陪伴您走过技术的一段旅程,共同见证成长和进步!😺😺😺

🧨🧨🧨让我们一起在技术的海洋中探索前行,共同书写美好的未来!!! 

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

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

相关文章

C语言易错提醒选择题精选

Ⅰ 易错题 1.设有double p;&#xff0c;为变量p声明一个引用名称rp,则定义语句为 double& rpp; 2.已知‘A’一‘Z’的ASCII码为65—90&#xff0c;当执行“char ch14*52&#xff1b;cout<<ch<<endl;”语句序列后得到的输出结H &#xff0c;72对应ASCII码中…

视觉SLAM十四讲:从理论到实践(Chapter3:三维空间刚体运动)

前言 学习笔记&#xff0c;仅供学习&#xff0c;不做商用&#xff0c;如有侵权&#xff0c;联系我删除即可 目标 理解三维空间的刚体运动描述方式&#xff1a;旋转矩阵、变换矩阵、四元数和欧拉角。掌握Eigen库的矩阵、几何模块的使用方法。 3.1 旋转矩阵 3.1.1 点、向量和…

详解xlsxwriter 操作Excel的常用API

我们知道可以通过pandas 对excel 中的数据进行处理分析&#xff0c;但是pandas本身对格式化数据方面提供了很少的支持&#xff0c;如果我们想对pandas进行数据分析后的数据进行格式化相关操作&#xff0c;我们可以使用xlsxwriter&#xff0c;本文就对xlsxwriter的常见excel格式…

一觉醒来 AI科技圈发生的大小事儿 05月13日

&#x1f4f3;博弈论让 AI 更加正确、高效&#xff0c;LLM 与自己竞争 研究团队设计了共识博弈&#xff0c;通过让语言模型的生成器和判别器相互博弈来提高模型的准确性和内部一致性。这种方法不需要对基础模型进行训练或修改&#xff0c;可以在笔记本电脑上快速执行。研究结果…

山洪灾害无线预警广播系统的主要设备和功能

一、背景 山洪泥石流是指在山区或者其他沟谷深壑&#xff0c;地形险峻的地区&#xff0c;因为暴雨、暴雪或其他自然灾害引发的洪水、山体滑坡并携带有大量泥沙以及石块的特殊洪流。山洪泥石流等地质灾害具有突然性以及流速快&#xff0c;流量大&#xff0c;物质容量大和破坏力…

C# SortedList 用法

文章目录 基本用法主要属性和方法注意事项 SortedList 的一些高级用法和注意事项。自定义排序规则线程安全性性能考量与其他集合的对比 SortedList 是 C# 中的一个集合类&#xff0c;它是一个键/值对集合&#xff0c;其中的键自动按顺序排序。这个类位于 System.Collections.G…

在Windows环境下安装CPU版的PyTorch

PytTorch是基于Python开发的&#xff0c;首先需要安装Python&#xff0c;Python的安装很简单&#xff0c;这里不再赘述。而 Windows用户能直接通过conda、pip和源码编译三种方式来安装PyTorch。 打开PyTorch官网&#xff08;PyTorch&#xff09;&#xff0c;在主页中根据自己的…

2024年NOC大赛创客智慧(西瓜创客)Python复赛编程真题模拟试卷包含答案

NOC复赛python模拟题 1.编写一个程序&#xff0c;提示用户输人一个矩形的长度和宽度&#xff0c;并输出其面积, 2.试计算在区间 1 到 n的所有整数中,数字x(0≤x≤9)共出现了多少次?例如在 1到11 中&#xff0c;即在 1,2,3.45,6.7,8.9,10,11 中&#xff0c;数字 1出现了 4 次.…

买货查窜货过程中的可能情况

控价除了要管控渠道中的低价、乱价链接外&#xff0c;还可能需要解决窜货问题&#xff0c;当窜货问题蔓延不及时解决时&#xff0c;渠道会越来越受影响&#xff0c;所以治理窜货也是控价过程中很重要的一步&#xff0c;窜货问题的治理多通过买货溯源来解决&#xff0c;买货要先…

关于LED的小事

基础知识 LED&#xff08;Light Emitting Diode&#xff09;是一种能够将电能转换为光能的发光二极管。LED的发明者是美国的物理学家罗伯特诺伊斯和化学家哈里贾斯特。LED的原理是利用半导体材料中的电子和空穴在禁带中产生复合&#xff0c;从而释放出光子&#xff0c;达到发光…

QLExpress入门及实战总结

文章目录 1.背景2.简介3.QLExpress实战3.1 基础例子3.2 低代码实战3.2.1 需求描述3.2.1 使用规则引擎3.3.2 运行结果 参考文档 1.背景 最近研究低代码实现后端业务逻辑相关功能&#xff0c;使用LiteFlow作为流程编排后端service服务, 但是LiteFlow官方未提供图形界面编排流程。…

深入 Go 语言:使用 math/rand 包实现高效随机数生成

深入 Go 语言&#xff1a;使用 math/rand 包实现高效随机数生成 介绍math/rand 包的核心功能设计哲学应用场景 基础使用方法初始化和种子设置设置种子创建私有随机数生成器 基础函数详解生成整数生成特定范围的整数生成浮点数随机置乱数组 进阶技巧随机数的统计属性生成正态分布…

背背佳卷土重来90天爆卖一个亿,这次盯上了成年人……

提起背背佳这三个字&#xff0c;除了00后不熟悉外&#xff0c;在座的柴油们应该没有陌生的吧&#xff01;不管你是90后&#xff0c;80后&#xff0c;还是70后&#xff0c;60后。 但是&#xff0c;似乎好多年&#xff0c;这三个字没出现过了。 但是这两天&#xff0c;背背佳这三…

嵌入式STM32中I2C控制器外设详解

STM32中的I2C外设主要负责IIC协议与外界进行通信,就像USART外设一样,我们在学习的过程中,需要抓住I2C应用的重点。 STM32在使用I2C协议时,可以通过两种方式, 一是软件模拟协议 意思是使用CPU直接控制通讯引脚的电平,产生出符合通讯协议标准的逻辑。例如,像点亮LED那样…

高并发系统设计-系统的“三高“目标

目录 一、高并发 1.高并发相关指标 2.如何提高并发能力 二、高并发的目标 1.高性能 2.高可用 3.高扩展 一、高并发 高并发&#xff08;High Concurrency&#xff09;是互联网分布式系统架构设计中必须考虑的因素之一&#xff0c;它通常是指&#xff0c;通过设计保证系统能…

实战6:线性回归电影票房预测-完整代码数据论文-可直接运行

直接看论文: 数据: 数据分析特征分析: 预测结果: 完整代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split

Docker 基础认识

文章目录 概念铺垫&#xff08;1&#xff09;概念铺垫&#xff08;2&#xff09;概念铺垫 &#xff08;3&#xff09;概念铺垫&#xff08;4&#xff09;Docker 定义Docker 特点Docker 架构 概念铺垫&#xff08;1&#xff09; 虚拟化相关概念 物理机&#xff1a;实际的服务器…

【人工智能Ⅱ】实验7:目标检测算法2

实验7&#xff1a;目标检测算法2 一&#xff1a;实验目的与要求 1&#xff1a;了解一阶段目标检测模型-YOLOv3模型的原理和结构. 2&#xff1a;学习通过YOLOv3模型解决目标检测问题。 二&#xff1a;实验资源 pytorch代码各文件夹内容介绍 1. data_loader.py&#xff1a;能…

【Kali Linux工具篇】wpscan的基本介绍与使用

介绍 WPScan是Kali Linux默认自带的一款漏洞扫描工具&#xff0c;它采用Ruby编写&#xff0c;能够扫描WordPress网站中的多种安全漏洞&#xff0c;其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞&#x…

LeetCode 力扣题目:买卖股票的最佳时机 III

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…