运维系列.Nginx配置文件结构功能总结

news2024/10/6 12:28:14
运维系列
Nginx配置文件结构功能总结

- 文章信息 - Author: 李俊才 (jcLee95)
Visit me at CSDN: https://jclee95.blog.csdn.net
My WebSitehttp://thispage.tech/
Email: 291148484@163.com.
Shenzhen China
Address of this article:https://blog.csdn.net/qq_28550263/article/details/140242979
HuaWei:https://bbs.huaweicloud.com/blogs/430555

【介绍】:本文介绍了Nginx配置文件中的结构,简要介绍了各个主要部分的功能。

在这里插入图片描述


1. 概述

1.1 Nginx配置文件的作用

Nginx是一款高性能的Web服务器和反向代理服务器,其强大的功能和灵活的配置主要依赖于其配置文件。Nginx配置文件的作用包括:

  1. 定义Nginx服务器的运行参数,如工作进程数、连接超时时间等。
  2. 配置Nginx服务器的网络设置,如监听端口、服务器名称等。
  3. 设置Nginx服务器的路由规则,控制请求的转发和处理。
  4. 配置Nginx服务器的缓存、压缩、安全等功能,优化性能和安全性。
  5. 实现负载均衡、反向代理等高级功能,提高应用的可扩展性和可用性。

Nginx配置文件是Nginx服务器的核心,通过灵活的配置,可以实现各种强大的功能,满足不同的应用需求。

1.2 Nginx主配置文件nginx.conf的位置

Nginx的主配置文件是nginx.conf,其默认位置因操作系统而异:

  • Linux系统:

    • /etc/nginx/nginx.conf
    • /usr/local/nginx/conf/nginx.conf
  • Windows系统:

    • C:\nginx\conf\nginx.conf
  • macOS系统(通过Homebrew安装):

    • /usr/local/etc/nginx/nginx.conf

除了主配置文件,Nginx还允许使用include指令引入其他配置文件,以实现配置的模块化和复用。在实际应用中,可以根据需要将不同的配置划分到不同的文件中,提高配置的可读性和可维护性。

2. Nginx配置文件的整体结构

2.1 全局配置块

全局配置块位于nginx.conf文件的最顶层,包含影响Nginx服务器整体运行的配置指令。这些指令在Nginx启动时被解析,并应用于所有的模块。

以下表格列出了全局配置块中的主要指令:

指令语法作用示例
useruser user [group];指定Nginx工作进程运行的用户和用户组user nginx;
worker_processesworker_processes number | auto;定义Nginx启动的工作进程数worker_processes auto;
error_logerror_log file [level];指定错误日志文件的位置和日志级别error_log /var/log/nginx/error.log warn;
pidpid file;设置存储主进程ID的文件路径pid /var/run/nginx.pid;
worker_rlimit_nofileworker_rlimit_nofile number;设置工作进程可以打开的最大文件描述符数量worker_rlimit_nofile 65535;
load_moduleload_module file;动态加载Nginx模块load_module modules/ngx_http_geoip_module.so;

全局配置块的示例:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_rlimit_nofile 65535;

load_module modules/ngx_http_geoip_module.so;

这些全局配置指令对Nginx的整体性能和行为有重要影响。下表总结了一些常见的配置建议:

指令配置建议
worker_processes通常设置为CPU核心数,或使用"auto"让Nginx自动检测
worker_rlimit_nofile根据系统资源和预期并发连接数设置,通常设置较高值如65535
error_log根据需要调整日志级别,生产环境通常使用"warn"或"error"

在实际配置时,应根据服务器硬件资源和具体应用需求来调整这些参数,以优化Nginx的资源使用,提高服务器的性能和稳定性。

2.2 events配置块

events配置块用于配置Nginx的事件处理机制,影响Nginx处理连接的方式。它通常位于全局配置块之后,http配置块之前。

主要指令包括:

指令语法作用示例
worker_connectionsworker_connections number;设置每个工作进程的最大并发连接数worker_connections 1024;
useuse method;指定事件驱动模型use epoll;
multi_accept`multi_accept onoff;`是否一次接受多个新连接
accept_mutex`accept_mutex onoff;`是否开启负载均衡锁

一个events配置块示例如下:

events {
    worker_connections 1024;
    use epoll;
    multi_accept on;
    accept_mutex on;
}

配置说明:

  • worker_connections:根据服务器硬件资源和预期并发量设置。
  • use:在Linux系统上,推荐使用epoll。
  • multi_accept:开启可提高高并发下的性能,但可能增加系统负载。
  • accept_mutex:通常保持开启,可以减少工作进程之间的竞争。

2.3 http配置块

http配置块是Nginx配置中最复杂和最重要的部分,包含了与HTTP服务相关的所有配置。

2.3.1 http配置块的基本结构

http {
    # 基本设置
    include       mime.types;
    default_type  application/octet-stream;

    # 日志设置
    log_format  main  '$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  main;

    # 性能优化设置
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    keepalive_timeout  65;
    types_hash_max_size 2048;

    # Gzip压缩
    gzip  on;
    gzip_disable "msie6";

    # 包含其他配置文件
    include /etc/nginx/conf.d/*.conf;

    # 服务器块
    server {
        # 服务器配置
    }
}

2.3.2 主要指令说明

指令作用示例
include包含其他配置文件include mime.types;
default_type设置默认的MIME类型default_type application/octet-stream;
log_format定义日志格式log_format main '...';
access_log设置访问日志的路径和格式access_log /var/log/nginx/access.log main;
sendfile启用sendfile系统调用来发送文件sendfile on;
tcp_nopush优化数据包的发送tcp_nopush on;
tcp_nodelay禁用Nagle算法tcp_nodelay on;
keepalive_timeout设置keep-alive连接的超时时间keepalive_timeout 65;
types_hash_max_size设置类型哈希表的最大大小types_hash_max_size 2048;
gzip启用gzip压缩gzip on;

2.3.3 性能优化建议

  1. 启用sendfiletcp_nopush以提高文件传输效率。
  2. 根据实际需求调整keepalive_timeout
  3. 合理配置Gzip压缩,可以显著减少传输数据量。
  4. 使用include指令分割配置文件,提高可维护性。

http配置块是Nginx配置的核心,其中包含了多个server块,每个server块定义了一个虚拟主机。在实际配置中,应根据具体需求调整这些参数,以优化服务器性能和资源利用。

2.4 mail配置块(可选)

mail配置块是Nginx的一个可选功能,用于配置Nginx作为邮件代理服务器。这个功能需要在编译Nginx时包含mail模块。mail配置块通常位于http配置块之后,与http配置块平级。

2.4.1 mail配置块的基本结构

mail {
    server_name mail.example.com;
    auth_http localhost:8008/auth-smtp;

    server {
        listen     25;
        protocol   smtp;
        proxy      on;
    }

    server {
        listen     110;
        protocol   pop3;
        proxy      on;
    }

    server {
        listen     143;
        protocol   imap;
        proxy      on;
    }
}

2.4.2 主要指令说明

指令作用示例
server_name设置邮件服务器的名称server_name mail.example.com;
auth_http指定用于身份验证的HTTP服务器auth_http localhost:8008/auth-smtp;
protocol指定邮件协议(smtp, pop3, imap)protocol smtp;
proxy启用邮件代理功能proxy on;
proxy_pass指定上游邮件服务器proxy_pass 192.168.1.100:25;
ssl启用SSL/TLS加密ssl on;
starttls启用STARTTLS命令支持starttls on;

2.4.3 配置说明和最佳实践

  1. 身份验证

    • auth_http指令指向一个HTTP服务器,用于验证用户身份。这个服务器需要自行实现。
  2. 协议支持

    • 可以为不同的邮件协议(SMTPPOP3IMAP)配置不同的server块。
  3. SSL/TLS加密

    • 建议为所有邮件服务启用SSL/TLS加密,以保护用户数据:

      server {
          listen     993 ssl;
          protocol   imap;
          ssl_certificate     /path/to/cert.pem;
          ssl_certificate_key /path/to/cert.key;
      }
      
  4. 上游服务器

    • 使用proxy_pass指定实际处理邮件的上游服务器:

      server {
          listen     25;
          protocol   smtp;
          proxy_pass 192.168.1.100:25;
      }
      
  5. 日志配置

    • 可以为邮件服务配置单独的访问日志:

      mail {
          access_log /var/log/nginx/mail.access.log;
      }
      

2.4.4 使用场景

  1. 负载均衡Nginx可以作为邮件服务的前端代理,将请求分发到多个后端邮件服务器。

  2. SSL终止Nginx可以处理SSL/TLS加密,减轻后端服务器的负担。

  3. 协议转换:可以在客户端和服务器之间进行协议转换,例如将POP3转换为IMAP

  4. 安全过滤:可以集成第三方模块,实现垃圾邮件过滤等功能。

2.4.5 注意事项

  • mail模块是可选的,需要在编译Nginx时明确包含。
  • 配置邮件服务需要考虑安全性,建议始终使用SSL/TLS加密。
  • 需要正确配置DNS记录(MX记录),以便邮件能够正确路由到Nginx服务器。

mail配置块使Nginx能够作为功能强大的邮件代理服务器,但其配置相对复杂,需要谨慎规划和测试。在大多数情况下,除非有特殊需求,否则通常会使用专门的邮件服务器软件(如PostfixDovecot等)来处理邮件服务。

3. 配置指令的语法和参数

3.1 指令的基本语法

Nginx配置文件中的指令遵循一定的语法规则,接下来将对这些语法规则展开介绍。

3.1.1 基本语法结构

Nginx配置指令的基本语法结构如下:

指令名 参数1 参数2 ... 参数N;

注意事项:

  1. 每个指令都以分号(;)结尾。
  2. 指令名和参数之间,以及参数之间使用空格分隔。
  3. 指令对大小写敏感。

3.1.2 指令上下文

Nginx的指令可以在不同的上下文中使用,主要包括:

  • 主上下文(Main Context
  • events上下文
  • http上下文
  • server上下文
  • location上下文
  • mail上下文(如果启用)

某些指令只能在特定上下文中使用,而有些指令可以在多个上下文中使用。例如:

# 主上下文
user nginx;

http {
    # http上下文
    gzip on;

    server {
        # server上下文
        listen 80;

        location / {
            # location上下文
            root /usr/share/nginx/html;
        }
    }
}

3.1.3 指令继承

子上下文会继承父上下文的配置,除非在子上下文中明确重写。例如:

http {
    gzip on;

    server {
        # 继承http上下文的gzip配置
        location /api/ {
            # 重写gzip配置
            gzip off;
        }
    }
}

3.2 常用指令参数说明

3.2.1 listen指令

listen指令用于配置服务器监听的IP地址和端口。

语法:

listen address[:port] [default_server] [ssl] [http2] [proxy_protocol] [setfib=number] [fastopen=number] [backlog=number];

参数说明:

  • address: IP地址,可以是具体IP*(表示所有地址)
  • port: 端口号,默认为80
  • default_server: 将此server块标记为默认服务器
  • ssl: 启用SSL/TLS
  • http2: 启用HTTP/2协议
  • proxy_protocol: 启用代理协议

示例:

listen 80;
listen 443 ssl http2;
listen 192.168.1.1:8080 default_server;

3.2.2 server_name指令

server_name指令用于设置虚拟主机的域名。

语法:

server_name name1 [name2 ...];

参数说明:

  • name:可以是精确的域名、通配符域名或正则表达式

示例:

server_name example.com www.example.com;
server_name *.example.com;
server_name ~^www\d+\.example\.com$;

3.2.3 location指令

location指令用于配置如何处理特定的URI。

语法:

location [ = | ~ | ~* | ^~ ] uri { ... }

参数说明:

  • =:精确匹配
  • ~:区分大小写的正则匹配
  • ~*:不区分大小写的正则匹配
  • ^~:前缀匹配,优先级高于正则匹配

示例:

location = / {
    # 精确匹配"/"
}

location ~* \.(gif|jpg|jpeg)$ {
    # 匹配以.gif、.jpg或.jpeg结尾的请求
}

location /documents/ {
    # 匹配以/documents/开头的请求
}

3.2.4 proxy_pass指令

proxy_pass指令用于设置代理服务器的协议和地址。

语法:

proxy_pass URL;

参数说明:

  • URL:可以是HTTP(S)协议的URL,也可以是Unix域套接字路径

示例:

proxy_pass http://backend;
proxy_pass http://192.168.0.1:8080/api/;
proxy_pass unix:/tmp/backend.socket:/uri/;

3.2.5 fastcgi_pass指令

fastcgi_pass指令用于设置FastCGI服务器的地址。

语法:

fastcgi_pass address;

参数说明:

  • address:可以是IP地址和端口,也可以是Unix域套接字路径

示例:

fastcgi_pass localhost:9000;
fastcgi_pass unix:/tmp/php-fpm.socket;

3.2.6 root和alias指令

rootalias指令用于设置请求映射到服务器文件系统的路径。

语法:

root path;
alias path;

参数说明:

  • path:服务器上的文件系统路径

示例:

root /var/www/html;
alias /var/www/static/;

主要区别:

  • root会将完整的URI附加到指定路径后
  • alias只替换匹配的部分

3.2.7 index指令

index指令用于指定默认索引文件。

语法:

index file1 [file2 ...];

参数说明:

  • file:索引文件名

示例:

index index.html index.htm index.php;

这些是Nginx中一些常用指令的基本语法和参数说明。在实际配置中,可能还需要根据具体需求使用更多的指令和参数。理解这些基本语法和参数有助于更好地配置和优化Nginx服务器。

4. ★配置文件中的变量使用

Nginx配置文件中的变量使用是一个强大的特性,它允许我们动态地处理请求和响应。变量可以用于日志格式重写规则条件判断等多个方面。

Nginx中的变量分为两大类:内置变量自定义变量。接下来我们将使用讲个小节来对应介绍这两类变量的用法。

4.1 内置变量

Nginx提供了大量的内置变量,这些变量包含了请求、响应、服务器等相关的信息。

4.1.1 常用内置变量

以下是一些常用的内置变量:

变量名描述
$request_method请求方法(GETPOST等)
$request_uri完整的原始请求URI
$uri当前请求的URI(可能经过重写)
$query_string请求的查询字符串
$remote_addr客户端IP地址
$server_name匹配上的服务器名
$server_port服务器端口
$server_protocol服务器的HTTP版本(HTTP/1.0HTTP/1.1等)
$http_user_agent客户端User-Agent
$http_referer请求的Referer
$request_time请求处理时间,单位为秒,精确到毫秒
$status响应状态码
$body_bytes_sent发送给客户端的字节数,不包括响应头
$nginx_versionNginx版本

4.1.2 使用内置变量

内置变量可以在多个Nginx指令中使用,例如:

  1. 在日志格式中:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                '$status $body_bytes_sent "$http_referer" '
                '"$http_user_agent" "$http_x_forwarded_for"';
  1. 在条件判断中:
if ($request_method = POST) {
    return 405;
}
  1. 在重写规则中:
rewrite ^/old-page$ /new-page permanent;
  1. 在响应头中:
add_header X-Served-By $hostname;

4.2 自定义变量

除了内置变量,Nginx还允许我们定义和使用自定义变量,这为配置提供了更大的灵活性。

4.2.1 定义自定义变量

使用set指令可以定义自定义变量:

set $variable_name value;

例如:

set $mobile_rewrite do_not_perform;

if ($http_user_agent ~* "(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino") {
    set $mobile_rewrite perform;
}

if ($mobile_rewrite = perform) {
    rewrite ^ /mobile$uri redirect;
}

4.2.2 使用自定义变量

自定义变量可以在配置文件的多个地方使用,包括:

  1. 在location块中:
location / {
    set $foo "bar";
    return 200 $foo;
}
  1. 在if语句中:
if ($request_uri ~* "^/special") {
    set $special_uri "true";
}

if ($special_uri = "true") {
    # 执行特殊处理
}
  1. 在rewrite指令中:
set $weekend "No";
if ($date_local ~ "Saturday|Sunday") {
    set $weekend "Yes";
}
rewrite ^/is-it-weekend /weekend.php?answer=$weekend last;

4.2.3 变量的作用域

自定义变量的作用域通常是请求级别的,这意味着:

  • 每个请求都有自己的变量集合。
  • 变量在请求处理的整个生命周期内有效。
  • 不同请求之间的变量是相互独立的。

4.2.4 变量使用的注意事项

  1. 变量名区分大小写。
  2. 使用未定义的变量不会导致错误,而是返回空字符串。
  3. 某些模块(如ngx_http_rewrite_module)会在配置加载时评估变量,而不是在运行时。
  4. 过度使用变量可能会影响性能,特别是在高并发场景下。

4.2.5 实际应用示例

  1. 根据客户端IP设置变量:
set $country "unknown";

if ($geoip_country_code = "US") {
    set $country "USA";
}

if ($geoip_country_code = "GB") {
    set $country "United Kingdom";
}

proxy_set_header X-Country $country;
  1. 根据时间设置缓存策略:
map $time_iso8601 $cache_expiry {
    default         1h;
    ~^2023-12-       5m;  # December 2023
    ~^2023-11-       15m; # November 2023
}

expires $cache_expiry;
  1. 动态设置上游服务器:
set $backend "default_backend";

if ($request_uri ~* ^/api/) {
    set $backend "api_backend";
}

if ($http_user_agent ~* "googlebot") {
    set $backend "bot_backend";
}

proxy_pass http://$backend;

通过灵活使用内置变量和自定义变量,我们可以创建更加动态和智能的Nginx配置,以适应各种复杂的场景和需求。

5. ★配置文件的模块化和复用

随着Nginx配置的复杂性增加,将配置文件模块化并实现配置的复用变得越来越重要。这不仅可以提高配置的可读性和可维护性,还能减少重复代码,降低错误率。本节将介绍如何使用include指令实现配置文件的模块化,以及如何组织和管理配置片段。

5.1 include指令的使用

include指令是Nginx配置文件模块化的核心。它允许将其他配置文件包含到主配置文件中,从而实现配置的分割和复用。

5.1.1 include指令的语法量

include file | mask;
  • file:指定要包含的配置文件的路径。
  • mask:使用通配符指定要包含的多个配置文件。

5.1.2 include指令的使用场景

  1. 分割主配置文件

    # 在nginx.conf中
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  2. 复用通用配置

    # 在server块中
    include /etc/nginx/snippets/ssl-params.conf;
    
  3. 按功能组织配置

    # 在http块中
    include /etc/nginx/mime.types;
    include /etc/nginx/proxy.conf;
    include /etc/nginx/fastcgi.conf;
    

5.1.3 include指令的注意事项

  1. 路径可以是绝对路径或相对路径(相对于主配置文件)。
  2. 可以使用通配符(*)包含多个文件。
  3. 被包含的文件必须有正确的Nginx配置语法。
  4. 包含的顺序很重要,后面的配置可能会覆盖前面的配置。

5.2 配置片段的组织和管理

合理组织和管理配置片段可以大大提高Nginx配置的可维护性。

5.2.1 配置片段的分类

  1. 全局配置:影响整个Nginx服务器的设置。
  2. HTTP配置:与HTTP服务相关的通用设置。
  3. 服务器配置:特定虚拟主机的配置。
  4. 位置配置:特定URI位置的处理规则。
  5. 功能模块:特定功能(如SSL、缓存、压缩等)的配置。

5.2.2 配置文件的目录结构

推荐的目录结构:

/etc/nginx/
├── nginx.conf
├── conf.d/
│   ├── default.conf
│   └── example.com.conf
├── snippets/
│   ├── ssl-params.conf
│   └── proxy-params.conf
├── sites-available/
│   ├── example.com
│   └── subdomain.example.com
└── sites-enabled/
    └── example.com -> ../sites-available/example.com
  • nginx.conf:主配置文件
  • conf.d/:存放额外的配置文件
  • snippets/:存放可复用的配置片段
  • sites-available/:存放所有的网站配置
  • sites-enabled/:存放已启用的网站配置(通常是符号链接)

5.2.3 配置片段的命名约定

  • 使用描述性的名称,如ssl-params.conf, php-fpm.conf
  • 对于网站配置,使用域名作为文件名,如example.com.conf
  • 使用一致的文件扩展名,通常是.conf

5.2.4 配置片段的版本控制

Nginx配置文件纳入版本控制系统(如Git)是一个好习惯:

  1. 跟踪配置的变更历史。
  2. 便于回滚到之前的配置。
  3. 便于团队协作和配置审查。

5.2.5 配置片段的示例

  1. SSL参数配置 (snippets/ssl-params.conf):

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    
  2. 代理参数配置 (snippets/proxy-params.conf):

    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;
    proxy_buffering on;
    proxy_buffer_size 128k;
    proxy_buffers 4 256k;
    proxy_busy_buffers_size 256k;
    
  3. PHP-FPM配置 (snippets/php-fpm.conf):

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }
    
  4. 网站服务器配置 (sites-available/example.com):

    server {
        listen 80;
        server_name example.com www.example.com;
        root /var/www/example.com;
    
        include snippets/ssl-params.conf;
        include snippets/php-fpm.conf;
    
        location / {
            try_files $uri $uri/ /index.php?$query_string;
        }
    }
    

5.2.6 最佳实践

  1. 保持主配置文件(nginx.conf)简洁,主要用于全局设置和包含其他配置文件。
  2. 将常用的配置片段(如SSL参数、代理设置)放在snippets目录中。
  3. 为每个网站创建单独的配置文件,放在sites-available目录中。
  4. 使用符号链接将启用的网站配置从sites-available链接到sites-enabled
  5. 使用include指令时,尽量指定完整的文件路径,避免使用过于宽泛的通配符。
  6. 定期审查和清理未使用的配置文件。
  7. 在应用新的配置之前,始终使用nginx -t命令检查配置的语法。

通过合理使用include指令和组织配置片段,可以使Nginx的配置更加模块化、可维护和可复用。这不仅可以提高配置的效率,还能减少错误,使得管理大型和复杂的Nginx部署变得更加容易。

6. 总结

Nginx配置文件的结构和组织对于有效管理和使用Web服务器十分重要。本文是一个总结,详细介绍了Nginx配置文件的各个方面,前面的内容主要包括以下几点:

  1. 配置文件的整体结构:介绍了全局配置块、events块、http块等主要组成部分,以及它们的作用和常用指令。

  2. 指令语法和参数:解释了Nginx配置指令的基本语法规则,以及一些常用指令的参数含义和使用方法。

  3. 变量使用:讨论了Nginx内置变量和自定义变量的使用,这为创建动态和灵活的配置提供了基础。

  4. 配置的模块化和复用:介绍了如何使用include指令实现配置的模块化,以及如何组织和管理配置片段,提高配置的可维护性。

希望这些总结对你有所帮助。

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

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

相关文章

2024年6月总结 | 软件开发技术月度回顾(第一期)

最新技术资源(建议收藏) https://www.grapecity.com.cn/resources/ Hello,大家好啊!随着欧洲杯和奥运会的临近,2024 年下半年的序幕也随之拉开。回顾 2024 年上半年的技术圈,我们看到了一系列令人振奋的进展…

快手大模型首次集体亮相 获《焦点访谈》报道关注

7月6日,2024世界人工智能大会暨人工智能全球治理高级别会议在上海闭幕。 据央视《焦点访谈》报道,今年的大会展览持续扩容升级,展览规模、参展企业数、亮点展品数、首发新品数均创历史新高。大会聚焦大模型、算力、机器人、自动驾驶等重点领域,集中展示了一批“人工智能”创新…

(南京观海微电子)——电阻应用及选取

什么是电阻? 电阻是描述导体导电性能的物理量,用R表示。 电阻由导体两端的电压U与通过导体的电流I的比值来定义,即: 所以,当导体两端的电压一定时,电阻愈大,通过的电流就愈小;反之&…

从零开始学习网络安全渗透测试之Linux基础篇——(二)Linux的安装

从零开始学习网络安全渗透测试之Linux基础篇——(二)Linux的安装 一、 VMWare安装 首先,我们需要下载vmware的安装包。 下载 一般我们推荐15或者16的版本,太低的版本可能跟一些新的操作系统镜像不兼容。 vmware16注册.zip 链接&…

Angular基础保姆级教程 - 1

Angular 基础总结(完结版) 1. 概述 Angular 是一个使用 HTML、CSS、TypeScript 构建客户端应用的框架,用来构建单页应用程序。 Angular 是一个重量级的框架,内部集成了大量开箱即用的功能模块。 Angular 为大型应用开发而设计…

第3章.中央服务器的物联网模式--企业系统集成

为了从物联网实施中获得最大价值,物联网系统需要与企业中的现有软件系统集成。事实上,与外部系统的集成允许网络世界和物理世界之间的交互——代表物理世界的物联网系统和驻留在网络/虚拟世界中的外部系统。用于此模式的符号如下图所示: 图3.…

【高录用、快检索、过往5届均已检索、SPIE 出版】第六届无线通信与智能电网国际会议(ICWCSG 2024)

随着科技的飞速发展和能源需求的日益增长,智能电网技术逐渐成为电力行业的重要发展方向。与此同时,无线通信技术在近年来也取得了显著的进步,为智能电网的发展提供了强有力的支持。为了进一步推动无线通信与智能电网的结合与发展,…

微软拼音输入法不显示选字框问题

问题展示:不显示选字框 解决方式 打开兼容性即可(估计是升级带来的bug)

Oracle RAC 19c 打补丁至最新版本-19.23.0.0.0

实验环境-我是从19.0.0.0直接打到19.23.0.0.0,适合刚部署好的集群打补丁直接到最新版本。 查看当前环境 查询集群中运行的 Oracle Clusterware 软件的 activex 版 查询本地节点上二进制文件中存储的 Oracle Clusterware 软件的版本 查询本地服务器上 OHAS 和 Oracle…

Redis数据结构解析-RedisObject

文章目录 ☃️概述☃️源码 ☃️概述 RedisObject 是 Redis 中表示数据对象的结构体,它是 Redis 数据库中的基本数据类型的抽象。在 Redis 中,所有的数据都被存储为 RedisObject 类型的对象。 RedisObject 结构体定义如下(简化版本&#xf…

七大排序-冒泡排序,插入排序,希尔排序(一)

目录 排序冒泡排序插入排序冒泡排序和插入排序的对比希尔排序 排序 先写单趟,再写多趟,这样比较好写 排序可以理解为对商品价格的排序,对数字大小的排序,排序再生活中随处可见 冒泡排序 冒泡排序就是两个相邻的数交换&#xff…

Java+MySQL8.0.36+ElementUI数字化产科信息管理系统之”五色管理”

JavaMySQL8.0.36ElementUI数字化产科信息管理系统之”五色管理” 一、数字化产科信息管理系统概述 数字化产科信息管理五色管理是一种基于孕产妇妊娠风险的分类管理方法,通过数字化手段实现孕产妇全周期的健康风险评估与管理。该方法将孕产妇按照风险等级分为绿色、…

初识STM32:芯片基本信息

STM32简介 STM32是ST公司基于ARM公司的Cortex-M内核开发的32位微控制器。 ARM公司是全球领先的半导体知识产权(IP)提供商,全世界超过95%的智能手机和平板电脑都采用ARM架构。 ST公司于1987年由意大利的SGS微电子与法国的Thomson半导体合并…

LeetCode题练习与总结:直线上最多的点数--149

一、题目描述 给你一个数组 points ,其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 示例 1: 输入:points [[1,1],[2,2],[3,3]] 输出:3示例 2: 输入:points [[1,…

蚁剑编码器编写——上篇

参考 AwesomeEncoder 以第一个为例 木马 <?php eval(base64_decode($_POST[ant]));?>获取ant参数内容&#xff0c;然后base64解码后运行 编码器 let randomID _0x${Math.random().toString(16).substr(2)}; data[randomID] new Buffer(data[_]).toString(base64)…

前端八股文 说一下盒模型

网页中任何一个元素都可以视为一个盒子&#xff0c;由里到外&#xff0c;盒模型包括外边界&#xff08;margin&#xff09;、边框&#xff08;border&#xff09;、内边界&#xff08;padding&#xff09;和内容&#xff08;content&#xff09;。 盒模型基本分为3种&#xff1…

高可用hadoop分布式节点的扩容

解决方案 修改hdfs-site.xml 文件 原xml文件 <?xml version"1.0" encoding"UTF-8"?> <?xml-stylesheet type"text/xsl" href"configuration.xsl"?> <!--Licensed under the Apache License, Version 2.0 (th…

基于vue的3D高德地图的引入

在引入高德地图的时候需要先注册一个账号 登录下面的网站 账号认证 | 高德控制台 (amap.com) 打开首页应用管理&#xff0c;我的应用 创建新的应用 根据自己的需求进行选择 创建完成之后&#xff0c;点击添加key 不同的服务平台对应不同的可使用服务&#xff0c;选择自己适…

微信小程序毕业设计-医院挂号预约系统项目开发实战(附源码+论文)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;微信小程序毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计…

webrtc gcc详解

webrtc的gcc算法(Google Congestion Control)&#xff0c;貌似国内很多文章都没有细讲&#xff0c;原理是怎么样的&#xff0c;具体怎么进行计算的。这里详解一下gcc。 gcc算法&#xff0c;主要涉及到&#xff1a; 拥塞控制的关键信息和公式 卡曼滤波算法 gcc如何使用卡曼滤…