- 博客(120)
- 收藏
- 关注
原创 GEMM详解
GEMM是的缩写,即通用矩阵乘法。A, B, C: 这三个都是矩阵。A 的维度是m x k,B 的维度是k x n,C 的维度是m x n。α (alpha)和β (beta): 这两个是标量(也就是普通的数字),用于对矩阵运算的结果进行缩放和累加。A * B: 这是标准的矩阵乘法,结果是一个m x n的矩阵。: 将矩阵乘法的结果 A*B 中的每个元素都乘以标量 α。β * C: 将原始矩阵 C 中的每个元素都乘以标量 β。: 最后,将前两项的结果相加,更新矩阵 C。标准矩阵乘法。
2025-09-22 16:07:33
1051
原创 哈希算法介绍
算法类型输出长度安全状态推荐用途MD5通用/快速128位已攻破,不安全仅用于非安全的文件校验,应尽量避免SHA-1通用/快速160位已攻破,不安全仅用于兼容老旧系统(如Git),新项目禁用SHA-256通用/快速256位安全(当前行业标准)数字签名、TLS、区块链、文件完整性校验SHA-512通用/快速512位安全对安全要求极高的场景,或在64位架构下追求性能SHA-3通用/快速可变 (224-512位)安全(下一代标准)面向未来的新应用,或需要抵抗长度扩展攻击的场景bcrypt。
2025-09-19 11:01:19
685
原创 一文看懂哈希值
想象一下,你有一本很厚的书,你想给这本书创建一个独一无二、并且非常简短的“指纹”。无论这本书是100页还是1000页,它的指纹都是一个固定长度的、看起来像乱码的字符串。这个“指纹”就是哈希值。从技术上讲,哈希值(也称为哈希散列值或摘要)是通过一个名为哈希函数(Hash Function)的数学算法,将任意长度的数据(如文本、文件、图片等)映射成一个固定长度的、唯一的字符串的过程的输出结果。输入数据 (任意长度) -> 哈希函数 -> 哈希值 (固定长度)
2025-09-19 10:47:36
1101
原创 vllm用预编译好的动态库为什么可行?
编译安装 (Compile from source):你买来了CPU、GPU、主板等所有零件的原材料(源码),然后自己动手焊接、组装(编译)。你必须拥有全套工具(CUDA Toolkit),并且非常清楚每个零件的规格(CUDA版本)。预编译安装 (Wheels):你直接从商店买了一个预装好的“准系统”机箱(.whl轮子),里面已经装好了匹配的CPU和主板(预编译的.so库)。店家(pip)已经帮你根据你的需求(环境)选好了型号。你拿回家插上电就能用。开发模式:你已经有了一台上面那个能用的“准系统”电脑。
2025-09-18 00:36:36
1109
原创 NVIDIA Container Toolkit的本质作用
极简的用户体验将原来极其复杂的GPU环境配置,简化为一条--gpus参数。完美的镜像可移植性构建的AI/ML镜像可以无缝地在任何安装了NVIDIA驱动和Container Toolkit的机器上运行,无论对方的驱动版本是什么(只要满足CUDA版本兼容性)。驱动与应用分离,维护更轻松管理员可以独立升级宿主机的NVIDIA驱动,而不需要重新构建任何一个Docker镜像。应用开发者可以专注于自己的代码和CUDA版本,而不用担心底层驱动的差异。生态系统标准。
2025-09-18 00:35:15
1000
原创 github 中的issues都有那些作用
GitHub Issues 远不止是一个 bug 追踪器,它是一个功能强大且高度集成的协作中心。它通过标签、指派、里程碑、项目板等工具,将任务管理、社区沟通、项目规划和代码开发紧密地联系在一起,为项目的健康发展和社区的繁荣提供了不可或缺的平台。无论是个人项目还是数千人协作的大型开源项目,善用 Issues 都能极大地提升开发效率和协作质量。
2025-09-11 11:38:23
1301
原创 学习 ZMQ 消息传递库
ZMQ 是一个功能极其强大的消息模式库,它极大地简化了构建复杂、高性能、高并发的分布式系统的难度。核心优势无 Broker 架构: 轻量、低延迟、无单点故障。智能套接字: 自动处理连接、重连、缓冲等问题。丰富的通信模式: 提供了REQ/REPPUB/SUBPUSH/PULL等多种成熟的模式,让你专注于业务逻辑而非底层网络细节。在 vLLM 中的角色: ZMQ 是 vLLM解耦 API 服务器和推理引擎的关键技术。它为这两个独立的、多进程的组件之间提供了一个高效、健壮的通信骨架。
2025-09-10 10:56:02
715
原创 vllm推理时涉及到那些进程,这些进程是如何创建的介绍
进程角色职责创建技术数量由…决定API 服务器接收/响应 HTTP 请求,与引擎通信PythonEngine (调度器)请求排队、批处理、任务分发Ray Actorray.remote通常为 1GPU Worker在 GPU 上执行模型前向传播Ray Actorray.remoteAPI 服务器的水平扩展解决了网络 I/O 瓶颈。调度器与 Worker 的分离使得复杂的批处理逻辑可以与纯计算逻辑解耦。使用 Ray 来管理后端。
2025-09-09 17:49:41
913
原创 开发python工程代码常用的一些设计模式
模式名称 (Pattern)核心目的Pythonic 特点vLLM 或常见应用示例工厂模式 (Factory)解耦对象创建与使用常用函数或字典实现, 根据配置创建不同对象单例模式 (Singleton)全局唯一实例,共享资源模块级单例最简单, 全局配置对象装饰器模式 (Decorator)动态增强功能语法糖@app.get, 日志、缓存适配器模式 (Adapter)统一不兼容的接口继承或组合集成第三方库,兼容遗留系统策略模式 (Strategy)封装可替换的算法/行为。
2025-09-09 13:52:42
961
原创 from abc import ABC, abstractmethod的最佳实践,以及意义
ABC是一个辅助类。任何继承自ABC的类,就变成了一个抽象基类。一个类是“抽象的”,意味着它本身不能被实例化。你不能创建一个抽象类的对象。它的唯一目的就是作为其他类的父类,为它们提供一个共同的基座和接口规范。例子class Animal(ABC): # Animal 现在是一个抽象基类pass# 你不能这样做,会抛出 TypeError这是一个装饰器,用于标记抽象基类中的方法为抽象方法。一个抽象方法在抽象基类中可以没有实现(或者只有一个空的实现,比如核心规则。
2025-09-09 11:56:28
912
原创 nvidia 的 PTX 有多少个?
PTX拥有一套非常丰富和全面的指令集,远比一个典型的RISC CPU指令集要庞大。它的设计目标是既要能表达高级语言(如CUDA C++)的复杂操作,又要能有效地映射到不同代际的GPU硬件上。这是理解PTX兼容性模型的关键。PTX不是一个静态的指令集,它会随着CUDA和GPU硬件的发展而演进。,它允许一个可执行文件内包含针对多种不同架构的SASS代码以及一份通用的PTX代码,以实现最佳的性能和兼容性。每一个CUDA Toolkit版本都会引入一个或多个新的PTX版本,并设定一个默认的PTX目标版本。
2025-09-07 11:54:20
922
原创 NVIDIA GPU SM(流式多处理器)详细介绍
NVIDIA GPU的SM是一个精心设计的、集成了多种专用计算单元、高速缓存和智能调度器的微型并行处理器。它是GPU强大算力的源泉,其架构的演进直接推动了图形、科学计算和人工智能领域的发展。对于CUDA开发者而言,编写高性能代码的过程,本质上就是充分理解SM的特性,并高效利用其内部各种资源(寄存器、共享内存、专用核心)的过程。GPU的宏观架构就是由这些SM组成的阵列。一个现代的SM(以Ampere/Hopper/Ada Lovelace架构为例)是一个高度复杂的单元,包含了执行计算、调度和存储所需的一切。
2025-09-07 11:47:42
1777
原创 英伟达gpu 芯片电路设计制造的全流程,以及用到的知识理论详细介绍
英伟达(NVIDIA)GPU芯片的设计与制造是现代科技的巅峰之作,涉及多个学科、无数顶尖人才和巨额资本投入。每一个环节的成功都离不开背后深厚的理论知识和长期的工程实践积累,任何一个微小的失误都可能导致数亿美元的投入付诸东流。这个阶段的目标是将一个想法或市场需求,转化为一个包含数十亿个晶体管如何连接和布局的、可供制造的物理蓝图。NVIDIA GPU的设计制造流程是一个典型的多学科交叉、高度资本和智力密集的系统工程。的文件,它包含了芯片所有层次的精确几何图形信息,这个文件将被送到代工厂进行制造。
2025-09-07 11:29:49
1566
原创 NVIDIA GPU的指令集详细介绍
GPU的指令集架构(Instruction Set Architecture, ISA)是理解GPU如何工作的关键,它直接体现了GPU为大规模并行计算而生的设计哲学。它是一种稳定的、向前兼容的GPU汇编语言。要理解GPU ISA,首先必须明白它与我们熟知的CPU ISA(如x86, ARM)在设计目标上的根本差异。CPU是为响应速度而生的“专家”,GPU是为并行处理而生的“军团”。无论是NVIDIA的SASS还是AMD的RDNA ISA,现代GPU指令集都共享一些核心特征。这是GPU ISA的灵魂。
2025-09-07 11:28:19
1394
原创 NVIDIA驱动程序核心的“即时编译器”(Just-in-Time, JIT Compiler)详细介绍
它在运行时连接了稳定的PTX软件世界与飞速发展的SASS硬件世界,通过在最后一刻进行针对性编译,确保了CUDA程序在任何NVIDIA GPU上都能以接近理论峰值的性能运行,从而构筑了NVIDIA在高性能计算领域难以逾越的生态壁垒。这个模型完美地解决了上述矛盾:开发者面向稳定的PTX编程,而驱动中的JIT编译器则负责抹平硬件差异,确保代码总能以最优方式在任何NVIDIA GPU上运行。它的工作远不止是简单的“翻译”,而是深度的。它不是一个通用的编译器,其职责高度专一,只服务于CUDA程序的执行。
2025-09-07 11:26:56
603
原创 在嵌入模型中任何文本都包含那些文本,世界上包含各种各样的文本,以及不同长度的文本,怎么可能做到穷举呢
通用文本嵌入模型之所以强大,正是因为它实现了从**记忆(需要穷举)到理解(可以泛化)**的飞跃。将无限的文本分解为有限的、可复用的Tokens。利用架构学习 tokens 之间动态的、依赖上下文的组合关系。将学习到的语义关系映射到一个连续的高维向量空间中,使得新文本可以被平滑地“安置”在其中。虽然无法穷举,但通过在海量、覆盖面极广的数据上进行训练,模型学到的“语言规律”就越接近真实世界的复杂性,其泛化能力也就越强。
2025-08-29 18:07:02
750
原创 文本嵌入模型的本质
通用文本嵌入模型的本质,是通过在海量、多样化的数据上进行大规模对比学习,构建一个能够将任何文本映射到其语义位置的高维数学空间。它就像一个“语言的GPS”,其重要性在于,它为所有下游的NLP任务提供了一个强大、易用、开箱即用的语义理解基座,是现代AI应用(尤其是RAG)不可或缺的“基础设施”。
2025-08-29 18:05:09
735
原创 对比rerank模型和embedding模型
特性Embedding 模型 (Bi-Encoder)Rerank 模型 (Cross-Encoder)核心任务检索 (Retrieval):从海量数据中召回候选集排序 (Ranking):对小规模候选集精准打分工作模式独立编码:Query 和 Document 分开处理联合编码:Query 和 Document 拼接后处理输入单个文本文本对 (Query, Document)输出向量 (Embedding)相关性分数 (Score)速度非常快非常慢扩展性高(可处理亿级文档)低。
2025-08-29 17:56:38
1025
原创 详细介绍vllm 每次迭代会发生那些事
阶段EngineCore的主要活动核心产出1. 状态更新处理上次GPU结果,释放已完成请求的资源,接收新请求更新的空闲资源池,扩大的等待队列2. 调度排序、资源检查、做出抢占决策,最终确定下一个批次一个经过优化的、资源上可行的请求批次3. 执行将批次数据送往GPU,启动模型前向传播GPU 开始繁忙计算4. 返回从GPU获取logits,采样生成新token,打包所有信息一个包含新token和统计数据的对象vLLM 的每一次迭代都是一个快速、高效的决策与执行循环。它的高性能来源于智能的调度。
2025-08-27 10:23:20
659
原创 推测解码(Speculative Decoding)中目标模型是如何验证的,从最本质角度介绍
传统解码的本质,然后 f(C, t_1) -> t_2… (多次调用函数f推测解码验证的本质: 一次性地计算 f([C, d_1, d_2, ...]) -> [logits_C, logits_{C,d_1}, logits_{C,d_1,d_2}, ...](一次调用,多点返回)推测解码的验证过程,在本质上是利用了 Transformer 模型能够一次性计算出序列中每个位置的“下一个词预测”的并行能力。它将多个串行的“预测未来一步”的任务,打包成了一个并行的“一次性验证多个未来猜测”的任务。
2025-08-27 10:22:32
414
原创 推测解码(Speculative Decoding)中目标模型是如何验证的,从最本质角度介绍
传统解码的本质,然后 f(C, t_1) -> t_2… (多次调用函数f推测解码验证的本质: 一次性地计算 f([C, d_1, d_2, ...]) -> [logits_C, logits_{C,d_1}, logits_{C,d_1,d_2}, ...](一次调用,多点返回)推测解码的验证过程,在本质上是利用了 Transformer 模型能够一次性计算出序列中每个位置的“下一个词预测”的并行能力。它将多个串行的“预测未来一步”的任务,打包成了一个并行的“一次性验证多个未来猜测”的任务。
2025-08-26 17:11:54
326
原创 vllm 推测解码的实际意义
推测解码的实际意义是巨大且已被验证的。它不是一个微小的、锦上添花的优化,而是一项能够带来2-4倍实际性能提升(在延迟和吞吐量上)的关键技术,并且这种提升是无损的。对于任何需要部署大型语言模型并关心延迟、吞-吐量和成本的生产环境,推测解码已经从一个“可以了解一下”的选项,变成了“必须考虑和实施”的核心优化策略。它的广泛应用正在重新定义高性能 LLM 推理的标准。
2025-08-26 17:09:58
507
原创 详细介绍 操作系统的最底层(Ring 0) 运行在操作系统的用户空间(Ring 3)等 这些分层
负责处理绝大部分复杂的、逻辑性的工作,比如将DirectX/Vulkan的API调用翻译成GPU指令、编译着色器等。这些任务很复杂,也最容易出bug。把它放在Ring 3,万一出错了,最多只会导致游戏崩溃,而不会让整个电脑蓝屏。只负责最核心、最精简、最关键的任务:接收来自UMD的指令包,并将其提交给GPU硬件。这部分代码被设计得尽可能小而稳定。这种设计完美地平衡了性能、功能和稳定性,是所有现代硬件驱动程序的标准实践。特性Ring 0 (内核模式)Ring 3 (用户模式)别名特权模式、监督者模式。
2025-08-24 00:10:11
768
原创 英伟达显卡GPU驱动的本质
强大的GPU硬件是“肌肉”,而驱动程序是控制肌肉的“神经网络”和“大脑”。没有高效的驱动,再强的硬件也只是一堆昂贵的硅片。它是连接上层无限可能的软件生态和下层固定物理规则的硬件之间的关键纽带,并且是一个极其智能和主动的桥梁。驱动程序不是一成不变的。NVIDIA投入巨量工程师资源,随着新游戏、新软件的出现而不断更新,持续压榨硬件的每一分潜力。这是一种“软件定义硬件性能”的体现。NVIDIA的统治地位,不仅仅建立在卓越的芯片设计上,更建立在数十年积累、无与伦比的驱动程序和CUDA生态系统上。
2025-08-23 23:51:57
1783
原创 详细分析大语言模型attention的计算复杂度,从数学角度分析
下面以**单层多头自注意力(Multi-Head Self-Attention, MHA)**为基准,分别给出时间/空间复杂度、精确到常数的 FLOPs 估算、训练与推理(含 KV Cache)阶段的差异,以及若干改进/近似注意力的复杂度对比与直觉化解释。
2025-08-22 09:41:18
925
原创 从数学原理推导的角度介绍大语言MOE架构的本质
分治策略的数学体现 (A Mathematical Realization of Divide-and-Conquer)它将一个庞大的函数(稠密FFN)分解为n个子函数(专家E_i)的加权组合。这是一种典型的函数逼近思想,但关键在于其权重是动态的。稀疏激活的条件化计算 (Conditional Computation via Sparse Activation)通过引入非线性的、不可微的TopK操作,将理论上的“软”混合模型,转变为计算上可行的“硬”路由系统。其核心数学公式。
2025-08-18 18:01:32
808
原创 python重要特性 多态 详解
多态(Polymorphism)一词源于希腊语,意为“多种形态”。在编程中,它指的是同一种操作或接口,作用于不同的对象,会产生不同的执行结果。想象一个“驾驶”的动作。当你驾驶一辆汽车时,“驾驶”意味着转动方向盘、踩油门和刹车。当你驾驶一艘船时,“驾驶”意味着操作船舵和节流阀。当你驾驶一架飞机时,“驾驶”意味着操作驾驶杆和各种仪表。这里的“驾驶”就是那个统一的接口(或操作),而汽车、船、飞机就是不同的对象。
2025-08-14 16:59:20
1039
原创 vllm 源码阅读系列【1】
是一个设计精良、职责清晰的方法。问询Scheduler:我该做什么?schedule命令Executor:照着这个计划去做!告知Scheduler:这是做完的结果,你来整理一下。这个流程不断重复,构成了 vLLM 推理引擎持续不断、高效运转的心跳。每一次心跳,都可能为一批用户请求向前推进它们的生成过程。
2025-08-14 15:07:18
767
原创 python的ZeroMQ库详解
ZeroMQ是一个高性能异步消息库,用于构建分布式或并发应用。它提供类似套接字的API,但自动处理连接、支持多种消息模式(请求-应答、发布-订阅、管道模式)并内置异步I/O。pyzmq是其Python绑定库,核心组件包括Context管理连接和Socket收发消息。相比传统消息队列,ZeroMQ无需代理服务器,延迟更低。它适用于微服务、数据流处理等场景,但需注意消息可靠性问题。安装简单,提供跨语言支持,是轻量级通信的优选方案。
2025-08-14 14:14:50
1251
原创 @torch.inference_mode() 的本质详解
@torch.inference_mode()是PyTorch专为模型推理设计的高效工具,它完全关闭了自动求导引擎的所有功能,包括梯度计算和历史跟踪机制,比@torch.no_grad()更彻底。其本质在于同时禁用梯度计算(所有张量requires_grad=False)和版本跟踪(不维护计算图和版本计数器),从而带来显著的性能提升和内存节省。与no_grad()不同,inference_mode()彻底放弃所有与求导相关的开销,这使得它成为推理场景的最优选择。使用时可通过上下文管理器或装饰器方式调用,特别
2025-08-13 09:22:15
759
原创 python importlib 模块的用法和本质详解
importlib这是importlib最高级的部分,它允许你创建自己的查找器和加载器,从而完全改变 Python 的导入行为。使用场景从非文件系统加载: 从数据库、ZIP 压缩包、网络 URL 或内存中直接导入 Python 代码。透明的代码转换: 在导入时自动对源代码进行转换,例如,实现一种新的编程语言语法,或者自动为函数添加日志记录。这是一个非常高级的主题,通常只有框架和库的开发者才会接触到。功能层级核心组件用途复杂度高层/常用根据字符串动态导入模块,满足 99% 的动态导入需求。简单。
2025-08-12 18:18:23
664
原创 python signal 模块的本质详解
Python的signal模块是操作系统信号机制与Python程序之间的桥梁,允许程序处理异步中断事件。信号是操作系统层面的软件中断,如SIGINT(Ctrl+C)或SIGTERM(kill命令)。模块核心包括信号类型、处理器函数和注册机制,通过signal.signal()将Python函数绑定到特定信号。典型应用包括优雅退出程序(捕获中断信号进行清理)和实现超时控制(通过SIGALRM)。由于信号处理是异步且底层的,使用时需谨慎。该模块在Unix/Linux系统上功能完整,但部分特性(如signal.a
2025-08-12 15:38:19
1030
原创 每个端口对应于操作系统上一个进程,这样理解正确吗
摘要: 一个被监听的端口在同一时间、同一协议下只能被一个进程绑定,但一个进程可以监听多个端口(如Nginx同时监听80和443)。高并发场景下,主进程负责监听端口,工作进程处理具体连接,实现高效分工。因此,"端口-进程"的一对一关系是基础,但实际应用中存在"一对多"和"监听-工作分离"的复杂模式。
2025-08-12 15:21:04
705
原创 计算机端口的本质详解
摘要: 端口是网络通信中的逻辑标识符,用于区分同一IP地址上的不同服务。类比于“大楼地址(IP)和房间号(端口)”,端口确保数据包准确送达目标应用程序。端口分为三类:0-1023(周知端口,如HTTP 80、HTTPS 443)、1024-49151(注册端口,如MySQL 3306)、49152-65535(动态端口,供客户端临时使用)。端口与TCP/UDP协议绑定,实现可靠或快速的数据传输。例如,访问网页时,浏览器通过临时端口连接服务器的443端口完成HTTPS通信。端口管理也是网络安全的核心,防火墙通
2025-08-12 15:11:06
725
原创 通过一个复杂的例子学习python 的argparse模块80%的功能
本文介绍了一个使用Python argparse 模块构建的复杂命令行工具main.py,具备数据处理和模型训练两种模式。该脚本通过子解析器实现两种主要功能:process(数据预处理)和train(模型训练)。process模式支持多输入文件、可选输出目录、数据清洗开关和方法选择;train模式需要指定数据文件,支持模型类型选择、学习率和训练周期设置,并提供互斥的早停策略参数。脚本还包含通用的日志级别参数,展示了子命令、参数类型检查、互斥参数组等高级功能,覆盖了argparse模块80%的常用用法。
2025-08-12 14:52:12
600
原创 python socket 包的本质 详解
Python的socket模块是操作系统网络功能的接口,提供统一函数调用底层TCP/IP协议栈。核心要素包括地址族(IPv4/IPv6)、套接字类型(TCP/UDP)、IP地址和端口号。工作模式分为服务器(被动监听)和客户端(主动连接)。服务器通过监听套接字接收连接后,为每个客户端创建专属套接字;客户端直接连接服务器。数据传输本质是字节流,需在字符串和字节间编解码。Socket抽象了复杂网络操作,是Python网络编程的基础,所有高级网络库最终都依赖它。理解Socket机制能深入掌握网络通信原理。
2025-08-12 14:44:51
605
原创 pytorch 生成Triton代码之后流程详解
性能(Specialization):JIT 允许 Inductor 和 Triton 生成为运行时具体张量形状量身定制的、高度优化的代码。这是 AOT(Ahead-of-Time,提前编译)很难做到的。灵活性(Dynamism):它完美地契合了 PyTorch 的动态特性。你不需要提前声明所有可能的输入形状,系统会在运行时按需、自动地处理。
2025-08-12 12:39:00
670
原创 TorchInductor 本质详解
TorchInductor是PyTorch 2.0的核心编译后端,负责将Dynamo捕获的计算图转换为高性能代码。它通过降维技术将PyTorch操作转换为循环级中间表示,实现算子融合和内存优化,大幅减少内核启动开销和内存带宽瓶颈。TorchInductor采用四步编译流程:图降维、调度融合、内存规划和代码生成,支持Triton(GPU)和C++/OpenMP(CPU)。其Pythonic特性支持即时编译和缓存,结合Triton的强大能力,成为PyTorch 2.0高性能的关键组件,与Dynamo共同提升模型
2025-08-12 12:37:08
1285
原创 pytorch Dynamo本质详解
PyTorch Dynamo是PyTorch 2.0的核心创新,解决了动态图灵活性与静态图性能难以兼得的问题。它通过Python字节码拦截技术,将PyTorch操作安全捕获为计算图,同时利用"图中断"机制处理不支持的Python特性,确保程序正确性。作为编译栈前端,Dynamo与TorchInductor后端配合,实现算子融合等深度优化,显著提升性能。其核心优势在于保持Python原生灵活性的同时,通过编译技术达到接近静态图的执行效率,仅需一行torch.compile()即可获得加速。
2025-08-12 12:34:27
966
原创 Pthon 本质详解
从哲学上看:它是一位追求简洁、优雅、实用的艺术家,认为代码首先是给人读的。从技术上看:它是一个动态、灵活的指挥官,通过解释执行和“万物皆对象”的统一模型,快速编排逻辑。从角色上看:它是一瓶强力胶水,能将不同语言、不同系统的组件粘合在一起,协同工作。从生态上看:它是一个装备精良的瑞士军刀,背后还有一个巨大的后勤基地(PyPI),几乎能应对任何领域的挑战,尤其在数据科学、人工智能和自动化领域所向披靡。因此,当你问“Python 的本质是什么?”时,答案不是单一的。
2025-08-08 18:07:52
560
C++面试总结手册.pdf
2024-07-20
LeetCode刷题题解答案(c++).pdf 彻底搞懂了编程算法题,成功拿到了大厂offer!
2024-07-20
2024.1.8新版CUDA 官方文档CUDA_C_Programming_Guide.pdf
2024-07-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅