当前位置: 首页 > news >正文

Nginx 动静分离在 ZKmall 开源商城静态资源管理中的深度优化

在 B2C 电商高并发场景下,静态资源(图片、CSS、JavaScript 等)的高效管理直接影响页面加载速度与用户体验。ZKmall开源商城通过对 Nginx 动静分离技术的深度优化,将静态资源响应速度提升 65%,带宽成本降低 40%,成功支撑日均千万级访问量下的系统稳定运行。其核心优化策略涵盖缓存策略精细化、资源加载智能化、负载均衡动态化三大维度,为电商静态资源管理提供了可复用的技术方案。

一、缓存策略精细化:从通用缓存到智能分级

(一)多级缓存架构设计

ZKmall开源商城 构建浏览器缓存 + Nginx 本地缓存 + CDN 边缘缓存的三级缓存体系:

  1. 浏览器缓存:通过设置 HTTP 响应头(如Cache-ControlExpires),对图片、CSS 等不常更新的资源启用长期缓存。例如,对品牌 Logo 设置Cache-Control: max-age=31536000(1 年有效期),减少重复请求。
  2. Nginx 本地缓存:利用proxy_cache模块,对动态页面中嵌入的静态片段(如热门商品推荐栏)进行缓存。某 3C 数码商城通过该策略,将首页动态部分的响应时间从 800ms 降至 120ms。
  3. CDN 边缘缓存:接入阿里云 CDN、Cloudflare 等服务商,实现资源全球分布式存储。通过智能 DNS 解析,用户请求自动路由至最近节点,东南亚地区用户的图片加载速度提升至 1.2 秒内。

(二)缓存失效与更新机制

针对商品图片、促销活动海报等高频更新资源,ZKmall 采用指纹 URL缓存标签双策略:

  • 指纹 URL:为每个静态资源生成唯一哈希值,如https://example.com/image-abc123.jpg。当资源更新时,URL 自动变更,强制浏览器拉取最新版本,避免缓存污染。
  • 缓存标签管理:在 Nginx 配置中设置缓存标签(如cache_tag),通过 Lua 脚本批量刷新指定标签的缓存。某美妆品牌大促期间,仅用 30 秒即完成全平台促销素材的缓存更新。

二、资源加载智能化:动态优化与预加载策略

(一)智能资源压缩与合并

Nginx 通过gzipbrotli压缩算法,对静态资源进行实时压缩:

  • 差异化压缩:对图片采用 WebP 格式(较 JPEG 体积减小 30%),对文本资源启用 Brotli 压缩(压缩比优于 gzip 20%)。某家居商城启用后,页面总大小从 3.2MB 降至 1.8MB。
  • 资源合并:利用 Nginx 的ngx_http_concat_module,将多个 CSS、JS 文件合并为单个文件,减少 HTTP 请求次数。某服装品牌优化后,页面请求数从 42 个降至 17 个,加载速度提升 40%。

(二)预加载与懒加载结合

1. 关键资源预加载

通过link rel="preload"指令,在页面加载初期预取核心资源。如在商品详情页,提前加载主图、视频封面等用户必然浏览的内容,使首屏加载时间缩短 30%。

2. 非关键资源懒加载

对商品详情页底部的评论区图片、相关推荐模块,采用懒加载策略。当用户滚动至相应区域时,Nginx 动态返回资源,某母婴商城借此将初始加载时间从 2.1 秒降至 1.3 秒。

三、负载均衡动态化:流量智能调度与热点分流

(一)基于权重的动态负载均衡

在 Nginx 配置中,根据服务器性能与资源热度动态分配权重:

nginx

upstream static_servers {  server 192.168.1.10 weight=10;  # 高配置服务器  server 192.168.1.11 weight=5;   # 普通服务器  least_conn;  # 采用最少连接数算法  
}  

某 3C 品牌大促期间,通过实时监控服务器负载,自动将热门商品图片的请求权重向高配置节点倾斜,避免单点过载。

(二)热点资源隔离与 CDN 加速

针对促销活动海报、爆款商品主图等热点资源,采用一致性哈希 + CDN 回源策略:

  1. 一致性哈希:通过ngx_http_upstream_consistent_hash模块,将同一资源的请求固定分配至特定服务器,减少缓存穿透。
  2. CDN 回源优化:当 CDN 节点缓存失效时,Nginx 优先从区域级 CDN 中心节点回源,而非直接访问源站。某生鲜电商通过该策略,将热点图片的回源请求量降低 75%。

四、实战效果与性能对比

指标传统方案ZKmall 优化后提升幅度
静态资源平均响应时间1.2 秒420 毫秒65%
带宽成本月均 15 万元月均 9 万元40%
大促期间并发承载量8 万 QPS22 万 QPS175%
页面首屏加载时间3.8 秒2.1 秒44.7%

某跨境电商接入 ZKmall开源商城 优化方案后:

  • 成功抵御 “黑色星期五” 期间 15 万 QPS 的静态资源请求,零超时;
  • 通过缓存优化,服务器 CPU 使用率从 78% 降至 32%,资源利用率提升 59%;
  • 用户端页面加载速度进入 Google PageSpeed Insights 评分 “优秀” 区间(92/100)。

五、技术实现与架构演进

(一)Nginx 配置核心优化点

nginx

http {  # 启用Brotli压缩  brotli on;  brotli_comp_level 6;  brotli_types text/css application/javascript;  # 配置Nginx本地缓存  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=static_cache:10m inactive=60m;  proxy_cache_key "$scheme$request_method$host$request_uri";  # 智能流量调度  upstream static_servers {  hash $request_uri consistent;  server static1.example.com;  server static2.example.com;  }  
}  

(二)可视化监控与动态调优

通过 Prometheus+Grafana 搭建监控平台,实时展示:

  • 缓存命中率(目标值≥95%);
  • 资源加载延迟分布;
  • CDN 回源率与带宽消耗。
    某家居品牌通过监控发现某区域 CDN 节点回源率异常,30 分钟内完成节点切换,保障用户体验无感知。

ZKmall开源商城 在 Nginx 动静分离技术上的深度优化,本质是将 “缓存策略精细化、资源加载智能化、流量调度动态化”的理念贯穿于静态资源管理全流程。这种从架构设计到实时运维的系统性优化,不仅大幅提升了商城性能与用户体验,更为电商企业节省了可观的基础设施成本。在用户对页面加载速度要求愈发严苛的今天,ZKmall 的实践为行业提供了一套可落地、可扩展的静态资源管理解决方案,助力企业在高并发场景下实现性能与成本的双重突破。

ZKmall源码地址:https://gitee.com/zkmall/b2c

相关文章:

Nginx 动静分离在 ZKmall 开源商城静态资源管理中的深度优化

在 B2C 电商高并发场景下,静态资源(图片、CSS、JavaScript 等)的高效管理直接影响页面加载速度与用户体验。ZKmall开源商城通过对 Nginx 动静分离技术的深度优化,将静态资源响应速度提升 65%,带宽成本降低 40%&#xf…...

Lighthouse 自定义审计

以下是关于 Lighthouse 自定义审计的基本知识点总结: 一、Lighthouse 自定义审计核心概念 1. 审计机制架构 #mermaid-svg-lzu9WEel4gUome5N {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lzu9WEel4gUome5N .erro…...

龙虎榜——20250514

上证日线收阳线,大盘股相对强势,整体跌多涨少,量能较昨日放大,大金融发力,但总体处于日线上涨末端,注意风险。 深证日线冲高回落,触及前期压力位,量能未放大,总体处于日…...

基于javaweb的SpringBoot自习室预约系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

二分查找的边界问题

前言 二分查找(Binary Search)是一种高效的查找算法,时间复杂度为O(log n)。它适用于已排序的数组或列表。本文将详细介绍二分查找的两种常见写法:闭区间写法和左闭右开区间写法。 一、二分查找基本思想 二分查找的核心思想是"分而治之"&am…...

应用示例1:交通灯

基于FPGA的交通灯控制系统实现原理详解 目录 基于FPGA的交通灯控制系统实现原理详解一、项目简介二、数字电路与基础知识1. 交通灯系统的有限状态机(FSM)2. 数码管显示原理3. 二进制转BCD显示4. 时钟与分频三、功能需求与系统结构功能需求系统结构四、各模块设计原理说明1. 时…...

Docker 介绍与使用

Docker 文章目录 Docker介绍与虚拟机的比较启动速度占用资源 优势更容易迁移更容易维护更容易扩展 使用场景持续集成提供可伸缩的云服务搭建微服务架构 镜像与容器镜像构成(分层结构)镜像与容器的区别 安装 Docker常用命令介绍镜像相关容器相关 实战&…...

[数据结构]6. 队列-Queue

队列-Queue 1. 介绍2. 队列实现2.1 基于链表的实现2.2 基于数组的实现 3. 队列操作CreateInitializeDestoryPushPopFrontBackSizeEmpty 1. 介绍 队列(queue) 是一种遵循先入先出规则的线性数据结构。将队列头部称为“队首”,尾部称为“队尾”…...

mybatis plus (sqlserver) 根据条件来获取id最大的,或者是新增的最新的一条记录(同条件可能会有多条出现)

1、mysql的版本 limit 1 QueryWrapper<Userinfo> queryWrapper new QueryWrapper<>();queryWrapper.eq("fid", payment.getFid());return userinfoMapper.selectOne(queryWrapper.orderByDesc("id").last("limit 1")); 只要类似以…...

打卡DAY25

DAY 25 异常处理 知识点回顾&#xff1a; 1. 异常处理机制 2. debug过程中的各类报错 3. try-except机制 4. try-except-else-finally机制 在即将进入深度学习专题学习前&#xff0c;我们最后差缺补漏&#xff0c;把一些常见且重要的知识点给他们补上&#xff0c;加深…...

【C语言指针超详解(六)】--sizeof和strlen的对比,数组和指针笔试题解析,指针运算笔试题解析

目录 一.sizeof和strlen 1.1--sizeof 1.2--strlen 1.3--sizeof和strlen的对比 二.数组和指针笔试题解析 2.1--一维数组 2.2--字符数组 2.2.1--代码1&#xff1a; 2.2.2--代码2&#xff1a; 2.2.3--代码3&#xff1a; 2.2.4--代码4 &#xff1a; 2.2.5--代码5&#…...

Java 异常处理之 BufferUnderflowException(BufferUnderflowException 概述、常见发生场景、避免策略)

一、BufferUnderflowException 概述 BufferUnderflowException 是 Java NIO 包中的一个运行时异常&#xff0c;是 RuntimeException 的子类 public class BufferUnderflowException extends RuntimeException {... }# 继承关系java.lang.Object-> java.lang.Throwable->…...

OpenCV人脸识别LBPH算法原理、案例解析

文章目录 前言一、LBPH 算法原理概述1、LBP 特征计算2、均匀模式与旋转不变性3、直方图统计与识别 二、环境准备1、安装依赖2、数据集结构 三、代码实现&#xff08;完整代码约 150 行&#xff09;1、导入库与配置2、加载数据与标签生成3、 模型训练与保存4、 实时人脸识别5、主…...

Lightpanda开源浏览器:专为 AI 和自动化而设计的无界面浏览器

​一、软件介绍 文末提供程序和源码下载 Lightpanda开源浏览器&#xff1a;专为 AI 和自动化而设计的无界面浏览器&#xff1b; Javascript execution Javascript 执行Support of Web APIs (partial, WIP)支持 Web API&#xff08;部分、WIP&#xff09;Compatible with Pla…...

Docker 疑难杂症解决指南:从入门到进阶的全面剖析

Docker 作为容器化技术的代表&#xff0c;凭借其轻量级、可移植性和高效资源利用率&#xff0c;已成为开发、测试和部署应用的标准工具。然而&#xff0c;在实际使用中&#xff0c;用户常常会遇到镜像构建失败、容器启动异常、网络配置问题等疑难杂症。本文将从镜像构建、容器生…...

CodeBuddy Craft,我的编程搭子

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 你好&#xff0c;我是悟空。 背景 最近项目组事情挺多&#xff0c;一个人要干多个人的活&#xff0c;而且写…...

如何实现一个运动会计分系统?(C语言版)

一、需求分析 设计一个运动会计分系统,计分信息包括参加学校,参与项目,性别,名次个数,各个学校获得名次信息。该系统具有以下功能 数据录入: 链表或结构体数组组织数据数据报表: 依照规定的报表格式对数据打印报表数据排序: 按照要求对数据进行统计,含简单统计及综合统计…...

linux内核主要由哪五个模块构成?

Linux内核是一个高度模块化的系统&#xff0c;其核心功能通常被划分为以下五大模块&#xff0c;共同协作实现操作系统的基础功能&#xff1a; ​1. 进程管理&#xff08;Process Management&#xff09;​​ ​核心功能​&#xff1a;负责进程的创建、调度、终止&#xff0c;以…...

编程日志5.5

树的结构代码 #include<iostream> using namespace std; //由于树的每个结点可能有一些孩子结点,这些孩子结点的数量不确定,所以可以用一个链表来把所有的孩子结点给串起来 //链表结点定义 //这段代码定义了一个结构体ListNode,用于表示链表中的一个结点。这个结构…...

React学习———React.memo、useMemo和useCallback

React.memo React.memo是React提供的一个高阶组件&#xff0c;用于优化函数组件的性能&#xff0c;它通过记忆组件的渲染结果&#xff0c;避免在父组件重新渲染时&#xff0c;子组件不必要的重新渲染 React.memo会对组件的props进行浅比较&#xff0c;如果props没有变化&#…...

OpenCV实现数字水印的相关函数和示例代码

OpenCV计算机视觉开发实践&#xff1a;基于Qt C - 商品搜索 - 京东 实现数字水印的相关函数 用OpenCV来实现数字水印功能&#xff0c;需要使用一些位操作函数&#xff0c;我们需要先了解一下这些函数。 1. bitwise_and函数 bitwise_and函数是OpenCV中的位运算函数之一&…...

【CUDA】Sgemm单精度矩阵乘法(下)

目录 前言1. 优化技巧5&#xff1a;使用register模拟二级缓存&#xff08;内积转外积&#xff09;2. 优化技巧6&#xff1a;使用register模拟二级缓存 float43. 优化技巧7&#xff1a;global memory转置再存放shared memory4. 优化技巧8&#xff1a;使用double buffer加速矩阵…...

cursor 学习

参考&#xff1a;AI编程神器&#xff01;Cursor无限续杯&#xff01;白嫖白嫖&#xff01;&#xff01;&#xff01;...

学术论文的科研流程概述 视频会议记录

CCF-Talk SPP131期 浙江大学研究员彭思达的报告。 举例视频生成要多快好省。 提升代码能力&#xff1a;先明白基础的函数&#xff0c;可以复现一个网络。最好是实现一个操作系统。...

【Linux笔记】——Linux线程理解与分页存储的奥秘

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;Linux &#x1f339;往期回顾&#x1f339;&#xff1a;【Linux笔记】——进程信号的捕捉——从中断聊聊OS是怎么“活起来”的 &#x1f516;流水不争&#xff0c;争的…...

ACM算法

在ACM模式下使用JavaScript/TypeScript获取输入值 在ACM编程竞赛或在线判题系统(如LeetCode、牛客网等)中&#xff0c;JavaScript/TypeScript需要特定的方式来获取输入值。以下是几种常见的获取输入的方法&#xff1a; 1. 使用Node.js的readline模块 这是最常见的处理ACM模式…...

家用或办公 Windows 电脑玩人工智能开源项目配备核显的必要性(含 NPU 及显卡类型补充)

一、GPU 与显卡的概念澄清 首先需要明确一个容易误解的概念&#xff1a;GPU 不等同于显卡。 显卡和GPU是两个不同的概念。 【概念区分】 在讨论图形计算领域时&#xff0c;需首先澄清一个常见误区&#xff1a;GPU&#xff08;图形处理单元&#xff09;与显卡&#xff08;视…...

FastByteArrayOutputStream和ByteArrayInputStream有什么区别

FastByteArrayOutputStream 和 ByteArrayInputStream 是两种完全不同的 Java I/O 类&#xff0c;它们的主要区别体现在 设计目的 和 使用场景 上。以下是详细对比&#xff1a; 1. 核心区别总结 特性FastByteArrayOutputStream (Spring框架)ByteArrayInputStream (JDK原生)所属…...

远程连接电脑的方法?异地远程桌面连接和三方软件实现

远程连接电脑&#xff0c;是指通过网络技术&#xff0c;在一台设备上操控另一台设备的电脑桌面&#xff0c;实现跨地域的操作和管理。在日常工作、技术支持、远程办公等场景中&#xff0c;远程连接电脑都发挥着重要作用。实现远程连接电脑主要有系统自带工具和第三方软件两种方…...

编程题 03-树2 List Leaves【PAT】

文章目录 题目输入格式输出格式输入样例输出样例 题解解题思路完整代码 编程练习题目集目录 题目 Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. 输入格式 Each input file contains one test case. For each case, …...

数据预处理之数据平滑处理详解

信号数据收到噪声干扰&#xff0c;影响检测的准确性。数据平滑处理的关键步骤&#xff0c;旨在降低噪声同时保留信号特征。 1.1 移动平均&#xff08;Moving Average&#xff09; 原理&#xff1a;通过计算窗口内数据的平均值来平滑噪声&#xff0c;适用于快速去除高频噪声。…...

deepseek梳理java高级开发工程师算法面试题

Java高级工程师算法面试题与答案 一、数据结构与算法基础 1. 红黑树与AVL树比较 题目&#xff1a;详细说明红黑树和AVL树的区别及各自的适用场景&#xff0c;并用Java实现红黑树的插入操作。 答案&#xff1a; 区别对比&#xff1a; ┌─────────────────…...

【SSL证书系列】SSL证书工作原理解读

SSL&#xff08;Secure Sockets Layer&#xff09;及其继任者TLS&#xff08;Transport Layer Security&#xff09;是用于保护网络通信安全的加密协议。SSL证书是实现HTTPS协议的核心&#xff0c;其工作原理涉及加密技术、身份验证和信任机制。以下是其工作原理的详细分步解析…...

模板源码建站、定制建站和SaaS 建站有什么区别?企业建站应该怎么选?

最近遇到不少客户问&#xff0c;为什么现在做一个网站为什么从几百到几万的都有呀&#xff1f;市面上五花八门有模板源码建站、SaaS建站和定制建站我该怎么选&#xff1f;有什么区别&#xff1f;今天小编就跟大家一起来唠一唠&#xff0c;接下来我们就一起来看看吧&#xff01;…...

OpenCV进阶操作:人脸检测、微笑检测

文章目录 前言一、OpenCV如何实现人脸检测1、haar特征2、级联分类器3、级联分类器的使用 二、人脸检测、微笑检测 案例实现1、预处理2、加载分类器3、标注人脸4、运行结果&#xff1a;4、微笑检测 总结 前言 要实现人脸识别首先要判断当前图像中是否出现了人脸&#xff0c;这就…...

论文查询的ai工具 —— SCAICH

&#xff08;1&#xff09;SCAICH的项目背景 SCAICH是由Scihub Web3 Community孵化的技术产品。SCAICH是一个非盈利性的平台&#xff0c;模式上采用免费邀请码模式&#xff0c;采用捐赠和广告维持成本。产品将会面向世界上所有国家的学者。 &#xff08;2&#xff09;SCAICH产品…...

Python+大模型 day01

Python基础 计算机系统组成 基础语法 如:student_num 4.标识符要做到见名知意,增强代码的可读性 关键字 系统或者Python定义的,有特殊功能的字符组合 在学习过程中,文件名没有遵循标识符命名规则,是为了按序号编写文件方便查找复习 但是,在开发中,所有的Python文件名称必须…...

elasticsearch硬件与资源配置优化

以下是Elasticsearch硬件与资源配置优化的综合方案,结合最新实践与核心优化逻辑: 一、硬件选型优化 ‌存储设备‌ 优先选用SSD作为存储介质,其随机读取性能比机械硬盘高5-10倍,尤其适合文档检索类高并发场景。单节点存储控制在2TB以内,避免超过5TB导致查询性能下降和系统…...

C++ 在 Windows 的开发经验与解决方案

一、开发环境搭建 在 Windows 上进行 C 开发&#xff0c;主流的集成开发环境&#xff08;IDE&#xff09;有 Visual Studio 和 CLion。Visual Studio 是微软官方推出的强大开发工具&#xff0c;对 Windows 平台有着原生的支持&#xff0c;集成了编译器、调试器、代码编辑器等一…...

1669上什么课

1.题目描述 暑假来了&#xff0c;晶晶报了四门课来充实自己的暑假生活&#xff1b;周一上游泳&#xff0c;周三上编程&#xff0c;周五上阅读&#xff0c;周六上数学&#xff1b;其余时间没课。请从键盘读入今天是星期几&#xff0c;输出晶晶今天应该上什么课。 请注意&#…...

通过MCP让LLM调用系统接口

场景 MCP的出现大大丰富了LLM的功能&#xff0c;对于存量系统&#xff0c;我们希望能让模型调用已有的接口&#xff0c;以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server&#xff0c;来支持模型到内部API的调用 实现方案 使用用标准…...

Java NIO 深度解析:突破传统IO的性能瓶颈

一、Java NIO 核心价值与演进历程 1.1 传统IO的局限性 Java传统的BIO(Blocking I/O)模型在应对高并发场景时存在显著缺陷: 线程资源浪费:每个连接需要独立线程处理上下文切换开销:线程数增加导致CPU调度成本指数级增长吞吐量瓶颈:受限于线程池大小和操作系统限制响应延…...

AI-02a5a5.神经网络-与学习相关的技巧-权重初始值

权重的初始值 在神经网络的学习中&#xff0c;权重的初始值特别重要。实际上&#xff0c;设定什么样的权重初始值&#xff0c;经常关系到神经网络的学习能否成功。 不要将权重初始值设为 0 权值衰减&#xff08;weight decay&#xff09;&#xff1a;抑制过拟合、提高泛化能…...

sqlalchemy库详细使用

SQLAlchemy 是 Python 中最强大、最受欢迎的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它允许你使用 Python 对象来操作数据库&#xff0c;而不需要直接编写 SQL 语句。同时&#xff0c;它也提供了对底层 SQL 的完全控制能力&#xff0c;适用于从简单脚本到大型企…...

最短路和拓扑排序知识点

1、在一个有权无向图中&#xff0c;如果顶点b到顶点a的最短路径长度是10&#xff0c;顶点c与顶点b之间存在一条长度为3的边。&#xff08;c与a的最短路径长度不超过13&#xff1b;c与a的最短路径不小于7&#xff09; 2、我们用一个有向图来表示航空公司所有航班的航线。最适合…...

【Alist+RaiDrive挂载网盘到本地磁盘】

1.安装准备 安装RaiDrive RaiDrive - 像 USB 驱动器一样安装云存储 安装alist 安装方式请查看官网: AList文档 2.启动Alist(docker) docker官网 Install | Docker EngineDocker Desktop | Docker Docs 运行容器 docker run -d --restartalways -v /home/alist:/opt/alist/…...

达梦数据库 【-6111: 字符串转换出错】问题处理

达梦数据库 【-6111: 字符串转换出错】问题处理 问题背景问题分析问题总结 问题背景 今天在更新数据库某一个值属性的时候&#xff0c;执行更新语句报错提示 -6111: 字符串转换出错&#xff0c;但是自己检查了sql语句&#xff0c;只是一个简单的sql&#xff0c;并没有需要字符…...

Java的多线程笔记

创建一个线程的方法有多种&#xff0c;比如可以继承Thread类或者实现Runnable接口&#xff0c;结论是实现Runnable接口比前者更加优越。 二者代码对比 Java 不支持多继承&#xff0c;如果你继承了 Thread 类&#xff0c;就不能再继承其他类&#xff0c;实现 Runnable 接口后&am…...

学习51单片机01(安装开发环境)

新学期新相貌.......哈哈哈&#xff0c;我终于把贪吃蛇结束了&#xff0c;现在我们来学stc51单片机&#xff01; 要求&#xff1a;c语言的程度至少要到函数&#xff0c;指针尽量&#xff01;如果c语言不好的&#xff0c;可以回去看看我的c语言笔记。 1.开发环境的安装&#x…...

互联网协议的多路复用、Linux系统的I/O模式

目录 1. 互联网协议栈-多路复用 1.1. 应用层的多路复用 2.2. 传输层的多路复用 3.3. 网络层的多路复用 2. Linux系统的I/O模式 2.1. I/O 2.2. Socket 2.3. 从网卡到操作系统 2.4. Socket 编程模型 2.5. I/O多路复用 2.6. 阻塞/非阻塞、同步/异步 2.7. Question 1. …...