Nginx处理http的流程
文章目录
- 前言
- 一、发版本后旧版本可以用
- 项目基本情况
- Nginx 配置
- **解释每一行的作用:**
- **表现和行为:**
- **适用场景**:
- 资源的缓存策略
- 在这里插入图片描述
- 二, nginx处理http的流程
- Nginx 的 GitHub 源码地址
- **Nginx 核心源码解读(HTTP 处理流程)**
- **1. Nginx 处理 HTTP 请求的完整流程**
- **2. Nginx 处理 HTTP 请求的核心源码**
- **3. HTTP 请求解析:`ngx_http_request.c`**
- **关键结构体:`ngx_http_request_t`**
- **3.1 解析 HTTP 请求行**
- **3.2 解析 HTTP 头**
- **4. 匹配 Server/Location:`ngx_http_core_module.c`**
- **4.1 解析 `server {}`**
- **4.2 解析 `location {}`**
- **5. 处理 HTTP 请求 Handler**
- **6. 发送 HTTP 响应**
- **7. Nginx HTTP 请求完整流程**
- **8. 经典优化**
- ✅ **优化 Worker**
- ✅ **开启 `sendfile`**
- ✅ **启用 Gzip**
- **总结**
前言
一、发版本后旧版本可以用
发版本后旧版本可以用,需要手动刷新后才可获取新版本。
项目基本情况
版本配置:
vue :" ^3.2.25"
vite : “^3.1.0”
element-plus: “^2.1.7”
vite.config.js
export default ({ command, mode }: ConfigEnv): UserConfig => {return {plugins: [vue(),vueJsx({}),AutoImport({resolvers: [ElementPlusResolver()]}),Components({resolvers: [ElementPlusResolver()]}),createSvgIconsPlugin({// 需要缓存的文件夹iconDirs: [resolve(process.cwd(), 'src/assets/svgs')],// 指定symbolIdsymbolId: 'icon-[dir]-[name]'})],build: {},}
}
Nginx 配置
# 禁用 /pc/index.html 缓存location /pc/index.html {expires -1; # 不缓存add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";add_header Pragma "no-cache";add_header Expires "0";}
在 Nginx 配置中设置 location /mobile/index.html
来禁用缓存,具体来说,配置如下:
location /mobile/index.html {expires -1; # 不缓存add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";add_header Pragma "no-cache";add_header Expires "0";
}
解释每一行的作用:
-
expires -1;
- 该指令会禁用对
/pc/index.html
文件的缓存。expires -1
表示资源过期时间设置为负值,浏览器会认为该资源立即过期。
- 该指令会禁用对
-
add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0";
no-store
:要求浏览器不要缓存任何响应内容。no-cache
:即使缓存了该资源,也要求浏览器每次都向服务器验证资源是否更新(即使是缓存的资源也不能直接使用,必须验证)。must-revalidate
:在缓存过期后,必须向服务器验证缓存的有效性。proxy-revalidate
:在代理缓存过期后,必须验证缓存的有效性。max-age=0
:表示资源的最大有效时间为 0 秒。即使缓存了该文件,也需要每次请求都重新验证。
-
add_header Pragma "no-cache";
Pragma: no-cache
是 HTTP/1.0 中用于禁用缓存的指令,虽然它现在已经较少使用,但为了兼容老旧的 HTTP/1.0 客户端,它仍然添加。
-
add_header Expires "0";
- 这表示
Expires
头部设置为0
,使得资源立即过期。Expires
是 HTTP/1.0 中用来指定资源过期时间的字段,设置为0
等同于禁止缓存。
- 这表示
表现和行为:
-
浏览器行为:
- 当用户访问
/pc/index.html
时,浏览器将不会缓存该文件,每次请求时都会向服务器发起新的请求。 - 浏览器会每次请求时验证该文件是否有更新,服务器每次返回
index.html
文件时都会重新加载,而不使用缓存中的文件。
- 当用户访问
-
代理缓存:
- 如果该请求通过代理(例如 CDN 或缓存代理),代理也会被指示不缓存该资源。即便代理缓存了该文件,也会在缓存过期后重新验证文件的有效性。
-
确保文件每次都重新请求:
- 这种配置主要用于动态文件,确保用户始终获取到最新版本的文件,而不被浏览器或代理缓存。
适用场景:
这种配置适用于你希望某些页面 始终从服务器获取最新版本,而不依赖于浏览器缓存的情况。例如:
- 动态生成的页面(如登录页、用户界面等)。
- 某些特殊的
index.html
页面,其中包含根据请求而动态变化的内容或配置。
该配置会 完全禁用 /mobile/index.html
的缓存,确保浏览器每次访问时都从服务器重新获取该文件,无论文件内容是否发生变化。
资源的缓存策略
二, nginx处理http的流程
Nginx 的 GitHub 源码地址
Nginx 的官方源码托管在 GitHub 和 官方 Mercurial 仓库:
GitHub 镜像(非官方维护,仅同步):
nginx
官方 Mercurial(hg)仓库:
http://hg.nginx.org/nginx/
Nginx 核心源码解读(HTTP 处理流程)
Nginx 作为高性能 Web 服务器,采用 事件驱动 + 多进程架构,核心 HTTP 处理流程涉及 请求解析、匹配 location、调用模块处理请求、返回响应。
1. Nginx 处理 HTTP 请求的完整流程
当一个 HTTP 请求到达 Nginx 时,Nginx 主要执行以下 6 个阶段:
阶段 | 作用 |
---|---|
1. 接收请求 | accept() 监听连接,创建 ngx_connection_t 结构体 |
2. 解析请求 | 解析 GET /index.html HTTP/1.1 ,存储在 ngx_http_request_t 结构体 |
3. 匹配 Server/Location | 根据 server_name 和 location 规则,找到相应的配置 |
4. 执行 HTTP 过滤模块 | 例如 rewrite , access , gzip 等模块 |
5. 选择 Handler 处理请求 | 例如 ngx_http_static_module 处理静态文件,ngx_http_proxy_module 代理请求 |
6. 发送响应 | 发送 200 OK 响应头,返回 HTML/JSON/静态文件 |
2. Nginx 处理 HTTP 请求的核心源码
Nginx 处理 HTTP 请求的核心代码主要在:
src/http/ngx_http_request.c
(请求解析)src/http/ngx_http_core_module.c
(匹配server
和location
)src/http/ngx_http_handler.c
(调用不同的 handler)src/http/ngx_http_output_filter.c
(返回 HTTP 响应)
3. HTTP 请求解析:ngx_http_request.c
📌 作用:
- 解析 HTTP 请求行(
GET /index.html HTTP/1.1
) - 解析 HTTP 头部(
Host
、User-Agent
等) - 解析请求体(
Content-Length
、POST
数据)
关键结构体:ngx_http_request_t
所有 HTTP 请求的信息都会存储在 ngx_http_request_t
结构体:
struct ngx_http_request_s {ngx_http_connection_t *connection; // 关联客户端连接ngx_str_t uri; // 请求的 URIngx_str_t args; // URL 查询参数 ?id=123ngx_uint_t method; // HTTP 方法 (GET, POST)ngx_http_headers_in_t headers_in; // HTTP 请求头ngx_http_headers_out_t headers_out; // HTTP 响应头ngx_http_core_loc_conf_t *loc_conf; // 匹配的 location 配置
};
3.1 解析 HTTP 请求行
📌 代码位置:ngx_http_parse_request_line()
ngx_int_t ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b)
解析 GET /index.html HTTP/1.1
:
if (ngx_str3_cmp(m, 'G', 'E', 'T', ' ')) {r->method = NGX_HTTP_GET;
} else if (ngx_str3_cmp(m, 'P', 'O', 'S', 'T')) {r->method = NGX_HTTP_POST;
}
- 解析 URI:
r->uri_start = p;
while (*p && *p != '?' && *p != ' ') { p++; }
r->uri_end = p;
- 解析 HTTP 版本:
if (ngx_str3_cmp(p, 'H', 'T', 'T', 'P')) { r->http_version = NGX_HTTP_VERSION_11; }
3.2 解析 HTTP 头
📌 代码位置:ngx_http_parse_header_line()
ngx_int_t ngx_http_parse_header_line(ngx_http_request_t *r, ngx_buf_t *b, ngx_uint_t allow_underscores)
解析请求头(示例):
Host: example.com
User-Agent: curl/7.68.0
代码:
if (ngx_str3_cmp(h, 'H', 'o', 's', 't')) {r->headers_in.host = h;
} else if (ngx_str3_cmp(h, 'C', 'o', 'n', 't', 'e', 'n', 't', '-', 'L', 'e', 'n', 'g', 't', 'h')) {r->headers_in.content_length_n = ngx_atoi(value, len);
}
4. 匹配 Server/Location:ngx_http_core_module.c
📌 作用:
- 解析
server {}
和location {}
配置 - 选择最匹配的
server {}
块 - 选择最匹配的
location {}
规则
4.1 解析 server {}
📌 代码位置:ngx_http_core_server()
static char *ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
- 解析
listen 80;
- 解析
server_name example.com;
- 解析
location / {}
4.2 解析 location {}
📌 代码位置:ngx_http_core_location()
static char *ngx_http_core_location(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
- 解析
root /var/www/html;
- 解析
proxy_pass http://backend;
5. 处理 HTTP 请求 Handler
📌 代码位置:ngx_http_handler.c
ngx_int_t ngx_http_handler(ngx_http_request_t *r)
- 选择合适的模块处理请求:
ngx_http_static_module
(静态文件)ngx_http_proxy_module
(反向代理)ngx_http_rewrite_module
(重写)ngx_http_gzip_module
(Gzip 压缩)
6. 发送 HTTP 响应
📌 代码位置:ngx_http_output_filter.c
ngx_int_t ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *in)
1️⃣ 设置 HTTP 状态码
r->headers_out.status = NGX_HTTP_OK;
2️⃣ 设置响应头
r->headers_out.content_length_n = size;
r->headers_out.content_type = ngx_string("text/html");
3️⃣ 发送数据
ngx_http_send_header(r);
ngx_http_output_filter(r, &out);
7. Nginx HTTP 请求完整流程
1. 客户端请求: GET /index.html HTTP/1.1
2. Nginx 解析请求 (ngx_http_request.c)
3. 匹配 server/location (ngx_http_core_module.c)
4. 选择模块处理请求 (ngx_http_handler.c)
5. 发送 HTTP 响应 (ngx_http_output_filter.c)
8. 经典优化
✅ 优化 Worker
worker_processes auto;
worker_connections 4096;
✅ 开启 sendfile
sendfile on;
tcp_nopush on;
✅ 启用 Gzip
gzip on;
gzip_types text/html text/css application/json;
总结
- Nginx 解析 HTTP 请求 →
ngx_http_request.c
- 匹配
server
/location
→ngx_http_core_module.c
- 调用合适的处理模块 →
ngx_http_handler.c
- 发送响应 →
ngx_http_output_filter.c
这个 完整 HTTP 处理流程 让 Nginx 成为一个高性能 Web 服务器 🚀
相关文章:
Nginx处理http的流程
文章目录 前言一、发版本后旧版本可以用项目基本情况Nginx 配置**解释每一行的作用:****表现和行为:****适用场景**:资源的缓存策略 在这里插入图片描述 二, nginx处理http的流程Nginx 的 GitHub 源码地址 **Nginx 核心源码解读&a…...
算法之刷题汇总
剑指 Offer 剑指 Offer 题解 | CS-Notes 面试笔记 Leetcode Leetcode 题解 | CS-Notes 面试笔记 GitCode - 全球开发者的开源社区,开源代码托管平台...
【AIGC系列】4:Stable Diffusion应用实践和代码分析
AIGC系列博文: 【AIGC系列】1:自编码器(AutoEncoder, AE) 【AIGC系列】2:DALLE 2模型介绍(内含扩散模型介绍) 【AIGC系列】3:Stable Diffusion模型原理介绍 【AIGC系列】4࿱…...
【Python爬虫(81)】当量子计算邂逅Python爬虫:一场技术变革的预演
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...
Java Web应用中获取客户端的真实IP地址
Java Web应用中获取客户端的真实IP地址,尤其在存在代理服务器的情况下。 代码示例: public static String getClientIP(HttpServletRequest request) {String ip = parseCommaSeparatedIPs(request.getHeader("X-Forwarded-For"));if (isInvalid(ip)) {ip = pars…...
R语言+AI提示词:贝叶斯广义线性混合效应模型GLMM生物学Meta分析
全文链接:https://tecdat.cn/?p40797 本文旨在帮助0基础或只有简单编程基础的研究学者,通过 AI 的提示词工程,使用 R 语言完成元分析,包括数据处理、模型构建、评估以及结果解读等步骤(点击文末“阅读原文”获取完整代…...
LangChain原理解析及开发实战指南(2025年最新版)
一、LangChain核心架构解析 1.1 框架设计理念 LangChain是基于提示工程(Prompt Engineering)构建的LLM应用开发框架,其核心思想是通过模块化组件实现大语言模型与业务系统的无缝对接。该框架采用分层设计: 接口层:统一对接OpenAI、DeepSee…...
赋能农业数字化转型 雏森科技助力“聚农拼”平台建设
赋能农业数字化转型,雏森科技助力“聚农拼”平台建设 在数字化浪潮席卷各行业的今天,农业领域也在积极探索转型升级之路。中农集团一直以“根植大地,服务三农”为核心,以“乡村振兴,农民增收”为目标,及时…...
CMU15445(2023fall) Project #2 - Extendible Hash Index 匠心分析
胡未灭,鬓已秋,泪空流 此生谁料 心在天山 身老沧州 ——诉衷情 完整代码见: SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering determinati…...
深度剖析Seata源码:解锁分布式事务处理的核心逻辑
文章目录 写在文章开头如何使用源码(配置转掉)基于AT模式详解Seata全链路流程Seata服务端启动本地服务如何基于GlobalTransaction注解开启事务客户端如何开启分布式事务RM和TC如何协调处理分支事务RM生成回滚日志事务全局提交与回滚小结参考写在文章开头 在当今分布式系统日益…...
python配置mmcv与mmdet环境
首先查看自己的cuda版本 nvcc --version 安装与cuda对应的torch版本,对应关系 Previous PyTorch Versions | PyTorch 安装对应的mmcv版本,使用下面命令可以自动安装匹配的版本,使用mim安装 mim install mmcv-full -f https://download.o…...
ESP 32控制无刷电机2
import machine import time import socket import network from machine import I2C, Pin, ADC def start_ap(): """ 启动ESP32的AP模式 """ ap network.WLAN(network.AP_IF) ap.active(True) ssid ESP32_APTest …...
【uniapp原生】实时记录接口请求延迟,并生成写入文件到安卓设备
在开发实时数据监控应用时,记录接口请求的延迟对于性能分析和用户体验优化至关重要。本文将基于 UniApp 框架,介绍如何实现一个实时记录接口请求延迟的功能,并深入解析相关代码的实现细节。 前期准备&必要的理解 1. 功能概述 该功能的…...
wps角标快速生成
使用^#符号匹配数字,将[^#]内容找到,随后在格式-字体中选择上标,逐个/批量替换即可(比一点点改效率翻倍)...
Azure Speech
1、文字转语音(Text-To-Speech, TTS) 2、语音转文字(Speech-To-Text): Azure Speech to Text 1- 环境配置:Microsoft Azure 注册使用免费服务: 需要信用卡,本人没有,所以没有完成注册...
SHELL32!ILCombine函数分析之连接两个idl
SHELL32!ILCombine函数分析之连接两个idl 第一部分: STDAPI_(LPITEMIDLIST) ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2) { // Let me pass in NULL pointers if (!pidl1) { if (!pidl2) { return NULL; …...
学习threejs,使用ShaderMaterial自定义着色器材质
👨⚕️ 主页: gis分享者 👨⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.ShaderMaterial1.1.1…...
使用 Selenium 和 Requests 自动化获取动态 Referer 和 Sign 的完整指南
在现代网络爬虫和自动化任务中,动态生成的参数(如 Referer 和 Sign)常常是绕过反爬虫机制的关键。本文将详细介绍如何使用 Python 的 Selenium 和 Requests 库,从目标网页中提取动态 Referer 和 Sign,并完成后续的请求…...
1.2.3 使用Spring Initializr方式构建Spring Boot项目
本实战概述介绍了如何使用Spring Initializr创建Spring Boot项目,并进行基本配置。首先,通过Spring Initializr生成项目骨架,然后创建控制器HelloController,定义处理GET请求的方法hello,返回HTML字符串。接着…...
Cursor+pycharm接入Codeuim(免费版),Tab自动补全功能平替
如题,笔者在Cursor中使用pycharm写python程序,试用期到了Tab自动补全功能就不能用了,安装Codeuim插件可以代替这个功能。步骤如下: 1. 在应用商店中搜索扩展Codeuim,下载安装 2. 安装完成后左下角会弹出提示框&#x…...
Ruby基础
一、字符串 定义 283.to_s //转为string "something#{a}" //定义字符串,并且插入a变量的值 something//单引号定义变量 %q(aaaaaaaaa) // 定义字符串,()内可以是任何数,自动转义双引号%Q("aaaaa"…...
wzl-django学习
####################################################总的urls.py from django.contrib import admin from django.urls import path,include, re_path from django.views.static import serve from django.conf import settings from drf_yasg import openapi from drf_yas…...
《AI强化学习:元应用中用户行为引导的智能引擎》
在科技飞速发展的当下,元应用正以前所未有的速度融入我们的生活,从沉浸式的虚拟社交到高度仿真的工作模拟,元应用构建出一个个丰富多彩的虚拟世界。而在这背后,人工智能的强化学习技术宛如一位无形却强大的幕后推手,深…...
Django基础环境准备
Django基础环境准备 文章目录 Django基础环境准备1.准备的环境 win11系统(运用虚拟环境搭建)1.1详见我的资源win11环境搭建 2.准备python环境2.1 winr 打开命令提示符 输入cmd 进入控制台2.2 输入python --version 查看是否有python环境2.3在pyhton官网下…...
机器视觉线阵相机分时频闪选型/机器视觉线阵相机分时频闪选型
在机器视觉系统中,线阵相机的分时频闪技术通过单次扫描切换不同光源或亮度,实现在一幅图像中捕捉多角度光照效果,从而提升缺陷检测效率并降低成本。以下是分时频闪线阵相机的选型要点及关键考量因素: 一、分时频闪技术的核心需求 多光源同步控制 分时频闪需相机支持多路光源…...
【企业场景】上线的项目如何进行限流
一、常见的四种速率限流算法 对于限流,最为直接的就是速率限流了 固定窗口算法 比如 10r/s 就是把时间线分为 1s 一段,也就是周期为 1s,对一个时间段的请求进行计数,超过 10 则舍弃,未超过则直接处理经过 1s 后&…...
【FL0090】基于SSM和微信小程序的球馆预约系统
🧑💻博主介绍🧑💻 全网粉丝10W,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发…...
用大白话解释缓存Redis +MongoDB是什么有什么用怎么用
Redis和MongoDB是什么? Redis:像你家的“小冰箱”,专门存高频使用的食物(数据)。它是基于内存的键值数据库,读写速度极快(每秒超10万次操作)。比如你每次打开手机App,用…...
软件测试需求分析如何实施?专业软件测试服务公司分享
在现代软件开发中,软件测试需求分析被认为是确保软件质量的关键环节之一。软件测试需求分析是指在软件开发过程中,对测试需求进行系统性分析的过程。它旨在确定软件系统功能、性能及其他非功能性需求的具体细节,从而为后续的测试活动提供指导…...
pg pg_prewarm用法
按照插件 > create extension pg_prewarm ;缓存表 > test# select pg_prewarm(weather,buffer ) ; pg_prewarm > ------------ > 1缓存表部分内容 test# select pg_prewarm(weather,buffer,main,0,0) ;pg_prewarm ------------1 (1 row)表大小只有0号…...
2025年光电科学与智能传感国际学术会议(ICOIS 2025)
重要信息 官网:www.ic-icois.org 时间:2025年3月14-16日 地点:中国-长春 简介 2025年光电科学与智能传感国际学术会议(ICOIS 2025)将于2025年3月14-16日在中国-长春隆重召开。会议将围绕“光学光电”、“智能传感”…...
uni小程序wx.switchTab有时候跳转错误tab问题,解决办法
在一个子页面里面使用uni.switchTab或者wx.switchTab跳转到tab菜单的时候,先发送了一个请求,然后执行跳转到tab菜单,但是这个时候,出错了........也是非常的奇怪,不加请求就没问题......但是业务逻辑就是要先执行某个请…...
python-leetcode-下一个排列
31. 下一个排列 - 力扣(LeetCode) class Solution:def nextPermutation(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""# Step 1: Find the first decreasing element …...
如何获取mac os 安装盘
发现虚拟机VirtualBox支持Mac虚拟,就想尝试一下。但是发现Mac的安装盘特别难拿到,因此留档。 第一种方法 在mac环境下,使用softwareupdate命令来获取mac安装,能获得当前设备支持的系统。 使用这个命令:/usr/sbin/soft…...
常见AI写作工具介绍(ChatGPT 4o、DeepClaude、Claude 3.5 Sonnet 、DeepSeek R1等)
AI写作工具介绍 1. ChatGPT-4o ChatGPT-4o是OpenAI于2024年5月发布的最新旗舰模型,相比之前的版本,它在多模态支持和实时推理能力上有了显著提升。它能够处理和理解音频、图像和文本数据,适用于复杂的图像分析、语音识别等应用场景[1]。 2…...
环境会影响你的决策:K近邻算法(KNN)
环境会影响你的决策:K近邻算法(KNN) 1. 核心思想与流程 KNN是一种基于局部相似性的分类算法,核心思想是“近朱者赤”:待测样本的类别由其最近的k个邻居的多数类别决定。 关键步骤: 定义空间与距离:通常采…...
JMeter 中实现 100 个用户在 3 秒内并发登录
在 JMeter 中实现 100 个用户在 3 秒内并发登录,需要合理配置线程组、定时器和测试逻辑。以下是具体步骤: 1. 创建测试计划 打开 JMeter。右键点击“Test Plan”,选择 Add > Threads (Users) > Thread Group。 : 设置为 100(模拟 100 个用户)。 : 设置为 3...
2-3文件的属性信息
文章目录 1 file命令2 stat命令 1 file命令 用来识别文件类型 # 参数的位置是任意的 file 文件名 [参数]-b 只显示文件类型和文件编码,不显示文件名-i 显示文件的MIME类型-F 设置输出字符串的分隔符-L 查看软链接文件自身文件属性liyblyb:/tmp$ file xxxtmp.log …...
【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置)
【【云原生之kubernetes实战】在k8s环境中高效部署Vikunja任务管理工具(含数据库配置) 前言一、Vikunja介绍1.1 Vikunja简介1.2 Vikunja主要特点1.3 使用场景二、相关知识介绍2.1 本次实践存储介绍2.2 k8s存储介绍三、本次实践介绍3.1 本次实践简介3.2 本次环境规划3.3 部署前…...
(IDE接入DeepSeek)简单了解DeepSeek接入辅助开发与本地部署建议
重点:IDE接入DeepSeek是否收费 收费! 本文章主要是为了给小白避雷,目前很多文章告诉大家怎么接入DeepSeek,但是并未告知大家是否收费。如果是想白嫖的,就可以不用去接入了。 一、引言 最近爆火的AI人工智能工具DeepSe…...
TCP的三次握手与四次挥手:建立与终止连接的关键步骤
引言 TCP(传输控制协议)工作在OSI模型的传输层。OSI模型将计算机网络功能划分为七个层级,从底层到顶层依次是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。传输层负责在网络节点之间提供可靠的端到端通信&a…...
CMU15445(2023fall) Project #3 - Query Execution(上)详细分析
晚日寒鸦一片愁 柳塘新绿却温柔 若教眼底无离恨 不信人间有白头 ——鹧鸪天 完整代码见: SnowLegend-star/CMU15445-2023fall: Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering determination, we pre…...
.sql文件怎么打开
.sql 文件是一个 SQL 脚本文件,通常包含了数据库的 SQL 查询语句,可以是创建数据库、创建表、插入数据、查询数据等操作。要打开并查看 .sql 文件,你可以使用以下几种方法: 1. 使用文本编辑器打开 .sql 文件是一个文本文件&…...
【Swift 算法实战】城市天际线问题解法
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
Linux的软件安装
Linux命令行内的“应用商店” yum命令安装软件。 yum命令: yum:RPM软件管理器,用于自动化安装配置Linux软件,可以自动解决依赖问题。 语法:yum [-y] [install | remove | search] 软件名称 选项:-y。自动确…...
需求和开发模型
文章目录 什么是需求?用户需求软件需求用户需求和软件需求的不同 开发模型什么是“模型”?软件的生命周期常见的开发模型瀑布模型(Waterfall Model)螺旋模型增量模型、迭代模型敏捷模型 测试模型V 模型W 模型(双 V 模型…...
unity学习61:UI布局layout
目录 1 布局 layout 1.1 先准备测试UI,新增这样一组 panel 和 image 1.2 新增 vertical layout 1.3 现在移动任意一个image 都会影响其他 1.3.1 对比 如果没有这个,就会是覆盖效果了 1.3.2 对比 如果没有这个,就会是覆盖效果了 1.4 总结…...
腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)对比分析
腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)对比分析 腾讯混元文生图大模型(Hunyuan-DiT)与Stable Diffusion(SD)作为当前文生图领域的两大代表模型,各自…...
Flume
Flume安装配置 使用的三台主机名称分别为bigdata1,bigdata2,bigdata3。所使用的安装包名称按自己的修改,安装包可去各大官网上下载 1.解压 将Master节点Flume安装包解压到/opt/module目录下 tar -zxvf /opt/software/apache-flume-1.9.0-bi…...
【Python LeetCode】面试经典 150 题
数组 / 字符串快慢指针(双指针)总结88. 合并两个有序数组27. 移除元素26. 删除有序数组中的重复项80. 删除有序数组中的重复项 II Boyer-Moore 投票算法169. 多数元素扩展:寻找 n/3 多数元素 翻转法189. 轮转数组 贪心121. 买卖股票的最佳时机…...