高并发架构及场景解决方案
高并发
一、什么是高并发?
高并发是指系统在短时间内能够同时处理大量用户请求或任务的能力,是衡量分布式系统、互联网应用性能的重要指标之一。它的核心目标是确保系统在高负载下仍能稳定、高效运行,同时提供良好的用户体验。
1、高并发系统的必要条件?
-
高性能:
性能代表一个系统的并行处理能力,在同样的硬件设备条件下,性能越高,越能节约硬件资源;同时性能关乎用户体验,如果系统响应时间过长,用户就会产生抱怨。
-
高可用:
系统可以长期稳定、正常地对外提供服务,而不是经常出故障、宕机、崩溃。
-
可扩展:
系统可以通过水平扩容的方式,从容应对请求量的日渐递增乃至突发
的请求量激增。
2、衡量指标
- 高性能指标:响应时间尽可能的短
- 高可用指标:可用性=系统正常运行时间/系统总运行时间
- 可扩展性指标:可扩展性=吞吐量提升比例/集群节点增加比例
3、场景分类
我们使用计算机实现各种业务功能,最终将体现在对数据的两种操作上,即读和写, 于是高并发请求可以被归类为高并发读和高并发写。比如有的业务场景读多写少,需要重点解决高并发读的问题;有的业务场景写多读少,需要重点解决高并发写的问题;而有的业务场景读多写多,则需要同时解决高并发读和高并发写的问题。将高并发场景划分为高并发读场景和高并发写场景,是因为在这两种场景中往往有不同的高并发解决方案
二、高并发读场景解决方案
1、数据库读写分离
主节点master作为写库,其他从节点slave作为读库
在主从架构可能会涉及主从数据不一致或延迟问题,为了解决该问题常见的方法有:
- 同步数据复制
在进行主从复制时主库master同步等待从库slave复制完成在返回,但是会导致吞吐量下降,影响系统并发性能,优点是无业务侵入,只需将主从复制从异步模式改为同步模式。 - 强制读主
当面对用户修改之后想立马看到修改结果,主要取决与业务对主从延迟的容忍度。 - 会话分离
比如某会话在数据库中执行了写操作,那么在接下来极短的一段时间内,此会话的读请求暂时被强制路由到数据库Master,与“强制读主”方案中的例子很像,保证每个用户的写操作立刻对自己可见。暂时强制读主的时间可以被设定为略高于数据库完成主从数据复制的延迟时间,尽量使强制读主的时间段覆盖主从数据复制的实际延迟时间。
2、本地缓存
对于本地缓存,由于其内存有限,所以在使用时要考虑到及时的清除一些冷数据,并且应该设置过期时间作为兜底策略避免内存溢出。
- 常见内存淘汰策略
- FIFO ( First In First Out)策略:优先淘汰最早的缓存的数据。
- LFU(Least Frequently Used)策略:优先淘汰最不常用的数据(计数)。
- LRU(Least Recently Used)策略:优先淘汰最近最少使用的数据(双向链表+哈希表)
- W-TinyLFU 策略
相关论文,W-TinyLFU结合了LFU和LRU策略的优点。
(1) Window LRU段(对应图中的LRU):此内存段使用LRU策略缓存数据,其占用的内存空间是总缓存内存空间的1%。
(2)Segment LRU段(简称SLRU):此内存段使用SLRU策略缓存数据,具体是将缓存段进一步划分为protected段(保护段)和probation段(试用段),其中probation段负责存储最近被访问1次的缓存数据protected段负责存储最近被访问至少2次的缓存数据。Segment LRU段内存空间的80%被分配给protected段,剩余20%的内存空间被分配probation段。
工作流程:
W-TinyLFU策略使用Count-Min Sketch近似算法来保存每条缓存数据的访问频率。
3、分布式缓存
本地缓存将数据缓存在服务进程的内存当中,因此会存在一些局限性问题。
1)无法共享:多个服务进程之间无法共享本地缓存。
2)可扩展性差:由于服务进程携带了数据,因此服务是有状态的。有状态的服务不具备较好的可扩展性。
3)内存易失性:服务进程重启,缓存数据全部丢失。
4)编程语言限制:本地缓存与程序绑定,用Golang语言开发的本地缓存组件不可以直接为用Java语言开发的服务器所使用。
- 主流的分布式缓存技术
对比维度 | Redis | Memcached |
---|---|---|
数据结构 | 支持丰富数据结构:String、Hash、List、Set、Sorted Set、Bitmap、Geo、HyperLogLog 等 | 仅支持简单 Key-Value 键值对 |
持久化 | 支持 RDB(快照)和 AOF(日志)持久化,数据可存储到磁盘并重启恢复 | 不支持持久化,数据仅存于内存,服务重启或失效后数据丢失 |
集群与高可用性 | 原生支持 Redis Cluster 集群(自动分片、故障转移),支持 Sentinel 哨兵实现主从复制和自动故障转移 | 不支持原生集群,需通过客户端(如一致性哈希)或代理层实现分片,无内置高可用机制 |
内存管理 | 支持动态内存分配(如jemalloc/tcmalloc),可配置多种淘汰策略(LRU/LFU/随机淘汰/过期优先等) | 使用固定大小的 Slab Allocation 机制,仅支持近似 LRU 淘汰策略(不可配置),可能产生内存碎片 |
单个 Value 大小限制 | 最大支持 512MB | 最大支持 1MB(超过会报错) |
附加功能 | 支持事务、Lua 脚本、发布订阅(Pub/Sub)、管道(Pipeline)、分布式锁、计数器、消息队列等 | 仅提供基础的增删改查(GET/SET/DELETE 等),无复杂功能 |
应用场景 | 复杂场景:分布式缓存、分布式锁、排行榜、地理位置查询、实时数据分析、消息中间件等 | 简单场景:页面缓存、API 结果缓存、临时数据存储(需快速读取、数据无需持久化) |
性能特点 | 单线程模型(基于 IO 多路复用),功能复杂但性能优异,适合中等复杂度场景 | 多线程模型(后期版本),极简设计,纯内存 Key-Value 操作,性能极致,适合超高并发的简单缓存场景 |
4、缓存问题
1)缓存雪崩
- 缓存雪崩是指在同一时间Redis缓存中的数据大面积过期,导致请求涌向数据库。
- 解决方案:在设置缓存过期时间时,使用随机过期时间策略或者在小范围内随机分布。
2)缓存击穿
- 缓存击穿是指单个热点 Key 失效,大量并发请求集中访问该 Key,击穿缓存大量请求访问数据库。
- 解决方案:
– 热Key不过期
–SingleFlight :请求合并,响应共享。
3)缓存穿透
- 用户频繁查找一个即不存在数据库当中也不在Redis的Key,这些请求会全部穿透Redis直达数据库导致数据库崩溃。
- 解决方案:布隆过滤器,将存在的数据通过k个hash函数进行映射将对应数组对应位置置为1,查询时通过hash函数获取对应数组内的值,判断,若任意一个位置存在0即数据一定不存在,若都为1,则可能存在,因为存在hash碰撞问题,所以布料过滤器存在一定的误判。
4)缓存不一致问题
解决方案:先更新数据库再删除缓存
5、高并发读场景总结:CQRS
CQRS(Command Query Responsibility Segregation,命令职责查询分离)
三、高并发写场景解决方案
1、数据分片
- 分库分表
- 垂直拆分:根据业务进行拆分
- 水平拆分
1)范围分区
2)哈希分区
3)一致性哈希分区
2、异步写和写聚合
-
异步写是指用户将操作提交后立即得到响应,异步查询结果
-
写聚合
将多次操作融合到一起,例如对数据库的写操作可以将一次一次的写操作融合成一个批处理操作,减少与数据库的交互次数。
四、总结
一、高并发定义与核心要素
- 定义:
系统在短时间内处理大量并发请求的能力,目标是确保高负载下稳定高效运行,核心体现为高性能、高可用、可扩展。 - 必要条件:
- 高性能:提升并行处理能力,降低响应时间(如优化算法、减少IO)。
- 高可用:系统长期稳定运行,通过冗余、故障转移等机制减少宕机(可用性=正常运行时间/总时间)。
- 可扩展性:通过水平扩容(增加节点)线性提升吞吐量(可扩展性=吞吐量提升比/节点增加比)。
二、高并发场景分类与解决方案
(一)高并发读场景
-
数据库读写分离:
- 主从架构:主库(Master)写、从库(Slave)读。
- 主从延迟解决方案:
- 同步数据复制:主库等待从库复制完成后返回(牺牲吞吐量,保证强一致)。
- 强制读主:写操作后强制当前会话读主库(适用于用户需立即看到更新的场景)。
- 会话分离:写操作后短时间内强制会话读主库,覆盖主从复制延迟(保证用户视角一致性)。
-
本地缓存:
- 淘汰策略:
- FIFO(先入先出)、LFU(最少使用)、LRU(最近最少使用)。
- W-TinyLFU:结合LFU和LRU优点,通过Count-Min Sketch计数+SLRU分段(保护段/试用段)优化热点数据缓存。
- 淘汰策略:
-
分布式缓存(Redis vs Memcached):
- Redis:支持复杂数据结构、持久化、集群(Cluster)和哨兵(Sentinel)高可用,适合分布式锁、排行榜等复杂场景。
- Memcached:纯Key-Value、高性能、无持久化,适合简单高频读(如页面缓存)。
-
缓存常见问题:
- 雪崩:大量Key同时过期,请求涌向后端。
- 解决方案:随机化过期时间(避免集中失效)。
- 击穿:单个热点Key失效,并发请求直达数据库。
- 解决方案:热点Key永不过期、加锁(如SETNX分布式锁)、请求合并(SingleFlight)。
- 穿透:查询不存在的Key,缓存和数据库均无数据。
- 解决方案:布隆过滤器(概率性判断Key存在,减少无效数据库查询)。
- 不一致:缓存与数据库数据不一致。
- 解决方案:先更新数据库再删除缓存(需注意并发问题,最终一致性)。
- 雪崩:大量Key同时过期,请求涌向后端。
-
架构模式:
- CQRS(命令查询职责分离):读写链路分离,读端可结合缓存、搜索引擎优化,写端专注事务处理。
(二)高并发写场景
-
数据分片:
- 垂直拆分:按业务模块分库(如订单库、用户库),降低单库复杂度。
- 水平拆分:
- 范围分区:按数据范围(如时间、ID区间)分片(适合有序查询)。
- 哈希分区:通过哈希函数分散数据(均匀分布,但范围查询困难)。
- 一致性哈希:节点增减时仅影响邻近数据,减少迁移量(需虚拟节点优化均衡性)。
-
异步写与写聚合:
- 异步写:用户提交后立即响应,后台通过消息队列(如Kafka)异步处理写操作(解耦流量,削峰填谷)。
- 写聚合:将多次写操作合并为批处理(如批量插入/更新),减少数据库连接开销和网络IO(提升吞吐量)。
场景 | 核心技术 | 典型工具/方案 | 核心目标 |
---|---|---|---|
高并发读 | 读写分离、缓存、布隆过滤器 | 主从复制、Redis/Memcached、CQRS | 分流数据库压力,提升读性能 |
高并发写 | 数据分片、异步写、写聚合 | 分库分表、消息队列、批量操作API | 突破单节点写入瓶颈,提升吞吐量 |
缓存问题应对 | 过期策略、锁、布隆过滤器 | 随机过期、SETNX、Count-Min Sketch | 避免缓存失效导致的数据库压力 |
相关文章:
高并发架构及场景解决方案
高并发 一、什么是高并发? 高并发是指系统在短时间内能够同时处理大量用户请求或任务的能力,是衡量分布式系统、互联网应用性能的重要指标之一。它的核心目标是确保系统在高负载下仍能稳定、高效运行,同时提供良好的用户体验。 1、高并发系…...
[ linux-系统 ] 常见指令2
1. man 指令 语法:man [选项] 命令 功能:查看联机手册获取帮助。 选项说明-k根据关键字搜索联机帮助。num只在第num章节找。-a显示所有章节的内容。 man是 Unix 和类 Unix 系统中的一个命令,用于查看操作系统和软件的手册页面(ma…...
Spring AI快速入门
一、引入依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId> </dependency> <dependencyManagement><dependencies><dependency><groupId>o…...
TCP数据报
三次握手(Three-Way Handshake) 是 TCP 协议中用于建立可靠连接的过程。通过三次握手,客户端和服务器能够确认彼此的存在,并且同步各自的初始序列号,为后续的数据传输做好准备。三次握手确保了双方在正式传输数据前能…...
JS循环-for循环嵌套
打印5行5列星星 效果图 代码: // 打印出5行5列的星星for(i 1 ; i < 5 ; i ) {// 外层控制打印行for(j 1 ; j < 5 ; j ) {// 内层控制每行打印几个document.write(⭐)}document.write(<br>)} 打印侧三角 效果图 代码: for(i 1 ; i &l…...
【技术追踪】通过潜在扩散和先验知识增强时空疾病进展模型(MICCAI-2024)
向扩散模型中引入先验知识,实现疾病进展预测,扩散模型开始细节作业了~ 论文:Enhancing Spatiotemporal Disease Progression Models via Latent Diffusion and Prior Knowledge 代码:https://github.com/LemuelPuglisi/BrLP 0、摘…...
Linux/AndroidOS中进程间的通信线程间的同步 - 内存映射
前言 如何使用 mmap()系统调用来创建内存映射。内存映射可用于 IPC 以及其他很多方面。 1 概述 mmap()系统调用在调用进程的虚拟地址空间中创建一个新内存映射。映射分为两种。 文件映射:文件映射将一个文件的一部分直接映射到调用进程的虚拟内存中。一旦一个文…...
单例模式的实现方法
单例模式(Singleton Pattern)是一种常用的软件设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。这种模式在需要控制对资源(如配置对象、线程池、缓存等)的访问时特别有用。 一、单例模…...
laravel 12 监听syslog消息,并将消息格式化后存入mongodb
在Laravel 12中实现监听Syslog消息并格式化存储到MongoDB,需结合日志通道配置、Syslog解析和MongoDB存储操作。以下是具体实现方案: 一、环境配置 安装MongoDB扩展包 执行以下命令安装必要的依赖: composer require jenssegers/mongodb ^4.0确…...
如何在使用 docker-compose 命令时指定 COMPOSE_PROJECT_NAME ?
1.默认值 COMPOSE_PROJECT_NAME 环境变量的默认值并非 docker。在没有显式设置 COMPOSE_PROJECT_NAME 时,其默认值是运行 docker-compose 命令所在目录的基础名称(也就是当前工作目录去掉路径后的文件夹名称)。 以下为你详细说明࿱…...
在命令行终端中快速打开npm包官网
命令 npm home 命令用于快速打开指定 npm 包的官网。例如,npm home react 会尝试打开 React 库的官方网站。 npm home PACKAGE_NAME 该命令会首先查找指定包的 package.json 文件中的 homepage 字段,如果存在,则打开该字段指定的网址。 {&…...
鸿蒙NEXT开发动画(风格的弹性缩放加载动画组件)
1.创建空白项目 2.Page文件夹下面新建Spin.ets文件,代码如下: // 接口定义(必须放在使用前) /*** 关键帧动画整体配置参数*/ interface KeyframeAnimationConfig {iterations: number;delay: number; }/*** 单个关键帧动画项*/…...
【MongoDB篇】MongoDB的事务操作!
目录 引言第一节:什么是事务? (ACID 原则)第二节:MongoDB 的演进:多文档 ACID 事务的到来!🎉第三节:事务的“玩法”——如何执行一个事务?💻🤝第四节…...
Android第六次面试总结之Java设计模式篇(一)
一、单例模式在 Android 面试中的核心考点 1. Android 中如何安全实现单例?需注意哪些坑?(字节跳动、美团面试真题) 解答: Android 中实现单例需重点关注 Context 泄漏、线程安全 和 反射 / 序列化攻击。 推荐实现&…...
关于论文中插入公式但是公式相对于段落的位置偏上应该如何调整备份
因为mythtype之前插入到word里面出现了一些问题就给删掉了,本来要是word里面内联mythtype的话直接,点击mythtype的格式化就可以了, 也就是这个佬的视频介绍链接 然后现在试了试普通word里面的方法,这个是比较有用的 然后看这个例…...
[java八股文][Java并发编程面试篇]并发安全
juc包下你常用的类? 线程池相关: ThreadPoolExecutor:最核心的线程池类,用于创建和管理线程池。通过它可以灵活地配置线程池的参数,如核心线程数、最大线程数、任务队列等,以满足不同的并发处理需求。Exe…...
【东枫科技】代理英伟达产品:智能网卡
文章目录 对比详细:NVIDIA ConnectX-7 适配器详细:NVIDIA ConnectX-6 Lx 以太网智能网卡详细:NVIDIA ConnectX-6 Dx 以太网智能网卡详细:NVIDIA ConnectX-6 InfiniBand 适配器 对比 详细:NVIDIA ConnectX-7 适配器 为最…...
eNSP中路由器OSPF协议配置完整实验和命令解释
本实验使用三台华为路由器(R1、R2和R3)相连,配置OSPF协议实现网络互通。拓扑结构如下: 实验IP规划 R1: GE0/0/0: 192.168.12.1/24 (Area 0)Loopback0: 1.1.1.1/32 (Area 0) R2: GE0/0/0: 192.168.12.2/24 (Area 0)GE0/0/1: 192.…...
解锁健康生活:全新养身指南
健康养身不是遥不可及的目标,而是由一个个小习惯编织成的生活方式。当我们将这些健康理念融入日常,就能为身体注入源源不断的活力。 从 “吃” 开始守护健康。尝试制作 “营养碗”,底层铺满羽衣甘蓝、生菜等绿叶蔬菜,中间搭配水…...
win11 怎样把D盘空间分给C盘一点
如下所示,我的C盘甚至已经爆红了,打算D盘清理一些空间给C盘。 首先附上链接,这是我在b站看的教程,虽然跟着视频没成功,但是结合评论区大神们的建议,尝试了好几种方法,最终自己摸索成功了。 【怎…...
Apache Doris与StarRocks对比
## 历史背景 Apache Doris源自百度的Palo项目,于2017年开源,2018年贡献给Apache基金会,并于2022年从Apache孵化器毕业成为顶级项目。StarRocks则是由原Apache Doris团队的一部分成员在2020年分支出来成立的独立项目,最初称为DorisDB,后更名为StarRocks。这两个项目虽然有…...
OSCP - Proving Grounds - NoName
主要知识点 linux命令注入SUID find提权 具体步骤 从nmap开始搜集信息,只开放了一个80端口 Nmap scan report for 192.168.171.15 Host is up (0.40s latency). Not shown: 65534 closed tcp ports (reset) PORT STATE SERVICE VERSION 80/tcp open http …...
2025年OpenAI重大架构调整:资本与使命的再平衡
目录 前言 一、调整核心:三重架构的重构 1.1 控制权的重新锚定 1.2 营利部门的角色转型 1.3 资金池的重新配置 二、调整动因:三重矛盾的破解 2.1 资金需求与融资限制的冲突 2.2 商业竞争与使命纯度的博弈 2.3 内部治理与外部监管的张力 三、产…...
【quantity】0 README.md文件
PhysUnits 物理单位库 Type-safe physical quantities with dimensional analysis 带量纲分析的类型安全物理量库 A Rust library for safe unit operations / Rust实现的类型安全单位计算库 Core Design / 核心设计 1. Dimension / 量纲 /// Base SI dimensions / 国际单…...
[python] str
一、移除字符串中所有非字母数字字符 使用正则表达式 import re string_value "alphanumeric123__" cleaned_string re.sub(r[\W_], , string_value) # 或 r[^a-zA-Z0-9] print(cleaned_string) # 输出: alphanumeric123使用**str.isalnum()**方法 string_v…...
iOS与HTTPS抓包调试小结
最近在做一个多端 SDK 网络请求兼容性的测试,期间遇到一些 HTTPS 请求抓不到、iOS 抓包失效等问题,趁机整理一下我平时抓包时用到的几个工具和技巧,也顺便记录一下对比体验。 一、传统工具的局限 最早用的是 Charles 和 Fiddler,…...
AI基础知识(02):机器学习的任务类型、学习方式、工作流程
03 机器学习(Machine Learning)的任务类型与学习方式 广义的机器学习主要是一个研究如何让计算机通过数据学习规律,并利用这些规律进行预测和决策的过程。这里的Machine并非物理意义上的机器,可以理解为计算机软硬件组织;Learning可以理解为一个系统或平台经历了某些过程…...
2025年大风灾害预警升级!疾风气象大模型如何筑起安全防线?
近年来,全球极端天气事件频发,大风灾害正成为威胁城市安全、交通运输和公共设施的重要隐患。据气象部门预测,2025年我国大风天气将更加频繁,局部地区可能出现超强阵风,对高空作业、电力设施、交通运输等领域构成严峻挑战。面对这一趋势,传统的气象预警方式已难以满足精准…...
Docker手动重构Nginx镜像,融入Lua、Redis功能
核心内容:Docker重构Nginx镜像,融入Lua、Redis功能 文章目录 前言一、准备工作1、说明2、下载模块3、Nginx配置文件3、Dockerfile配置文件3、准备工作全部结束 二、构建镜像三、基于镜像创建容器三、lua脚本的redis功能使用总结 前言 …...
Spring Boot Starter简介-笔记
1. Starter简介 Spring Boot Starter 是 Spring Boot 框架的核心组件之一,它通过预定义的依赖集合和自动化配置机制,极大简化了 Spring 应用的开发和部署。 Spring Boot Starter 的核心功能 自动化配置(Auto-Configuration) Spr…...
关系型数据库与非关系型数据库深度对比:从设计哲学到应用场景的全解析
关系型数据库与非关系型数据库深度对比:从设计哲学到应用场景的全解析 引言 在数字化浪潮中,数据库技术始终扮演着基础核心角色。本文将通过技术架构、应用场景等维度,深入剖析关系型数据库(RDBMS)与非关系型数据库(NoSQL)的本质差异。我们将以MySQL、MongoDB、Redis等…...
论文速读:《CoM:从多模态人类视频中学习机器人操作,助力视觉语言模型推理与执行》
论文链接:https://arxiv.org/pdf/2504.13351 项目链接:https://chain-of-modality.github.io/ 0. 简介 现代机器人教学的一个重要方向是让机器人通过观看人类的视频演示,自动学习并执行复杂的物理操作任务,比如拧瓶盖、插插头、打…...
系统思考:选择大于努力
在今年的伯克希尔哈撒韦股东大会上,94岁高龄的股神巴菲特再次以他的智慧和幽默,给年轻人留下了三句关于人生的黄金建议。让我印象最深刻的是:“选择和谁一起走,比怎么走更重要。” 这一句话让我反思了许多——人生的轨迹不单单是…...
【HTML5】显示-隐藏法 实现网页轮播图效果
【HTML5】显示-隐藏法 实现网页轮播图效果 实现思路:先将所有图片在页面中设置好,然后给放置图片的元素li添加display:none属性将其隐藏,然后通过js获取到放置图片的元素li,再一个一个的给li元素添加displayÿ…...
Jenkins 改完端口号启动不起来了
让我们将 Jenkins 恢复到默认的 8080 端口,确保它能正常启动: 1. 修改 Jenkins 的配置文件: sudo nano /etc/default/jenkins 将内容修改为: HTTP_PORT8080 JENKINS_ARGS"--webroot/var/cache/jenkins/war --httpPort8080…...
招标专家随机抽选——设计讲解—未来之窗智能编程——仙盟创梦IDE
招标专家系统 专家评标系统是服务于各类招标评标活动的数字化平台。它依托先进信息技术,集专家库管理、随机抽取专家、在线评标等功能于一体。系统依据项目需求设定筛选条件,从庞大专家库中精准抽取合适专家。评标时,专家可在线查阅投标文件…...
Os 库报错指南 路径处理常见陷阱
平台分隔符差异 Windows用\,Unix用/ → 使用os.path.join()自动处理 路径解析错误 os.path.abspath()解析相对路径时依赖当前工作目录 路径规范化缺失 ../等符号链接需用os.path.normpath()规范化 # 不推荐 path dir\\file.txt # Windows风格 path dir/file.…...
GD32/STM32 ADC/DMA使用指南
首先我们对ADC及DMA的基础知识作一下简单介绍。 一、 GD32/STM32 ADC模块的核心要点 一)、ADC基础特性 12位逐次逼近型 GD32/STM32 ADC为12位分辨率,最大量化值为4095(对应3.3V参考电压),支持0-3.3V模拟输入范…...
CSS Border 三角形阴影与多重边框的制作
CSS Border 三角形阴影与多重边框的制作 在现代网页设计中,CSS的强大功能让设计师和开发者能够创造出丰富多彩的视觉效果。本文将深入探讨如何利用CSS的border属性制作三角形阴影以及多重边框效果。这些技巧不仅能提升页面的美观度,还能增强用户体验。…...
ES6/ES11知识点 续五
迭代器【Iterator】 ES6 中的**迭代器(Iterator)**是 JavaScript 的一种协议,它定义了对象如何被逐个访问。迭代器与 for…of、扩展运算符、解构赋值等语法密切相关。 📘 迭代器工作原理 ES6 迭代器的工作原理基于两个核心机制…...
如何选择 边缘计算服务器
边缘计算服务器选型指南(2025年更新版) 一、明确应用场景需求 场景细分 工业控制、自动驾驶等需毫秒级响应的场景,优先选择集成多核处理器(如Xeon D系列)和实时算法加速模块的机型,确保延迟≤50ms&…...
VMware如何安装?Ubuntu详细步骤
VMware如何安装?Ubuntu详细步骤如下: 在VMware中安装Ubuntu是一个常见的操作,适用于开发、测试或学习Linux的场景。以下是详细的实战步骤和注意事项,帮助你顺利完成安装。 准备工作 软件下载: VMware Workstation/Play…...
【Bootstrap V4系列】学习入门教程之 组件-卡片(Card)高级用法
【Bootstrap V4系列】学习入门教程之 组件-卡片(Card)高级用法 一、Sizing 尺寸1.1 Using grid markup 使用网格标记1.2 Using utilities 使用实用程序1.3 Using custom CSS 使用自定义CSS 二、Text alignment 文本对齐方式三、Navigation 导航 一、Sizi…...
WiFi那些事儿(八)——802.11n
目录 802.11n 技术简介与测试项 一、802.11n 技术简介 (一)标准概述 (二)关键技术特性 1. MIMO(多输入多输出)技术 2. 信道绑定(Channel Bonding) 3. 帧聚合(Fram…...
Transformer数学推导——Q56 推导动态残差门控(Dynamic Residual Gating)的权重更新公式
该问题归类到Transformer架构问题集——残差与归一化——残差连接。请参考LLM数学推导——Transformer架构问题集。 1. 引言 在深度学习的演进历程中,网络结构的创新始终围绕着如何更高效地处理信息、提升模型性能展开。动态残差门控(Dynamic Residual…...
Kaggle——House Prices(房屋价格预测)简单实现
题目: 从Kaggle的“House Prices - Advanced Regression Techniques”数据集使用Pandas读取数据,并查看数据的基本信息。选择一些你认为对房屋价格有重要影响的特征,并进行数据预处理(如缺失值处理、异常值处理等)。…...
Vue项目Git提交流程集成
Vue项目Git提交流程集成 本教程将指导你如何在Vue项目中集成一个规范化的Git提交流程,包括代码规范检查、提交信息规范和自动化工具配置。 前置条件 Node.js 14.0 和 npm/yarn/pnpmVue项目(Vue 2或Vue 3均可)Git已初始化的仓库 一、规范化…...
使用 OpenSSL 吊销 Kubernetes(k8s)的 kubeconfig 里的用户证书
一.用 OpenSSL 依据已有的自签名 CA 注销签发的证书的步骤 1. 准备工作 你得有自签名 CA 的私钥(通常是 .key 文件)、CA 证书(通常是 .crt 文件)以及证书吊销列表(CRL)文件。若还没有 CRL 文件,…...
kubeadm部署k8s
我在阿里云上部署的k8s master 4c/8g/40g rocky linux8.9 node1/node2 2c/4g/40g rocky linux8.9 安装docker (我安装的是v1.19.1版本,是旧版本,可以装新版本,docker的版本和kubeadm,kubectl,kubelet版本相同) 1.所有…...
FPGA实战项目1——坦克大战
FPGA实战项目1——坦克大战 根据模块化思想,可将此任务简单的进行模块拆分: 系统原理,模块划分,硬件架构,算法支持,Verilog实现框架 一,系统总体原理 1. 核心设计思想 硬件并行处理&#x…...