面试问题(连载。。。。)
flexbox 和 crid 的区别
1. 布局维度与核心特性
- Flexbox(弹性盒子)
- 一维布局:专注于行或列的线性排列,适合单方向(水平或垂直)的布局需求。
- 动态分配空间:通过
flex-grow
、flex-shrink
和flex-basis
控制子元素在主轴上的伸缩与对齐,适合响应式设计。 - 对齐灵活:支持
justify-content
(主轴对齐)、align-items
(交叉轴对齐)等属性,轻松实现居中、等分间距等效果。 - 典型场景:导航栏、卡片列表、表单元素排列等。
- CSS Grid(网格布局)
- 二维布局:同时控制行和列,适合复杂的网格结构(如杂志排版、数据表格)。
- 精确控制:通过
grid-template-columns
、grid-template-rows
和grid-area
定义网格区域,实现像素级控制。 - 重叠与嵌套:支持子网格(
subgrid
)和重叠元素,适合复杂设计需求。 - 典型场景:全屏布局、复杂表单、图片画廊等。
2. 关键区别对比
特性 | Flexbox | CSS Grid |
---|---|---|
布局维度 | 一维(行或列) | 二维(行和列) |
空间分配 | 动态伸缩(flex 属性) | 固定或自适应(fr 单位) |
对齐控制 | 主轴与交叉轴(justify/align ) | 行、列、单元格(grid-gap 等) |
嵌套能力 | 需手动嵌套容器 | 支持子网格(subgrid ) |
响应式设计 | 适合简单响应式(如导航栏) | 适合复杂响应式(如全屏布局) |
代码复杂度 | 简单(适合线性布局) | 较高(适合复杂布局) |
3. 如何选择?
- 用 Flexbox 当:
- 需要单方向排列(如导航栏、卡片列表)。
- 动态分配剩余空间(如自适应按钮组)。
- 快速实现居中、等分间距等效果。
- 用 CSS Grid 当:
- 需要二维布局(如杂志排版、全屏布局)。
- 需要精确控制行高、列宽和网格区域。
- 需要实现重叠元素或子网格。
rem 和 em 和 px 的区别
1. 定义与基准
em
(相对父元素字体大小)- 基准:相对于当前元素的直接父元素的
font-size
值计算。 - 继承性:如果父元素未显式设置
font-size
,会逐级向上查找,直到根元素(html
)或默认值(通常为16px
)。
- 基准:相对于当前元素的直接父元素的
rem
(相对根元素字体大小)- 基准:始终相对于根元素(
html
)的font-size
值计算,不受父元素影响。 - 一致性:无论嵌套层级多深,
rem
的计算基准始终是html
的font-size
。
- 基准:始终相对于根元素(
- px 数值固定 不会因为响应式 变化
2. 核心区别对比
特性 | em | rem |
---|---|---|
参考基准 | 父元素的 font-size | 根元素(html )的 font-size |
继承性 | 受父元素影响,可能导致嵌套混乱 | 完全独立于父元素,计算稳定 |
嵌套影响 | 嵌套层级越深,基准值可能变化 | 始终一致,避免“嵌套计算灾难” |
适用场景 | 局部比例缩放(如按钮内图标大小) | 全局响应式布局(如字体、间距) |
css可复用性
一、CSS 可复用性的核心价值
- 减少代码冗余
避免重复编写相同的样式规则(如按钮、间距、颜色等),降低维护成本。 - 提升开发效率
通过复用模块化样式,快速构建新组件或页面。 - 保持设计一致性
统一复用的样式(如间距单位、配色方案)能确保项目视觉风格一致。 - 增强可维护性
修改一处即可全局生效,避免因样式分散导致的遗漏或冲突。
二、实现 CSS 可复用性的关键方法
1. 使用 CSS 预处理器(Sass/Less)
-
变量(Variables)
定义可复用的颜色、字体、间距等值,集中管理设计规范。
- 优点:
- 模块化样式,复用性强。
- 避免选择器优先级问题。
Pinia与Vuex的核心区别
-
架构设计
- Vuex:采用集中式架构,所有状态存储在单一全局状态树中,通过
mutations
和actions
修改状态,适合复杂项目。 - Pinia:采用去中心化模块化设计,每个模块独立管理状态,直接通过
actions
修改状态,更符合Vue 3的Composition API风格。
- Vuex:采用集中式架构,所有状态存储在单一全局状态树中,通过
-
API简洁性与TypeScript支持
- Vuex:API较繁琐,需区分
mutations
(同步)和actions
(异步),TypeScript支持需额外配置。 - Pinia:简化API,无需
mutations
,原生支持TypeScript,类型推断更完善。
- Vuex:API较繁琐,需区分
-
模块化管理
- Vuex:通过
modules
分割状态,但嵌套和类型管理复杂。 - Pinia:每个
Store
独立声明,组合灵活,无需命名空间。
- Vuex:通过
-
性能与体积
- Vuex:体积较大但稳定,状态变更会重新计算所有
getters
。 - Pinia:体积更小(约1KB),利用Proxy优化状态追踪,性能更优。
- Vuex:体积较大但稳定,状态变更会重新计算所有
-
适用场景与生态
- Vuex:适合Vue 2或复杂项目,官方维护,生态成熟。
- Pinia:专为Vue 3设计,轻量灵活,推荐用于新项目。
总结:Pinia是Vuex的现代替代方案,尤其在Vue 3项目中优势明显,而Vuex更适合需要严格状态管理的遗留系统。
Pinia的基本使用-CSDN博客
pinia-vue3状态管理工具-CSDN博客
i18n到底是个啥?
i18n的关键特点
- 动态适配:程序不修改内部代码即可根据不同语言及地区显示对应界面。
- 资源分离:将文本、日期、数字格式等本地化元素从代码中抽离,形成独立资源文件(如JSON、Properties文件)。
- 多语言支持:通过资源文件管理不同语言的翻译文本,实现界面语言的动态切换。
i18n的技术实现
- 资源文件管理:不同语言的文本存储在独立文件中(如
en-US.json
、zh-CN.json
),通过键值对映射实现文本调用。 - 代码集成:通过插件或库(如Vue I18n、React-i18next)在代码中调用翻译文本,例如Vue I18n的
$t
方法。 - 动态切换:根据用户选择或系统环境(如浏览器语言)动态加载对应语言资源文件,实现界面语言实时切换。
i18n的应用场景
- 全球应用开发:例如电商网站需支持中文、英文、法文等多语言界面,通过i18n实现文本动态切换。
- 跨文化产品设计:如软件需适配不同地区的日期格式(MM/DD/YYYY与DD/MM/YYYY)、货币符号($与¥)等文化差异。
- 组件库国际化:前端组件库(如Ant Design)通过i18n支持多语言,开发者可直接调用翻译文本。
i18n与本地化(L10n)的区别
- i18n(国际化):关注产品架构设计,使其具备支持多语言的能力,重点在于代码与资源的分离。
- L10n(本地化):针对特定地区优化产品,包括翻译文本、调整日期格式、适配文化习惯等,重点在于资源适配。
i18n的技术优势
- 减少代码冗余:通过资源文件集中管理文本,避免在代码中硬编码多语言文本。
- 提升开发效率:新增语言时只需添加资源文件,无需修改核心代码。
- 增强用户体验:用户可根据需求切换语言,提升产品全球适用性。
vite 前端构建工具, 和webpack 一样
Vite 是一种现代化的 前端构建工具,由 Vue.js 的作者尤雨溪开发,旨在提供快速的开发体验和优化的构建流程,专为现代前端框架(如 Vue、React 等)设计。以下从核心特性、技术优势、应用场景等方面详细介绍:
与 Webpack 的对比
特性 | Vite | Webpack |
---|---|---|
启动速度 | 极快(按需加载,无需打包) | 较慢(需对整个项目进行打包) |
热更新速度 | 毫秒级响应(仅更新修改的模块) | 较慢(需重新构建整个应用) |
配置复杂度 | 开箱即用,配置简单 | 配置复杂,对新手不够友好 |
生产构建 | 使用 Rollup 打包,生成轻量级文件 | 打包功能强大,但可能较慢 |
生态支持 | 插件生态快速发展,支持现代框架 | 插件生态成熟,支持所有前端需求 |
核心特性
-
极速冷启动
Vite 利用浏览器原生 ES 模块(ESM)能力,在开发时无需打包即可启动服务,实现毫秒级启动。传统工具(如 Webpack)需预先打包整个项目,启动时间较长,而 Vite 仅在浏览器请求模块时动态加载和编译文件,极大缩短了启动时间。 -
高效热更新(HMR)
Vite 的模块热替换(HMR)功能响应极快,修改代码后仅重新加载受影响的模块,无需刷新整个页面。这得益于其高效的依赖追踪和按需编译技术,确保开发者能即时预览更改效果,提升开发效率。 -
按需编译与优化构建
- 开发模式:按需加载和编译文件,避免全量打包,提升启动和热更新速度。
- 生产模式:使用 Rollup 进行打包,支持代码分割、Tree-shaking、压缩等优化技术,生成高效、优化的最终构建产物。
-
丰富的插件生态
Vite 支持与 Rollup 兼容的插件,开发者可通过插件自定义开发和构建流程,集成第三方工具或扩展功能。例如,通过插件支持 TypeScript、PostCSS、LESS、SASS 等预处理器。 -
多框架支持
Vite 原生支持 Vue 3,并通过插件支持 React、Svelte、Preact 等框架,满足不同项目的开发需求。
技术优势
-
提升开发效率
Vite 的极速启动和高效热更新功能显著减少了等待时间,开发者能更快地看到代码修改后的效果,特别适合需要快速迭代的项目。 -
优化构建性能
Vite 在生产环境中使用 Rollup 进行打包,生成的代码体积更小,性能更高。通过 Tree-shaking、代码分割等技术,进一步优化了应用的加载性能。 -
降低配置复杂度
Vite 提供了开箱即用的默认配置,开发者无需花费大量时间在配置文件上。大部分常见配置已经默认设定,开发者可在需要时按需定制。 -
支持现代前端特性
Vite 原生支持 TypeScript、JSX/TSX 等现代前端特性,开发者无需额外配置即可直接使用。同时,它还支持 CSS 预处理器、动态导入等高级功能。
应用场景
-
快速开发原型和小型项目
Vite 的极速启动和高效热更新功能使得开发者能快速验证想法,适合需要快速迭代的项目。 -
构建大型前端应用
Vite 的按需编译和优化构建功能能有效处理大型项目的复杂依赖关系,确保构建性能和开发效率。 -
支持现代前端框架
Vite 与 Vue、React 等主流前端框架紧密配合,提供了一系列的工具和插件,使得开发者能更好地集成和使用这些框架。
ant-design-vue ui 库
ant-design-vue-jeecg: jeecgboot-前端
《JeecgBoot系列》Ant-Design-Vue开发配置记录_ant-design-vue-jeecg-CSDN博客
print 打印
window.print() 前端实现网页打印详解
前端开发中,使用 JavaScript 的 window.print()
方法可以触发浏览器的打印功能。这个方法会打开浏览器的打印对话框,允许用户选择打印机、调整打印设置,然后进行打印。
mapbox
官网: Mapbox Docs
JS语法模块: Mapbox GL JS | Mapbox
Openlayer、Leaflet相关应用:4、leaflet · 语雀
一、认识 Mapbox
地图引擎(WebGIS)之MapBox的基础使用-CSDN博客
Mapbox 是一个强大的地理位置数据平台,旨在为开发者提供创建、定制和集成地图及位置相关功能的工具。它通过提供一系列灵活的开发工具和 API,帮助开发者在应用程序中实现高度定制化的地图显示、地理编码、路线规划、导航以及数据可视化等功能
访问 Mapbox 官网: https://www.mapbox.com/
阅读 Mapbox 文档: https://docs.mapbox.com/
开源GIS中间件
- GeoServer
- 功能:GeoServer是一个用Java编写的开源GIS服务器,用于共享和处理地理空间数据。它支持标准的地理空间数据格式(如Shapefile、GeoJSON和KML)以及开放的地理空间标准(如OGC标准)。
- 优势:通过用户界面即可发布地理数据,无需编写代码,支持矢量和栅格数据,适合快速部署和共享地理信息。
- 应用场景:需要发布地理数据服务、支持多格式数据访问的项目。
- MapServer
- 功能:MapServer是一个开源平台,用于发布空间数据和创建交互式地图应用程序到Web。它支持从多个层生成地图,包括基础图像和空间数据集,并提供智能标签功能。
- 优势:成熟稳定,支持多种空间数据格式,适合生成地图图块及其MapCache扩展。
- 应用场景:需要生成地图图块、支持多种数据格式的项目。
- QGIS Server
- 功能:QGIS Server是一个FastCGI/CGI应用,用C++写成,可与其他后端程序协作,提供与QGIS桌面版相同的功能,但作为服务器运行。
- 优势:与QGIS桌面版无缝集成,适合需要桌面与服务器端功能一致的项目。
- 应用场景:已有QGIS桌面版使用经验,需要服务器端扩展功能的项目。
后端开发框架
- GeoDjango
- 功能:GeoDjango是Django应用程序框架的一组空间扩展,提供强大的GIS功能,支持空间数据库(如PostGIS),并提供了丰富的地理空间查询和序列化功能。
- 优势:集成度高,与Django生态系统无缝衔接,适合快速开发Web GIS应用。
- 应用场景:使用Python/Django进行Web GIS开发,需要高效空间查询和序列化的项目。
- Node.js GIS框架
- 功能:Node.js采用事件驱动模型,适合构建强大且高度可扩展的应用程序,能够处理大量请求。
- 优势:易于使用,社区活跃,适合需要实时交互和高并发的GIS应用。
- 应用场景:需要实时数据交互、高并发处理的Web GIS应用。
- Rust GIS后端
- 功能:Rust以其卓越的性能和高度安全性著称,适合处理大规模地理数据,特别是在需要高并发和低延迟的场景下。
- 优势:内存安全和线程安全,生态系统活跃,拥有许多用于GIS开发的优秀库和工具。
- 应用场景:需要处理大规模地理数据、对性能和安全性要求较高的项目。
数据库与中间件
- PostGIS
- 功能:PostGIS是PostgreSQL数据库的扩展,支持空间查询,包括邻近度、半径、边界框、碰撞/重叠检测等。
- 优势:功能强大,支持丰富的空间操作,是Web GIS项目中常用的空间数据库。
- 应用场景:需要存储和管理大量地理空间数据的项目。
- GeoWebCache
- 功能:GeoWebCache是一个Java Web应用程序,用于缓存来自各种来源(例如OGC WMS)的地图图块,以加速和优化地图图像的传递。
- 优势:提高地图访问速度,减少服务器负载,适合高并发访问的GIS应用。
- 应用场景:需要优化地图图块加载速度、减少服务器压力的项目。
相关文章:

面试问题(连载。。。。)
flexbox 和 crid 的区别 1. 布局维度与核心特性 Flexbox(弹性盒子) 一维布局:专注于行或列的线性排列,适合单方向(水平或垂直)的布局需求。动态分配空间:通过 flex-grow、flex-shrink 和 flex…...
springboot项目tomcat中加载不了
Spring Boot项目在Tomcat中加载不了的问题可能由多种原因引起,包括打包方式不正确、依赖配置错误、启动类配置不当等。以下是详细的解决方案: 1. 修改项目打包形式 将项目打包形式从jar改为war,以确保项目以正确的格式被Tomcat加载。在pom.…...
venv和pyenv在mac上
是的,理论上你可以用 venv 选择 Python 版本,但有一个关键前提:系统中必须已安装该版本的 Python 解释器。venv 本身并不提供 Python 版本管理功能,它只是基于现有的 Python 环境创建虚拟隔离空间。以下分场景详细说明:…...

OpenCv实战笔记(1)在win11搭建opencv4.11.1 + qt5.15.2 + vs2019_x64开发环境
一. 准备工作 Visual Studio 2019(安装时勾选 C 桌面开发 和 Windows 10 SDK) CMake 3.20(官网下载) Qt 5.15.2(下载 Qt Online Installer)安装时勾选 MSVC 2019 64-bit 组件。 opencv 4.11.1 源码下载 git…...
前端获取流式数据并输出
在一些实时对话、日志推送等场景下,如果使用传统一次性加载数据的方式,可能会出现等待时间较长的不友好交互,这个时候我们需要使用流式布局分段获取数据,渐进式加载,减少等待焦虑。 原生js上,我们使用fetch…...

全局网络:重构数字时代的连接范式
从局部到全局 —— 网络架构的范式革命 在全球化与数字化深度融合的今天,传统网络架构的 “碎片化” 问题日益凸显:跨地域数据流通低效、设备互联孤岛化、安全策略难以统一。 全局网络作为一种突破地域与技术边界的新型网络架构,正成为企业…...

C++ Primer (第五版)-第十四章重载运算与类型转换
文章目录 一、基本概念可以被重载某些运算符不应被重载尽量明智使用运算符重载赋值和复合赋值运算符选择作为成员或者非成员 输入和输出运算符输入运算符尽量减少格式化操作输入输出运算符必须是非成员函数 重载输入运算符>>输入时的错误标示错误 算数和关系运算符相等运…...
nt!MiSessionAddProcess函数分析和nt!MmSessionSpace全局变量的关系
第一部分: 1: kd> g Breakpoint 42 hit nt!MiSessionAddProcess: 80ab2fbe 55 push ebp 1: kd> kc # 00 nt!MiSessionAddProcess 01 nt!MmCreateProcessAddressSpace 02 nt!PspCreateProcess 03 nt!NtCreateProcessEx 04 nt!_KiSystemServic…...

鸿蒙开发——5.ArkUI @Builder装饰器:打造高效可复用的UI组件
鸿蒙开发——5.ArkUI Builder装饰器:打造高效可复用的UI组件 ArkUI Builder装饰器:打造高效可复用的UI组件一、Builder装饰器是什么?二、两种构建函数类型1. 私有自定义构建函数2. 全局自定义构建函数 三、参数传递核心规则1. 按值传递&#…...
bash和zsh的区别
Bash(Bourne-Again SHell)和 Zsh(Z Shell)都是 Unix/Linux 系统中的主流 Shell,但它们在功能、配置和用户体验上有显著区别。以下是两者的详细对比: 1. 历史与兼容性 特性BashZsh诞生时间1989 年ÿ…...

PyTorchVideo实战:从零开始构建高效视频分类模型
视频理解作为机器学习的核心领域,为动作识别、视频摘要和监控等应用提供了技术基础。本教程将详细介绍如何利用PyTorchVideo和PyTorch Lightning两个强大框架,构建基于Kinetics数据集训练的3D ResNet模型,实现高效的视频分类流程。 PyTorch…...
深入理解Spring缓存注解:@Cacheable与@CacheEvict
在现代应用程序开发中,缓存是提升系统性能的重要手段。Spring框架提供了一套简洁而强大的缓存抽象,其中Cacheable和CacheEvict是两个最常用的注解。本文将深入探讨这两个注解的工作原理、使用场景以及最佳实践。 1. Cacheable注解 基本概念 Cacheable…...
Rust 与 Golang 深度对决:从语法到应用场景的全方位解析
一、引言 在软件开发的快速发展浪潮中,Rust 和 Golang(Go 语言)脱颖而出,成为开发者热议的编程语言。Rust 凭借强大的内存安全性与卓越的性能备受赞誉,Golang 则以简洁的语法和出色的并发处理能力赢得开发者青睐。本文…...
java加强 -泛型
概念 定义类、接口、方法时,同时声明了一个或多个类型变量(如<E>),称为泛型类、泛型接口、泛型方法、它们统称为泛型。 语法 public class ArrayList<E>{} E可以接收不同类型的数据,可以是字符串&…...
pygame联网飞机大战游戏实现
客户端 import pygame import socket import json import threadingclass GameClient:def __init__(self):pygame.init()self.screen_width 600 # 宽度减小self.screen_height 800 # 高度增加self.screen pygame.display.set_mode((self.screen_width, self.screen_heigh…...

SEMI E40-0200 STANDARD FOR PROCESSING MANAGEMENT(加工管理标准)-(二)
8 行为规范 8.1 本章定义监督实体(Supervisor)与加工资源(Processing Resource)为实现物料加工所需的高层级通信逻辑,不涉及具体消息细节(详见第10章消息服务)。 8.2 加工任务通信 8.2.1 加工…...

根据窗口大小自动调整页面缩放比例,并保持居中显示
vue 项目 直接上代码 图片u1.png 是个背景图片 图片u2.png 是个遮罩 <template><div id"app"><div class"viewBox"><divclass"screen":style"{ transform: translate(-50%,-50%…...
如何在Jmeter中调用C程序?
在JMeter中调用C语言程序可以通过以下几种方式实现: 方法一:使用OS Process Sampler JMeter的“OS Process Sampler”可以用来调用外部程序,包括C语言编写的可执行文件。 步骤: 准备C语言程序: 编写C语言代码并编译…...

Android SDK 国内镜像及配置方法(2025最新,包好使!)
2025最新android sdk下载配置 1、首先你需要有android sdk manager2、 直接上教程修改hosts文件配置域名映射即可(不用FQ)2.1 获取ping dl.google.com域名ip地址2.2 配置hosts文件域名映射2.3 可以随意下载你需要的sdk3、 总结:走过弯路,踩过坑!!!大家就不要踩了!避坑1…...

【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现
🎵 【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现 🌈 个人主页:创客白泽 - CSDN博客 🔥 系列专栏:🐍《Python开源项目实战》 💡 热爱不止于代码,热情…...

OpenStack Yoga版安装笔记(26)实例元数据笔记
一、实例元数据概述 1.1 元数据 (官方文档:Metadata — nova 25.2.2.dev5 documentation) Nova 通过一种叫做元数据(metadata)的机制向其启动的实例提供配置信息。这些机制通常通过诸如 cloud-init 这样的初始化软件…...

【Linux】swap交换分区管理
目录 一、Swap 交换分区的功能 二、swap 交换分区的典型大小的设置 2.1 查看交换分区的大小 2.1.1 free 2.1.2 cat /proc/swaps 或 swapon -s 2.1.3 top 三、使用交换分区的整体流程 3.1 案例一 3.2 案例二 一、Swap 交换分区的功能 计算机运行一个程序首先会将外存&am…...
Spring IoC (Inversion of Control) 控制反转是什么?
我们分析一下 IoC (Inversion of Control) 控制反转的核心思想。 核心思想: IoC 是一种设计原则(Design Principle),它描述了一种软件设计模式,其中组件(对象)的创建、依赖关系的管理和生命周…...
互联网大厂Java求职面试:核心技术点深度解析
互联网大厂Java求职面试:核心技术点深度解析 在互联网大厂的Java岗位面试中,技术总监级别的面试官通常会从实际业务场景出发,层层深入地考察候选人的技术能力。本文通过一个严肃专业的技术总监与搞笑但有技术潜力的程序员郑薪苦之间的互动对…...

VirtualBox 创建虚拟机并安装 Ubuntu 系统详细指南
VirtualBox 创建虚拟机并安装 Ubuntu 系统详细指南 一、准备工作1. 下载 Ubuntu 镜像2. 安装 VirtualBox二、创建虚拟机1. 新建虚拟机2. 分配内存3. 创建虚拟硬盘三、配置虚拟机1. 加载 Ubuntu 镜像2. 调整处理器核心数(可选)3. 启用 3D 加速(图形优化)四、安装 Ubuntu 系统…...
【算法基础】递归算法 - JAVA
一、递归基础 1.1 什么是递归算法 递归算法是一种通过函数调用自身来解决问题的方法。简单来说,就是"自己调用自己"。递归将复杂问题分解为同类的更简单子问题,直到达到易于直接解决的基本情况。 1.2 递归的核心要素 递归算法由两个关键部…...

触想CX-3588工控主板应用于移动AI数字人,赋能新型智能交互
一、行业发展背景 随着AI智能、自主导航和透明屏显示等技术的不断进步,以及用户对“拟人化”、“沉浸式”交互体验的期待,一种新型交互终端——“移动AI数字人”正在加速实现规模化商用。 各大展厅展馆、零售导购、教学政务甚至家庭场景中,移…...

【深入浅出MySQL】之数据类型介绍
【深入浅出MySQL】之数据类型介绍 MySQL中常见的数据类型一览为什么需要如此多的数据类型数值类型BIT(M)类型INT类型TINYINT类型BIGINT类型浮点数类型float类型DECIMAL(M,D)类型区别总结 字符串类型CHAR类型VARCHAR(M)类型 日期和时间类型enum和set类型 …...

Vue3响应式:effect作用域
# Vue3响应式: effect作用域 什么是Vue3响应式? 是一款流行的JavaScript框架,它提供了响应式和组件化的视图组织方式。在Vue3中,响应式是一种让数据变化自动反映在视图上的机制。当数据发生变化时,与之相关的视图会自动更新。 作用…...

25.5.4数据结构|哈夫曼树 学习笔记
知识点前言 一、搞清楚概念 ●权:___________ ●带权路径长度:__________ WPL所有的叶子结点的权值*路径长度之和 ●前缀编码:____________ 二、构造哈夫曼树 n个带权值的结点,构造哈夫曼树算法: 1、转化成n棵树组成的…...