自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fpcc的专栏

于细微处见精神,从宏观里学态度。行之苟有恒,久久自芬芳。

  • 博客(867)
  • 资源 (21)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++编程实践——模板的显式实例化

本文介绍了C++模板中的显式实例化概念及其应用。显式实例化是开发者手动为模板指定具体类型的实现方式,区别于隐式实例化和全特化。文章通过代码示例展示了显式实例化的语法特征,并分析了其与全特化的关键区别:显式实例化不需要重新实现模板代码。此外,文章阐述了显式实例化的优势,包括减少代码膨胀、提高链接效率等,并指出其必须定义在.cpp文件中以避免重复定义。最后,文章列举了显式实例化的典型应用场景,如库开发、类型控制和代码优化,并通过实例代码演示了编译后的具体实现形式。作者强调模板学习需要理论与实践相结合,随着C++

2025-12-24 12:18:29 816 1

原创 跟我学C++中级篇—Linux内核中链表分析

摘要:本文对比分析了传统链表与Linux内核中链表的实现差异。传统链表将数据包含在节点内,而内核采用"侵入式链表"设计,使链表节点嵌入到数据结构中,实现数据结构与数据的解耦。内核链表具有O(1)时间复杂度、缓存友好等优势,并通过container_of宏处理指针关系,支持同一数据对象在多个链表中使用。文中详细解析了LIST_HEAD_INIT等核心宏定义及container_of的工作原理,展现了内核链表在通用性和灵活性上的独特设计。

2025-12-23 12:40:54 857

原创 C++编程实践—多线程崩溃的一种问题分析

多线程程序偶发崩溃是开发中的常见难题,文章分析了五种主要原因:内存异常、并发竞态、边界问题、编译器优化和线程控制不当。特别指出"增加日志打印后崩溃消失"的现象,可能是日志破坏了原有执行时序、内存布局或编译器优化所致。定位方法包括分析core文件、简化调试模型、增加同步和使用检测工具。解决方案建议合理使用锁、拆分同步逻辑或依靠经验处理。文章强调解决多线程问题需要持续积累方法论和实践经验,透过现象抓住本质才能有效应对这类复杂问题。

2025-12-22 12:24:46 585

原创 并行编程实战——CUDA编程的内核循环展开

本文介绍了循环展开优化技术在CPU和CUDA编程中的应用。循环展开通过减少循环次数、增加单次循环的计算量来提高性能,但需要注意分支惩罚和寄存器占用问题。文章展示了手动和自动(编译器优化)两种循环展开方式,并提供了CUDA中的具体实现示例,包括使用#pragma unroll指令。最后强调优化技术需要灵活应用,避免教条主义。核心思想是不同语言/平台的技术本质相通,只是实现方式各有特点。

2025-12-21 10:08:35 396 1

原创 C++23中的模块应用说明之一基础分析

C++20模块机制解析:摆脱头文件困境的新范式 本文分析了C++20引入的模块机制,旨在解决传统头文件带来的编译污染、命名冲突等问题。模块通过export显式控制接口导出,提供更安全的代码组织方式。文章详细介绍了模块应用的五个方面:接口与实现分离、export规则限制、文件命名规范、全局模块片段(兼容传统头文件)和私有模块片段的使用方法,并提供了具体示例代码。与Go、Java等语言的包管理机制类似,C++模块通过显式接口导出和严格作用域控制,实现了更高效的编译管理和更清晰的代码组织。作者建议开发者参考其他语

2025-12-20 09:26:15 624

原创 C++编程实践——多线程变量共享问题展开分析

本文探讨了C++多线程编程中的常见问题及解决方案。文章首先描述了多线程环境下偶发的数据异常和崩溃问题,分析了四种潜在原因:竞态条件、缓存读写问题、指令乱序和原子操作破坏性。针对问题定位,提出了内存屏障、日志记录和编译器优化控制等方法。解决方案包括使用锁机制、原子变量、volatile关键字等技术手段。最后强调这类问题看似简单实则复杂,需要开发者全面掌握相关知识才能有效解决。全文通过生动的比喻揭示了多线程问题的隐蔽性和复杂性。

2025-12-19 08:00:05 521

原创 跟我学C++中级篇——std::is_invocable的分析应

本文介绍了C++17标准中的std::is_invocable系列接口,用于在编译时检查函数调用的安全性。文章首先阐述了该特性的背景和重要性,指出它能有效防范模板编程中的运行时错误。随后详细解析了其定义和实现原理,包括四种主要接口(基础调用检查、返回值检查及对应的异常安全版本)及其辅助函数。技术分析部分揭示了这些接口仍基于SFINAE技术,通过decltype和declval实现参数和返回类型检测。文章还列举了该特性的主要应用场景(模板元编程、函数签名检查等)和使用限制,最后通过示例代码演示了如何检查成员函

2025-12-18 12:18:21 734

原创 C++编程实践——可变参数模板分析

本文探讨了C++可变参数模板的必要性及其在分布式系统中的应用挑战。随着跨进程通信需求增长,传统强类型语言面临运行时参数不确定性的问题。文章分析了变参模板如何通过编译期类型检查、完美转发等机制保证类型安全,并介绍了C++11到C++26标准对参数包处理的改进。针对分布式场景,提出四种解决方案:开发者自定义、显式封装逻辑、模板元编程及反射技术,强调应根据实际需求选择合适方法。最后指出理解技术演进背景的重要性,避免在实践过程中重复前人的弯路。

2025-12-17 15:34:39 279

原创 c++20容器中的透明哈希

C++标准从14到20逐步引入透明机制,先有透明操作符,后有透明哈希。透明操作符针对有序容器,通过支持异构数据操作避免临时对象创建;透明哈希则应用于无序容器,自定义哈希函数实现类似效果。透明机制的核心是定义is_transparent标识符,并提供支持多类型的操作符重载。通过透明哈希器(如支持string、string_view和const char*的统一哈希计算)和透明比较器(利用C++14的std::equal_to<>),C++20实现了高效的无序容器查找,消除了临时对象开销。这种渐进式

2025-12-16 12:02:16 553

原创 计算机原理——超线程技术

本文介绍了Intel的超线程技术(HT)原理及应用。HT通过虚拟化将一个物理CPU核心模拟为多个逻辑核心,共享执行单元但独立寄存器,从而提高并行性。该技术需CPU、主板、BIOS和操作系统共同支持,2002年首次应用于Xeon处理器。与Superscalar技术的指令级并行不同,HT实现的是CPU级别的并行。HT适合I/O密集型、内存压力小或CPU空闲多的工作场景,但对开发者而言通常无需特别处理。目前HT已广泛普及,多数情况下默认开启,仅在特定高性能计算场景可能需要调整。

2025-12-15 14:10:24 544 1

原创 跟我学C++中级篇——循环展开的分析

本文探讨了循环展开(loop unrolling)这一编译器优化技术。循环展开通过减少条件分支和流水线停顿来提升性能,适用于迭代次数少且计算量大的短循环。文章介绍了手动和自动两种展开方式,分析了其性能提升原理(减少指令跳转、提高缓存命中率),同时也指出了过度展开可能导致代码膨胀、寄存器耗尽等缺点。最后介绍了模板元编程、常量表达式等高级展开方法,并建议在现代开发中优先考虑编译器优化和SIMD并行技术。循环展开需要根据实际情况谨慎使用,通过性能测试验证优化效果。

2025-12-14 09:53:05 534

原创 C++23中的自定义模块开发

本文介绍了C++23模块开发的实际应用。首先演示了自定义模块的编写方法,包括模块声明、导出函数和类,并通过命令行编译验证了模块功能。接着探讨了模块文件命名规则问题,指出需要遵循特定扩展名要求。随后展示了使用CMake构建模块化项目的配置过程,比较了不同CMake版本对模块支持的区别。最后强调了对新技术应循序渐进的学习态度,指出模块化编程尚未大规模普及,开发者有充足时间逐步掌握。文章通过实践案例展示了C++模块化开发从编码到构建的完整流程。

2025-12-13 10:20:10 438

原创 并行编程实战—CUDA、OpenCL、SYCL和ROCm的介绍

本文概述了并行编程技术的发展现状与趋势。随着AI大模型和大数据处理的兴起,并行技术从软件库逐步向硬件层面延伸,GPU并行成为主流,主要分为NVIDIA的CUDA和AMD的ROCm两大阵营。文章分析了硬件厂商与开源阵营的竞争格局,介绍了OpenCL等并行标准,并探讨了C++扩展与SYCL两种编程模型的技术路线之争。特别指出AI发展对并行技术的强依赖,使GPU需求激增,CUDA生态形成护城河。全文旨在帮助初学者理清并行技术领域的核心概念和发展脉络,避免陷入单一技术视角或选择困惑。

2025-12-12 08:37:40 771

原创 C++编程实践——条件变量中wait和std::unique_lock关系

本文探讨了条件变量中必须使用std::unique_lock而非std::lock_guard的原因。通过分析条件变量wait的源码实现,指出std::unique_lock能提供灵活的锁管理机制,包括锁的释放和重新获取,这是处理假唤醒和信号丢失问题的关键。相比之下,std::lock_guard仅提供简单的RAII封装,无法满足条件变量对锁操作的精细控制需求。文章强调std::unique_lock以少量性能代价换取更高的灵活性,是多线程编程中与条件变量配合的理想选择,特别是在生产者-消费者等复杂场景下能

2025-12-11 12:09:57 569

原创 计算机原理——进程的本质

本文从操作系统角度重新审视进程的概念与本质。文章首先区分了程序(静态文件)与进程(动态运行实体),并类比工人工作方式解释了线程与协程的区别。进程作为资源分配和独立运行的基本单位,其本质是PCB(进程控制块)+程序段+数据结构的组合,操作系统通过PCB表管理进程状态、资源和调度。文中以Linux为例,剖析了进程创建过程(fork-exec机制),强调深入理解进程对掌握线程开发的重要性。最后指出,只有从底层把握进程本质,才能在开发实践中灵活运用并发编程技术。

2025-12-10 13:43:08 865

原创 计算机原理——Superscalar技术

摘要:超标量(Superscalar)技术是一种CPU微架构设计,通过单周期并行发射执行多条独立指令提高吞吐量。其核心原理包括多发射、乱序执行、寄存器重命名和分支预测等技术。主要优势是提高指令执行效率和硬件利用率,但对软件透明。局限性包括指令依赖、资源竞争和硬件复杂性等问题。应用上可通过优化代码结构、减少分支、内存对齐等方法提升性能。该技术已广泛应用于PC、服务器及嵌入式处理器。开发者需理解底层硬件原理,才能编写高效运行的代码。

2025-12-09 12:06:30 623 2

原创 跟我学C++高级篇—运行时反射的std::type_index

C++通过std::type_index、type_info和typeid提供了轻量级的反射支持。typeid运算符返回type_info对象描述类型信息,type_index则是对其封装以便标准容器使用。主要应用场景包括类型映射、工厂模式、类型擦除等,但需注意哈希冲突、跨平台兼容性和异常处理等问题。示例展示了如何利用type_index构建类型管理系统。虽然C++的反射功能有限,但这些基础RTTI工具仍为开发者提供了类型操作的基本能力。随着标准演进,反射支持有望进一步完善。

2025-12-08 11:00:03 595 1

原创 并行编程实战——CUDA编程的分析调试

本文系统介绍了CUDA程序的调试与分析技术。首先阐述了代码调试的三大类型(本地/附加/远程调试)和三种方法(IDE/代码/工具分析),强调调试能力是开发者水平的重要体现。接着重点讲解了CUDA调试工具:代码级调试(分析接口、断言、错误机制)、IDE工具(Nsight系列、CUDA GDB、memcheck)及其应用示例,并演示了在VS2017中使用Nsight调试向量加法的具体流程。最后介绍了NVIDIA Compute Sanitizer等辅助工具。文章指出调试分析是CUDA开发的关键环节,后续将针对具体

2025-12-07 10:51:23 685

原创 并行编程实战——CUDA编程的混合编程

摘要:CUDA支持Driver API与Runtime API混合编程,结合二者的优势实现灵活开发。关键流程包括:先初始化Driver API,共享上下文,合理选择API启动内核。注意事项涵盖初始化顺序、上下文一致性、内存管理规范及错误处理机制。示例代码展示了混合调用的基本模式。混合编程虽能兼顾高效与便捷,但对开发者提出了更高要求,需熟练掌握两种API并妥善管理资源,开发成本与灵活性成正比。

2025-12-07 10:25:26 416

原创 C++23中的import使用CMake实践

本文介绍了在CMake中使用C++模块编程的两种方法。第一种使用g++需要预先编译标准库模块(g++ -std=c++23 -fmodules-ts -fsearch-include-path -c bits/std.cc),然后在CMakeLists.txt中配置相关参数。第二种使用Clang可直接通过CMake配置(需设置CMAKE_EXPERIMENTAL_CXX_IMPORT_STD等参数),但需要安装libc++-dev库。实验表明,当前Clang+CMake的方案更便捷,而g++方案需要额外步骤

2025-12-06 08:09:29 305

原创 跟我学C++高级篇—从emplace_back到移动语义

C++11引入的std::emplace_back通过原地构造、完美转发和移动语义三大技术点,有效减少了容器插入操作中的拷贝开销。相比push_back,它直接在容器内存位置构造对象,避免了临时对象的创建和拷贝,特别适用于构造成本高或高频操作的场景。使用时需注意容器扩容、参数传递方式(推荐直接传构造参数而非对象)、异常控制等问题。该技术适用于资源池、性能敏感系统等场景,能显著提升效率,但也要注意避免滥用,需根据对象特性合理选择插入方式。通过预分配内存等配套措施,可以进一步发挥其性能优势。

2025-12-05 07:47:11 833 2

原创 C++编程实践——标准库中容器存储目标分析

本文探讨了C++容器存储对象与指针的选择问题。分析表明,对于简单小型对象推荐直接存储,可保证生命周期管理简单;对于大型对象、多态需求或共享场景,建议使用智能指针存储以确保内存安全。文中提出六条处理原则:1)小对象优先存储值;2)大对象使用智能指针;3)多态需求必须用指针;4)支持移动语义可考虑值存储;5)含指针成员需处理深拷贝;6)共享数据推荐智能指针。通过示例代码展示了使用shared_ptr实现内存缓存的实践方案,体现了资源安全管理的工程化实现。

2025-12-04 15:01:46 1072

原创 跟我学C++中级篇——Linux系统信号分析

本文介绍了Linux系统中的信号机制。信号是一种异步通知机制,用于告知进程特定事件的发生。文章分析了信号的分类(可靠/不可靠信号、普通/实时信号)、产生方式(IO、系统调用、软硬件产生)以及运行机制(信号抵达、未决、阻塞等状态)。信号处理包括默认处理、自定义处理和忽略三种方式,具有异步性、简单性、不可靠性等特点。文章强调理解信号机制对Linux开发的重要性,建议开发者根据实际需求选择合适的信号处理方式。

2025-12-03 14:07:31 262 1

原创 C++编程实践——signalfd

本文介绍了Linux系统中的信号文件句柄(signalfd)机制,该机制将传统异步信号处理转换为同步文件I/O操作。通过分析内核数据结构signalfd_ctx和signalfd_siginfo,阐述了信号如何被封装为文件描述符,并与事件循环机制集成。文章详细说明了signalfd的工作原理,包括信号发送、内核处理和应用层读取的完整流程。同时总结了signalfd的优点(同步化处理、避免竞态条件、线程安全等)和局限性(Linux特有、信号可能丢失等),并提供了结合epoll的示例代码。该机制特别适用于需要统

2025-12-02 12:28:31 538 1

原创 C++编程实践——string::append的高效性

本文分析了字符串处理在面试和工程中的重要性,重点探讨了C++中std::string的append方法相较于"+"拼接的优势。通过源码解析指出append在内存预分配、批量拷贝、SSO优化、边界检查、移动语义支持等方面进行了优化,能显著提升大字符串拼接效率。同时指出在C++17后"+="操作已基本等同于append。最后通过示例代码展示了append的各种用法,包括追加字符、C字符串和子字符串等操作。文章强调在实际开发中应根据字符串大小和C++版本选择合适的拼接方式以

2025-12-01 12:20:48 836 1

原创 并行编程实战——CUDA编程的动态并行性应用

本文介绍了动态并行性(CDP)的应用场景、限制及其在快速排序中的应用。CDP适用于复杂科学仿真、不规则数据结构计算、数学迭代和动态负载并行等场景,但受限于硬件要求(计算力3.5+的GPU)和性能平衡问题。通过CDP实现的GPU快速排序可避免CPU交互开销,示例代码展示了Hoare分区法的实现,并指出同步操作可能成为性能瓶颈。文章强调技术应用需要结合实际场景权衡,建议开发者保持平常心,在持续实践中积累经验。

2025-11-30 10:09:18 726

原创 C++23中的import开发实践

本文介绍了C++20模块化编程的入门实践。通过一个简单的示例程序演示了模块导入(import std)的用法,指出传统编译方式会报错。详细说明了正确编译步骤:需使用c++23标准并添加-fmodules参数,且需预先编译生成std.gcm模块文件。最终成功编译运行程序,验证了模块化编程的可行性,为开发者提供了C++模块化开发的入门指导。文章强调新技术需要实践验证,帮助开发者逐步适应模块化编程方式。

2025-11-29 09:49:33 232 2

原创 编译器的指令调度和CPU实现乱序执行的关系

本文分析了编译器指令调度与CPU乱序执行的关系。编译器通过静态分析优化指令流程,减少依赖,为CPU执行创造条件;而CPU则根据运行时实际情况动态调整指令顺序,最大化利用硬件资源。二者是互补关系:编译器提供整体优化框架,CPU负责局部动态调整。这种设计模式体现了模块间的协调配合,编译器负责静态规划,CPU负责动态执行,共同提升系统性能。理解这种关系有助于开发者把握程序优化的整体思路,而无需深入底层细节。

2025-11-28 08:01:18 316 1

原创 跟我学C++中级篇——内存访问违例

本文分析了内存违例(Memory Access Violation)问题,列举了空指针、野指针、数组越界、栈溢出、多线程未同步等常见内存违例情况,并提供了调试检测方法(如AddressSanitize、Valgrind等)和应对措施(智能指针、边界检查、RAII等)。文章强调内存安全的重要性,建议开发者采用现代C++标准和安全编程实践来规避内存问题,指出规范化的开发框架和标准是预防内存问题的关键。

2025-11-25 13:13:55 129 2

原创 C++编程实践——标准库overloaded实现分析

本文分析了C++模板技术中overloaded结构体的应用与实现原理。通过std::variant和std::visit的示例代码,展示了如何利用模板继承和运算符重载来创建可调用对象的集合。文章重点解析了overloaded模板的展开过程,揭示了其通过继承多个lambda表达式并引入各自operator()的实现机制。同时说明了std::decay_t用于类型退化、if constexpr实现编译期条件分支等技术细节。代码示例演示了如何针对不同类型参数进行差异化处理,为模板编程初学者提供了深入理解模板技术的

2025-11-24 12:38:28 43

原创 并行编程实战——CUDA编程的流的优先级

本文探讨了CUDA流优先级的概念与应用。优先级在计算任务中广泛存在,类似于银行业务中的VIP优先处理机制。CUDA通过cudaStreamCreateWithPriority函数支持流的优先级设置,但需先使用cudaDeviceGetStreamPriorityRange检查硬件支持情况。文章指出优先级仅保证调度顺序而非执行效率,不当设置可能导致低优先级任务"饿死"。通过示例代码演示了如何创建不同优先级的流,并执行向量加法和矩阵乘法任务。特别提醒开发者注意:优先级设置适用于需要紧急处理的

2025-11-23 09:28:09 57 2

原创 C++编程实践——手动实现std::visit

本文分析了C++中std::visit的实现原理与手动实现方法。首先通过示例展示了std::visit的基本用法,指出其需要支持类型擦除、静态展开、编译时多态等特性。然后提供了一个手动实现的方案,利用模板递归和偏特化技术,实现了类似std::visit的功能。该实现分为基础模板、访问接口和细节完善三部分,通过编译期展开处理不同类型的访问。最后通过编译后代码展示了模板实例化的具体过程,验证了该方案的可行性。文章为理解std::visit的工作原理提供了实践参考。

2025-11-22 10:02:59 121 1

原创 跟我学C++中级篇——重载问题分析之函数模板重载的问题

本文探讨了C++模板编程中的重载问题及其解决方案。主要问题包括:模板函数与普通函数的重载优先级、类模板成员函数重载、特化与重载的关系、SFINAE和concepts对重载的限制,以及完美转发的匹配原则。通过代码示例分析,强调掌握重载规则、模板特化技术和引用折叠规则的重要性。文章指出,尽管模板技术复杂,但只要深入理解相关原理,就能有效解决重载问题。最后鼓励开发者勇于面对技术挑战,提升模板编程能力。

2025-11-21 07:57:40 101 4

原创 跟我学C++中级篇——重载问题分析之类函数重载的问题

本文探讨了C++类成员函数重载中的关键问题与解决方法。重点分析了四种常见问题:1)类成员函数与普通函数的作用域冲突问题;2)const限定符在参数和成员函数中的重载规则;3)C++11引用限定符的重载应用;4)类继承中的虚函数重载和对象切片问题。通过代码示例展示了每种情况的具体表现,并提供了解决方案,如使用using声明引入父类函数、区分const对象调用等。文章强调理解作用域、const修饰层次和继承关系等技术细节对正确实现重载的重要性,避免因混淆概念导致的错误。

2025-11-20 12:32:04 384 1

原创 跟我学C++中级篇——重载问题分析之运算符重载的问题分析

本文探讨了C++中运算符重载的常见问题及解决方法。主要内容包括:运算符重载分为成员函数和类外普通函数重载两种方式,应注意重载符合常规语义;列举了7类典型问题,如不可重载运算符识别、operator->递归、自赋值检查缺失、new/delete重载风险等,并通过代码示例分析原因;针对每个问题给出解决方案,如正确返回指针类型、增加对称重载函数、区分前置/后置++返回类型等。文章强调运算符重载应遵循常规逻辑,避免滥用,建议开发者根据实际需求选择性掌握相关技术点,不必过度追求全面覆盖。

2025-11-18 14:00:24 735 2

原创 跟我学C++中级篇——重载问题分析之常见的情况

本文总结了C++重载中的常见问题及其解决方法。主要问题包括:1) cv限定符重载中顶层const被忽略的问题;2) 作用域导致的函数隐藏现象;3) 默认参数与重载的冲突;4) 匹配优先级导致的递归崩溃风险;5) 数组退化为指针的问题;6) 普通函数与模板函数的优先级问题;7) 可变参数重载的匹配问题。通过具体代码示例分析每个问题的产生原因,并给出了对应的解决建议,强调开发者应加强基础知识掌握,在编码时注意细节处理,避免依赖编译器的隐式转换,尽量显式处理各类重载情况。

2025-11-17 10:35:31 304 1

原创 并行编程实战——CUDA编程的回调函数

本文介绍了CUDA中回调函数的使用方法。回调函数作为GPU对CPU的回调,通过cudaLaunchHostFunc()等接口在GPU操作完成后触发,并执行主机端函数。文章重点说明了CUDA回调函数的特点:必须在主机端执行,需保持短小精悍,避免调用CUDA API导致死锁。通过一个向量加法的示例展示了回调函数的实际应用,包括数据传输、内核计算和回调触发流程。合理使用回调函数可以简化流操作后的数据处理,但开发者需注意其特殊性和潜在陷阱。对CUDA框架特性的深入理解有助于开发更灵活的GPU应用。

2025-11-16 10:27:24 799

原创 跟我学C++中级篇——重载问题分析之函数重载的匹配说明

本文系统介绍了C++函数重载的匹配规则与实现方法。首先阐述了重载匹配遵循"最佳匹配"原则,类比特征匹配的优先级。然后详细讲解了10个具体匹配步骤,包括作用域确定、参数转换优先级(精确匹配>提升转换>标准转换>用户定义转换>变参匹配)、模板处理等。通过完整示例演示了参数不同、类型不同、cv限定符、引用限定符、模板特化、变参模板、运算符重载以及继承中的重载等多种场景。最后强调掌握这些规则有助于分析和解决重载中的匹配问题。文章为理解C++函数重载机制提供了全面指导。

2025-11-16 10:23:56 300

原创 跟我学C++中级篇——重载问题分析之一概述

本文探讨了C++函数重载的技术细节及常见问题。函数重载虽常见但存在技术陷阱,如示例代码展示的无限递归导致栈溢出问题。文章阐述了函数重载的5个匹配原则(精确匹配、提升转换等)和4步确定流程(查找函数、构建函数集等),并列举了7类常见重载问题,包括数据类型转换、模板匹配等问题。后续将针对各类问题展开详细分析,帮助开发者更好地掌握重载技术细节。

2025-11-15 10:08:09 260

原创 跟我学C++中级篇——编译期和运行时的性能处理分析

本文探讨了C++性能优化的两种主要方式:运行时优化和编译期优化。运行时优化包括多态处理、条件语句和表处理等方法,各有其优缺点,如多态处理编写复杂且性能较低,而表处理性能较好但对开发者要求较高。编译期优化通过C++新标准(如constexpr、模板元编程等)显著提升性能,如std::visit利用编译期多态、表机制和内联优化等特性。通过合理结合这两种优化方式,开发者可根据实际需求提升程序性能。

2025-11-14 09:06:24 1156

masstree算法论文

目前的底层的分布式数据库如ROCKSDB等都使用的LSM的算法,本文使用了masstree这种算法来优化其处理。

2018-11-17

Sql批量操作数据

在SQLSERVER的多条数据操作时,使用SQLBULKCOPY等几种方式的对比,这篇文档就是整理了这些使用的方法。

2018-10-05

朗新WEBSERVER接口(南网和天津电网)

适用于朗新目前的所有接口,平台语言C#,主要是对电力系统SG186的跨平台调用。也适于于同样的WEBSERVER工程跨平台使用。使用说明书已打在压缩包里。

2009-03-16

IOTEX白皮书

物联网和区块链的结合,实现了链中链和跨链的通信,通过特有零知识证明来解决用户隐私问题。

2018-09-30

JAVA并发编程设计原则与模式

一本比较老的书,讲得多线程和并发技术,是一个入门的比较浅显的书籍。

2018-10-01

虹膜开源的算法

本文是国外的一款开源的虹膜识别框架的介绍,它的源码是可以直接使用的,但是需要优化。

2018-11-17

电能质量闪变的测量

电能质量是电力行业一个重要的部分,本论文从实际出发,论证了闪变测量的方法。

2018-10-05

大数阶乘算法的一个例子

小数的阶乘比较好做,但是阶乘的数量变化非常快,很快会溢出,这里采用一种变通的方法,可以实现相当大的数的阶乘,如果在这个基础上进一步扩展,能进行更大的阶乘算法。

2018-10-06

bancor协议白皮书

bancor协议是目前区块链研究的一个重要方向,跨链不同的TOKEN之间的兑换一直是一个问题,这里给出一个解决的方案。

2018-09-29

steamr白皮书

steamr是一个用来做数据去中心化的网络和市场相关的区块链项目,主要提供去中心化的云服务。

2018-10-11

安卓编译JAR包和SO

这个是用ECLIPSE编译JAR包和SO的一个教学录像,非常适合对c++不熟悉的人编译使用。

2018-10-01

linux设备驱动开发

本书从浅到深介绍了LINUX操作系统上的驱动开发的过程,值得推荐。

2018-11-17

代码管理核心技术及实践

代码管理是开发过程一个重要的环节,好的代码管理可以为团队的开发提供安全的保护和合作,本书就是讲述在不同环境中如何使用主流的代码管理软件和方式。

2018-09-30

DERP白皮书

DREP区块的白皮书,是一个新的区块链的技术,如果大家对这个感兴趣,可以下来看看。

2018-09-29

mixin白皮书

mixin是一个闪电交易快速的点点对的数字交道项目,它拥有非常好的技术栈。

2018-10-11

阿希链白皮书

阿希链是一个用javascript写的侧链,主要用来完成多链间的通信,有一定的特色,可以借鉴。

2018-10-11

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除