2024前端框架年度总结报告(二):新生qwik+solid和次新生svelte+Astro对比 -各自盯着前端的哪些个痛点 - 前端的区域发展差异
引言
2024年,前端开发依然是技术领域的热点之一。随着 Web 应用的日益复杂,前端框架的更新换代也加速了。尽管 React、Vue 和 Angular 老牌框架年度总结 等“老牌”框架仍然占据着主流市场,但一些新兴的框架在不断挑战这些“巨头”的地位,它们带来了更加高效、灵活的开发体验,特别是在性能优化、开发效率和用户体验方面。
本篇文章将对 2024 年新生和次新生的前端框架进行详细对比,分析这些框架如何针对前端开发中的常见痛点提供创新解决方案。
新生框架:Qwik 和 Solid.js
1. Qwik:专注性能的“零 JavaScript”框架
star 20.9k 最新版本2.0-alpha
Qwik 是一个刚刚崭露头角的前端框架,特别适合用于构建超高性能的 Web 应用。它的核心卖点是 零 JavaScript 初始加载,这使得用户在首次访问时几乎不需要等待 JavaScript 加载,页面可以在浏览器中直接渲染。
痛点解决:
- 首次加载慢:传统框架通常会在页面加载时执行大量的 JavaScript 来初始化组件。Qwik 通过 懒激活(Lazy Hydration)技术,只有在用户与页面交互时才会加载相应的 JavaScript,显著提升首次加载速度。
- 大规模应用的性能瓶颈:Qwik 使用 细粒度懒加载 来加载 JavaScript,仅在必要时加载相关代码块,避免了传统框架的庞大 JavaScript 文件。
适用场景:
- Qwik 特别适合用于构建 内容密集型、交互性较少的静态页面,例如博客、产品展示页面等。
- 对于需要高 SEO 性能 和 快速响应时间 的应用,Qwik 是一个理想的选择。
Qwik 示例:
import { component$, useStore } from '@builder.io/qwik';export const Counter = component$(() => {const state = useStore({ count: 0 });return (<div><p>计数器: {state.count}</p><button onClick$={() => state.count++}>增加</button></div>);
});
Qwik 采用 懒激活,只有在用户点击按钮时才加载 onClick$
相关的 JavaScript 代码。
官网加载数据(shift+F5强刷新):
298 次请求
已传输163 kB
1.4 MB 条资源
完成:1.5 分钟
DOMContentLoaded:569 毫秒
加载:754 毫秒
初始化加载速度在569ms内完成
2. Solid.js:纯渲染效率的极致追求
star 32.9k 最新版本 1.9
Solid.js 是一个比 Qwik 稍微成熟的框架,尽管它依然被视为“次新生”,但它的设计理念和性能表现无疑令人震撼。Solid.js 聚焦于 声明式 UI 和 最小化渲染开销,采用了类似 React 的组件化开发模式,但在内部使用了更为精细的 编译时优化。
痛点解决:
- 虚拟 DOM 的性能瓶颈:React 和 Vue 等框架通常依赖虚拟 DOM 来优化更新性能,但这也会引入一些额外的性能开销。Solid.js 去除了虚拟 DOM,通过直接操作 DOM 节点来实现 高效的渲染,使得它的更新速度比 React 更快。
- 更新渲染的同步性:Solid.js 采用了更加高效的响应式编程模型,能够使数据更新与 UI 渲染更加 紧密同步,避免了传统框架中 渲染不一致 的问题。
适用场景:
- Solid.js 非常适合用于 需要高度响应式和复杂交互的应用,如动态数据展示的仪表盘、实时消息推送、游戏等。
Solid.js 示例:
import { createSignal } from 'solid-js';const Counter = () => {const [count, setCount] = createSignal(0);return (<div><p>计数器: {count()}</p><button onClick={() => setCount(count() + 1)}>增加</button></div>);
};export default Counter;
Solid.js 采用 响应式编程,通过 createSignal
实现状态管理和组件更新,直接操作 DOM 来避免虚拟 DOM 的开销。
官网强刷新数据:
32 次请求
已传输459 kB
1.3 MB 条资源
完成:12.45 秒
DOMContentLoaded:1.18 秒
加载:1.21 秒
可以明显看到首次加载和显示的时间慢一点,其实网络情况差不多,但是qwik的懒加载更多
3 热度对比
谷歌趋势,qwik
区域热度- 中俄solid关注高于qwik
总的来说,solidjs的关注度是高于qwik,尤其国内,大概率是应用场景的差异
solid.js相对来说比较稳定,但qwik商业化支持比较好,后者ssr和性能表现优秀
次新生框架:Svelte 和 Astro
1. Svelte:编译型框架的创新
虽然 Svelte 并不算是 2024 年发布的新框架,但它的影响力不断扩大。与 React、Vue 等框架不同,Svelte 采用 编译时框架 的设计,即在编译阶段将组件转换成原生的 JavaScript 代码,减少了运行时的开销。
痛点解决:
- 运行时性能差:传统框架需要在浏览器中执行 JavaScript 代码,导致页面加载和渲染性能受限。Svelte 将这些工作提前到编译阶段,使得生成的代码运行时非常轻量和高效。
- 复杂的状态管理:Svelte 通过 声明式的反应性(reactivity)机制,使得状态管理非常简洁而直观,减少了不必要的
useState
、useEffect
等复杂操作。
适用场景:
- Svelte 非常适合用于 小型和中型项目,尤其是那些 不需要大型生态系统 支持的应用。对于需要高度响应性、简洁 API 的应用,Svelte 是一个非常不错的选择。
Svelte 示例:
<script>let count = 0;
</script><p>计数器: {count}</p>
<button on:click={() => count++}>增加</button>
Svelte 的核心特点是它将 所有状态管理和更新逻辑 通过编译器处理,生成的 JavaScript 代码非常简洁且高效。
2. Astro:静态站点生成的未来
Astro 是一个相对较新的框架,专注于 构建静态网站。Astro 的最大亮点在于它可以与多种前端框架(如 React、Vue、Svelte)结合使用,但它的默认行为是 无 JavaScript 的页面,只有在需要时才加载 JavaScript,最大化提升性能。
痛点解决:
- 冗余的 JavaScript:Astro 可以与多种前端框架搭配使用,但 只在需要时加载 JavaScript,避免了传统 SPA 中一次性加载大量 JS 文件的情况,从而实现了 快速加载和极致性能。
- 静态站点的灵活性:Astro 提供了简单的 API 来生成静态内容,同时支持动态功能,这使得它成为构建 内容密集型网站(如博客、电商网站)的理想框架。
适用场景:
- Astro 是 构建静态内容丰富的站点(如个人博客、产品展示页、营销网站)的理想选择,同时也支持与 React、Vue 等现代框架的无缝集成。
Astro 示例:
---
import Counter from './components/Counter.astro';
---<html><body><h1>欢迎来到我的网站</h1><Counter /></body>
</html>
Astro 允许你在一个页面中使用 不同的框架组件,比如 React、Vue、Svelte 等,而这些框架的 JavaScript 只有在必要时才会加载,最大限度地优化了性能。
总结:如何选择适合的框架?
在 2024 年,前端框架的创新使得开发者有了更多选择。然而,这些框架针对的痛点各不相同,选择框架时要考虑以下几点:
- 性能优先:如果你的应用需要极致的性能,Qwik 和 Solid.js 都是值得考虑的选择。Qwik 的零 JavaScript 初始加载和 Solid.js 的虚拟 DOM 替代方案都能有效提升应用的响应速度。
- 开发效率:如果你更看重开发效率,Svelte 和 Astro 可能会更合适。Svelte 的编译时优化和 Astro 的静态网站生成能力都能减少开发时的复杂度和维护成本。
- 静态站点:如果你主要构建静态站点,Astro 可能是你的最佳选择,它支持多种框架并且能够轻松生成无 JavaScript 的快速
我打算出一点qwik的实践文章,并做点benchmark的东西,自己的主站也打算基于此,同时打算做的lowcode框架也用qwik+webcomponent做吧
相关文章:
2024前端框架年度总结报告(二):新生qwik+solid和次新生svelte+Astro对比 -各自盯着前端的哪些个痛点 - 前端的区域发展差异
引言 2024年,前端开发依然是技术领域的热点之一。随着 Web 应用的日益复杂,前端框架的更新换代也加速了。尽管 React、Vue 和 Angular 老牌框架年度总结 等“老牌”框架仍然占据着主流市场,但一些新兴的框架在不断挑战这些“巨头”的地位&am…...
MySQL大小写敏感、MySQL设置字段大小写敏感
文章目录 一、MySQL大小写敏感规则二、设置数据库及表名大小写敏感 2.1、查询库名及表名是否大小写敏感2.2、修改库名及表名大小写敏感 三、MySQL列名大小写不敏感四、lower_case_table_name与校对规则 4.1、验证校对规则影响大小写敏感4.1、验证校对规则影响排序 五、设置字段…...
每日速记10道java面试题13-MySQL篇
其他资料 每日速记10道java面试题01-CSDN博客 每日速记10道java面试题02-CSDN博客 每日速记10道java面试题03-CSDN博客 每日速记10道java面试题04-CSDN博客 每日速记10道java面试题05-CSDN博客 每日速记10道java面试题06-CSDN博客 每日速记10道java面试题07-CSDN博客 每…...
关于Chrome自动同步书签的解决办法
前言 并不一定适用所有用户, 目前我在网上搜集了一些资料,也做了一些尝试。 就我个人总结的经验来讲,分享大家以下几种办法: 1.书签同步插件 点击如下🔗: Chrome书签同步https://bm.famend.cn/ …...
江南大学《2024年807自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《江南大学807自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
在VSCode中搭建Python开发环境
在VSCode中搭建Python开发环境 1、安装 首先确保电脑已经安装好Python和VSCode。 2、安装VSCode的Python插件 3、选择python解释器 ctrlshiftP打开VSCode的命令行,输入python: select Interpreter选择合适的python版本。 4、运行代码 在windows下你可以直接使用…...
mac 安装python3和配置环境变量
mac 安装python3和配置环境变量 前言怎样选择python3的版本python3的安装1、去官网下载安装包2、下载完成后直接解压,检查安装是否成功 前言 在学习python的第一步就是安装它和配置他的环境变量,那么选择哪个版本的python你可曾知道,下面就讲解怎样选择…...
微信小程序版小米商城的搭建流程详解!
很多初学微信小程序语法的同学,可能不知道如何布局和搭建一个项目,下面我将讲解初学者如何搭建项目和注意事项。 一、 app.json的配置 {"pages": ["pages/index/index","pages/classification/classification","pag…...
Redis等Spring Cache 框架 实现基于注解的缓存功能
Spring Cache 框架 实现基于注解的缓存功能 底层 基于代理技术 一旦进入方法就进入代理对象 如果redis里有就直接返回 不会走方法 如果缓存没有数据 则通过反射走方法。 概念 缓存 相当于之前的事务处理 同步更改 只是提供了一层抽象 底层可以切换不同的缓存实现 EHCach…...
tcpreplay/tcpdump-重放网络流量/捕获、过滤和分析数据包
tcpdump 是一个网络数据包分析工具,通过捕获并显示网络接口上传输的数据包,帮助用户分析网络流量。 原理:用户态通过 libpcap 库控制数据包捕获,内核态通过网卡驱动获取数据包。 核心功能包括:捕获、过滤和分析数据包…...
【Linux】基础IO_文件系统IO_“一切皆文件”_缓冲区
目录 1. 理解"⽂件" 1-1 狭义理解 1-2 ⼴义理解 1-3 ⽂件操作的归类认知 1-4 系统⻆度 访问文件,需要先打开文件!那么是由谁打开文件??? 操作系统要不要把被打开的文件管理起来? 2. 回顾…...
基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写)
基于ZYNQ-7000系列的FPGA学习笔记7——按键控制蜂鸣器(模块化编写) 1. 实验要求2. 功能分析3. 模块设计4. 波形图4.1 按键消抖模块4.2 按键控制蜂鸣器模块 5.代码编写5.1 rtl代码5.2 测试代码 6. 代码仿真7. 添加约束文件并分析综合 在上期的内容中&…...
Mnesia(三)
在表中保存复杂数据 Mnesia是被设计用来保存Erlang数据结构的。可以把任意类型的Erlang数据结构保存到Mnesia表中。 -export([init_mnesia_schema/0, start/0]). -export([add_plans/0, get_plan/1]). -include_lib("stdlib/include/qlc.hrl"). -record(shop, {ite…...
ELK的Filebeat
目录 传送门前言一、概念1. 主要功能2. 架构3. 使用场景4. 模块5. 监控与管理 二、下载地址三、Linux下7.6.2版本安装filebeat.yml配置文件参考(不要直接拷贝用)多行匹配配置过滤配置最终配置(一、多行匹配、直接读取日志文件、EFK方案&#…...
【WPF中ControlTemplate 与 DataTemplate之间的区别?】
前言 WPF中ControlTemplate 与 DataTemplate之间的区别? 1. 定义: ControlTemplate 是用于定义 WPF 控件的外观和结构的模板。它允许您重新定义控件的视觉表现,而不改变控件的行为。 DataTemplate 是用于定义如何呈现数据对象的模板。它通…...
FFmpeg源码中,计算CRC校验的实现
一、CRC简介 CRC(Cyclic Redundancy Check),即循环冗余校验,是一种根据网络数据包或电脑文件等数据产生简短固定位数校核码的快速算法,主要用来检测或校核数据传输或者保存后可能出现的错误。CRC利用除法及余数的原理,实现错误侦…...
js面试题
面试题:说一下call、apply、bind区别 共同点:功能一致 可以改变this指向 语法:函数.call() 函数.apply() 函数.bind() 区别:1.call、apply可以立即执行。bind不会立即执行,因为bind返回的是一个函数需要加入ÿ…...
Python酷库之旅-第三方库Pandas(255)
目录 一、用法精讲 1206、pandas.tseries.offsets.SemiMonthEnd.is_on_offset方法 1206-1、语法 1206-2、参数 1206-3、功能 1206-4、返回值 1206-5、说明 1206-6、用法 1206-6-1、数据准备 1206-6-2、代码示例 1206-6-3、结果输出 1207、pandas.tseries.offsets.S…...
STM32 进阶 定时器3 通用定时器 案例2:测量PWM的频率/周期
需求分析 上一个案例我们输出了PWM波,这个案例我们使用输入捕获功能,来测试PWM波的频率/周期。 把测到的结果通过串口发送到电脑,检查测试的结果。 如何测量 1、输入捕获功能主要是:测量输入通道的上升沿和下降沿 2、让第一个…...
【计算机网络】实验10:开放最短路径优先OSPF
实验10 开放最短路径优先OSPF 一、实验目的 本实验的主要目的是验证OSPF(开放最短路径优先)协议的作用,深入理解其在动态路由中的重要性。通过实验,我们将观察OSPF如何在网络中高效地传播路由信息,从而实现不同网络之…...
线程信号量 Linux环境 C语言实现
既可以解决多个同类共享资源的互斥问题,也可以解决简易的同步问题 头文件:#include <semaphore.h> 类型:sem_t 初始化:int sem_init(sem_t *sem, int pshared, unsigned int value); //程序中第一次对指定信号量调用p、v操…...
Tree搜索二叉树、map和set_数据结构
数据结构专栏 如烟花般绚烂却又稍纵即逝的个人主页 本章讲述数据结构中搜索二叉树与HashMap的学习,感谢大家的支持!欢迎大家踊跃评论,感谢大佬们的支持! 目录 搜索二叉树的概念二叉树搜索模拟实现搜索二叉树查找搜索二叉树插入搜索二叉树删除…...
Linux-GPIO应用编程
本章介绍应用层如何控制 GPIO,譬如控制 GPIO 输出高电平、或输出低电平。 只要是用到GPIO的外设,都有可能用得到这些操作方法。 照理说,GPIO的操作应该是由驱动层去做的,使用寄存器操作或者GPIO子系统之类的框架。 但是࿰…...
【模板】排序(py)/ 【深基9.例4】求第 k 小的数
题目描述 将读入的 NN 个数从小到大排序后输出。 输入格式 第一行为一个正整数 NN。 第二行包含 NN 个空格隔开的正整数 aiai,为你需要进行排序的数。 输出格式 将给定的 NN 个数从小到大输出,数之间空格隔开,行末换行且无空格。 输…...
Linux获取文件属性
目录 stat函数 获取文件属性 获取文件权限 实现“head -n 文件名”命令的功能 编程实现“ls -l 文件名”功能 stat/fstat/lstat的区别? stat函数 int stat(const char *path, struct stat *buf); 功能:获取文件属性 参数: path&…...
一文说清:Git创建仓库的方法
0 引言 本文介绍如何创建一个 Git 本地仓库,以及与远程仓库的关联。 1 初始化仓库(git init) 1.1 概述 Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使…...
ASP.NET Core 负载/压力测试
文章目录 一、第三方工具二、使用发布版本进行负载测试和压力测试 负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。 尽管负载测试和压力测试的某些测试相似,但它们的目标不同。 负载测试:测试应用是否可以在特定情况下处理指定的用户负…...
红日靶场vulnstack (五)
前言 好久没打靶机了,今天有空搞了个玩一下,红日5比前面的都简单。 靶机环境 win7:192.168.80.150(外)、192.168.138.136(内) winserver28(DC):192.168.138.138 环境搭建就不说了,和之前写…...
k8s,声明式API对象理解
命令式API 比如: 先kubectl create,再replace的操作,我们称为命令式配置文件操作 kubectl replace的执行过程,是使用新的YAML文件中的API对象,替换原有的API对象;而kubectl apply,则是执行了一…...
【人工智能】用Python和Scikit-learn构建集成学习模型:提升分类性能
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 集成学习(Ensemble Learning)是通过组合多个弱学习器提升模型性能的机器学习方法,广泛应用于分类、回归及其他复杂任务中。随机森林(Random Forest)和梯度提升(Gradient Boosting)是集成学习的两种…...
MSBUILD : error MSB1009: 项目文件不存在。
环境:win10 vscode1.95.3 clang15.0.4 问题:最近用vscodecmakeclang在windows上编译c项目,用mingw32不报错,用clang报错,错误如下, MSBUILD : error MSB1009: 项目文件不存在。 原因:与其他生成器(如Mak…...
洛谷P1827 [USACO3.4] 美国血统 American Heritage(c嘎嘎)
题目链接:P1827 [USACO3.4] 美国血统 American Heritage - 洛谷 | 计算机科学教育新生态 题目难度:普及 首先介绍下二叉树的遍历: 学过数据结构都知道二叉树有三种遍历: 1.前序遍历:根左右 2.中序遍历:左根…...
YOLOv8模型pytorch格式转为onnx格式
一、YOLOv8的Pytorch网络结构 model DetectionModel((model): Sequential((0): Conv((conv): Conv2d(3, 64, kernel_size(3, 3), stride(2, 2), padding(1, 1))(act): SiLU(inplaceTrue))(1): Conv((conv): Conv2d(64, 128, kernel_size(3, 3), stride(2, 2), padding(1, 1))(a…...
工业—使用Flink处理Kafka中的数据_ProduceRecord1
1 、 使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入Redis 中, key 值为 “totalproduce” , value 值为 “ 设备 id ,最近五分钟生…...
RNACOS:用Rust实现的Nacos服务
RNACOS是一个使用Rust语言开发的Nacos服务实现,它继承了Nacos的所有核心功能,并在此基础上进行了优化和改进。作为一个轻量级、快速、稳定且高性能的服务,RNACOS不仅包含了注册中心、配置中心和Web管理控制台的功能,还支持单机和集…...
响应式编程一、Reactor核心
目录 一、前置知识1、Lambda表达式2、函数式接口 Function3、StreamAPI4、Reactive-Stream1)几个实际的问题2)Reactive-Stream是什么?3)核心接口4)处理器 Processor5)总结 二、Reactor核心1、Reactor1&…...
聚簇索引与非聚簇索引
目录 一、聚簇索引(Clustered Index) 二、非聚簇索引(Non-Clustered Index) 三、示例说明 一、聚簇索引(Clustered Index) 定义: 聚簇索引是一种将数据存储和索引合为一体的索引方式。 表中…...
鸿蒙 Next 可兼容运行 Android App,还支持出海 GMS?
最近 「出境易」和 「卓易通」 应该算是鸿蒙和 Android 开发圈“突如其来”的热门话题,而 「出境易」可能更高频一些,主要也是 Next 5.0 被大家发现刚上架了一个名为「出境易」的应用,通过这个 App 用户可以直接运行不兼容 Next 的 Android A…...
opencv常用图像处理操作
OpenCV 处理图像的通用流程通常包括以下几个步骤,根据具体需求可以调整或跳过某些步骤。以下是一个通用的框架: 读取图像 加载图像文件到内存中以进行后续处理。 import cv2 读取图像 image cv2.imread(‘image.jpg’) # 彩色图像 gray_image cv2…...
<三>51单片机PWM开发SG90和超声测距
目录 1,PWM开发SG90 1.1简介 1.2控制舵机 1.3编程实现 2,超声测距 2.1简介 2.2,超声波测距代码实现 1,PWM开发SG90 1.1简介 PWM,英文名Pulse Width Modulation,是脉冲宽度调制缩写,它是通过对一系列脉冲的宽度进 行调制,等…...
如何加强游戏安全,防止定制外挂影响游戏公平性
在现如今的游戏环境中,外挂始终是一个困扰玩家和开发者的问题。尤其是定制挂(Customized Cheats),它不仅复杂且隐蔽,更能针对性地绕过传统的反作弊系统,对游戏安全带来极大威胁。定制挂通常是根据玩家的需求…...
《矿物学报》
1 简介 《矿物学报》由中国科学院地球化学研究所和中国矿物岩石地球化学学会联合主办,1981年创刊,目前是双月刊,国内外公开发行。主要报道矿物学及相关学科的高水平研究成果,矿物学研究的现状综述和动态分析,以及国内…...
如何将快捷指令添加到启动台
如何将快捷指令添加到启动台/Finder/访达(Mac) 1. 打开快捷指令创建快捷指令 示例创建了一个文件操作测试的快捷指令。 2. 右键选择添加到程序坞 鼠标放在待添加的快捷指令上。 3. 右键添加到访达 鼠标放在待添加的快捷指令上。 之后就可以在启…...
Python NumPy学习指南:从入门到精通
Python NumPy学习指南:从入门到精通 第一部分:NumPy简介与安装 1. 什么是NumPy? NumPy,即Numerical Python,是Python中最为常用的科学计算库之一。它提供了强大的多维数组对象ndarray,并支持大量的数学函…...
rabbitmq 安装延时队列插件rabbitmq_delayer_message_exchange(linux centOS 7)
1.插件版本 插件地址:Community Plugins | RabbitMQ rabbitmq插件需要对应的版本,根据插件地址找到插件 rabbitmq_delayer_message_exchange 点击Releases 因为我rabbitmq客户端显示的版本是: 所以我选择插件版本是: 下载 .ez文…...
【C++】new与malloc、三种传参、函数重载及内联函数
一、new-delete以及malloc-freequbie 1.new: (1)运算符,没有返回值概念,但开出来空间有类型,不需要设置大小 (2)可以在堆区动态开辟空间,并且可以默认执…...
C语言实例_23之计算阶乘和(5!+4!+…+1!)
1. 题目 计算阶乘和(5! 4! … 1!),即先分别计算出从1到5每个数的阶乘,再将这些阶乘值进行累加求和。 2. 阶乘概念及分析 实现主要是迭代和递归: - 迭代实现思路: - 可以通过两层循环来实现,外层循环控制数字从5到…...
zotero中pdf-translate插件和其他插件的安装
1.工具–》插件 2.找插件 3.点击之后看到一堆插件 4.找到需要的,例如pdf-translate 5.点击进入,需要看一下md文档了解下,其实最重要的就是找到特有的(.xpi file) 6.点击刚刚的蓝色链接 7.下载并保存xpi文件 8.回到zotero,安装并使…...
【Linux系统编程】——理解冯诺依曼体系结构
文章目录 冯诺依曼体系结构硬件当代计算机是性价比的产物冯诺依曼的存储冯诺依曼的数据流动步骤冯诺依曼结构总结 冯诺依曼体系结构硬件 下面是整个冯诺依曼体系结构 冯诺依曼结构(Von Neumann Architecture)是现代计算机的基本结构之一,由数…...
C++中实现多态有几种方式
一)虚函数(Virtual Functions)实现多态 概念: 虚函数是在基类中使用关键字virtual声明的成员函数。当一个类包含虚函数时,编译器会为该类创建一个虚函数表(v - table),这个表存储了虚…...