【编译器】传统编译器和AI/ML编译器总结

前言

本文总结了传统编译器和AI/ML编译器,可作为学习、研究、研发的参考资料。

1.编译器-GC

Clang

Clang是一个C、C++、Objective-C和Objective-C++编程语言的编译器前端。它采用了LLVM作为其后端,由LLVM2.6开始,一起发布新版本。它的目标是提供一个GNU编译器套装(GCC)的替代品,支持了GNU编译器大多数的编译设置以及非官方语言的扩展。作者是克里斯·拉特纳 (Chris Lattner),在苹果公司的赞助支持下进行开发,而源代码许可是使用类BSD的伊利诺伊大学厄巴纳-香槟分校开源码许可。 Clang项目包括Clang前端和Clang静态分析器等。

CLang 官网:clang.org/

CLang User Guide:clang.llvm.org/docs/Use

CLang Doc:clang.llvm.org/docs/ind

Clang C++:clang.llvm.org/cxx_stat

Clang User Manual:opensource.apple.com/so

CLang Wiki:zh.wikipedia.org/zh-cn/

LLVM

LLVM是一组编译器和工具链技术,可用于开发任何编程语言的前端和任何指令集架构 的后端。LLVM 围绕独立于语言的中间表示(IR) 进行设计,该中间表示作为一种可移植的高级汇编语言,可以通过多次传递中的各种转换进行优化。LLVM 用C++编写,专为编译时、链接时、运行时和空闲时优化而设计。LLVM最初是为C和 C++ 实现的,与语言无关的设计已经催生了各种各样的前端:

带有使用 LLVM 编译器的语言(或者不直接使用 LLVM 但可以生成编译后的程序作为 LLVM IR),包括:ActionScript, Ada, C# for .NET,[6][7][8] Common Lisp, PicoLisp, Crystal, CUDA, D, Delphi, Dylan, Forth,[9] Fortran, FreeBASIC, Free Pascal, Halide, Haskell, Java bytecode, Julia, Kotlin, LabVIEW's G language,[10][11] Lua, Objective-C, OpenCL,[12] PostgreSQL's SQL and PLpgSQL,[13] Ruby,[14] Rust,[15] Scala,[16][17] Swift, Xojo, and Zig。

LLVM 官网:llvm.org/

LLVM Github:github.com/llvm/llvm-pr

LLVM Wiki:en.wikipedia.org/wiki/L

LLVM 论文:llvm.org/pubs/2004-01-3

2.编译器-C/C++

ArmCC

编译器armcc是一个优化的C和C++编译器,它将标准C和标准C++源代码编译为基于ARM架构的处理器的机器代码。编译器将以下不同类型的 C 和 C++ 源代码编译为 ARM 和 Thumb 代码。该编译器还为采用 NEON 技术的 ARM 处理器提供矢量化模式,从而支持使用 ARM 高级单指令多数据 (SIMD) 扩展。矢量化涉及编译器直接从 C 或 C++ 代码生成 NEON 向量指令。

ArmCC:developer.arm.com/docum

ArmCC 编译器入门:developer.arm.com/docum

ArmCC 使用 NEON 矢量化编译器:developer.arm.com/docum

ArmCC 编译器特性:developer.arm.com/docum

ArmCC 编译选项:developer.arm.com/docum

GCC

GNU 编译器集合 ( GCC )是GNU 项目产生的优化编译器,支持各种编程语言、硬件体系结构和操作系统。自由软件基金会 (FSF)根据GNU 通用公共许可证(GNU GPL)将 GCC 作为自由软件分发。GCC 是GNU 工具链的关键组件,也是大多数与GNU和Linux 内核相关的项目的标准编译器。GCC 2019 年约有 1500 万行代码,是现有最大的免费程序之一。它作为工具和范例, 在自由软件的发展中发挥了重要作用。

GCC:gcc.gnu.org/

GCC Doc:gcc.gnu.org/onlinedocs/

GCC Wiki:en.wikipedia.org/wiki/G

G++

G++是GNU C++编译器调用命令,用于对源代码进行预处理、编译、汇编和链接,生成可执行文件。

G++ Compiler:geeksforgeeks.org/compi

使用G++编译:courses.cs.washington.edu

QCC/Q++

QCC 支持以下 C++ 标准库实现: cxx(LLVM C++)、gpp(GNU C++)、cpp(纯粹的 C++)、 cpp-ne(Dinkum C++,无例外)、 acpp(纯粹精简版 C++)、acpp-ne(Dinkum Abridged C++,无例外)、ecpp(Dinkum 嵌入式 C++)、 ecpp-ne(Dinkum 嵌入式 C++,无一例外)。

QCC/Q++:qnx.com/developers/docs

MSVC

Microsoft Visual C++ ( MSVC ) 是Microsoft的C、C++、C++/CLI和C++/CX 编程语言的编译器。MSVC 是专有软件;它最初是一个独立的产品,但后来成为Visual Studio的一部分,并以试用软件和免费软件的形式提供。它具有用于开发和调试C++ 代码的工具,特别是为Windows API、DirectX和.NET编写的代码。

MSVC:learn.microsoft.com/en-

MSVC Wiki:en.wikipedia.org/wiki/M

Bisheng

毕昇编译器 (bisheng compiler)是华为提供的一款提供高性能、高可信及易扩展的编译器工具链。毕昇编译器引入了多种编译技术,支持C/C++/Fortran编译语言。

毕昇编译器:support.huaweicloud.com

毕昇编译器介绍:hikunpeng.com/document/

XL

XL C/C++是IBM专有的优化C / C ++编译器的名称,用于 IBM 支持的环境。IBM XL 编译器由模块化组件构建而成,其中包括前端(针对不同的编程语言)、与平台无关的高级优化器以及特定于平台的低级优化器/代码生成器 ,以针对特定的硬件和操作系统。XL C/C++ 编译器针对 POWER、BlueGene/Q 和IBM Z硬件架构。

IBM XL C/C++ Compiler:ibm.com/products/open-x

IBM XL C/C++ Compilers:en.wikipedia.org/wiki/I

DPCC

Intel oneAPI DPC++/C++ 编译器适用于 Windows 和 Linux,支持编译 C、C++、SYCL 和数据并行 C++ (DPC++)源代码,针对 Intel IA-32 、Intel 64(又名x86-64)、Core、Xeon和至强可扩展处理器 以及 GPU,包括英特尔处理器显卡 Gen9 及更高版本、英特尔X e架构以及采用英特尔 Arria 10 GX FPGA 的英特尔可编程加速卡。与英特尔 C++ 编译器经典版一样,它也支持Microsoft Visual Studio和Eclipse IDE开发环境,并支持通过英特尔 oneAPI线程构建模块、OpenMP和本机线程进行线程化。

DPC++基于Khronos Group 的SYCL规范构建。它旨在允许开发人员跨硬件目标(CPU 和 GPU 和 FPGA 等加速器)重用代码,并针对特定加速器执行自定义调整。DPC++ 包含C++17和 SYCL 语言功能,并包含开源社区 扩展,使 SYCL 更易于使用。其中许多扩展被 SYCL 2020 临时规范[8]采用,包括统一共享内存、组算法和子组。 英特尔于 2021 年 8 月宣布全面采用LLVM,以缩短构建时间并受益于支持最新的 C++ 标准。

Intel DPCC Compiler:intel.com/content/www/u

Intel DPC Compiler:github.com/intel/llvm#

Intel C++ Compiler:en.wikipedia.org/wiki/I

Intel Fortran Compiler:intel.com/content/www/u

AOCC

AMD优化 C/C++ 编译器( AOCC ) 是AMD的一款优化 C/C++ 和 Fortran编译器套件,针对 32 位和 64 位Linux平台。它是LLVM + Clang的专有分支,具有各种附加补丁,可提高Epyc和Ryzen微处理器中 AMD Zen微架构的性能。

AOCC:amd.com/en/developer/ao

AMD Optimizing C/C++ Compiler:en.wikipedia.org/wiki/A

XCC

Cadence Tensilica Xtensa C/C++ 编译器 (XCC)

XCC:docs.zephyrproject.org/

DDSC

大多数 DSP 系统中的关键组件是正弦波发生器,通常称为直接数字合成器 (DDS) 或数控振荡器 (NCO)。这些 DDS 功能虽然算法简单,但给负责实现该功能的硬件工程师带来了许多困难。例如,限制高 SFDR 要求所消耗的内存以及达到设备中的最大时钟性能通常是一个挑战。DDS 编译器消除了这些困难,并减少了只需按一下按钮的实施时间。此外,该工具还使用户能够在 XtremeDSP切片、块存储器和逻辑之间进行实施权衡,以便为给定系统实现最佳解决方案。

DDS Compiler:xilinx.com/products/int

DDS Compiler v6.0:docs.xilinx.com/v/u/en-

3.编译器-Java

JavaC

Java 编程语言编译器javac读取用 Java 编程语言编写的源文件,并将其编译为字节码类文件。编译器还可以使用可插入注释处理 API 处理源文件和类文件中找到的注释。该编译器是一个命令行工具,但也可以使用 Java 编译器 API 进行调用。编译器接受 Java 语言规范 (JLS) 定义的源代码,并生成 Java 虚拟机规范 (JVMS) 定义的类文件。

JavaC:docs.oracle.com/javase/

JavaC 命令:download.java.net/java/

使用 javac 编译 Java *.class 文件:download.java.net/java/

GCJ

GNU Compiler for Java ( GCJ ) 是一个已停产的免费 Java编程语言编译器。它是GNU 编译器集合的一部分。GCJ 将 Java源代码编译为Java 虚拟机(JVM)字节码或多种CPU 架构的机器代码。它还可以将包含字节码的类文件和整个JAR编译为机器代码。

GCJ:en.wikipedia.org/wiki/G

Jikes

Jikes是一个用C++编写的开源 Java 编译器。它不再更新。 最初的版本是由IBM的 David L.“Dave”Shields 和 Philippe Charles 开发的,但很快就转变为一个由活跃的[需要引用]开发人员社区贡献的开源项目 。该项目最初由 IBM 托管,后来转移到SourceForge。它的成就之一是,它在编译小型项目方面比Sun 自己的编译器快得多,并且提供了更多有用的警告和错误。

Jikes:en.wikipedia.org/wiki/J

4.编译器-HPC

NVCC

Nvidia CUDA 编译器( NVCC ) 是Nvidia的专有 编译器,旨在与CUDA一起使用。CUDA 代码在CPU和GPU上运行。NVCC 将这两部分分开,并将主机代码(将在CPU上运行的代码部分)发送到C编译器,如GCC或Intel C++ 编译器(ICC)或Microsoft Visual C++编译器,并发送设备代码(将在 CPU 上运行的部分代码)。将在 GPU 上运行)到 GPU。设备代码由NVCC进一步编译。NVCC是基于LLVM的。根据 Nvidia 提供的文档,7.0 版本中的 nvcc 支持许多由C++11标准定义的语言结构以及一些C99功能。在版本 9.0 中,支持更多来自C++14 标准的构造。

NVCC:docs.nvidia.com/cuda/cu

NVCC Wiki:en.wikipedia.org/wiki/N

NVC++

NVIDIA Fortran、C++ 和 C 编译器支持 NVIDIA GPU 和多核 CPU 的跨平台 HPC 编程。它们可与 NVIDIA 优化的数学库、通信库以及性能调整和调试工具完全互操作。NVIDIA HPC 编译器支持服务 (HCSS) 提供商业支持。NVC++ 编译器支持 C++17 的所有功能,包括在 NVIDIA GPU 上自动加速 C++17 并行算法。

NVIDIA HPC Compiler NVC++:developer.nvidia.com/hp

Accelerating Standard C++ with GPUs Using stdpar:developer.nvidia.com/bl

NVIDIA HPC Compilers User's Guide:docs.nvidia.com/hpc-sdk

5.编译器-AI/ML

TVM

Apache TVM 是一个用于深度学习系统的编译器堆栈 。它旨在缩小以生产力为中心的深度学习框架与以性能和效率为中心的硬件后端之间的差距。TVM 与深度学习框架配合使用,为不同后端提供端到端编译。

TVM 官网:tvm.apache.org/

TVM 代码:github.com/apache/tvm

TVM 论文:arxiv.org/abs/1802.0479

TVM Doc:tvm.apache.org/docs/

TVM Wiki:en.wikipedia.org/wiki/T

MLIR

MLIR是用于编译器开发的统一软件框架。MLIR 可以充分利用各种计算平台,例如GPU、DPU、TPU、FPGA、AI ASICS和量子计算系统(QPU)。MLIR 是LLVM编译器基础设施 项目的子项目,旨在构建“可重用且可扩展的编译器基础设施 (..) 并帮助将现有编译器连接在一起。

MLIR:mlir.llvm.org/

MLIR Wiki:en.wikipedia.org/wiki/M

MLIR论文:arxiv.org/abs/2002.1105

MLIR TensorFlow:blog.tensorflow.org/201

XLA

XLA(加速线性代数)是一种针对特定领域的线性代数编译器,能够加快 TensorFlow 模型的运行速度,而且可能完全不需要更改源代码。 它可以提高运行速度并改进内存用量。例如在 BERT 中,如果 MLPerf 提交内容使用 8 伏打 V100 GPU 和 XLA,则性能可提升约 7 倍,并且批次大小可改进约 5 倍。

XLA:优化机器学习编译器:tensorflow.org/xla?

XLA 代码:github.com/openxla/xla

AutoKernel

神经网络现在被广泛应用于各种应用中。神经网络在各种设备上的高效执行对于这些应用程序起着至关重要的作用。面对深度学习算法的快速发展,能够在不同硬件平台上编写手工优化的低级内核的合格程序员有限。使用自动优化工具生成高性能实现成为一种有前途的解决方案。

AutoKernel 最初是 OPEN AI LAB 的一个研究项目。AutoKernel 是一种操作员优化工具,用于为各种硬件后端自动生成高性能低级代码。它旨在加速各种硬件(包括专用加速器)上高性能算子的开发。

AutoKernel:autokernel-docs-en.readthedocs.io

AutoKernel 代码:github.com/OAID/AutoKer

MegCC

MegCC是旷视开发的一款深度学习模型编译器,具有以下特点: 极轻量级运行时:仅将所需的计算内核保留在二进制文件中。例如,MobileNet v1 的运行时间为81KB;高性能:每项操作都经过专家精心优化;便携:只生成计算代码,易于在 Linux、Android、TEE、BareMetal 上编译和使用;即时启动时内存使用率低:模型优化和内存规划在编译时生成。获得最先进的内存使用率,并且在推理过程中不花费额外的 CPU。

MegCC:megengine.org.cn/blog/m

MegCC:github.com/MegEngine/Me

CNCC

寒武纪 针对MLU芯片BANG编程语言的AI编译器。

BANG编程手册:forum.cambricon.com/upl

寒武纪 MUL:zhuanlan.zhihu.com/p/60

CN-认知2-寒武纪软件栈:zhuanlan.zhihu.com/p/59

寒武纪人工智能开发平台 blog.51cto.com/u_151276

CDNN

Ceva 深度神经网络 (CDNN) 是一种全面的 AI 编译器技术,可为 SensPro传感器中枢 DSP、NeuPro-M AI 处理器架构和Ceva-XM Vision DSP创建完全优化的运行时软件。

CDNN 针对大众市场嵌入式设备,将广泛的网络优化、高级量化算法、数据流管理以及完全优化的计算 CNN 和 RNN 库融入到整体解决方案中,使经过云训练的 AI 模型能够部署在边缘设备上用于推理处理。

人工智能编译器 Ceva 深度神经网络 (CDNN):ceva-ip.com/product/cev

CEVA 编译器:sig-product-docs.synopsys.com

AGSpeed

AIACC-AGSpeed(AIACC 2.0-AIACC Graph Speeding)是阿里云推出的一个基于PyTorch深度学习框架研发的计算优化编译器,用于优化PyTorch深度学习模型在阿里云GPU异构计算实例上的计算性能,相比原始的神龙AI加速引擎AIACC,AIACC-AGSpeed是AIACC 2.0产品的实现,是完全独立的产品形态,可以实现无感的计算优化功能。

AGSpeed:help.aliyun.com/zh/egs/

XNNC

Xtensa 神经网络编译器(XNNC)的目的是将浮点卷积神经网络 (CNN) 转换为Cadence Tensilica 处理器的优化定点解决方案。用户通过 XNNC 工作流程的不同阶段和模式有效地使用配置和运行支持的神经网络模型

Tensilica Xtensa 神经网络编译器 v2 训练:cadence.com/en_US/home/

Cadence Tensilica XNNC Xtensa Neural Network Compiler: Optimizer:r6.ieee.org/scv-cis/wp-

Cadence Tensilica Product Overview:ims.uni-hannover.de/fil

Tensilica DNA 100 架构和编程培训:cadence.com/en_US/home/

6.编译器-GPU

GPUCC

题目:gpucc: An open-source GPGPU compiler

名称:gpucc:开源 GPGPU 编译器

论文:ieeexplore.ieee.org/doc

POSTER

题目:POSTER: An LLVM-based Open-Source Compiler for NVIDIA GPUs

名称:POSTER:一个基于llvm的NVIDIA gpu开源编译器

论文:home.cse.ust.hk/~weiwa/

BRASIL

题目:BRASIL: A High-Integrity GPGPU Toolchain for Automotive Systems

名称:RASIL:用于汽车系统的高完整性GPGPU工具链

论文:upcommons.upc.edu/bitst

7.编译器-NPU

NPiler

NPU 编译工作流程,称为NPiler,它自动将命令式代码的带注释区域转换为神经网络表示。首先,程序员注释他/她想要转换为神经表示的命令式代码区域。NPiler接受程序员的输入来训练网络。在此步骤中,NPiler自动观察注释区域的输入和输出对,以收集训练和测试数据。然后,NPiler根据程序员提供的约束来训练每种可能的 NPU 拓扑。此次探索的结果在测试数据的最小均方根误差 (RMSE) 方面提供了最佳的 NPU 拓扑。最后,NPiler编译器用最终的神经网络表示替换带注释的区域。

NPiler-NPU编译器:act-lab.org/artifacts/n

Vela

Arm NPU Vela 编译器该工具用于将TFLμ模型编译成可在Ethos -U NPU上运行的优化版本。优化后的模型包含 TensorFlow Lite 自定义运算符(支持的运算符),用于可通过 Ethos-U NPU 加速的模型部分。模型中无法加速的部分保持不变,而是 使用适当的内核在 Cortex-M 系列 CPU 上运行。Vela 尝试了多种不同的编译策略,并对每一种策略应用了成本函数。然后,它为每个受支持的运算符或运算符组选择最佳执行计划。

Arm Ethos-U NPU Software Tools:developer.arm.com/docum

Arm Ethos-U NPU Vela 编译器:developer.arm.com/docum

8.编译器-FPGA

Vyasa

题目:Vyasa: A High-Performance Vectorizing Compiler for Tensor Convolutions on the Xilinx AI Engine

名称:Vyasa:Xilinx AI 引擎上用于张量卷积的高性能矢量化编译器

论文:arxiv.org/abs/2006.0133

VitisAI

AMD Vitis AI编译器 (VAI_C) 充当一系列编译器的统一接口,用于优化各种深度学习处理单元 (DPU) 的神经网络计算。每个编译器都将网络模型映射到高度优化的 DPU 指令序列。 VAI_C框架的简化描述如下图所示。在解析优化和量化的输入模型的拓扑之后,VAI_C构建一个内部计算图作为中间表示(IR),因此,相应的控制流和数据流表示。然后,它执行多种优化,例如计算节点融合,例如,当批量范数融合到主导卷积中时,通过利用固有的并行性或利用数据重用来实现高效的指令调度。

Vitis AI Compiler:docs.xilinx.com/r/en-US

HLSCompiler

英特尔 HLS 编译器是一款高级综合 (HLS) 工具,它采用不定时 C++ 作为输入,并生成针对英特尔 FPGA 优化的生产质量寄存器传输级 (RTL) 代码。该工具通过提高 FPGA 硬件设计的抽象级别,加快了 RTL 的验证时间。用 C++ 开发的模型的验证速度通常比 RTL 快几个数量级。英特尔 HLS 编译器包含在英特尔 Quartus Prime 设计软件专业版安装中。

Intel高级综合编译器:intel.com/content/www/u

HLS编译器:github.com/nlsynth/karu

FIRCompiler

Xilinx LogiCORE IP FIR 编译器 内核提供了一个通用接口来生成高度参数化、面积高效的高性能 FIR 滤波器。

FIR Compiler AMD :intel.com/programmable/

FIR Compiler:xilinx.com/products/int

FIR Compiler LogiCORE IP Product Guide:docs.xilinx.com/r/en-US

9.编译器-RISCV

RISCV-GNU

RISCV-GNU是 RISC-V C 和 C++ 交叉编译器 。它支持两种构建模式:通用 ELF/Newlib 工具链和更复杂的 Linux-ELF/glibc 工具链。

RISC-V GNU Compiler:github.com/riscv-collab

RISC-V Cross Compiler Toolchain:cl.cam.ac.uk/~jrrk2/doc

10.编译框架-TPU

TPU-MLIR

题目:TPU-MLIR: A Compiler For TPU Using MLIR

名称:TPU-MLIR:使用 MLIR 的 TPU 编译器

论文:arxiv.org/abs/2210.1501

代码:github.com/sophgo/tpu-m

EdgeTPUCompiler

Edge TPU 编译器 ( edgetpu_compiler) 是一个命令行工具,可将 TensorFlow Lite 模型(.tflite文件)编译为与 Edge TPU 兼容的文件。本页介绍了如何使用编译器以及它的工作原理。

Edge TPU Compiler:coral.ai/docs/edgetpu/c

Edge TPU Compiler:cloud.google.com/edge-t

11.编译器-DSP

CADiSP

CADiSP - 一个图形编译器,用于以完全符号方式对 DSP 进行编程:ieeexplore.ieee.org/doc

MatlabCompiler

使用 MATLAB Compiler 从 MATLAB 函数创建独立应用程序®,该函数使用 DSP System Toolbox 中的系统对象。

MatlabCompiler:mathworks.com/help/dsp/

12.编译器-MCU

Tasking

与 Infineon Technologies 合作提供适用于 TriCore™/AURIX™ 的免费 TASKING VX 工具集,让您体验和评估 AURIX™ 微控制器的潜力。它代表了TriCore 流行的高性能 TASKING VX 工具集的限时版本,并且通过此注册独家提供。

TriCore Compiler:resources.tasking.com/p

Tasking Wiki:en.wikipedia.org/wiki/T

英飞凌 MCU Tasking编译器:blog.csdn.net/weixin_43

适用于 TRICORE/AURIX 的免费任务 VX 工具集:tasking.com/landing/Fre

13.编译器-Graph

Glow

Glow 是一个机器学习编译器,可以加速深度学习框架在不同硬件平台上的性能。它使硬件开发人员和研究人员的生态系统能够专注于构建可由 PyTorch 等深度学习框架支持的下一代硬件加速器。

Glow 接受来自 PyTorch 等深度学习框架的计算图,并为机器学习加速器生成高度优化的代码。它包含许多机器学习和硬件优化,例如内核融合,以加速模型开发。

Glow 代码:github.com/pytorch/glow

Glow:ai.meta.com/tools/glow/

oneDNN-GraphCompiler

oneDNN Graph Compiler 是 oneDNN Graph API 的实验性后端。它可以为复杂的计算图生成优化的实现,包括多头注意力 (MHA)、多层感知器 (MLP) 和典型数据类型上的卷积残差块,用于推理和训练。它还通过提供更灵活的算子融合来提高性能。oneDNN 图形编译器的使用对于应用程序来说是透明的,因为它不涉及 API 或编程模型更改。

oneDNN-GraphCompiler:oneapi-src.github.io/on

oneDNN-GraphCompiler 论文:arxiv.org/abs/2301.0133

TIDL-GraphCompiler

该模块是一个图形编译器,用于解析深度神经网络并生成在 TI 硬件上进行推理所需的信息。目前它是为Jacinto7系列的ADAS/AD SOC设计的。这些 SOC 具有 TI 的下一代 DSP (C7x) 和用于深度学习网络推理的专用硬件加速器 (MMA)。网络编译器考虑这些处理器和可用存储器子系统的能力,并为给定网络提供网络执行信息和存储器布局。

TIDL-GraphCompiler:software-dl.ti.com/jaci

nGraph

题目:Intel nGraph: An Intermediate Representation, Compiler, and Executor for Deep Learning

名称:英特尔 nGraph:深度学习的中间表示、编译器和执行器

论文:arxiv.org/abs/1801.0805

代码:github.com/NervanaSyste

nGraph-HE

题目:nGraph-HE: A Graph Compiler for Deep Learning on Homomorphically Encrypted Data

名称:nGraph-HE:用于同态加密 数据深度学习的图编译器

论文:arxiv.org/abs/1810.1012

总结

TVM、LLVM、MLIR、NVCC、XLA、GCC。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/64115.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring boot框架优劣势分析

优势(Advantages): 1. 快速开发(Rapid Development): • Spring Boot通过提供大量的默认配置和自动配置功能,极大地减少了开发过程中的配置工作量,从而加快了开发速度。 2. 简化部署&#xff08…

QT:在线安装与离线安装

QT 学习系列 QT:在线安装与离线安装 QT 学习系列一、安装(一)离线安装windows系统Linux 系统Mac 系统 (二)在线安装 二、 环境变量配置三、验证总结 一、安装 (一)离线安装 windows系统 获取…

FFmpeg功能使用

步骤:1,安装FFmpeg Download FFmpeg 在这里点击->Windows builds from gyan.dev;如下图 会跳到另外的下载界面: 在里面下拉选择点击ffmpeg-7.1-essentials_build.zip: 即可下载到FFmpeg; 使用&#…

【Python网络爬虫笔记】11- Xpath精准定位元素

目录 一、Xpath 在 Python 网络爬虫中的作用(一)精准定位元素(二)应对动态网页(三)数据结构化提取 二、Xpath 的常用方法(一)节点选取(二)谓词筛选&#xff0…

【数字花园】个人知识库网站搭建:①netlify免费搭建数字花园

目录 [[数字花园]]的构建原理包括三个步骤:五个部署方案教程相关教程使用的平台 步骤信息管理 这里记录的自己搭建数字花园(在线个人知识库)的经历,首先尝试的是网上普遍使用的方法,也就是本篇文章介绍的。 后面会继续…

【0x000C】HCI_Link_Key_Request_Negative_Reply 命令详解

目录 一、命令概述 二、命令格式及参数说明 2.1. HCI_Link_Key_Request_Negative_Reply命令格式 2.2. BD_ADDR 三、返回事件及参数 3.1. 生成的事件 3.2. BD_ADDR 2.3. Status 四、命令执行流程场景 4.1. 命令触发条件 4.2. 命令组装与发送 4.3. 控制器接收与处理 …

数字产业化和产业数字化到底是什么?

“数字产业化”和“产业数字化”在很多官方文件和领导人讲话中都是成对出现的,这两个术语看起来非常相似,但它们作为数字经济的两个重要组成部分,既有联系又有区别。 在谈数字产业化和产业数字化之前,我这里需要先给大家介绍一个概…

npm或yarn包配置地址源

三种方法 1.配置.npmrc 文件 在更目录新增.npmrc文件 然后写入需要访问的包的地址 2.直接yarn.lock文件里面修改地址 简单粗暴 3.yarn install 的时候添加参数 设置包的仓库地址 yarn config set registry https://registry.yarnpkg.com 安装:yarn install 注意…

文件上传之黑名单检测

一般情况下,代码文件里会有一个数组或者列表,该数组或者列表里会包含一些非法的字符或者字符串,当数据包中含有符合该列表的字符串时,即认定该数据包是非法的。 ​​ 一.如何判断是否为黑名单检测 黑名单是有限的,可以…

光控资本:锂电排产上行 AI手机有望快速渗透

AI手机有望快速渗透 据赛迪参谋猜想,2024年AI手机的出货量估量将会抵达1.5亿部,占全球智能手机总出货量13%,到2027年,全球AI手机销售量有望跨过5.9亿部,占全球智能手机总出货量的比重跨过50%。 跟着硬件根底夯实、端侧…

el-table 动态计算合并行

原始表格及代码 <el-table:data"tableData"class"myTable"header-row-class-name"tableHead" ><el-table-column prop"date" label"日期"> </el-table-column><el-table-column prop"name" …

druid.properties图标是齿轮

一、问题 在IDEA中&#xff0c; druid.properties图标是齿轮 二、原因 2023版本开始&#xff0c;IDEA新的UI的问题 三、解决方法 1、点击右上角的齿轮图标 2、点击Settings 3、Appearance & Behavior---->New UI---->取消勾选“Enable new UI”---->右下角OK 4…

龙海家园地面停车场探寻2

在南山前海上班2年多了&#xff0c;到现在最喜欢的小区还是龙海家园小区。龙海家园小区是深圳目前最大的公共保障性租赁住房小区,目前居住有约2.6万人。而小区的停车位是远远不够的。之前一直很好奇车子可以停哪里。 后面加班之余经常去小区吃饭和转转。发现龙海家园小区与对面…

群控系统服务端开发模式-应用开发-操作记录功能开发

一、开放路由 在根目录下route文件夹下修改app.php文件&#xff0c;代码如下&#xff1a; // 操作日志Route::get(token/get_list,permission.Token/getList);// 获取操作日志列表Route::post(token/get_all,permission.Token/getAll);// 获取操作日志所有数据Route::post(toke…

探索 HTTP 请求头中的 “Host” 字段及其安全风险

探索 HTTP 请求头中的 “Host” 字段及其安全风险 大家好&#xff0c;今天我们来聊聊 HTTP 请求头中的“Host”字段&#xff0c;以及它的使用方法和安全风险。 什么是Host字段 在 HTTP 请求头中&#xff0c;“Host”字段是一个至关重要的部分。它告诉服务器&#xff0c;我们…

Type-C接口电热毯的创新之旅

在科技日新月异的今天&#xff0c;智能家居产品正逐步渗透到我们生活的每一个角落&#xff0c;从智能灯光到温控系统&#xff0c;无一不展现着科技带来的便捷与舒适。而在这个追求高效与智能化的浪潮中&#xff0c;一款结合了最新科技元素的电热毯——Type-C接口电热毯&#xf…

计算机网络知识点全梳理(一.TCP/IP网络模型)

目录 TCP/IP网络模型概述 应用层 什么是应用层 应用层功能 应用层协议 传输层 什么是传输层 传输层功能 传输层协议 网络层 什么是网络层 网络层功能 网络层协议 数据链路层 什么是数据链路层 数据链路层功能 物理层 物理层的概念和功能 TCP/IP网络模型概述…

【MySQL 保姆级教学】用户管理和数据库权限(16)

数据库账户管理是指对数据库用户进行创建、修改和删除等操作&#xff0c;以控制用户对数据库的访问权限。通过账户管理&#xff0c;可以设置用户名、密码、主机地址等信息&#xff0c;确保数据库的安全性和可控性。例如&#xff0c;使用 CREATE USER 创建用户&#xff0c;ALTER…

SpringSecurity使用教程

一、基本使用 Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架&#xff0c;专门设计用于保护基于 Spring 的应用程序。它不仅提供了全面的安全服务&#xff0c;还与 Spring 框架及其生态系统&#xff08;如 Spring Boot、Spring MVC 等&#xff09;紧密集…

docker 安装mysql 5.7 详细保姆级教程

1. 安装mysql(5.7) docker pull mysql:5.7 若是拉取不了&#xff0c;可以配置下 docker 源 2. 查看是否安装成功 docker images 下图就是成功了 3.创建mysql专用目录、数据挂载目录、配置文件目录 &#xff0c;演示目录在于/home/下 //命令逐条执行cd /home/ mkdir mysql …