自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 基于CGAL6.0中的内存池实现

CGAL内存池技术解析 CGAL库中的MemoryPool.h实现了高效的内存池管理技术,其核心思想是通过预分配大块内存来减少系统调用和内存碎片。该实现采用模板特化机制,为每种类型创建独立的内存池,并通过Thunk结构体巧妙结合对象存储和空闲链表管理。内存池支持单线程(static)和多线程(thread_local)两种模式,后者通过线程本地存储避免锁竞争。分配算法采用O(1)时间复杂度的链表操作,同时包含内存泄漏检测机制,在析构时检查未释放的内存块。相比传统内存分配,内存池可显著提升几何计算场景下的性能

2025-08-26 14:45:28 469

原创 一文彻底搞懂 CGAL 中的空间划分与 AABB 树

本文通过可视化SVG图解和代码示例,全面介绍了CGAL中AABB树(轴对齐包围盒树)的原理与应用。AABB树作为空间加速结构,可高效处理点/线与三角网格的距离查询、相交检测等几何计算。文章详细展示了AABB树的层次结构(根节点/子节点/叶节点),对比了基于完整网格拓扑和纯三角形数组两种构建方式,并提供了核心类型定义和基础查询示例。这种数据结构特别适合静态网格的高频查询场景,能大幅提升几何算法的执行效率。

2025-08-22 11:21:07 605

原创 OpenCASCADE + ImGui 集成黑屏问题解决方案

OpenCASCADE+ImGui黑屏问题解决方案摘要 OpenCASCADE和ImGui集成时常见的黑屏问题主要源于两者对OpenGL缓冲区交换的控制冲突。关键解决方法包括: 禁用OCCT内部交换:通过aGraphicDriver->SetBuffersNoSwap(Standard_True)禁用OpenCASCADE的内部缓冲区交换 确保上下文绑定:在ImGui初始化和每次渲染前调用glfwMakeContextCurrent() 正确渲染顺序:主循环中先刷新OCCT视图(不交换缓冲区),再渲染

2025-08-13 00:27:57 530

原创 CGAL Kernel 和 Traits 类深度解析:从官方教程到实践应用

本文深入解析CGAL中的Kernel和Traits类架构,从官方教程出发,通过分层架构图展示CGAL的应用层、算法层、几何内核层和数值计算层。重点剖析Kernel作为几何计算基石的三重核心职责:几何基元定义(Point/Line/Plane)、数值类型管理(FT/RT/ET)和基础运算提供(构造器/谓词/函数对象)。通过代码示例比较Simple_cartesian、Exact_predicates_inexact和Exact_predicates_exact三种Kernel在不同精度要求下的表现差异,为开发

2025-08-06 17:18:22 901

原创 back_inserter 详解

std::back_inserter是C++ STL中的迭代器适配器,用于自动向容器末尾添加元素。它通过调用容器的push_back()方法,避免了预先分配空间的问题,特别适合与STL算法配合使用。主要优势包括自动扩容、类型安全和代码简洁,适用于vector、deque等支持push_back的容器。通过实际示例展示了其在复制、变换元素和计算几何中的应用。相比手动管理容器大小,back_inserter能显著提升代码效率和安全性,是处理动态输出容器的理想工具。

2025-08-06 15:37:10 179

原创 CGAL中函数squared_distance使用细则

本文详细分析了CGAL库中的核心几何算法实现,重点剖析了squared_distance函数的计算原理与优化技术。主要内容包括:1) 点到线段距离的数学推导,通过向量投影和参数化分析实现高效计算;2) 三点共线判定的多种数学方法比较,包括叉积法、行列式法和斜率法;3) CGAL特有的精确算术实现机制和数值稳定性优化。这些算法在计算机图形学、机器人路径规划等领域具有广泛应用,文档通过伪代码和具体示例展示了算法实现细节与性能优化技巧。

2025-08-06 15:26:27 786

原创 NC路径生成中的固定轴刀具定位算法 - 详细技术文档

本文提出了一种基于曲面细分的固定轴刀具定位算法,用于数控加工路径生成。该算法通过自适应三角形细分技术逼近参数曲面,采用深度优先搜索策略结合剪枝优化,解决了传统APT算法的收敛问题和干涉检测不足等局限性。关键创新点包括:1)无需初始猜测值的全局搜索机制;2)基于Hausdorff距离的偏差测量方法;3)动态调整处理顺序的剪枝策略。算法已在商业CAD/CAM系统中实现,能有效处理复杂参数曲面,为数控加工提供可靠且高效的刀具定位解决方案。

2025-08-04 16:18:39 740

原创 鲁棒性 vs 稳定性:新手入门指南

本文简明扼要地解释了系统设计中鲁棒性(Robustness)与稳定性(Stability)的关键区别。稳定性关注系统在正常条件下的性能一致性(如同学生考试稳定发挥),而鲁棒性强调系统在异常情况下的容错能力(如司机应对突发状况)。文章通过对比表格、生活实例(汽车、手机)和编程示例(Python、C++)生动说明二者差异,并分别给出提升建议:稳定性需控制变量和使用确定性算法,鲁棒性需异常处理和边界测试。最后以口诀"正常时候不出错(稳定),出错时候不崩溃(鲁棒)"精炼总结,指出二者互补的重要性

2025-07-28 16:37:22 972

原创 CRTP模式深度解析:向下转型的安全性与多重继承的挑战

CRTP模式是C++中一种利用模板参数实现编译时多态的设计模式。本文深入分析了CRTP向下转型的安全性机制及其在多重继承中的挑战。在单继承场景下,CRTP通过编译时类型约束和内存布局保证实现了安全的向下转型。然而,多重继承会破坏CRTP的基本假设,导致地址偏移问题和潜在风险。文章提出了避免多重继承、使用Mixin模式、添加编译时检查等解决方案,并以CGAL库的实际应用为例,阐述了CRTP在大型项目中的正确使用方式。最后强调遵循单继承优先、组合优于继承等最佳实践的重要性。

2025-07-28 16:31:13 382

原创 四种显式类型转换操作符

添加或移除 const/volatile 限定符。:编译时类型转换,最常用的转换操作符。:运行时类型检查的安全向下转换。:低级别的位模式重新解释。

2025-07-28 16:06:14 300

原创 深入理解CRTP模式与CGAL库指南

本文深入探讨了CRTP(奇特的重返模板模式)的设计原理及其在CGAL库中的应用。CRTP通过编译时多态实现高效的类型安全编程,避免了虚函数的运行时开销。文章对比了CRTP与传统虚函数的性能差异,展示了CRTP在编译时优化和内联方面的优势。CGAL库利用CRTP模式设计其几何内核和算法,实现了高性能的几何计算。通过实际代码示例,文章演示了如何利用CRTP构建可扩展的Drawable图形系统,为开发者提供了从理论到实践的完整指南。

2025-07-28 14:08:38 551

原创 三角剖分算法详解:从理论到实践

本文系统介绍了三角剖分算法,重点阐述了Delaunay三角剖分的理论原理、算法实现及工业应用。Delaunay三角剖分通过空圆特性确保最优三角形分布,采用边翻转算法实现局部优化,并提供分治与增量两种主要实现方法。文章还探讨了Voronoi图与Delaunay三角剖分的对偶关系,并以五轴叶片加工为例,展示了三角剖分在复杂曲面离散化、干涉检测和刀具路径规划中的具体应用,包括相关代码实现。该技术在CAD/CAM系统中具有重要的工程应用价值。

2025-07-23 01:24:35 691

原创 dynamic_pointer_cast 深度解析

本文深入解析了C++中std::dynamic_pointer_cast智能指针类型转换技术,对比了传统指针转换的缺陷和智能指针的优势。文章详细介绍了其语法原理、工作机制(基于RTTI和别名构造函数),并展示了在多态对象处理、工厂模式和插件系统中的典型应用场景。最后简要提及了性能考量,特别是RTTI的开销问题,为开发者提供了安全高效的类型转换解决方案。

2025-07-22 11:07:35 403

原创 BREP边界表示法

BREP(Boundary Representation)是一种通过描述物体边界来表示三维实体的几何建模方法。任何三维实体都可以通过其边界面的集合来完全定义。

2025-07-21 15:24:05 289

原创 Redis和MySQL数据一致性方案

先更新数据库再删除缓存通常优于先删缓存再更新数据库缓存必须设置合理的过期时间,作为兜底机制关键业务考虑使用分布式锁避免并发问题监控系统是发现不一致的重要手段定期校对任务是保证长期一致性的关键。

2025-05-13 14:50:23 946

原创 提升效率的 Vim 进阶秘笈

本文详细介绍了提升 Vim 使用效率的七大进阶技巧,帮助用户在百万行代码中游刃有余。首先,通过快速跳转技巧,如全局行号跳转、窗口内定位和模式化搜索,用户可以迅速定位到目标位置。其次,行内移动技巧如精确字符查找和单词级移动,能够精准控制光标。高效编辑部分强调了动作与文本对象的组合,如删除、修改和复制操作。此外,文章还介绍了 Buffer、Window 和 Tab 的管理方法,以及寄存器和宏的使用,帮助用户录制和重复操作。最后,通过配置 .vimrc 和使用插件如 vim-plug,用户可以打造专属的编辑环境,

2025-05-09 22:21:11 764

原创 mysql连接池

数据库连接池(Connection Pooling)是一种优化数据库连接管理的技术。程序在启动时建立一定数量的数据库连接,并将这些连接组成一个连接池。程序通过动态申请、使用和释放池中的连接来完成数据库操作

2025-01-17 20:33:02 837

原创 基于内存池的内存分配器

本文介绍了一段实现简单内存池的 C 语言代码,包括代码功能解析、实现原理和完整代码展示。该内存池通过预分配一大块内存并按固定大小划分为多个内存块,有效减少内存碎片和动态分配的开销。

2025-01-17 16:36:10 279

原创 微型布隆过滤器实现代码

实现了一个简化版的布隆过滤器(Bloom Filter),用于高效检测某个元素是否在集合中

2025-01-17 14:50:59 895

原创 hash的应用

2025-01-17 12:56:57 144

原创 redis 发布订阅

发布订阅的生产者传递过来一个消息,redis 会直接找到相应的消费者并传递过去;假如没有消费者,消息直接丢弃;假如开始有2个消费者,一个消费者突然挂掉了,另外一个消费者依然能收到消息,但是如果刚挂掉的消费者重新连上后,在断开连接期间的消息对于该消费者来说彻底丢失了;所以实际项目中如果支持 pubsub 的话,需要另开一条连接用于处理发布订阅;另外,redis 停机重启,pubsub 的消息是不会持久化的,所有的消息被直接丢弃;为了支持消息的多播机制,redis 引入了发布订阅模块;

2024-09-16 18:19:12 257

原创 Linux下,Redis安装部署和启动

Redis 是 Remote Dictionary Service 的简称;也是远程字典服务;Redis 是内存数据库,KV 数据库,数据结构数据库;Redis 命令查看:http://redis.cn/commands.html。

2024-09-16 16:33:13 374

原创 电脑死机重启后,乌班图ens33 接口无法分配 IPv4 或者 IPv6 地址

打开电脑任务管理器,打开这两个服务,就好啦。

2024-09-16 02:27:50 340

原创 哈夫曼树应用:构建、编码和解码c++实现

哈夫曼树应用:构建、编码和解码c++实现

2024-05-06 22:56:06 1019 1

原创 数组实现最大堆的C++代码

数组实现最大堆的C++代码

2024-05-06 20:44:45 504

空空如也

空空如也

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

TA关注的人

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