前端高频面试题1:HTML/CSS/浏览器/计算机网络
目录
1.为什么会出现margin塌陷?
2.如何解决margin塌陷?
3.HTML5有哪些新特性?
4.常见的语义化标签有哪些?语义化标签的好处?
5.使用css和js做动画有何优劣
6.如何实现文本超出展示省略号
7.deep在css中存在吗?
8.xhtml和html的区别
9.script标签中defer和async的区别
10.什么是强缓存、协商缓存?
11.Cookie、Session、LocalStorage、SessionStorage的区别
12. 输入一个URL到页面过程中发生了什么
13. DNS解析的过程
14.Cookie有哪些配置项
1.为什么会出现margin塌陷?
设计初衷 CSS规范中设定Margin塌陷是为了简化内容排版。例如,段落(
<p>
)默认有上下外边距,若多个段落垂直排列,合并外边距可使间距更自然(如两个margin: 20px
的段落间距仍为20px,而非40px)。触发条件
相邻兄弟元素:垂直排列的两个块级元素,上下边距相遇时合并。
父元素与子元素:父元素无边框、内边距或内容阻隔时,第一个/最后一个子元素的margin可能与父元素的margin合并。
空块级元素:无内容、内边距、边框的元素,上下边距会合并。
补充:Margin塌陷的规则
合并后的值:取两个margin中的较大值。若一正一负,则取两者之和;若均为负,取绝对值较大者。
仅限垂直方向:水平方向的外边距不会合并。
仅块级元素:行内元素、浮动元素、绝对定位元素不会触发。
2.如何解决margin塌陷?
添加阻隔
给父元素设置
border
或padding
(即使border: 1px solid transparent
)。在相邻元素间添加内容或注释(如
<div style="content: ''"></div>
)。触发BFC(块级格式化上下文) BFC会阻止内部元素与外部元素的Margin合并。触发方式:
设置父元素
overflow: hidden/auto
。使用
display: flow-root
(推荐,无副作用)。设置
float: left/right
或position: absolute/fixed
。避免空元素 为空元素添加
padding
、height
或最小高度min-height
。替代方案
使用
padding
代替margin。使用Flex或Grid布局,避免传统盒模型的Margin合并。
3.HTML5有哪些新特性?
语义化标签
媒体标签(<video>和<audio>)
图形动画(Canvas和svg)
表单增强
新输入类型:
url
、number
、date
、range
、search
等。新属性:
placeholder
:输入框提示文本。
required
:必填字段验证。
autocomplete
:自动填充建议。
pattern
:正则表达式验证。本地存储
Web Storage
:客户端存储数据,替代 Cookie。
localStorage
:永久存储,直到手动清除。
sessionStorage
:会话期间存储,关闭标签页后失效。
IndexedDB
:浏览器端非关系型数据库,支持大量数据存储。拖放 API
通信与实时交互
WebSocket:全双工通信协议,支持实时数据传输(如聊天应用)。
WebRTC:浏览器间直接音视频通信(如视频会议)。
4.常见的语义化标签有哪些?语义化标签的好处?
语义化标签:
<header>
、<footer>
:页眉和页脚。
<nav>
:导航栏。
<article>
:独立内容块(如博客文章)。
<section>
:文档中的逻辑分区。
<aside>
:侧边栏或附加内容。
<main>
:页面主要内容区域。
<figure>
和<figcaption>
:媒体内容及其标题。好处:
提升 SEO(搜索引擎优化)
增强可访问性(Accessibility)
提高代码可读性与维护性
5.使用css和js做动画有何优劣
实现原理
CSS Transform/Animation
浏览器优化机制:通过 CSS 的
transform
或animation
实现的动画,浏览器会在合成器线程(Compositor Thread)中处理,跳过主线程的布局(Layout)和绘制(Paint)阶段。硬件加速:
transform
和opacity
属性的动画会被浏览器自动优化,触发 GPU 加速(通过will-change
或translateZ
进一步强化),生成独立的合成层(Composite Layer),避免重排(Reflow)和重绘(Repaint)。声明式语法:通过
@keyframes
或transition
定义动画,浏览器自动插值计算中间帧。JavaScript 动画
逐帧控制:通常通过
requestAnimationFrame
或定时器(如setInterval
)逐帧修改元素的属性(如left
、width
或transform
值)。主线程依赖:大多数属性修改(如
width
、margin
)会触发重排和重绘,这些操作在主线程执行,可能被其他任务阻塞,导致卡顿。手动优化:开发者需要自行处理性能优化,例如批处理 DOM 操作、使用
transform
替代布局属性等。
性能对比
特性 | CSS Transform/Animation | JavaScript 动画 |
线程执行 | 合成器线程(独立于主线程) | 主线程(可能被阻塞) |
重排/重绘 | 无(仅合成阶段) | 可能触发(依赖修改的属性) |
GPU 加速 | 自动优化 | 需手动触发(如使用 transform) |
帧率稳定性 | 高(浏览器优化) | 低(依赖代码质量) |
优缺点对比
CSS 动画的优点:
高性能:浏览器自动优化,适合简单动画(如平移、旋转、缩放)。
代码简洁:声明式语法实现动画更简单(如
transition: transform 0.3s ease
)。流畅性:独立于主线程运行,不受 JavaScript 任务阻塞。
CSS 动画的缺点:
控制能力弱:难以实现复杂逻辑(如弹性动画、路径跟随)。
调试困难:动态修改参数需要覆盖 CSS 类或内联样式。
JavaScript 动画的优点:
精细控制:适合复杂动画(如物理效果、逐帧滚动、游戏动画)。
灵活交互:动态调整动画参数(如暂停、反转、实时响应事件)。
JavaScript 动画的缺点:
性能风险:不当使用易导致卡顿(如频繁修改布局属性)。
开发成本高:需手动优化性能(如节流、缓存变量)。
6.如何实现文本超出展示省略号
// 多行文本
.text {overflow: hidden;text-overflow: ellipsis;display: -webkit-box;-webkit-box-orient: vertical;-webkit-line-clamp: 2; /* 控制显示的行数 */line-clamp: 2; /* 标准属性,部分浏览器可能不支持 */
}// 单行文本
.single-line {overflow: hidden; /* 隐藏溢出内容 */white-space: nowrap; /* 禁止文本换行 */text-overflow: ellipsis; /* 溢出显示省略号 */width: 200px; /* 必须设置宽度(或父级有宽度限制) */
}
7.deep在css中存在吗?
deep是一种vue语法糖,在原生css中不存在,具体写法如下
语法 | 推荐程度 | 兼容性 | 使用场景 |
| 不推荐 | 已废弃 | 旧版 Vue |
| 不推荐 | 已废弃 | 早期 CSS Modules |
| 推荐 | Vue 2 和 Vue 3 兼容 | Vue 2 或向后兼容 |
| 强烈推荐 | Vue 3 标准 | Vue 3 |
8.xhtml和html的区别
XHTML和HTML的主要区别在于语法严格性、文件扩展名、标签和属性要求以及应用场景等方面。
首先,语法严格性是两者最显著的区别之一。XHTML要求所有标签必须闭合,即使是空标签也需要闭合(例如
<br>
应写作<br/>
),而HTML则相对宽松,某些情况下标签可以不闭合。此外,XHTML区分大小写,标签和属性名称必须使用小写,而HTML不区分大小写。XHTML的属性值必须用引号括起来,无论是单引号还是双引号都可以使用,而HTML则不需要。其次,文件扩展名也不同。HTML文件的扩展名可以是
.html
或.htm
,而XHTML文件的扩展名则是.xhtml
、.xht
或.xml
。在标签和属性要求方面,XHTML要求所有标签必须正确嵌套和闭合,标签名必须小写,属性值必须用引号括起来。例如,正确的XHTML代码是
<img src="img.jpg" />
,而错误的写法是<img src=img.jpg>
。最后,应用场景方面,XHTML更适合用于需要严格结构的应用,如XML处理工具,因为它符合XML规范。而HTML则适用于传统的Web浏览器解析,语法相对宽松,更适合快速开发和部署。
9.script标签中defer和async的区别
默认情况:
<script>
标签会按照在HTML中的顺序执行,下载后同步加载脚本,阻塞页面加载和渲染async属性:脚本会异步下载并执行,不会阻塞页面加载和渲染,脚本下载完后立即执行,不管其在文档中的位置。
defer属性:脚本也会异步下载,但不会立即执行,将在文档解析完成时,按照在文档中的顺序加载。
10.什么是强缓存、协商缓存?
强缓存: 当浏览器请求资源时,首先检查本地缓存是否命中。如果命中,则直接从缓存中读取资源,无需向服务器发送任何请求。(返回200)
协商缓存: 当强缓存未命中时,浏览器会向服务器发送请求,询问服务器资源是否发生变化。如果服务器告知资源未改变,则浏览器从缓存中读取资源;如果服务器告知资源已改变,则浏览器会下载新资源并更新缓存。(返回304)
11.Cookie、Session、LocalStorage、SessionStorage的区别
Cookie
:
存储位置:Cookie存储在客户端的浏览器中。
生命周期:Cookie可以设置过期时间(Expires或Max-Age),到期后自动删除;若未设置过期时间,则为会话级(浏览器关闭后清除)。
容量限制:一般大小限制为4KB左右。
使用场景:主要用于用户身份认证(如记住登录状态)、保存用户偏好设置和跟踪用户行为(如广告点击记录)。
安全性:容易被劫持(如XSS攻击),可以通过设置HttpOnly和Secure属性提高安全性。
登录状态:可以在用户未登录时使用。
跨页面:可以跨多个页面和不同子域共享。
传输数据:每次请求都会携带 Cookie 数据。
Session
:
高安全性场景
:适用于需要保护敏感数据的场景,如在线银行、支付系统等。
存储位置:Session存储在服务端,服务器为每一个用户创建唯一的会话(Session)。
生命周期:Session存在于用户活动的会话期间,当用户退出或者关闭浏览器,会话数据就会被删除。
容量限制:取决于服务器配置。
使用场景:
用户会话管理
:用于存储用户的会话信息,如购物车数据、用户权限等。安全性:相对安全,通过加密的 Session ID 进行识别和验证,且客户端不可见。
登录状态:需要用户登录后才能创建和访问会话数据。
跨页面:通常只能在单个会话期间。
传输数据:仅在初始会话时传输 Session ID,后续请求不再携带全部会话数据。
LocalStorage
:
前端缓存
:用于缓存大量数据,提高应用性能和用户体验。
存储位置:存储在客户端,浏览器内。
生命周期:持久性存储,除非手动删除,否则永久有效。
容量限制:一般为 5-10MB,各浏览器可能不同。
使用场景:
长期数据存储
:适用于存储长期有效的数据,如用户偏好设置、浏览历史等。安全性:易受 XSS 攻击,数据存储在客户端。
登录状态:需要用户登录后才能创建和访问会话数据。
跨页面:可以在同一域下的所有页面中共享数据。
传输数据:不随请求发送,仅在客户端存储和访问。
SessionStorage
:
多标签页数据隔离
:在同一域名下的不同标签页之间实现数据隔离,防止数据污染。
存储位置:存储在客户端,浏览器内。
生命周期:会话级别,浏览器关闭或标签页关闭后失效。
容量限制:一般为 5-10MB,各浏览器可能不同。
使用场景:
临时数据存储
:适用于存储会话级别的数据,如表单数据、页面状态等。安全性:易受 XSS 攻击,数据存储在客户端。
登录状态:需要用户登录后才能创建和访问会话数据。
跨页面:手动新建标签页无法共享数据,通过链接打开新页面会复制一套原有数据,但与原数据是独立的。
传输数据:不随请求发送,仅在客户端存储和访问。
12. 输入一个URL到页面过程中发生了什么
通过 DNS 解析域名的实际 IP 地址
检查浏览器是否有缓存,命中则直接取本地磁盘的 html,如果没有命中强缓存,则会向服务器发起请求(先进行下一步的 TCP 连接)
若强缓存和协商缓存都没有命中,则返回请求结果
然后与 WEB 服务器通过三次握手建立 TCP 连接。期间会判断一下,若协议是 https 则会做加密,如果不是,则会跳过这一步
加密完成之后,浏览器发送请求获取页面 html,服务器响应 html,这里的服务器可能是 server、也可能是 cdn
接下来是浏览器解析
HTML
,开始渲染页面
构建DOM树:词法分析然后解析成DOM树(dom tree),是由dom元素及属性节点组成,树的根是document对象
构建CSS规则树:生成CSS规则树(CSS Rule Tree)
构建render树:Web浏览器将DOM和CSSOM结合,并构建出渲染树(render tree)
布局(Layout):计算出每个节点在屏幕中的位置
绘制(Painting):即遍历render树,并使用UI后端层绘制每个节点。
13. DNS解析的过程
浏览器缓存:浏览器首先检查自身缓存是否有该域名的IP记录,若有则直接使用。
系统缓存与Hosts文件:若浏览器无缓存,操作系统检查本地缓存(如Windows的DNS缓存)及Hosts文件,存在记录则返回。
本地DNS服务器查询:
用户配置的本地DNS服务器(如ISP提供的或公共DNS)接收递归查询请求。
若本地DNS有缓存且未过期,直接返回IP;否则开始迭代查询。
根域名服务器指引:本地DNS向根服务器查询,根服务器返回管理该顶级域(如
.com
)的顶级域名服务器地址。顶级域名服务器指引:本地DNS询问顶级服务器(如
.com
服务器),获取管理目标域(如example.com
)的权威服务器地址。权威域名服务器解析:本地DNS向权威服务器查询,获得域名对应的IP(如
www.example.com
的A记录),并缓存结果。结果返回与缓存:本地DNS将IP返回给用户,浏览器缓存该记录,后续请求可快速响应。
14.Cookie有哪些配置项
1.名称和值(Name and Value)
每个Cookie都有一个名称和值,名称和值由服务器设置,并在发送给客户端时存储在浏览器中。
document.cookie = "username=JohnDoe";
2.域(Domain)
指定Cookie所属的域。默认情况下,Cookie属于创建它的域。
document.cookie = "username=JohnDoe; domain=example.com";
3.路径(Path)
指定Cookie的有效路径。只有在该路径下的页面才能访问Cookie。
document.cookie = "username=JohnDoe; path=/account";
4.有效期(Expires)
指定Cookie的过期时间。可以设置为特定的日期和时间,超过这个时间后,Cookie将被删除。
document.cookie = "username=JohnDoe; expires=Fri, 31 Dec 2024 23:59:59 GMT";
5.最大年龄(Max-Age)
指定Cookie从创建开始的有效时间,以秒为单位。这个属性比expires属性更精确。
document.cookie = "username=JohnDoe; max-age=3600";
6.安全性(Secure)
指定Cookie只能通过HTTPS协议发送,确保数据传输的安全性。
document.cookie = "username=JohnDoe; secure";
7.HttpOnly
指定Cookie只能通过HTTP协议访问,客户端JavaScript无法访问,增加安全性,防止跨站脚本攻击(XSS)。
document.cookie = "username=JohnDoe; HttpOnly";
8.SameSite
指定Cookie的SameSite属性,防止跨站请求伪造(CSRF)攻击。取值可以是
Strict
、Lax
或None
。document.cookie = "username=JohnDoe; SameSite=Strict";
创建于2025.5.29,后续继续更新
相关文章:
前端高频面试题1:HTML/CSS/浏览器/计算机网络
目录 1.为什么会出现margin塌陷? 2.如何解决margin塌陷? 3.HTML5有哪些新特性? 4.常见的语义化标签有哪些?语义化标签的好处? 5.使用css和js做动画有何优劣 6.如何实现文本超出展示省略号 7.deep在css中存在吗&…...

LLaMaFactory 微调QwenCoder模型
步骤一:准备LLamaFactory环境 首先,让我们尝试使用github的方式克隆仓库: git config --global http.sslVerify false && git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git # 创建新环境,指定 Python 版本(以 3.…...
Git全流程操作指南
Git全流程操作指南 一、Git 环境配置 1. 安装 Git Windows:下载 Git for Windows macOS:brew install git Linux: sudo apt-get update && sudo apt-get install git # Debian/Ubuntu sudo yum install git …...

【最新版】Arduino IDE的安装入门Demo
1、背景说明 1、本教程编写日期为2025-5-24 2、Arduino IDE的版本为:Arduino IDE 2.3.6 3、使用的Arduino为Arduino Uno 1、ArduinoIDE的安装 1、下载。网址如下:官网 2、然后一路安装即可。 期间会默认安装相关驱动,默认安装即可。 3、安…...

不起火,不爆炸,高速摄像机、数字图像相关DIC技术在动力电池新国标安全性能测试中的应用
2026年7月1日,我国将正式实施GB38031-2025《电动汽车用动力蓄电池安全要求》——这项被称为“史上最严电池安全令”的新国标,首次将“热失控不蔓延、不起火、不爆炸”从企业技术储备上升为强制性要求,标志着电池安全进入“零容忍”时代&#…...

thinkadmin中使用layui日期选择器,数据库存储时间戳
form.html <div class="layui-form-item label-required-prev" id="jiezhi_time-div">...

WSL中ubuntu通过Windows带代理访问github
WSL中ubuntu通过Windows带代理访问github 前言: WSL是Windows下的ubuntu访问工具,目前无法访问外网,因此需要配置一下。 步骤一 代理中进行如下设置: 步骤二 ubuntu22.04中修改配置 使用如下命令获取IP地址: ip route | grep default | aw…...

RISC-V特权模式及切换
1 RISC-V特权模式基本概念 1.1 RISC-V特权模式介绍 RISC-V 指令集架构(ISA)采用多特权级别设计作为其核心安全机制,通过层次化的权限管理实现系统资源的隔离与保护。该架构明确定义了四个层次化的特权模式,按照权限等级由高至低…...
Python爬虫实战:研究Tornado框架相关技术
1. 引言 1.1 研究背景与意义 网络爬虫作为一种自动获取互联网信息的程序,在信息检索、数据挖掘、舆情分析等领域有着广泛的应用。随着互联网数据量的爆炸式增长,对爬虫的性能和效率提出了更高的要求。传统的同步爬虫在处理大量 URL 时效率低下,而异步爬虫可以显著提高并发…...

【深度学习】11. Transformer解析: Self-Attention、ELMo、Bert、GPT
Transformer 神经网络 Self-Attention 的提出动机 传统的循环神经网络(RNN)处理序列信息依赖时间步的先后顺序,无法并行,而且在捕捉长距离依赖关系时存在明显困难。为了解决这些问题,Transformer 引入了 Self-Attent…...
Ubuntu实现和主机的复制粘贴 VMware-Tools(open-vm-tools)
Ubuntu实现和主机的复制粘贴 VMware-Tools(open-vm-tools) 1.安装open-vm-tools # 更新软件源并安装工具包 sudo apt update sudo apt install open-vm-tools open-vm-tools-desktop -y2.启用剪贴板共享 sudo nano /etc/vmware-tools/tools.conf添加或…...

4060显卡什么水平 4060显卡参数介绍
NVIDIA的GeForce RTX 40系列显卡基于最新的Ada Lovelace架构,提供了前所未有的图形处理能力和效率。其中,RTX 4060定位中高端市场,针对那些寻求卓越性能同时又注重成本效益的用户群体。那么,4060显卡什么水平呢?本文将…...
Kafka Producer 如何实现Exactly Once消息传递语义
Exactly-Once (精确一次) 是 Kafka 中最高级别的消息传递语义,确保消息既不会丢失也不会重复。以下是 Kafka Producer 实现 Exactly-Once 语义的关键机制: 1. 实现方法 1.1 启用幂等性 (Idempotence) props.put("enable.idempotence", &quo…...
通过ansible playbook创建azure 资源
安装 Ansible 在 macOS 上 Ansible 可以通过多种方式在 macOS 上安装,推荐使用 pip 或 Homebrew。 使用 Homebrew 安装 Ansible 运行以下命令: brew install ansible使用 pip 安装 Ansible 确保 Python 已安装(macOS 通常自带 Python),然后运行: pip install ansible…...
C++双线程交替打印奇偶数(活泼版)
C双线程交替打印奇偶数(活泼版) 文章目录 C双线程交替打印奇偶数(活泼版)1.🎮 游戏规则说明书2.🔧 游戏道具准备区2.1🧩 道具清单 3.👯♂️ 创建两个线程小伙伴3.1🧑…...

技术为器,服务为本:AI时代的客服价值重构
在智能化浪潮中,大语言模型的出现为客户服务行业注入了全新动能。然而技术创新的价值不在于技术本身,而在于其赋能服务的深度与广度。AI对于我们来说,如同发动机之于汽车,重要的不是引擎参数,而是整车带给用户的驾驶体…...
hadoop异构存储
Hadoop异构存储是一种基于HDFS的存储优化技术,通过将不同热度的数据分配到不同类型的存储介质上实现性能与成本的平衡。以下是其核心原理和实现方式: 一、核心概念 异构存储基本原理:Hadoop集群允许使用SSD、HDD、ARCHIVE等多种存储介质…...

EasyVoice:开源的文本转语音工具,让文字“开口说话“
名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、EasyVoice是什么?1. 核心特性一览2. 技术架构概览 二、安装部署指南…...

扫地机产品异物进入吸尘口堵塞异常检测方案
扫地机产品异物进入吸尘口堵塞异常的检测方案 文章目录 扫地机产品异物进入吸尘口堵塞异常的检测方案一.背景二.石头的音频异常检测的方案2.1 音频检测触发点2.1.1时间周期2.1.2根据清洁机器人清扫模式或清扫区域污渍类型,即当清扫模式为深度清洁模式 或清扫区域污渍类型为重度…...

C++并集查找
前言 C图论 C算法与数据结构 本博文代码打包下载 基本概念 并查集(Union-Find)是一种用于处理动态连通性(直接或间接相连)的数据结构,主要支持两种操作:union 和 find。通过这两个基本操作,可…...
git reset --hard HEAD~1与git reset --hard origin/xxx
git reset --hard HEAD~1与git reset --hard origin/xxx git reset --hard origin/xxx有时候会太长,手工输入略微繁琐,可以考虑: git reset --hard HEAD~1 替代。 或者使用这种方式 git reset撤销当前分支所有修改,恢复到最近一…...
window 显示驱动开发-转换 Direct3D 固定函数状态(二)
未使用的User-Mode显示驱动程序函数 启用固定函数顶点着色器转换器时,Direct3D 运行时不会调用以下 用户模式显示驱动程序函数 : MultiplyTransform SetTransform SetMaterial SetLight CreateLight DestroyLight 1. 核心规则 当 固定功能顶点着…...
双路物理CPU机器上安装Ubuntu并部署KVM以实现系统多开
在双路物理CPU机器上安装Ubuntu并部署KVM以实现系统多开,并追求性能最优,需要从硬件、宿主机系统、KVM配置、虚拟机配置等多个层面进行优化。 以下是详细的操作指南和优化建议: 阶段一:BIOS/UEFI 设置优化 (重启进入) 启用虚拟化…...

C++ RB_Tree
一、红黑树是什么?—— 带颜色标记的平衡二叉搜索树 红黑树是一种自平衡二叉搜索树,它在每个节点上增加了一个颜色属性(红色或黑色),通过对颜色的约束来确保树的大致平衡。这种平衡策略被称为 "弱平衡"&…...
命令模式,观察者模式,状态模式,享元模式
什么是命令模式? 核心思想是将原本直接调用的方法封装为对象(如AttackCommand),对象包含执行逻辑和上下文信息(如目标、参数)。比如,玩家的按键操作被封装成一个命令对象&#…...

kibana解析Excel文件,生成mapping es导入Excel
一、Excel转为CSV格式 在线免费网站:EXCEL转CSV - 免费在线将EXCEL文件转换成CSV (cdkm.com) 二、登录kibana 点击左边菜单栏找到Machine Learning, 进入后上面菜单选择Data Visualizer,然后上穿转好的csv格式的Excel 点击导入输入建立的m…...

开疆智能Profinet转Profibus网关连接EC-CM-P1 PROFIBUS DP从站通讯模块配置案例
本案例是通过开疆智能Profibus转Profinet网关将正弦研发的Profibus从站模块连接的EM600变频器接入到西门子1200PLC的配置案例。 配置过程 1. 打开网关配置软件“”新建项目并添加模块PN2DPM并设置参数 2. 设置网关的Profibus参数。如站地址,波特率等。(…...

Oracle RMAN自动恢复测试脚本
说明 此恢复测试脚本,基于rman备份脚本文章使用的fullbak.sh做的备份。 数据库将被恢复到RESTORE_LO参数设置的位置。 在恢复完成后,执行一个测试sql,确认数据库恢复完成,数据库备份是好的。恢复测试数据库的参数,比如SGA大小都…...

零基础设计模式——结构型模式 - 代理模式
第三部分:结构型模式 - 代理模式 (Proxy Pattern) 在学习了享元模式如何通过共享对象来优化资源使用后,我们来探讨结构型模式的最后一个模式——代理模式。代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 核心思想:为其…...

架构意识与性能智慧的双重修炼
架构意识与性能智慧的双重修炼 ——现代软件架构师的核心能力建设指南 作者:蓝葛亮 🎯引言 在当今快速发展的技术环境中,软件架构师面临着前所未有的挑战。随着业务复杂度的不断增长和用户对性能要求的日益严苛,如何在架构设计中平衡功能实现与性能优化,已成为每个技术…...