什么是SSE和websocket
以下是 SSE(Server-Sent Events) 和 WebSocket 在大模型(如 ChatGPT)流式输出中的实际例子对比,包含代码实现和场景分析:
—### 1. SSE(Server-Sent Events)#### 场景 大模型生成文本时,服务器逐步返回结果(如逐词或逐句),前端实时显示。 SSE 是 单向通信(服务器→客户端),基于 HTTP 协议,适合只需服务器推送的场景。#### 示例代码##### 后端(Python + Flask)pythonfrom flask import Flask, Responseimport timeapp = Flask(__name__)@app.route('/stream')def stream(): def generate(): # 模拟大模型生成文本的过程 messages = ["Hello", " world", "!", " This", " is", " SSE."] for msg in messages: time.sleep(0.5) # 模拟处理延迟 yield f"data: {msg}\n\n" # SSE 格式要求 return Response(generate(), mimetype="text/event-stream")if __name__ == "__main__": app.run(port=5000)
##### 前端(JavaScript)html<!DOCTYPE html><html><body> <div id="output"></div> <script> const eventSource = new EventSource("http://localhost:5000/stream"); eventSource.onmessage = (event) => { document.getElementById("output").innerHTML += event.data; }; </script></body></html>
##### 输出效果 客户端会逐步接收并显示: Hello
→ Hello world
→ Hello world!
→ Hello world! This
→ …—### 2. WebSocket#### 场景 需要双向实时通信时使用(如聊天应用,客户端可随时发送新消息,服务器同时推送生成结果)。 WebSocket 是 全双工通信(双向),基于独立的 TCP 连接。#### 示例代码##### 后端(Python + Flask-SocketIO)pythonfrom flask import Flask, render_templatefrom flask_socketio import SocketIO, emitapp = Flask(__name__)socketio = SocketIO(app)@app.route('/')def index(): return render_template("websocket.html") # 返回前端页面@socketio.on('user_message') # 监听客户端消息def handle_message(message): # 模拟大模型生成回复 replies = ["You said: " + message, "This is a reply.", "WebSocket works!"] for reply in replies: time.sleep(0.5) emit('server_reply', reply) # 主动推送回复if __name__ == "__main__": socketio.run(app, port=5000)
##### 前端(HTML + JavaScript)html<!DOCTYPE html><html><body> <input id="input" type="text" /> <button onclick="sendMessage()">Send</button> <div id="output"></div> <script src="https://cdn.socket.io/4.5.4/socket.io.min.js"></script> <script> const socket = io("http://localhost:5000"); socket.on('server_reply', (data) => { document.getElementById("output").innerHTML += data + "<br>"; }); function sendMessage() { const input = document.getElementById("input").value; socket.emit('user_message', input); // 发送用户输入 } </script></body></html>
##### 交互效果 1. 用户输入 "Hi"
并点击发送。 2. 服务器逐步返回: You said: Hi
→ This is a reply.
→ WebSocket works!
3. 客户端可随时发送新消息,服务器实时响应。—### 3. SSE vs WebSocket 对比| 特性 | SSE | WebSocket ||------------------------|--------------------------------------|-----------------------------------|| 通信方向 | 单向(服务器→客户端) | 双向(全双工) || 协议基础 | HTTP(长连接) | 独立的 TCP 协议 || 延迟 | 低(适合单向流式数据) | 极低(适合高频双向交互) || 浏览器兼容性 | 所有现代浏览器(IE 除外) | 所有现代浏览器 || 适用场景 | 大模型流式输出、实时日志推送 | 聊天应用、实时协作编辑 || 代码复杂度 | 简单(无需额外库) | 需依赖库(如 Socket.IO) || 自动重连 | 支持(内置机制) | 需手动实现 |—### 4. 如何选择?- 用 SSE: - 只需服务器推送(如 ChatGPT 逐字生成)。 - 需要简单实现、兼容 HTTP 生态(如身份验证、CORS)。 - 用 WebSocket: - 需双向交互(如用户中途修改提示词,模型动态调整输出)。 - 高频通信场景(如多人在线协作编辑)。 —### 5. 真实案例- SSE:OpenAI API 的流式响应(通过 stream=True
参数)。 - WebSocket:ChatGPT 网页版(结合 SSE 推送生成内容,WebSocket 处理用户中断信号)。 两种技术可根据需求结合使用,例如:用 SSE 推送生成结果,用 WebSocket 传输控制指令(如停止生成)。在大模型(Large Language Models, LLMs)领域中,stdio 和 SSE 并不是核心术语,但它们可能在某些技术环节中出现。以下是它们在大模型相关场景中的可能含义和用途:
—### **1. stdio(标准输入/输出)**在大模型领域的上下文中,stdio
通常指代 标准输入/输出流,主要用于以下场景:- 模型交互与调试 - 在训练或推理过程中,开发者可能通过 stdin/stdout
(标准输入/输出)与模型交互,例如: - 输入文本提示(Prompt)到模型(通过 stdin
)。 - 模型生成结果输出到控制台(通过 stdout
)。 - 示例:在命令行工具中调用大模型(如 OpenAI API 的本地封装)时,可能通过管道(Pipe)传递输入/输出: bash echo "Translate 'hello' to French" | python llama_inference.py
(llama_inference.py
从 stdin
读取输入,处理后将结果输出到 stdout
)- 日志与监控 - 训练大模型时,日志信息(如损失值、训练进度)可能通过 stderr
(标准错误流)输出,便于实时监控。- 数据预处理/后处理 - 在数据流水线中,stdio
可用于快速传递数据(如 JSON 格式的输入/输出),尤其在分布式训练中与其他工具链集成。—### **2. SSE(Server-Sent Events / SIMD 指令集)**在大模型领域,SSE 可能指两种不同的技术,需根据上下文区分:#### 2.1 Server-Sent Events(SSE,服务器推送事件)- 用途:用于实时流式传输大模型的生成结果。 - 大模型(如 ChatGPT)生成文本时,常采用 流式响应(Streaming)逐步返回结果,而非等待全部生成完毕。SSE 是一种轻量级的 HTTP 协议,支持服务器主动向客户端推送数据。 - 示例: - 客户端发送请求后,服务器通过 SSE 持续返回生成的 Token: data: {"token": "Hello"} data: {"token": " world"} ...
- 前端通过 EventSource
API 实时接收并显示结果。- 优势: - 低延迟:用户无需等待完整响应。 - 节省带宽:对比 WebSocket,SSE 更简单且兼容 HTTP。#### 2.2 SIMD Streaming Extensions(SSE,单指令多数据流扩展)- 用途:加速大模型底层计算。 - 大模型的推理和训练依赖高性能计算,SSE 是 CPU 的 SIMD 指令集(如 Intel 的 SSE/AVX),可加速以下操作: - 矩阵乘法(如注意力机制中的 QKV 计算)。 - 向量化激活函数(如 ReLU、GeLU)。 - 现代大模型更多使用 GPU 的 CUDA/Tensor Core,但 CPU 的 SSE/AVX 在边缘设备或预处理中仍有价值。- 示例代码(使用 SSE 加速向量加法): cpp #include <immintrin.h> void vector_add(float* a, float* b, float* c, int n) { for (int i = 0; i < n; i += 4) { __m128 vec_a = _mm_load_ps(&a[i]); // 加载 4 个 float __m128 vec_b = _mm_load_ps(&b[i]); __m128 vec_sum = _mm_add_ps(vec_a, vec_b); // 并行相加 _mm_store_ps(&c[i], vec_sum); // 存储结果 } }
—### 3. 总结:大模型场景中的 stdio 和 SSE| 术语 | 可能的含义 | 应用场景 ||------------|---------------------------|--------------------------------------------------------------------------|| stdio | 标准输入/输出流 | 模型交互调试、日志监控、数据管道(如 CLI 工具或分布式训练中的数据传输)。 || SSE | Server-Sent Events | 大模型的流式响应(如 ChatGPT 逐字生成结果)。 || | SIMD 指令集(CPU 加速) | 底层计算优化(虽不如 GPU 重要,但在边缘计算或预处理中可能用到)。 |—### 常见疑问解答****Q:大模型开发中是否需要直接处理 SSE 指令集? A:通常不需要。现代框架(如 PyTorch)已自动利用 CPU/GPU 的并行指令,开发者只需关注高层逻辑。Q:SSE(Server-Sent Events)和 WebSocket 如何选择? A:SSE 更适合单向流式传输(服务器→客户端),而 WebSocket 适合双向通信。大模型输出通常选择 SSE 或 HTTP 分块编码。
相关文章:
什么是SSE和websocket
以下是 SSE(Server-Sent Events) 和 WebSocket 在大模型(如 ChatGPT)流式输出中的实际例子对比,包含代码实现和场景分析: —### 1. SSE(Server-Sent Events)#### 场景 大模型生成文本…...
蓝桥杯专项复习——二分查找、二分答案
目录 二分查找、二分答案基础知识 二分查找模版 【模版题】数的范围 借教室 二分查找、二分答案基础知识 二分模版 二分查找 【模版题】数的范围 输入样例 6 3 1 2 2 3 3 4 3 4 5输出样例 3 4 5 5 -1 -1 思路: 对应两个模版,起始位置是对应第一…...
Android学习总结之Kotlin 协程
一、引言 在 Android 开发中,异步任务处理是绕不开的话题。传统的线程、Handler、AsyncTask 等方案要么过于繁琐,要么存在生命周期管理问题。Kotlin 协程的出现,以优雅的语法和强大的结构化并发能力,成为解决异步编程难题的理想方…...
docker的与使用
1 docker初体验 1.1 docker简介 问题:为什么会有docker出现? 一款产品从开发到上线,从操作系统,到运行环境,再到应用配置。作为开发运维之间的协作我们需要关心很多东西,这也是很多互联网公司都不得不面对…...
解决ubuntu18.04无法进入系统桌面
解决ubuntu18.04无法进入系统桌面 解决ubuntu18.04无法进入系统桌面前言1、原因2、解决现象总结 前言 Vmware虚拟机运行跑Linux项目,没有关掉运行的进程就关机,导致系统无法进入系统桌面,一直卡在系统的初始化界面,按下快捷键发…...
Docker学习之容器虚拟化与虚拟机的区别(day11)
文章目录 前言一、问题描述二、具体内容1. 虚拟机(VM)2. 容器虚拟化(Docker)容器虚拟化的核心技术 三、总结1. 资源占用对比2. 适用场景3. 结论 前言 在现代软件开发和部署过程中,Docker 和虚拟机(VM&…...
无人机数据链技术及运行方式详解!
一、无人机数据链技术要点 1. 通信传输技术 频段选择: 常用频段包括 L波段(1-2 GHz)、C波段(4-8 GHz)、Ku/K波段(12-40 GHz),不同频段在传输距离、带宽和抗干扰性间权衡。 低…...
【JavaEE】MyBatis - Plus
目录 一、快速使用二、CRUD简单使用三、常见注解3.1 TableName3.2 TableFiled3.3 TableId 四、条件构造器4.1 QueryWrapper4.2 UpdateWrapper4.3 LambdaQueryWrapper4.4 LambdaUpdateWrapper 五、自定义SQL 一、快速使用 MyBatis Plus官方文档:MyBatis Plus官方文档…...
设计模式 三、结构型设计模式
一、代理模式 代理设计模式(Proxy Design Pattern)是一种结构型设计模式,它为其他对象提供了一个代理,以控制对这个对象的访问。 代理模式可以用于实现懒加载、安全访问控制、日志记录等功能。简单来说,代理模式 就是通…...
视频编码器的抉择:x264、x265、libaom、vvenc 对比测试实验
264、x265、libaom、vvenc 对比测试实验 测试机器配置:Apple M1 Pro -16G编码器版本(选择自己编译):所有源码都是当前最新更新的状态,此外各类编码具体的编译过程可参考我的相关系列博客。 编码器GitHubx264git clon…...
JMeter脚本录制(火狐)
录制前准备: 电脑: 1、将JMeter证书导入,(bin目录下有一个证书,需要安装这个证书到电脑中) 2、按winr,输入certmgr.msc,打开证书,点击下一步,输入JMeter证书…...
10、Linux C 网络编程(完整版)
1、网络发展历史和分层 1.1 Internet 的历史 起源: 1957 年:苏联发射第一颗人造卫星 "Sputnik"。 1958 年:美国总统艾森豪威尔成立 DARPA(国防部高级研究计划署)。 1968 年:DARPA 提出 "…...
拼多多 anti-token unidbg 分析
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 版本7.3-7.4 都试过加密没什…...
Swoole 的 Hyperf 框架和 Go 的 Gin 框架高并发原理以及技术实现对比分析
Swoole 的 Hyperf 框架和 Go 的 Gin 框架虽然都支持高并发,但它们的实现原理、底层机制和适用场景有显著差异。以下从 高并发原理、技术实现区别、优缺点 三个方面详细分析: 一、高并发实现原理 1. Hyperf (PHP Swoole) Hyperf 的高并发能力基于 Swoo…...
CSS3学习教程,从入门到精通,CSS3 媒体查询实现响应式布局语法指南(21)
CSS3 媒体查询实现响应式布局语法指南 一、媒体查询核心语法 1. 基础语法结构 media 媒体类型 and (媒体特性) {/* 匹配条件时应用的CSS规则 */ }2. 媒体类型(可省略) 类型值说明all所有设备(默认值)screen屏幕设备print打印机…...
C#中,什么是委托,什么是事件及它们之间的关系
1. 委托(Delegate) 定义与作用 委托是类型安全的函数指针,用于封装方法,支持多播(链式调用)。核心能力:将方法作为参数传递或异步回调。 使用场景 回调机制(如异步操作完…...
【LeetCode 热题100】347:前 K 个高频元素(详细解析)(Go语言版)
🚀 力扣热题 347:前 K 个高频元素(详细解析) 📌 题目描述 力扣 347. 前 K 个高频元素 给你一个整数数组 nums 和一个整数 k,请你返回其中出现频率 前 k 高的元素。你可以按 任意顺序 返回答案。 …...
②EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
型号 协议转换通信网关 EtherCAT 转 Modbus TCP 配置说明 网线连接电脑到模块上的 WEB 网页设置网口,电脑所连网口的网段设置成 192.168.1.X(X 是除 8 外的任一数值)后,打开浏览器,地址栏输入 192.168.1.8 ÿ…...
微服务集成测试 -华为OD机试真题(A卷、Python)
题目描述 现在有n个容器服务,服务的启动可能有一定的依赖性(有些服务启动没有依赖),其次,服务自身启动加载会消耗一些时间。 给你一个n n 的二维矩阵useTime,其中useTime[i][i]10表示服务i自身启动加载需…...
k8s常用总结
1. Kubernetes 架构概览 主节点(Master): 负责集群管理,包括 API Server、Controller Manager、Scheduler 和 etcd 存储。 工作节点(Node): 运行 Pod 和容器,包含 kubelet、kube-pr…...
【算法】并查集基础讲解
一、定义 一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,只要找到了某个元素的的树根,就能确定它在哪个集合里。 …...
探索PHP的未来发展与应用趋势
PHP,作为Web开发领域的常青树,自1995年诞生以来,始终在动态网页开发中占据重要席位。随着技术的不断演进,PHP也在持续更新,以适应现代开发需求。本文将深入探讨PHP的最新发展动态及其在2025年的应用趋势。 PHP 8&…...
C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题
C#调用ACCESS数据库,解决“Microsoft.ACE.OLEDB.12.0”未注册问题 解决方法: 1.将C#采用的平台从AnyCpu改成X64 2.将官网下载的“Microsoft Access 2010 数据库引擎可再发行程序包AccessDatabaseEngine_X64”文件解压 3.安装解压后的文件 点击下载安…...
ubuntu22.04.5安装docker,解决安装出现的错误,解决Docker hello-world没打印出来
文章目录 前言一 安装失败解决1结合具体报错分析2 首先怀疑是VPN的问题3 直接百度报错信息4最终解决问题 二 验证Docker hello-world没打印出来总结 前言 先说一下前面的情况,使用的是公司的工作站,登录公司一个帐号使用的公司网络,使用网上…...
HMTL+JS+CSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式
HMTLJSCSS实现贪吃蛇游戏,包含有一般模式,困难模式,还有无敌模式(可以穿墙死不了,从左边进去可以从右边出来),显示当前分数和最高分,吃到的球颜色可以叠加到蛇身体上 为了适配手机端…...
vue将页面导出成word
方法一:使用 html-docx-js html-docx-js 是一个轻量级的库,可以将 HTML 转换为 Word 文档。 安装依赖 首先安装 html-docx-js: Bash深色版本 npm install html-docx-js --save创建导出逻辑 在 Vue 组件中实现导出功能的代码如下࿱…...
Spring MVC 页面跳转方案与区别
SpringMVC 的页面跳转方案主要分为 转发(Forward) 和 重定向(Redirect) 两类,具体实现方式和区别如下: 一、页面跳转方案 1. 转发(Forward) 默认方式:直…...
Open GL ES ->纹理贴图,顶点坐标和纹理坐标组合到同一个顶点缓冲对象中进行解析
XML文件 <?xml version"1.0" encoding"utf-8"?> <com.example.myapplication.MyGLSurfaceView2 xmlns:android"http://schemas.android.com/apk/res/android"android:id"id/glSurfaceView"android:layout_width"matc…...
题解:AT_arc050_c [ARC050C] LCM 111
一道比较简单的题。(我绝对不会告诉你这题我改了很久) 题目意思很简单,我就不过多解释了,我们直接进入正题。 题目要我们求 a a a 个 1 1 1 组成的数与 b b b 个 1 1 1 组成的数的最小公倍数除以 m m m 后的余数。先不考虑…...
【408--考研复习笔记】计算机网络----知识点速览
目录 一、计算机网络体系结构 1.计算机网络的定义与功能: 2.网络体系结构相关概念: 3.OSI 七层模型与 TCP/IP 模型: 4.通信方式与交换技术: 电路交换 报文交换 分组交换 5.端到端通信和点到点通信: 6.计算机…...
ISIS报文
IS-IS 报文 目录 IS-IS 报文 一、报文类型与功能 二、报文结构解析 三、核心功能特性 四、典型应用场景 五、抓包数据分析 六、总结 IS-IS(中间系统到中间系统)协议报文是用于链路状态路由协议中网络设备间交换路由信息的关键载体,其设…...
FPGA——分秒计数器
文章目录 一、实验任务二、系统模块三、工程源码四、管脚信息五、运行结果参考资料总结 一、实验任务 在DE2-115板子上用 Verilog编程实现一个分秒计数器,并具备按键暂停、按键消抖功能。 二、系统模块 分频模块 高频时钟(如50MHz)分频得到…...
【Java】JVM
一、JVM体系结构 1、虚拟机概述 虚拟机(Virtual Machine):一台虚拟的计算机,指一种特殊的软件,他可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作软件。虚拟机…...
vue中使用geoscene无法出现弹窗
项目场景: 平日对地图加载使用不复杂的情况下,我通常采用leaflet去加载地图做一些简单的操作。但是最近需要用到arcgis发布的地图服务加载三维场景,于是又用回了geoscene(arcgis国产化)。这下暴露出很多的问题&#x…...
【Go】数组
数组Array 重点: 数组是值类型 注意点: 1. 数组:是同一种数据类型的固定长度的序列。2. 数组定义:var a [len]int,比如:var a [5]int,数组长度必须是常量,且是类型的组成部分。一旦定义&…...
【运维】Centos硬盘满导致开机时处于加载状态无法开机解决办法
Centos硬盘存储过满导致无法加载 一、准备1.现象2.根因分析3.制定救援方案问题1:无法进入系统确定分析结论 问题2:磁盘数据过多 4.后处理 一、准备 1.现象 Centos虚拟机界面卡顿,随后进行了重启操作,发现重新启动界面一直卡在加…...
JVM——模型分析、回收机制
方法区:存储已被虚拟机加载的类元数据信息(元空间) 堆:存放对象实例,几乎所有的对象实例都在这里分配内存 虚拟机栈:虚拟机栈描述的是|ava方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局…...
kafka 4.x docker启动kafka4.0.0 docker-compose启动最新版kafka 如何使用docker容器启动最新版kafka
1. 镜像选择标签: https://hub.docker.com/r/bitnami/kafka/tags 2. 命令: docker pull bitnami/kafka:4.0.0 3. docker-compose.yml 启动kafka4.0.0: version: 3services:kafka:image: bitnami/kafka:4.0.0container_name: kafkaports:- &…...
BUUCTF-web刷题篇(6)
15.PHP 知识点: ①__wakeup()//将在反序列化之后立即调用(当反序列化时变量个数与实际不符是会绕过)我们可以通过一个cve来绕过:CVE-2016-7124。将Object中表示数量的字段改成比实际字段大的值即可绕过wakeup函数。条件:PHP5<…...
MySQL篇(一):慢查询定位及索引、B树相关知识详解
MySQL篇(一):慢查询定位及索引、B树相关知识详解 MySQL篇(一):慢查询定位及索引、B树相关知识详解一、MySQL中慢查询的定位(一)慢查询日志的开启(二)慢查询日…...
QT之QML(简单示例)
需求一:点击按钮弹出菜单,并且自定义菜单弹出位置。 mouse.x 和 mouse.y 获取的是相对于 MouseArea(在这个例子中是 Button)左上角的局部坐标。如果你想要在鼠标点击位置显示 Menu,你需要将这个局部坐标转换为相对于应…...
自动化释放linux服务器内存脚本
脚本说明 使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。 脚本用到sync系统命令 sync的作用:sync 是一个 Linux 系统命令,用于将文件系统缓存中的数据强制写入磁盘。 在你执行reboot、poweroff、shutdown命令时,系统会默认执…...
Linux中的权限管理
一、权限的概念 在 Linux 系统的架构里,权限是构建安全堡垒的基石,精准界定了不同用户对文件与目录的操作边界,对系统安全的维护以及数据完整性的保障起着决定性作用。 1.权限的三种基础类别: 权限对文件的影响对目录的影响 读(r…...
Java对象与JSON字符串的互转
最近,工作中会涉及到Java对象与JSON字符串相互转换,虽然说并不难,但打算还是梳理一番,主要内容有: JSON 字符串 转 普通对象 普通对象 转 JSON 字符串 JSON 字符串数组 转 List 集合对象 List 集合对象 转 JSON 字符串…...
[笔记.AI]向量化
(借助 DeepSeek-V3 辅助生成) 向量化的定义 向量化(Vectorization) 是将文本、图像、音频等非结构化数据转换为高维数值向量(即一组数字)的过程。这些向量能够捕捉数据的语义、特征或上下文信息&#x…...
NSSCTF(MISC)—[justCTF 2020]pdf
相应的做题地址:https://www.nssctf.cn/problem/920 binwalk分离 解压文件2AE59A.zip mutool 得到一张图片 B5F31内容 B5FFD内容 转换成图片 justCTF{BytesAreNotRealWakeUpSheeple}...
Angular的理解
Angular 是一个由 Google 维护的全功能前端框架,适合构建复杂的企业级应用。它采用 TypeScript 作为首选语言,提供了一套完整的解决方案,包括数据绑定、依赖注入、路由、表单处理等。 1. Angular 的核心概念 1.1 组件化架构 Angular 应用由…...
广告推荐算法:COSMO算法与A9算法的对比
COSMO算法与A9算法的概念解析 1. A9算法 定义与背景: A9算法是亚马逊早期为电商平台研发的核心搜索算法,主要用于优化商品搜索结果的排序和推荐,其核心逻辑围绕产品属性与关键词匹配展开。自2003年推出以来,A9通过分析商品标题…...
10. 七大排序(含四种版本快排及优化) ******
排序算法时间复杂度(平均)时间复杂度(最坏)时间复杂度(最好)空间复杂度稳定性主要使用场景直接插入排序O(n)O(n)O(n)O(1)稳定小规模数据或基本有序数据希尔排序O(n^1.3)O(n)O(n log n)O(1)不稳定中等规模数据,对稳定性无要求选择排序O(n)O(n)O(n)O(1)不稳定小规模数…...
以下是C/C++后台开发常见的高概率面试题
一、语言基础 多态的实现 通过虚函数表(vtable)实现动态绑定,运行时根据对象类型调用对应的函数。虚函数通过virtual关键字声明,子类可重写基类虚函数112。 指针与引用的区别 指针是变量,存储地址,支持多…...