web服务基础介绍

一、Web服务核心流程
客户端Web服务器应用处理HTTP请求 (Request)请求处理生成响应HTTP响应 (Response)客户端Web服务器应用处理
二、互联网发展里程碑

关键事件时间轴

1994-01-011996-01-011998-01-012000-01-012002-01-012004-01-012006-01-012008-01-01第一根专线开通 中国黄页上线 阿里巴巴创立 淘宝网上线 支付宝创立 双十一启动 里程碑中国互联网发展历程
三、Web服务器演进

Apache工作模式对比

模式并发处理方式优点缺点适用场景
Prefork多进程(select)稳定可靠高内存消耗低并发场景
Worker多进程+多线程内存占用少Keepalive资源浪费中等并发
Event事件驱动(epoll)高并发性能无线程安全控制高并发长连接场景

Nginx核心优势

# Nginx典型应用架构示例
http {upstream app_servers {server 10.0.0.101:8080 weight=5;server 10.0.0.102:8080;}server {listen 80;server_name example.com;# 静态资源直返location ~* \.(jpg|css|js)$ {root /data/static;expires 30d;}# 动态请求代理location /api {proxy_pass http://app_servers;proxy_set_header X-Real-IP $remote_addr;}}
}
四、用户体验关键指标

性能影响研究数据

  1. 8秒定律:页面加载>8秒 → 30%用户放弃
  2. 亚马逊:延迟100ms → 1%交易损失
  3. Google:延迟500ms → 20%流量下降
  4. 79%用户不会再次访问慢速网站
  5. 40%用户在3秒延迟后离开

性能影响因素矩阵

用户体验
客户端因素
服务端因素
硬件配置
网络速率
地理距离
网络带宽
硬件性能
架构设计
并发处理
五、服务端I/O深度解析

磁盘I/O性能计算

# 机械磁盘IOPS计算公式
def calculate_iops(rpm):seek_time = 9  # 7200RPM寻址时间(ms)rotational_latency = 60000 / rpm / 2  # 旋转延迟total_latency = seek_time + rotational_latencyreturn 1000 / total_latencyprint(f"7200RPM磁盘IOPS: {calculate_iops(7200):.1f}")  # 75.9
print(f"15000RPM磁盘IOPS: {calculate_iops(15000):.1f}") # 166.6

网络I/O处理流程

  1. 请求接收:TCP三次握手建立连接
  2. 数据处理
    • 内核空间 → 用户空间数据拷贝
    • 应用层请求处理
  3. 响应返回
    • 用户空间 → 内核空间拷贝
    • 内核 → 网卡传输
六、I/O模型演进

五种I/O模型对比

I/O模型
阻塞I/O
非阻塞I/O
多路复用I/O
信号驱动I/O
异步I/O
进程挂起等待
轮询消耗CPU
select/poll/epoll
内核信号通知
全程无阻塞

Epoll核心优势代码解析

// Epoll高效实现原理
int epoll_create(int size);  // 创建epoll实例struct epoll_event {uint32_t events;    // EPOLLIN/EPOLLOUT等epoll_data_t data;  // 用户数据
};// 注册监控事件
epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &event);// 等待事件就绪
int n = epoll_wait(epfd, events, MAX_EVENTS, timeout);
for (int i = 0; i < n; i++) {process_event(events[i]); // 仅处理活跃连接
}
七、零拷贝技术

传统vs零拷贝对比

传统方式
4次拷贝
2次CPU切换
零拷贝
2次拷贝
0次CPU切换

sendfile实现原理

http {sendfile on;  # 启用零拷贝tcp_nopush on; # 优化包传输server {location /largefile {# 直接内核空间到网卡传输sendfile_max_chunk 1m; # 分块传输}}
}
八、关键性能公式
  1. 并发连接计算

    最大并发 = worker_processes × worker_connections
    
  2. 文件描述符限制

    # 系统级限制检查
    cat /proc/sys/fs/file-max# 进程级限制设置
    worker_rlimit_nofile 65535;
    
  3. Keepalive优化

    http {keepalive_timeout 65 60;  # 服务器超时65s,客户端60skeepalive_requests 1000;  # 单连接最大请求数
    }
    

二:Nginx架构和安装

2.1 Nginx概述
  1. Nginx介绍

    • Nginx(engine X)由俄罗斯开发者Igor Sysoev于2002年创建,分为社区版和商业版(Nginx Plus)。
    • 2019年被F5 Networks以6.7亿美元收购。
    • 核心功能:高性能HTTP/HTTPS反向代理服务器、邮件代理服务器、TCP/UDP代理服务器,解决C10K问题(单机10万并发连接)。
    • 官网:http://nginx.org
  2. 二次发行版

    • Tengine:淘宝基于Nginx开发的增强版,支持大流量场景(如淘宝、天猫)。
      • 官网:http://tengine.taobao.org
    • OpenResty:集成Lua脚本的高性能Web平台(章亦春团队开发)。
      • 官网:http://openresty.org/cn
  3. 功能介绍

    • 静态资源服务器(HTML/图片/JS/CSS)。
    • HTTP/HTTPS反向代理。
    • 动态资源代理(FastCGI/uWSGI/SCGI)。
    • TCP/UDP请求转发。
    • IMAP4/POP3邮件代理。
  4. 基础特性

    • 模块化设计,高扩展性。
    • 高可靠性,支持热部署(不停机更新配置/版本)。
    • 低内存消耗:1万keep-alive连接仅需2.5MB内存。
    • 事件驱动模型(epoll)、异步I/O、零拷贝(sendfile)。
  5. Web服务功能

    • 虚拟主机(server块)。
    • 支持keep-alive和管道连接复用。
    • 访问日志定制、URL重写、路径别名。
    • IP/用户访问控制、速率/并发限制。

2.2 Nginx架构和进程
  1. 进程结构

    • Master进程
      • 管理Worker进程,加载配置、绑定端口、平滑升级。
      • 接收外部信号(如reload/stop),监控Worker状态(异常时自动重启)。
    • Worker进程
      • 实际处理请求(平等、独立),数量建议等于CPU核心数。
      • 功能:接收请求、I/O调用、缓存查询、响应结果。
    Master进程
    Worker 1
    Worker 2
    Worker N
    处理HTTP请求
    FastCGI调用
    访问缓存
  2. 进程间通信

    • Master与Worker:通过单向管道传递指令(如进程ID、文件描述符)。
    • Worker之间:依赖Master中转信息,或通过共享内存(如upstream zone)通信。
  3. HTTP连接建立

    • Master初始化监听Socket → fork多个Worker → Worker竞争接受新连接(避免惊群)。
    • 与传统多进程/多线程模型对比:
      • 传统:每连接独占线程,资源消耗大。
      • Nginx:单线程处理多连接(事件驱动),高效复用资源。
  4. HTTP处理流程

    1. 接收请求 → 解析请求行/头 → 匹配Server块
    2. URL重写 → IP访问控制 → 生成响应
    3. 内容处理 → 日志记录 → 返回数据
    

2.3 Nginx模块介绍
  • 核心模块:进程管理、错误日志、配置文件解析(ngx_core_module)。
  • 标准HTTP模块:端口配置、编码设置、响应头控制(ngx_http_core_module)。
  • 可选HTTP模块:SSL支持、压缩、GeoIP解析(需编译时启用)。
  • 邮件模块:POP3/IMAP/SMTP协议支持(ngx_mail_module)。
  • Stream模块:TCP/UDP反向代理(ngx_stream_module)。
  • 第三方模块:JSON/Lua扩展(如OpenResty)。

模块分类图

核心模块 → HTTP模块 → 邮件模块 → Stream模块 → 第三方模块

2.4 Nginx安装
  1. 版本选择

    • Mainline:开发版(奇数版本,如1.19)。
    • Stable:稳定版(偶数版本,如1.20)。
    • Legacy:旧稳定版(如1.18)。
  2. 编译安装步骤

    # 1. 安装依赖
    dnf install gcc pcre-devel zlib-devel openssl-devel -y
    useradd -s /sbin/nologin -M nginx# 2. 解压并编译
    tar zxf nginx-1.24.0.tar.gz
    cd nginx-1.24.0
    ./configure \--prefix=/usr/local/nginx \--user=nginx --group=nginx \--with-http_ssl_module \     # 启用HTTPS--with-http_v2_module \      # HTTP/2支持--with-http_realip_module \  # 客户端真实IP透传--with-stream \              # TCP/UDP代理--with-pcre                  # 正则支持# 3. 安装
    make && make install
    
  3. 目录结构

    • conf/:配置文件(核心:nginx.conf)。
    • html/:默认Web资源(可更改路径)。
    • logs/:日志(访问日志/错误日志/PID文件)。
    • sbin/:可执行文件(nginx命令)。
  4. 验证与命令

    # 查看版本
    /usr/local/nginx/sbin/nginx -v# 测试配置
    nginx -t# 启停命令
    nginx -s reload  # 重载配置
    nginx -s quit    # 优雅停止
    
  5. Systemd服务文件

    [Unit]
    Description=The NGINX HTTP Server
    After=network.target[Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/bin/kill -s QUIT $MAINPID[Install]
    WantedBy=multi-user.target
    
    systemctl daemon-reload
    systemctl start nginx
    

2.5 平滑升级与回滚
  1. 升级流程

    用户NginxNginx Master新Master旧Worker旧Master发送USR2信号重命名pid为nginx.pid.oldbin启动新进程(旧Master子进程)发送WINCH信号(平滑停止)发送QUIT信号(关闭)用户NginxNginx Master新Master旧Worker旧Master
  2. 操作示例

    # 1. 备份旧二进制文件
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old# 2. 编译新版本(仅make不install)
    cd nginx-1.26.1
    ./configure [参数同旧版]
    make# 3. 替换二进制文件
    cp -f objs/nginx /usr/local/nginx/sbin/# 4. 触发升级
    kill -USR2 旧Master_PID     # 启动新Master
    kill -WINCH 旧Master_PID     # 关闭旧Worker# 5. 验证后清理旧Master
    kill -QUIT 旧Master_PID
    
  3. 回滚步骤

    # 1. 恢复旧二进制文件
    mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx# 2. 重启旧Worker
    kill -HUP 旧Master_PID# 3. 关闭新Master
    kill -WINCH 新Master_PID
    kill -QUIT 新Master_PID
    

关键点

  • 升级时新旧进程并存,旧进程处理存量请求。
  • 回滚需确保旧配置兼容性。

Nginx 核心配置详解


3.1 配置文件结构与说明

核心组成
  1. 主配置文件nginx.conf
  2. 子配置文件:通过 include conf.d/*.conf 加载
  3. MIME类型文件mime.types(定义文件扩展名与类型的映射)
  4. 其他协议配置:如 fastcgi_params(FastCGI参数)
配置文件格式规则
  • 指令以分号 ; 结尾,指令与值间用空格分隔。
  • 指令块用 {} 组织,可嵌套(如 httpserverlocation)。
  • 使用 # 添加注释,$ 引用变量。
  • 支持正则表达式(如 location 匹配)。
主配置文件结构
# 全局配置段(main block)
user nginx nginx;                      # 运行用户和组
worker_processes auto;                 # 工作进程数(推荐 = CPU核心数)
error_log /var/log/nginx/error.log;    # 错误日志路径
pid /run/nginx.pid;                    # PID文件路径# 事件驱动配置(event block)
events {worker_connections 1024;           # 单个工作进程最大并发连接数use epoll;                         # 事件驱动模型(Linux推荐epoll)
}# HTTP协议配置(http block)
http {include mime.types;                # 导入MIME类型文件default_type application/octet-stream; # 默认MIME类型sendfile on;                       # 启用零拷贝传输keepalive_timeout 65;              # 长连接超时时间# 虚拟主机配置(server block)server {listen 80;                     # 监听端口server_name example.com;        # 域名root /var/www/html;             # 网站根目录# URL路径匹配(location block)location / {index index.html;          # 默认首页}}# 可扩展配置:mail、stream等
}

3.2 全局配置详解

关键指令
指令作用示例
worker_processes工作进程数(推荐设为CPU核心数)worker_processes 4;
worker_cpu_affinity绑定进程到CPU核心(减少上下文切换)worker_cpu_affinity 0001 0010;
error_log错误日志路径和级别error_log logs/error.log warn;
worker_rlimit_nofile进程最大打开文件数worker_rlimit_nofile 65535;
events.use事件驱动模型(Linux用epolluse epoll;
优化配置示例
user nginx nginx;
worker_processes auto;
worker_cpu_affinity auto;
error_log /var/log/nginx/error.log error;
pid /run/nginx.pid;
worker_rlimit_nofile 100000;events {worker_connections 65535;use epoll;multi_accept on;  # 一次接受多个连接
}

3.3 HTTP块核心配置

基础指令
指令作用示例
include导入其他配置文件include conf.d/*.conf;
default_type默认MIME类型(未知文件类型)default_type text/plain;
sendfile启用零拷贝传输(提升静态文件性能)sendfile on;
keepalive_timeout长连接超时时间keepalive_timeout 30s;
虚拟主机配置(Server Block)
server {listen 80;                          # 监听端口server_name www.example.com;         # 域名(支持通配符)root /data/web/html;                # 网站根目录access_log /var/log/nginx/access.log; # 访问日志路径# 错误页面定制error_page 404 /404.html;error_page 500 502 503 504 /50x.html;
}

3.4 Location块深度解析

匹配规则与优先级
符号匹配规则优先级示例
=精确匹配最高location = /logo.png { ... }
^~前缀匹配(不检查正则)location ^~ /static/ { ... }
~正则匹配(区分大小写)location ~ \.php$ { ... }
~*正则匹配(不区分大小写)`location ~* .(jpg
无符号通用前缀匹配location / { ... }
root vs alias
  • root:路径 = root + location
    location /images/ {root /data/web;  # 文件路径:/data/web/images/logo.png
    }
    
  • alias:路径 = alias 替换 location
    location /static/ {alias /data/files/;  # 访问/static/1.txt → /data/files/1.txt
    }
    

3.5 高级配置实战

1. 账户认证
location /admin {auth_basic "Admin Area";                     # 认证提示文字auth_basic_user_file /etc/nginx/.htpasswd;   # 密码文件路径
}

生成密码文件:

htpasswd -c /etc/nginx/.htpasswd admin
2. 自定义错误页面
error_page 404 /404.html;
location = /404.html {root /data/web/errors;internal;  # 禁止直接访问
}
3. 文件下载服务
location /download {autoindex on;                   # 启用目录列表autoindex_localtime on;         # 显示服务器本地时间limit_rate 1024k;               # 限速 1MB/s
}
4. 长连接优化
http {keepalive_timeout 30s;          # 长连接超时keepalive_requests 1000;        # 单连接最大请求数
}
5. 防盗链配置
location ~* \.(jpg|png)$ {valid_referers none blocked *.example.com;if ($invalid_referer) {return 403;                 # 非法引用返回403}
}

3.6 配置调试技巧

  1. 语法检查
    nginx -t
    
  2. 热重载配置
    nginx -s reload
    
  3. 查看版本与编译参数
    nginx -V
    

关键提示

  • 修改配置后务必用 nginx -t 测试语法。
  • 生产环境建议使用 include 拆分配置(如 conf.d/*.conf)。
  • 避免在 location 中使用 if 进行复杂判断(影响性能)。

nginx的高级配置

4.1 Nginx 状态页

  • 功能:监控服务器全局状态(非虚拟主机)。
  • 依赖模块ngx_http_stub_status_module(编译时需添加 --with-http_stub_status_module)。
  • 配置示例
    location /nginx_status {stub_status;                  # 启用状态页auth_basic "Auth Login";       # 基础认证auth_basic_user_file /usr/local/nginx/conf/.htpasswd;allow 192.168.0.0/16;          # 访问控制allow 127.0.0.1;deny all;
    }
    
  • 输出指标解析
    • Active connections:当前活动连接数(含 Reading + Writing + Waiting)。
    • accepts:Nginx 启动后接受的客户端请求总数。
    • handled:已处理的请求数(通常等于 accepts)。
    • requests:客户端发送的总请求数。
    • Reading:正在读取请求头的连接数(值高可能需优化性能)。
    • Writing:正在发送响应的连接数(反映并发压力)。
    • Waiting:空闲连接数(开启 keep-alive 时有效)。

4.2 Nginx 压缩功能

  • 功能:减少传输体积,提升加载速度(消耗 CPU 资源)。
  • 依赖模块ngx_http_gzip_module(默认内置)。
  • 关键配置指令
    gzip on;                          # 启用压缩
    gzip_comp_level 4;                # 压缩级别(1-9,建议4-5)
    gzip_min_length 1k;               # 最小压缩文件大小
    gzip_types text/css application/xml text/javascript; # 压缩文件类型
    gzip_vary on;                     # 响应头添加 `Vary: Accept-Encoding`
    
  • 适用场景:文本文件(HTML/CSS/JS/XML),图片视频类文件效果有限。

4.3 Nginx 版本隐藏

  • 安全优化:避免暴露版本信息被利用。
  • 修改方法
    1. 编辑 Nginx 源码文件 src/core/nginx.h
      #define NGINX_VERSION "1.0"     // 自定义版本号
      #define NGINX_VER "HAHA/" NGINX_VERSION  // 自定义服务器标识
      
    2. 重新编译安装 Nginx。

4.4 Nginx 变量使用

  • 内置变量:直接调用
    • $remote_addr:客户端 IP
    • $request_uri:原始请求 URI(含参数)
    • $scheme:请求协议(HTTP/HTTPS)
  • 自定义变量
    location /test {set $name "timinglee";        # 定义变量echo $name;                   # 输出变量值
    }
    

五、Nginx Rewrite 相关功能

5.1 ngx_http_rewrite_module 模块指令
  1. if 指令

    • 作用:条件匹配,根据结果执行不同配置。
    • 语法
      if (条件) { ... }
      
    • 匹配规则
      • = / !=:字符串相等/不等
      • ~ / ~*:正则匹配(区分/不区分大小写)
      • !-e / !-f:文件或目录不存在
    • 示例
      location /test {if (!-e $request_filename) {return 404 "File not found";}
      }
      
  2. set 指令

    • 作用:定义变量。
    • 示例
      set $name "timinglee";
      echo $name;  # 输出 "timinglee"
      
  3. break 指令

    • 作用:终止当前作用域内后续的 rewrite 指令。
    • 示例
      location /break {set $name lee;break;          # 后续 set 指令不执行set $port 80;   # 被跳过
      }
      
  4. return 指令

    • 作用:直接返回响应码或重定向。
    • 示例
      location /return {return 301 https://$host$request_uri;  # 永久重定向到 HTTPS
      }
      

5.2 rewrite 指令
  • 语法
    rewrite regex replacement [flag];
    
  • 常用 Flags
    Flag作用适用场景
    last重写后重新匹配 location多次重写
    break终止当前重写,继续非 rewrite 指令单次重写
    redirect临时重定向(302)测试环境
    permanent永久重定向(301)生产环境域名变更
实战案例
  1. HTTPS 自动跳转

    server {listen 80;if ($scheme = http) {rewrite ^ https://$host$request_uri permanent; }
    }
    
  2. 旧域名重定向

    rewrite ^/old-url(.*)$ http://new.timinglee.org$1 permanent;
    
  3. 动静分离资源重写

    location ~* \.(jpg|css)$ {rewrite ^/static/(.*) /resources/$1 break;  # 重写静态资源路径
    }
    

六、高级功能

6.1 防盗链配置
  • 原理:校验 Referer 头,阻止非授权站点资源盗用。
  • 配置示例
    location ~* \.(jpg|png)$ {valid_referers none blocked *.timinglee.org;if ($invalid_referer) {return 403 "Access Forbidden";}
    }
    
6.2 缓存加速
  1. Proxy Cache 配置

    proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m max_size=10g;
    server {location / {proxy_cache mycache;proxy_cache_valid 200 302 10m;  # 缓存200/302响应10分钟proxy_pass http://backend;}
    }
    
  2. 效果对比

    • 未启用缓存:请求处理耗时 0.514s
    • 启用 Memcached:耗时降至 0.452s
    • 启用 srcache + Memcached:进一步降至 0.255s

七、Nginx 二次开发版本

7.1 OpenResty
  • 核心价值:通过 Lua 脚本扩展 Nginx,实现动态逻辑(如 API 网关、自定义认证)。
  • 安装步骤
    ./configure --prefix=/apps/openresty --with-http_ssl_module
    make && make install
    
  • 基础示例(Lua 输出):
    location /hello {content_by_lua_block {ngx.say("Hello, OpenResty!")}
    }
    

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

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

相关文章

_init__.py的作用

目录 场景1:没有 `__init__.py` 的情况 场景2:有 `__init__.py` 并导入模块 场景3:用 `__all__` 定义"推荐工具" 注意:工具箱内部的工具互相调用 情况1:在 `__init__.py` 中导入模块 情况2:在 `__init__.py` 中直接导入模块里的功能 关键原则 在 Python 中,__…

浏览器面试题及详细答案 88道(12-22)

《前后端面试题》专栏集合了前后端各个知识模块的面试题&#xff0c;包括html&#xff0c;javascript&#xff0c;css&#xff0c;vue&#xff0c;react&#xff0c;java&#xff0c;Openlayers&#xff0c;leaflet&#xff0c;cesium&#xff0c;mapboxGL&#xff0c;threejs&…

开发避坑指南(23):Tomcat高版本URL特殊字符限制问题解决方案(RFC 7230 RFC 3986)

异常信息 java.lang.IllegalArgumentException: 在请求目标中找到无效字符[/order/show?orderType01&orderTitle0xe50x8f0xa30xe50xb20xb80xe50x8a0xa80xe60x800x81&pageNum1 ]。有效字符在RFC 7230和RFC 3986中定义org.apache.coyote.http11.Http11InputBuffer.parse…

HTTPS的应用层协议

HTTPS的应用层协议 方案 5 - 非对称加密 对称加密 证书认证 在客户端和服务器刚一建⽴连接的时候, 服务器给客户端返回一个 证书&#xff0c;证书包含了之前服务端的公钥, 也包含了网站的身份信息. 客户端进行认证 当客户端获取到这个证书之后, 会对证书进行校验(防止证书是伪…

【SpringBoot】05 容器功能 - SpringBoot底层注解的应用与实战 - @Configuration + @Bean

文章目录前言一、创建两个组件二、使用传统方式源代码解释三、使用SpringBoot方法源代码解释四、查看是否添加到组件中查看自定义组件名配置类在容器中注册的是单实例组件配置类本身也是容器中的一个组件Configuration的proxyBeanMethods属性&#xff1a;代理bean的方法proxyBe…

c#联合Halcon进行OCR字符识别(含halcon-25.05 百度网盘)

1.下载安装halcon 通过网盘分享的文件&#xff1a;halcon-25.05.0.0-x64-win64 链接: https://pan.baidu.com/s/1XAx-8ZQM-ZHkgHIc-dhCYw 提取码: whek 2.c#环境配置 创建test_halcon_ocr项目 找到halcon的安装路径 我的&#xff1a; D:\halcon\HALCON-25.05-Progress\bin\x64…

丝杆支撑座怎样助力升降设备实现智能化?

丝杆支撑座作为传动系统中的关键支撑部件&#xff0c;凭借其高刚性、抗冲击及精准定位能力&#xff0c;广泛应用于重型机械与升降设备领域&#xff0c;为设备提供稳定可靠的轴向承载与径向支撑&#xff0c;确保高负荷工况下的安全运行。电梯 / 升降平台&#xff1a;液压电梯的辅…

Notta:高效智能的音频转文字工具

本文转载自&#xff1a;Notta&#xff1a;高效智能的音频转文字工具 - Hello123 ** 一、产品简介 Notta 是一款基于 AI 语音识别引擎的语音转文字工具&#xff0c;支持 58 种语言的转录和 42 种语言的翻译。用户可通过实时录音或上传音频 / 视频文件&#xff08;如 MP3、WAV …

Docker私有仓库创建及Docky存储与网络配置(小白的“升级打怪”成长之路)

目录 一、Docker私有仓库创建 1、在一台安装Docker私有仓库的主机上添加docker-compose 命令 2、安装docker-ce服务 3、Docker 镜像加速 4、安装Harbor仓库 5、使用脚本安装仓库 6、网站登陆 7、客户端使用Harbor仓库 二、Docky存储与网络配置 1、存储与网络 挂载主机…

谷歌ADK接入文件操作MCP

文章目录MCP基础概念文件操作服务器文件操作MCP接入谷歌ADK项目创建多轮对话代码MCP基础概念 MCP技术体系中&#xff0c;会将外部工具运行脚本称作服务器&#xff0c;而接入这些外部工具的大模型运行环境称作客户端。 一个客户端可以接入多个不同类型的服务器&#xff0c;但都…

高光谱技术的独特优势

高光谱技术凭借其‌纳米级连续光谱采集能力‌和‌图谱合一的探测模式‌&#xff0c;在多个领域展现出不可替代的独特优势&#xff1a;一、光谱维度&#xff1a;精细物质指纹识别‌纳米级连续光谱解析‌ 通过 ‌5-10nm带宽的数百个连续波段‌&#xff08;最高330个通道&#xff…

基于Vue+Element UI集成高德地图的完整实践指南

本次开发使用deepseek 简直如虎添翼得心应手 生成模拟数据、解决报错那真是嘎嘎地 在 Vue Element UI 项目中引入高德地图 具体实现步骤&#xff1a; 高德开放平台&#xff1a;注册账号 → 进入控制台 → 创建应用 → 获取 Web端(JS API)的Key https://lbs.amap.com/ 这里需要…

Day50--图论--98. 所有可达路径(卡码网),797. 所有可能的路径

Day50–图论–98. 所有可达路径&#xff08;卡码网&#xff09;&#xff0c;797. 所有可能的路径 刷今天的内容之前&#xff0c;要先去《代码随想录》网站&#xff0c;先看完&#xff1a;图论理论基础和深度优先搜索理论基础。做完之后可以看题解。有余力&#xff0c;把广度优先…

Python 异常捕获

一、获取未知错误try:# 相关处理逻辑 异常后面输出print(输入信息……) except Exception as e:print(未知错误,e)二、获取已知错误except 错误单词&#xff08;来源于错误信息的第一个单词&#xff09;多个已知错误使用 except XXXXX:try:# 相关处理逻辑 异常后面输出print…

RIOT、RT-Thread 和 FreeRTOS 是三种主流的实时操作系统

RIOT、RT-Thread 和 FreeRTOS 是三种主流的实时操作系统&#xff08;RTOS&#xff09;&#xff0c;专为嵌入式系统和物联网&#xff08;IoT&#xff09;设备设计。它们在架构、功能、生态和应用场景上有显著差异&#xff0c;以下是详细对比&#xff1a;1. 架构与设计理念特性RI…

【FAQ】Win11创建资源不足绕开微软账号登录

Win11安装资源限制 因为 Windows 11 有两项强制检测 VMware 8 默认没提供&#xff1a; TPM 2.0&#xff08;可信平台模块&#xff09;Secure Boot&#xff08;安全启动&#xff09; 一步到位解决办法&#xff08;官方兼容方式&#xff09; 关闭虚拟机电源编辑虚拟机设置 选项 →…

Docker使用----(安装_Windows版)

一、Docker Docker 镜像就像是一个软件包&#xff0c;里面包括了应用程序的代码、运行所需的库和工具、配置文件等等&#xff0c;所有这些都打包在一起&#xff0c;以确保应用程序在不同的计算机上运行时&#xff0c;都能保持一致性。 可以把 Docker 镜像想象成一个软件安装文件…

91、23种经典设计模式

设计模式是软件设计中反复出现的解决方案的模板&#xff0c;用于解决特定问题并提高代码的可维护性、可扩展性和可复用性。23种经典设计模式可分为创建型、结构型和行为型三大类&#xff0c;以下是具体分类及模式概述&#xff1a; 一、创建型模式&#xff08;5种&#xff09; 关…

Illustrator总监级AI魔法:一键让低清logo变矢量高清,彻底告别手动描摹!

在海外从事设计十几年&#xff0c;我敢说&#xff0c;每个设计师都经历过一种“史诗级”的折磨&#xff1a;客户发来一个像素低得感人、边缘模糊不清的JPG格式Logo&#xff0c;然后要求你把它用在巨幅海报或者高清视频上。这意味着什么&#xff1f;意味着我们要打开Illustrator…

各种 dp 刷题下

6.#8518 杰瑞征途 / 洛谷 P4072 征途 题意 Pine 开始了从 SSS 地到 TTT 地的征途。从 SSS 地到 TTT 地的路可以划分成 nnn 段&#xff0c;相邻两段路的分界点设有休息站。Pine 计划用 mmm 天到达 TTT 地。除第 mmm 天外&#xff0c;每一天晚上 Pine 都必须在休息站过夜。所以…