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

从性能到安全:大型网站系统架构演化的 13 个核心维度

大型网站系统架构的演化是一个复杂的过程,涉及到多个维度的技术内容,从关键维度进行详细分析:

1.性能维度

  • 缓存技术:包括浏览器缓存、CDN(内容分发网络)缓存、服务器端缓存(如 Memcached、Redis)等。通过在靠近用户的地方缓存静态资源和常用数据,减少服务器的负载和数据传输延迟,提高响应速度。
  • 数据库优化:使用索引优化查询性能,进行数据库的分库分表,以解决单库数据量过大导致的性能问题。采用读写分离技术,将读操作和写操作分发到不同的数据库服务器上,提高数据库的并发处理能力。
  • 异步处理:将一些非关键的业务逻辑,如发送邮件、生成报表等,通过消息队列(如 RabbitMQ、Kafka)进行异步处理,避免阻塞主线程,提高系统的整体响应性能。

2.可用性维度

  • 负载均衡:通过负载均衡器(如 Nginx、F5)将用户请求均匀分发到多个服务器上,避免单点故障,并提高系统的整体处理能力。常见的负载均衡算法有轮询、加权轮询、最少连接数等。
  • 集群技术:将多个服务器组成一个集群,共同对外提供服务。当集群中的某个服务器出现故障时,其他服务器可以自动接管其工作,实现故障转移(Failover),保证系统的可用性。
  • 分布式存储:采用分布式文件系统(如 Ceph、GlusterFS)或分布式数据库(如 Cassandra、HBase),将数据分散存储在多个节点上,避免因单点存储故障导致数据丢失,同时提高数据的读写性能和可扩展性。

3.可扩展性维度

  • 分布式架构:将系统拆分成多个微服务或分布式组件,每个组件可以独立扩展和部署。通过服务治理框架(如 Dubbo、Spring Cloud)来管理服务之间的通信和协作,实现系统的灵活扩展。
  • 弹性伸缩:利用云计算平台的弹性伸缩功能,根据系统的负载情况自动调整服务器资源的数量。例如,当业务流量高峰时自动增加服务器实例,低谷时自动减少实例,以实现资源的高效利用和系统的可扩展性。
  • 接口设计:设计良好的接口是系统可扩展性的关键。采用 RESTful API 等标准接口风格,使得系统易于与其他系统集成,同时也方便后续对系统进行功能扩展和升级。

4.安全性维度

  • 网络安全:通过防火墙、入侵检测系统(IDS)、入侵防御系统(IPS)等网络安全设备,防止外部网络攻击。同时,采用 VPN(虚拟专用网络)等技术,对网络通信进行加密,保证数据传输的安全性。
  • 数据安全:对用户敏感数据,如密码、身份证号等,进行加密存储和传输。采用数据备份和恢复机制,定期对数据进行备份,以防止数据丢失或损坏。
  • 身份认证与授权:采用 OAuth、JWT 等身份认证和授权技术,对用户进行身份验证和权限管理,确保只有合法用户才能访问系统的敏感资源。

5.运维管理维度

  • 监控与告警:通过监控工具(如 Prometheus、Grafana)对系统的各项性能指标,如 CPU 使用率、内存使用率、请求响应时间等进行实时监控。当指标超出阈值时,及时发出告警通知运维人员进行处理。
  • 日志管理:收集和分析系统的日志信息,帮助运维人员快速定位系统故障和问题。采用 ELK(Elasticsearch + Logstash + Kibana)等日志管理工具,可以对海量日志进行高效存储、检索和分析。
  • 自动化部署与运维:使用 Ansible、SaltStack 等自动化运维工具,实现服务器的自动化部署、配置管理和软件升级。通过脚本和工具来完成重复性的运维任务,提高运维效率和准确性。

6.架构维度

  • 分层架构:将系统分为表示层、业务逻辑层、数据访问层等,各层职责明确,便于开发、维护和扩展。不同层次可以根据需求独立进行优化和扩展,例如对表示层进行性能优化以提升用户体验,对业务逻辑层进行功能扩展以满足新的业务需求。
  • 微服务架构:将大型系统拆分成多个小型的、独立运行的微服务,每个微服务专注于完成一项特定的业务功能。微服务之间通过轻量级的通信机制进行交互,这种架构有利于提高系统的可维护性、可扩展性和团队的并行开发效率,同时也便于根据不同微服务的负载情况进行灵活的资源调配。

7.并发分流维度

  • 负载均衡算法优化:除了常见的轮询、加权轮询、最少连接数等算法外,还可以采用更复杂的算法,如基于响应时间的负载均衡算法,根据服务器处理请求的响应时间来动态分配请求,将请求优先分配到响应速度快的服务器上,进一步提高系统的整体性能和响应速度。
  • 流量调度:根据不同的业务场景和流量特征,实现智能的流量调度。例如,在电商促销活动等流量高峰时期,将部分非关键业务的流量暂时引导到备用服务器或降级处理,优先保障核心业务的正常运行;或者根据用户的地理位置、网络状况等因素,将用户请求分配到最合适的服务器节点,以减少网络延迟。

8.缓存维度

  • 多级缓存架构:构建包括浏览器缓存、CDN 缓存、服务器端内存缓存(如 Memcached、Redis)以及本地磁盘缓存等在内的多级缓存体系。不同级别的缓存具有不同的特点和作用,浏览器缓存可以减少用户再次访问相同内容时的网络请求,CDN 缓存可以在离用户更近的地方提供静态资源,服务器端内存缓存用于快速读取常用数据,本地磁盘缓存则可以作为内存缓存的补充,存储一些不经常访问但又不能丢弃的数据。
  • 缓存更新策略优化:采用合理的缓存更新策略,如基于时间的过期策略、基于数据变化的主动更新策略以及结合两者的混合策略。同时,要考虑缓存数据的一致性问题,通过分布式锁、消息队列等技术来确保在数据更新时,相关缓存能够及时、准确地进行更新,避免出现数据不一致的情况。

9.数据维度

  • 数据治理:建立完善的数据治理体系,包括数据标准定义、数据质量监控、数据安全管理等。统一数据的格式、编码和规范,确保数据的一致性和准确性;通过数据质量监控工具及时发现和解决数据中的错误和异常;加强数据安全管理,防止数据泄露和非法访问。
  • 数据挖掘与分析:利用大数据技术,如 Hadoop、Spark 等,对海量的用户数据、业务数据进行挖掘和分析,提取有价值的信息和知识。这些信息可以用于用户画像、个性化推荐、业务决策支持等,提升用户体验和企业的竞争力。

10.持久化维度

  • 关系型数据库优化:对于使用关系型数据库(如 MySQL、Oracle)进行数据持久化的场景,要不断优化数据库的设计和性能。包括合理设计表结构,使用合适的数据类型,创建有效的索引,优化查询语句等。同时,要根据业务需求进行数据库的分库分表,以提高数据库的读写性能和可扩展性。
  • NoSQL 数据库应用:根据业务特点,选择合适的 NoSQL 数据库(如 MongoDB、Cassandra、Redis 等)进行数据持久化。NoSQL 数据库具有高可扩展性、高并发读写能力和灵活的数据模型等优点,适用于处理非结构化或半结构化数据,以及对读写性能要求较高的场景,如缓存、实时数据存储、用户行为数据记录等。

11.分布存储维度

  • 分布式文件系统(DFS):采用分布式文件系统,如 Ceph、GlusterFS 等,将文件分散存储在多个节点上,实现文件的高可用性、可扩展性和容错能力。DFS 可以提供大规模的文件存储服务,支持对文件的并发读写操作,适用于存储大量的静态文件,如图片、视频、文档等。
  • 分布式对象存储:对于对象存储场景,可使用分布式对象存储系统,如 OpenStack Swift、Amazon S3 等。这些系统将数据以对象的形式存储,每个对象具有唯一的标识符,支持大规模的对象存储和高效的检索。分布式对象存储具有高度的可扩展性和灵活性,适合存储各种类型的非结构化数据,并且可以通过 CDN 等技术实现内容的快速分发。

12.数据编码维度

  • 高效编码算法:选择合适的数据编码算法,如 JSON、Protocol Buffers、Avro 等,对数据进行编码。这些编码算法具有不同的特点,例如 JSON 具有良好的可读性和通用性,适用于 Web 应用中的数据交互;Protocol Buffers 具有高效的编码和解码速度,以及较小的数据体积,适合在性能要求较高的分布式系统中使用。根据业务场景和数据特点选择合适的编码算法,可以提高数据的传输效率和存储效率。
  • 数据压缩:在数据存储和传输过程中,采用数据压缩技术,如 gzip、snappy、lz4 等,对数据进行压缩。数据压缩可以减少数据的存储空间和传输带宽,提高系统的性能和响应速度。同时,要根据数据的特点和应用场景选择合适的压缩算法,平衡压缩比和压缩 / 解压缩速度。

13.Web 应用服务器维度

  • 服务器选型与优化:根据系统的性能需求和业务特点,选择合适的 Web 应用服务器,如 Tomcat、Jetty、Nginx 等。对服务器进行优化配置,包括调整线程池大小、内存分配、连接超时时间等参数,以提高服务器的并发处理能力和响应性能。
  • 动态资源优化:对于动态生成的网页和资源,采用模板引擎、代码缓存等技术进行优化。模板引擎可以将页面的静态部分和动态部分分离,提高页面的生成效率;代码缓存可以缓存编译后的代码,避免重复编译,加快请求的处理速度。

相关文章:

从性能到安全:大型网站系统架构演化的 13 个核心维度

大型网站系统架构的演化是一个复杂的过程,涉及到多个维度的技术内容,从关键维度进行详细分析: 1.性能维度 缓存技术:包括浏览器缓存、CDN(内容分发网络)缓存、服务器端缓存(如 Memcached、Red…...

昆仑万维开源SkyReels-V2,近屿智能紧跟AI技术趋势

昆仑万维 SkyReels 团队正式发布并开源全球首个采用扩散强迫框架的无限时长电影生成模型 SkyReels-V2,其通过融合多模态大语言模型、多阶段预训练、强化学习与扩散强迫框架实现协同优化,推动视频生成技术进入新阶段。该模型聚焦解决现有技术在提示词遵循…...

Milvus(4):创建 Collections

1 创建 Collections 可以通过定义 Schema、索引参数、度量类型以及创建时是否加载来创建一个 Collection。 1.1 集合概述 Collection 是一个二维表,具有固定的列和变化的行。每列代表一个字段,每行代表一个实体。要实现这样的结构化数据管理&#xff0c…...

数据预处理:前缀和算法详解

数据预处理:前缀和算法详解 文章目录 数据预处理:前缀和算法详解1.算法原理2.算法作用3.C代码实现4.实战题目 1.算法原理 基本概念 前缀和(Prefix Sum)是一种常用的数据预处理技术,它可以快速求解区间和问题&#xf…...

盈达科技:登顶GEO优化全球制高点,以AICC定义AI时代内容智能优化新标杆

一、技术制高点——全球独创AICC系统架构,构建AI内容优化新范式 作为全球首个实现AI内容全链路优化的技术供应商,盈达科技凭借AICC智能协同中心(自适应内容改造、智能数据投喂、认知权重博弈、风险动态响应四大引擎)&#…...

【Linux】详细介绍进程的概念

目录 一、初识进程概念 真正的进程概念如下: 二、Linux中PCB的操作系统学科叫法:task_struct 1、简单认识task_ struct内容分类 2、问题:操作系统怎么知道当前程序执行到哪一行代码了? 三、linux关于进程的常用指令&#xff…...

mybatis框架补充

一,#{} 和${}区别 1.传数值 #{} 占位符,是经过预编译的,编译好SQL语句再取值,#方式能够防止sql注入 eg:#{}:delete from admin where id #{id} 结果: dalete from admin where id &#x…...

Alertmanager的安装和详细使用步骤总结

一、安装步骤 1. 二进制安装 下载与解压 从GitHub下载最新版本(如v0.23.0):wget https://github.com/prometheus/alertmanager/releases/download/v0.23.0/alertmanager-0.23.0.linux-amd64.tar.gz tar -xzf alertmanager-0.23.0.linux-amd6…...

C++学习:六个月从基础到就业——C++学习之旅:STL迭代器系统

C学习:六个月从基础到就业——C学习之旅:STL迭代器系统 本文是我C学习之旅系列的第二十四篇技术文章,也是第二阶段"C进阶特性"的第二篇,主要介绍C STL迭代器系统。查看完整系列目录了解更多内容。 引言 在上一篇文章中…...

缓存与数据库一致性方案

一、缓存更新策略概述 在现代分布式系统中,缓存作为数据库的前置层,能显著提升系统性能。然而,缓存与数据库之间的数据一致性是一个经典难题。以下是三种常见的缓存更新策略及其优缺点分析。 二、方案对比分析 方案一:直接更新…...

国内ip地址怎么改?详细教程

在中国,更改IP地址需要遵守规则,并确保所有操作合规。在特定情况下,可能需要修改IP地址以满足不同需求或解决特定问题。以下是一些常见且合法的IP地址变更方法及注意事项: 一、理解IP地址 IP地址是设备在网络中的唯一标识&#x…...

通过Quartus II实现Nios II编程

目录 一、认识Nios II二、使用Quartus II 18.0Lite搭建Nios II硬件部分三、软件部分四、运行项目 一、认识Nios II Nios II软核处理器简介 Nios II是Altera公司推出的一款32位RISC嵌入式处理器,专门设计用于在FPGA上运行。作为软核处理器,Nios II可以通…...

拥抱基因体检,迎接精准健康管理新时代

2025年4月20日,由早筛网、细胞科技网联合中国食品药品企业质量安全促进会细胞医药分会、中国抗衰老促进会健康管理工作委员会、中国抗癌协会肿瘤分子医学专业委员会、广东省保健协会,伯温生物冠名支持的《基因体检赋能精准健康管理新时代》圆满召开。 伯…...

QT容器类控件及其属性

Group Box 使用QGroupBox实现一个带有标题的分组框,可以把其它的控件放到里面作为一组 例: 核心属性 属性 说明 title 分组框的标题 alignment 分组框内部内容的对齐方式 flat 是否”扁平模式” checkable 是否可选中 设为true,则…...

云原生--CNCF-3-核心工具介绍(容器和编排、服务网格和通信、监控和日志、运行时和资源管理,安全和存储、CI/CD等)

1、核心工具分类介绍 (1)、容器编排与管理 1、Docker 它是一款轻量级的容器化技术,可把应用及其依赖打包成独立的容器。借助Docker,开发者能够确保应用在不同环境中保持一致的运行状态。比如在开发环境中创建的容器&#xff0c…...

网络基础知识

文章目录 一、网络架构1. 网络架构图2. 各层级功能3. 机房网络常见问题及解决方案 二、交换技术1. 交换技术基础2. 交换技术分类3. 广播域相关概念4. ARP 协议5. 三层交换机6. VLAN(虚拟局域网) 三、路由技术1. 路由器端口类型及功能2. 路由器功能3. 路由…...

第3课:运算符与流程控制——JS的“决策者”

一切美好都值得你全力以赴。即使过程艰难,但只要坚持,必有回响。加油! 欢迎来到「JavaScript 魔法学院」第 3 课!今天我们将化身代码世界的“指挥官”,用运算符计算数据,用流程控制做出决策!文…...

VUE3中使用echarts,配置都正确,不出现tooltip

在vue3中使用echarts,出现个别问题,需要注意echars对象的定义,不能使用reactive或者ref定义响应式变量,要使用shallowRef ; shallowRef 是 Vue 3 提供的一个 API,它创建一个响应式引用(ref),但…...

Python实现邮件发送

一、创造灵感 这几天在指导学生做毕业设计,学生做的是跌倒检测。然后我突然想到,如果这个系统只是单纯地从视频流中检测到人的跌倒动作,其实并没有任何的用途和意义。于是,我又想到,如果跌倒的检测结果,能…...

OSPF的优化

OSPF的优化 1、汇总 --- 减少骨干区域LSA的更新量 汇总 --- 区域汇总 域间路由汇总 --- 在ABR设备上,针对3类LSA进行汇总 [r1-ospf-1-area-0.0.0.2]abr-summary 192.168.0.0 255.255.252.0 注:在进行域间路由汇总时,必须是ABR设备自己通过拓…...

IP-guard离线卸载客户端及清除策略说明

1、控制台生成客户端工具 控制台选择“工具-客户端工具-客户端离线辅助工具”,可生成客户端离线卸载工具及 离线策略清除工具,打包生成exe后,可在离线的客户端上运行,实现离线情况下对客户端 进行卸载或者清除策略。 在控制台上“…...

腾讯秋招面试题:bug生命周期中有哪些状态?

在软件测试中,Bug生命周期是质量管控的核心脉络。不同企业的流程或有差异,但核心状态遵循行业通用规范。以下以腾讯TAPD缺陷管理模型为基础,结合互联网大厂主流实践,详解Bug生命周期的关键状态及流转逻辑。 一、基础状态图谱 图表 代码 下载 确认有效 非缺陷/需求不符…...

PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境

#工作记录 PyCharm Community 连接到Podman Desktop 的 podman-machine-default Linux 虚拟环境详细步骤 1. 准备工作 确保我们已在 Windows 系统中正确安装并启动了 Podman Desktop。 我们将通过 Podman Desktop 提供的名为 podman-machine-default 的 Fedora Linux 41 WSL…...

学习海康VisionMaster之卡尺工具

一:进一步学习了 今天学习下VisionMaster中的卡尺工具:主要用于测量物体的宽度、边缘的特征的位置以及图像中边缘对的位置和间距 二:开始学习 1:什么是卡尺工具? 如果我需要检测芯片的每一个PIN的宽度和坐标&#xff…...

私有知识库 Coco AI 实战(二):摄入 MongoDB 数据

在之前的文章中,我们介绍过如何使用《 Logstash 迁移 MongoDB 数据到 Easyseach》,既然 Coco AI 后台数据存储也使用 Easysearch,我们能否直接把 MongoDB 的数据迁移到 Coco AI 的 Easysearch,使用 Coco AI 对数据进行检索呢&…...

【C/C++】插件机制:基于工厂函数的动态插件加载

本文介绍了如何通过 C 的 工厂函数、动态库(.so 文件)和 dlopen / dlsym 实现插件机制。这个机制允许程序在运行时动态加载和调用插件,而无需在编译时知道插件的具体类型。 一、 动态插件机制 在现代 C 中,插件机制广泛应用于需要…...

硬核科普丨2025年安全、高效网络准入控制系统深度解析

阳途网络准入控制系统(Network Access Control,简称NAC)是当代网络安全领域的重要工具,有效防止未经授权的访问和数据泄露,保障网络资源的安全性和完整性。本文将深入探讨阳途网络准入控制系统的的重要性和作用。 一、…...

2025知识管理趋势解析:AI、协作与用户体验引领变革

知识管理软件是多元化的商业工具,包括知识库系统、wiki、协作平台、文档管理工具、聊天机器人和帮助系统,针对企业信息爆炸式增长的趋势,这些工具正逐步成为提升知识工作者效率和客户服务水平的关键支撑。 知识成为新资产:知识工…...

杂谈-有感而发

今天又拜读了线性代数的几何意义这本书,感觉确实是很不错的,从几何角度讲解线性代数,而且将线性代数、几何、数学、物理有机结合起来了,不仅仅是可视化,重要的是能便于自己独立思考下去。   从大一开始,就…...

使用nodeJs的express+axios+cors做代理

使用nodeJs的expressaxioscors做代理 前端在请求后端时通常会遇到跨域cors问题,如果只在本地开发可以通过webpack或vite的proxy设置。但如果需要在线上或者其他地方绕过跨域,可以使用代理的方法。 1. 创建文件夹 并创建以下文件 package.json {"…...

SQL进阶知识:四、索引优化

今天介绍下关于索引优化的详细介绍,并结合MySQL数据库提供实际例子。 索引优化是数据库性能优化的关键环节之一,尤其是在处理大量数据时。索引可以加快查询速度,减少数据扫描范围,但不当的索引设计也可能导致性能问题。以下是关于…...

C++初阶-类和对象(下)

目录 1.再探构造函数 2.类型转换 3.友元 4.static成员 5.内部类 6.匿名对象 *7.对象拷贝时的编译器优化(非必学) 8.总结 1.再探构造函数 (1)之前我们实现构造函数时,初始化成员变量主要使用函数体内赋值&#…...

RPC通信原理实战

RPC概念及RPC请求响应流程 RPC概念引入 假设有两个模块,用户和订单 在单体项目中,两个模块被打包到一个包,都处在一个tomcat进程中,用户模块调用订单模块属于同一进程内的本地调用 在微服务项目中,用户模块和订单模…...

自动创建 中国古代故事人物一致性图画,看看扣子的空间是否能达到你的满意,自媒体的福音?

欢迎来到涛涛聊AI 看效果: AI绘画最难的人物一致性问题,每次得到的结果都不一致。 官方介绍: 扣子空间是你和 AI Agent 协同办公的最佳场所。 在扣子空间里,精通各项技能的「通用实习生」,各行各业的「领域专家」&…...

【Unity笔记】Unity音效管理:ScriptableObject配置 + 音量控制 + 编辑器预览播放自动化实现

摘要: 本文介绍了如何在 Unity 中构建一个高效的音效管理系统,通过 ScriptableObject 实现音效集中配置,支持为每个音效单独设置音量,并通过自定义 Editor 实现音效的可视化预览播放与下拉选择播放功能,整个系统无场景…...

面向高可靠场景的RISC-V低功耗MCU硬件安全设计

该RISC-V架构的低功耗MCU通过多项硬件级安全技术满足工业控制、汽车电子及物联网等领域对可靠性与安全性的需求。其核心特性包含六个方面: 在数据完整性验证与固件安全升级方面,该MCU通过硬件级校验机制(如CRC、哈希算法)确保固件…...

OpenVINO教程(五):实现YOLOv11+OpenVINO实时视频目标检测

目录 实现讲解效果展示完整代码 本文作为上篇博客的延续,在之前实现了图片推理的基础上,进一步介绍如何进行视频推理。 实现讲解 首先,我们需要对之前的 predict_and_show_image 函数进行拆分,将图像显示与推理器(pre…...

【新能源科学与技术】MATALB/Simulink小白教程(一)实验文档【新能源电力转换与控制仿真】

DP读书:新能源科学与工程——专业课「新能源发电系统」 2025a 版本 MATLAB下面进入正题 仿真一:Buck 电路一、仿真目的二、仿真内容(一)Buck电路基本构成及工作原理(二)Buck电路仿真模型及元件连接&#xf…...

软件项目实施全流程及交付物清单

需求分析 -> 概要设计 -> 详细设计 -> 开发 -> 测试 -> 部署 -> 上线运行 一、确认项目目标、范围和团队成员 二、收集和分析客户需求,确定需求规格 三、制定详细的项目计划,包括时间表、资源计划、预算 四、系统架构设计&#xf…...

Docker安装ES :确保 Kibana 正确连接 Elasticsearch

在使用 Docker 部署 ELK(Elasticsearch、Logstash、Kibana)堆栈时,正确的服务配置和依赖管理至关重要。本文将分享如何优化 Docker Compose 配置,确保 Kibana 能稳定连接到 Elasticsearch,并提供故障排查建议 cd /opt/…...

云贝餐饮 最新 V3 独立连锁版 全开源 多端源码 VUE 可二开

云贝餐饮源码 最新 V3 独立连锁版 全开源 多端源码 VUE 可二开 vue uniapp 独家优化版本 后台管理 Vue 源文件 后台管理文件 yii2 升级包 (全开源) 收银台 Vue 源文件 装修 Vue 源文件 商家端 uni-app 源文件 用户端 uni-app 源文件 数据库文件 云贝餐饮…...

python异步协程async调用过程图解

1.背景: 项目中有用到协程,但是对于协程,线程,进程的区别还不是特别了解,所以用图示的方式画了出来,用于理清三者的概念。 2.概念理解: 2.1协程,线程,进程包含关系 一…...

【Java学习笔记】选择结构

选择结构 内容结构 一、顺序结构 二、分支控制 (1)单分支 (2)双分支 (3)多分支 (4)嵌套分支 (5)switch 分支结构 三、switch和if的比较 一、顺序结构…...

java Nacos

windows下载nacos,版本2.x的,1.0的话会出现“Server check fail, please check server 127.0.0.1 ,port 9848 is available , error {}” 这个鬼问题 下载链接 这里用的是2.0.4版本,启动的话用 startup.cmd -m standalone,单体启…...

c语言之杂识

前言 主要说一下c语言的杂知识 一、预处理指令 1. #include #include指令用于包含其他头文件的内容到当前文件中。这允许您在程序中使用其他模块定义的函数和变量。 示例&#xff1a; #include <stdio.h> // 包含标准输入输出头文件int main() {printf("Hello…...

CSS内边距、外边距、边框

CSS内边距 内边距 &#xff1a;内容区&#xff08;Content&#xff09;与边框&#xff08;Border&#xff09;之间的透明间距&#xff0c;用于增加元素内部的留白。不影响元素内容本身的尺寸&#xff08;如文字大小&#xff09;&#xff0c;但会增大元素的总占用空间。 以下是…...

融山科技前端面经

前端面试问题解答 这次是波珠的第三次面试&#xff0c;持续打怪升级&#xff0c;积累面试中面试官问到的不会的点子。 1.自我介绍 面试官您好&#xff0c;我是来自XX学校XX专业本科的XX名字&#xff0c;然后介绍在学校情况&#xff0c;我就介绍了大一自学前端&#xff0c;然…...

元素滚动和内容垂直居中同时存在,完美的 html 元素垂直居中的方法flex + margin: auto

假设有一个元素 div 作为父容器且宽高固定&#xff0c;里面的内容 content 在父容器中垂直/水平都居中&#xff0c;且当内容很多时&#xff0c;父元素滚动overflow: auto&#xff0c;content的内容要能够完全展示。 我之前在这篇文档提到了两个方法&#xff1a; 使用 flex s…...

STM32F103 单片机(基于 ARM Cortex-M3 内核)的启动过程涉及硬件初始化、固件配置和程序执行流程。

1. 启动模式与地址映射 STM32F103 的启动模式由 BOOT0 和 BOOT1 引脚配置决定&#xff0c;不同的启动模式对应不同的存储器映射&#xff1a; 启动模式 映射地址范围 说明 主 Flash 0x08000000~0x0807FFFF 用户程序存储在 Flash 中&#xff0c;复位后从 Flash 启动&#xff08…...

c++中iota容器和fill的区别

在C 中&#xff0c;std::iota 和 std::fill 都是标准库中的函数&#xff0c;用于对序列进行操作&#xff0c;它们的功能和用法如下&#xff1a; std::iota 功能&#xff1a;std::iota 函数用于将一个连续的递增序列赋值给指定范围的元素。它接受三个参数&#xff0c;第一个参…...