- C++程序员要会架构,起步得先了解多态、抽象类 第一阶段:基础认知 1. 抽象类是什么?核心定义:抽象类是包含至少一个纯虚函数(使用=0声明)的类,它不能被实例化,只能作为基类被继承。纯虚函数是没有实现的虚函数,强制派生类必须提供具体实现。与普通类/接口类的区别:普通类:没有纯虚函数,可以直接实例化抽象类:至少包含一个纯虚函数,不能实例化接口类:所有成员函数都是纯虚函数的特殊抽象类(C++1... C++程序员要会架构,起步得先了解多态、抽象类 第一阶段:基础认知 1. 抽象类是什么?核心定义:抽象类是包含至少一个纯虚函数(使用=0声明)的类,它不能被实例化,只能作为基类被继承。纯虚函数是没有实现的虚函数,强制派生类必须提供具体实现。与普通类/接口类的区别:普通类:没有纯虚函数,可以直接实例化抽象类:至少包含一个纯虚函数,不能实例化接口类:所有成员函数都是纯虚函数的特殊抽象类(C++1...
- 问题背景在开发嵌入式或低层位操作代码时,我们经常需要对数据进行 位反转(Bit Reversal)。例如,将 0xFFFF0000(4294901760)反转成 0x0000FFFF(65535)。我最初写了这样的代码:for (int i = 0; i < 32; ++i) { dwOutChlCtrl |= ((dwOutChlCtrlArray[0] >> i) & 1) <<... 问题背景在开发嵌入式或低层位操作代码时,我们经常需要对数据进行 位反转(Bit Reversal)。例如,将 0xFFFF0000(4294901760)反转成 0x0000FFFF(65535)。我最初写了这样的代码:for (int i = 0; i < 32; ++i) { dwOutChlCtrl |= ((dwOutChlCtrlArray[0] >> i) & 1) <<...
- 该篇文章是记录rbpf虚拟机即时编译器(JIT)方法过程。本文记录的是基于 x86-64 架构的 eBPF(Extended Berkeley Packet Filter)即时编译器(JIT)。(学习该虚拟机的目的是为了搞懂solana合约的执行方式,solana使用的rbpf是在该虚拟机上进行扩展。) 该篇文章是记录rbpf虚拟机即时编译器(JIT)方法过程。本文记录的是基于 x86-64 架构的 eBPF(Extended Berkeley Packet Filter)即时编译器(JIT)。(学习该虚拟机的目的是为了搞懂solana合约的执行方式,solana使用的rbpf是在该虚拟机上进行扩展。)
- 该文章是对近期关于rbpf虚拟机文章的整理和回顾。其中包括了验证器、汇编器和反汇编器、op码、即时编译器(JIT)、执行速度测试、打包和代码执行、不同码关系、Call指令相关文章。我认为这些是rbpf虚拟机中比较重要的概念以及技术。 该文章是对近期关于rbpf虚拟机文章的整理和回顾。其中包括了验证器、汇编器和反汇编器、op码、即时编译器(JIT)、执行速度测试、打包和代码执行、不同码关系、Call指令相关文章。我认为这些是rbpf虚拟机中比较重要的概念以及技术。
- 用VSCode开启C语言之旅:从Hello World到工程化开发我是Feri,12年编程老兵。在嵌入式、操作系统开发中,C语言始终是与硬件对话的核心语言。选择VSCode作为开发工具,既能获得轻量级的高效体验,又能满足从简单Demo到复杂项目的全场景需求。这篇教程将带你5分钟完成环境搭建,掌握C语言开发的基础规范。一、工欲善其事:VSCode开发环境配置1. 必备插件清单(点击左侧Exte... 用VSCode开启C语言之旅:从Hello World到工程化开发我是Feri,12年编程老兵。在嵌入式、操作系统开发中,C语言始终是与硬件对话的核心语言。选择VSCode作为开发工具,既能获得轻量级的高效体验,又能满足从简单Demo到复杂项目的全场景需求。这篇教程将带你5分钟完成环境搭建,掌握C语言开发的基础规范。一、工欲善其事:VSCode开发环境配置1. 必备插件清单(点击左侧Exte...
- C语言:跨越半世纪的编程基石与技术传奇我是Feri,一位在代码世界深耕12年的老兵。从Java到鸿蒙,从嵌入式到AI,始终坚信:所有复杂系统的根基,都藏在最基础的语言里。今天,让我们一起揭开C语言的神秘面纱——这门诞生于Unix实验室的"古老语言",如何成为现代编程世界的基因链。一、技术基因的孕育:从B到C的进化密码(一)B语言:极简主义的硬件对话者(1969-1972)在DEC PDP-7... C语言:跨越半世纪的编程基石与技术传奇我是Feri,一位在代码世界深耕12年的老兵。从Java到鸿蒙,从嵌入式到AI,始终坚信:所有复杂系统的根基,都藏在最基础的语言里。今天,让我们一起揭开C语言的神秘面纱——这门诞生于Unix实验室的"古老语言",如何成为现代编程世界的基因链。一、技术基因的孕育:从B到C的进化密码(一)B语言:极简主义的硬件对话者(1969-1972)在DEC PDP-7...
- 高级编程语言,如C和Java,通过更接近人类思维方式的指令简化了编程过程,使得开发者能够在更抽象的层面上表达逻辑,避免了直接操作繁琐的机器语言。编译器作为桥梁,将这些高级语言翻译成不同CPU可执行的机器码,使得代码具有跨平台的潜力,并极大地提升了编程效率与易学性。 高级编程语言,如C和Java,通过更接近人类思维方式的指令简化了编程过程,使得开发者能够在更抽象的层面上表达逻辑,避免了直接操作繁琐的机器语言。编译器作为桥梁,将这些高级语言翻译成不同CPU可执行的机器码,使得代码具有跨平台的潜力,并极大地提升了编程效率与易学性。
- 1. 位移位运算符的基础 1.1 左移运算符(<<) 1.2 右移运算符(>>) 2. C++20 对位移位运算符的统一 2.1 移位数量超出操作数位宽 2.2 负数移位 3. 实践中的注意事项 4. 示例代码 5. 总结在 C++ 的发展历程中,位移位运算符(<< 和 >>)一直是语言的核心特性之一,广泛应用于性能优化、底层硬件操作和数据压缩等领域。然而,在 C++20 之前,这些运算符... 1. 位移位运算符的基础 1.1 左移运算符(<<) 1.2 右移运算符(>>) 2. C++20 对位移位运算符的统一 2.1 移位数量超出操作数位宽 2.2 负数移位 3. 实践中的注意事项 4. 示例代码 5. 总结在 C++ 的发展历程中,位移位运算符(<< 和 >>)一直是语言的核心特性之一,广泛应用于性能优化、底层硬件操作和数据压缩等领域。然而,在 C++20 之前,这些运算符...
- 一、背景:为什么需要标准化? 二、2 的补码:原理与优势 (一)2 的补码原理 (二)2 的补码的优势 三、C++20 的变化:明确 2 的补码 四、如何利用这一特性优化代码 (一)消除平台依赖的代码 (二)利用明确的右移行为 (三)优化整数溢出检查 五、总结在 C++ 的发展历程中,整数类型的表示方式一直是标准中相对模糊的部分。尤其是在有符号整数的表示上,C++ 标准从未明确规定过其底层... 一、背景:为什么需要标准化? 二、2 的补码:原理与优势 (一)2 的补码原理 (二)2 的补码的优势 三、C++20 的变化:明确 2 的补码 四、如何利用这一特性优化代码 (一)消除平台依赖的代码 (二)利用明确的右移行为 (三)优化整数溢出检查 五、总结在 C++ 的发展历程中,整数类型的表示方式一直是标准中相对模糊的部分。尤其是在有符号整数的表示上,C++ 标准从未明确规定过其底层...
- 参考资料https://github.com/golang/go/blob/master/src/cmd/compile/README.mdhttps://medium.com/a-journey-with-go/go-overview-of-the-compiler-4e5a153ca889基于Golang 1.16版本 阶段Go编译器由四个阶段组成,可以分为两类frontend前端:这... 参考资料https://github.com/golang/go/blob/master/src/cmd/compile/README.mdhttps://medium.com/a-journey-with-go/go-overview-of-the-compiler-4e5a153ca889基于Golang 1.16版本 阶段Go编译器由四个阶段组成,可以分为两类frontend前端:这...
- 1 问题背景客户迁移过程中,编译自研代码时,有如果两个编译报错:Ø 不识别xchgl汇编指令{standard input}: Assembler messages:{standard input}:1222: Error: unknown mnemonic `xchgl' -- `xchgl x1,[x19,112]'{standard input}:1225: Error: unkno... 1 问题背景客户迁移过程中,编译自研代码时,有如果两个编译报错:Ø 不识别xchgl汇编指令{standard input}: Assembler messages:{standard input}:1222: Error: unknown mnemonic `xchgl' -- `xchgl x1,[x19,112]'{standard input}:1225: Error: unkno...
- 分支循环程序设计及实现 分支循环程序设计及实现
- 前言defer是Go语言中一个关键字, 主要提供延迟调用的能力,defer主要用在资源释放,会在函数返回之前进行调用。一般的调用方式如下:func testFile(fileName string) { f, err := os.Open(fileName) if err != nil { //handle error } defer f.Close() 前言defer是Go语言中一个关键字, 主要提供延迟调用的能力,defer主要用在资源释放,会在函数返回之前进行调用。一般的调用方式如下:func testFile(fileName string) { f, err := os.Open(fileName) if err != nil { //handle error } defer f.Close()
- 前言在学习深入学习Go语言的过程中,需要大量阅读Go语言的汇编代码来查看Go运行的运行原理,那么本文将简单介绍Go语言的汇编指令语法,让大家后续可以简单读懂Go的汇编指令。简介Go语言的汇编是基于Pan9汇编语言的风格(https://9p.io/sys/doc/asm.html)大部分情况我们是不需要写汇编代码的,所以下面主要简单介绍一下Go的汇编语法生成汇编代码的方法(基于Go1.8)在命令行 前言在学习深入学习Go语言的过程中,需要大量阅读Go语言的汇编代码来查看Go运行的运行原理,那么本文将简单介绍Go语言的汇编指令语法,让大家后续可以简单读懂Go的汇编指令。简介Go语言的汇编是基于Pan9汇编语言的风格(https://9p.io/sys/doc/asm.html)大部分情况我们是不需要写汇编代码的,所以下面主要简单介绍一下Go的汇编语法生成汇编代码的方法(基于Go1.8)在命令行
- 我们知道,开发项目里面进度最难以预期的就是解决bug的速度,经常会遇到一些难以分析解决的bug影响整个项目的进度。当我们使用C/C++构建我们的程序的时候,经常会遇到这类问题,主要表现在• 问题难以复现• 大压力下运行几天才能出现。• 大并发问题下,出现问题现场无法分析定位问题。• ...经过大量的分析 我们知道,开发项目里面进度最难以预期的就是解决bug的速度,经常会遇到一些难以分析解决的bug影响整个项目的进度。当我们使用C/C++构建我们的程序的时候,经常会遇到这类问题,主要表现在• 问题难以复现• 大压力下运行几天才能出现。• 大并发问题下,出现问题现场无法分析定位问题。• ...经过大量的分析
上滑加载中
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢
2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考
2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本
2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签