自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

极客BIM工作室

专注于BIM技术!

  • 博客(425)
  • 收藏
  • 关注

原创 OpenCasCad (OCCT):几何数据创建算法 Module ModelingAlgorithms

Module ModelingAlgorithms几何算法模块包含众多模块,目前最关心的是几何的创建。几何的创建算法。

2021-11-21 12:19:21 804

原创 Revit SDK 介绍:CompoundStructure 复合结构

前言本文介绍 Revit 复合结构,及 SDK 中的例子, CompoundStructure。内容概念说明复合结构墙、楼板、天花板和屋顶可以由平行的层构成。复合图元既可以由单一材质的连续图层构成(例如胶合板),也可以由多重图层组成(例如石膏板、龙骨、隔热层、气密层、砖和壁板)。 另外,构件内的每个层都有其特殊的用途。 例如,有些层用于结构支座,而另一些层则用于隔热。 Revit 会考虑每个图层的功能,并通过匹配功能优先顺序在相邻的复合结构中连接对应的图层。可以通过设置层的材质、厚度和功能来

2020-06-05 10:51:17 1358 2

原创 Dynamo For Revit 几何专题:概述

前言上周整理了一下 Revit API 的几何库接口,这里再整理一下 Dynamo For Revit 的几何库。和 Revit API 一样,Dynamo For Revit 提供了一套完整的几何库。既然是几何库,那就逃不过这些概念:点、线、面、体。那么,对于任意的几何库,实际上,你要关系的东西逃不过下面的表格,(点 / 线 / 面 / 体)与(点 / 线 / 面 / 体)之间的关系。比...

2020-03-29 10:32:30 1984

原创 Revit API 几何专题 1:几何类库概述 GeometryObject

几何类库Revit API 提供了一套完整的几何库。既然是几何库,那就逃不过这些概念:点、线、面、体。那么,对于任意的几何库,实际上,你要关系的东西逃不过下面的表格,(点 / 线 / 面 / 体)与(点 / 线 / 面 / 体)之间的关系。这些类的基类都是 GeometryObject。对应的点、线、面、体:点: Point线: Curve、 Edge、PolyLine、Profil...

2020-03-21 09:35:29 2741

原创 Dynamo For Revit: Category、Element、Element Type、Family、Family Symbol、Family Instance

前言通过使用 Dynamo For Revit 的节点,介绍一下 Revit 中 Category、Element、Element Type、Family、Family Symbol、Family Instance 这些概念的相关与差异。概念简介

2020-02-22 17:15:53 4053

原创 MCP 和 Fuction Call 有什么不同

某品牌手机的“专属插头”:只能插该品牌的充电器,换手机就用不了;MCP= “USB-C通用插座”:不管是苹果、安卓、笔记本,只要支持USB-C协议,都能插这个插座充电。如果未来MCP成为行业标准,开发者只需按MCP封装一次工具,就能让GPT、Claude、国产模型、企业自研系统同时调用,这才是MCP和Function Call最根本的差异。

2025-09-05 00:00:00 547

原创 强化学习中的模仿学习是什么?

痛点:传统RL的奖励函数难以设计;思路:利用专家的“状态-动作轨迹”,学习“如何像专家一样行动”;方法基础:行为克隆(BC)——监督学习式逐步模仿,简单但易累积误差;进阶:逆强化学习(IRL)——反推专家奖励再用RL学习,解决分布偏移;当前主流:生成式对抗模仿学习(GAIL)——用GAN对抗博弈,隐式学习专家分布,兼顾性能与效率。通过这种方式,模仿学习在真实复杂场景中为RL的落地提供了重要解决方案,尤其适合“专家经验可量化为数据”的任务。

2025-09-04 00:00:00 703

原创 演员-评论员算法有何优点?

Actor-Critic的本质是通过“Actor执行策略、Critic评估价值”的分工协作,解决了传统强化学习“方差与偏差失衡、样本效率低、动作空间适配差、延迟奖励难处理”四大核心痛点,成为连接基础算法与工业级应用(如机器人控制、自动驾驶、推荐系统)的关键桥梁。后续几乎所有主流强化学习算法(如PPO、SAC)都是在Actor-Critic框架上的优化,足见其在强化学习领域的核心地位。

2025-09-04 00:00:00 688

原创 CAD/BIM软件产品技术深度分析文章写作计划

大家好,我在三维建模软件领域深耕多年,尤其聚焦 CAD/BIM 软件的产品设计、技术研发与架构搭建,算是积累了一些行业实践与技术思考。一直想把这些沉淀转化为有深度的内容,围绕软件核心技术、产品战略、架构创新等关键方向,和大家做更深入的交流 —— 毕竟行业的进步从来不是单打独斗,多维度的探讨才能碰撞出更多思路。后续我会根据大家的反馈,优先打磨对应主题的深度内容,和大家一起慢慢拆解行业难点、梳理技术脉络,共同在 CAD/BIM 软件领域探索更多可能。

2025-09-04 00:00:00 199

原创 最大熵强化学习相比传统强化学习,有什么缺点?

MaxEnt RL通过引入“熵目标”解决了传统RL的“探索不足、策略鲁棒性差”问题,但代价是计算更重、训练更难、对奖励更敏感、行为更难解释。其缺点并非“算法缺陷”,而是“功能取舍”的结果——在需要鲁棒性、多样性的场景(如动态环境、多任务学习)中,这些缺点可被其优势掩盖;但在需要确定性、高效率、低样本成本的场景中,传统RL仍是更优选择。

2025-09-03 00:00:00 602

原创 什么是最大熵强化学习?

熵”是信息论中衡量概率分布不确定性的指标。在MaxEnt RL中,我们关注的是策略π的熵H(π)若策略熵高:在同一状态下,智能体选择不同动作的概率更平均(如“选动作A的概率40%,选动作B的概率35%,选动作C的概率25%”),随机性强。若策略熵低:在同一状态下,智能体几乎只选某一个动作(如“选动作A的概率99%,其他动作1%”),随机性弱(接近传统RL的固定策略)。

2025-09-02 00:00:00 688

原创 强化学习中的重要性采样:跨分布复用样本的核心技术

重要性采样是强化学习中 “跨分布复用样本、实现高效异策略训练” 的核心技术。它通过 “权重修正” 突破 “同策略必须自采样” 的限制,让旧策略 / 示范策略的样本能服务于新策略的训练。尽管存在 “分布差异过大导致方差爆炸” 的挑战,但结合 “权重简化假设、优势函数、截断 / 归一化技巧”,能在实际中有效支持策略更新,是高效强化学习算法(如 PPO、离线强化学习)的关键基石之一。(注:文档内容由 人类和AI共创)

2025-08-22 00:00:00 691

原创 强化学习算法分类与介绍(含权重更新公式)

强化学习算法种类丰富,可按学习目标(基于价值 / 基于策略 / 演员 - 评论家)、数据使用方式(在线 / 离线)、是否依赖环境模型(无模型 / 有模型)等维度分类。以下按核心逻辑梳理常见算法,并补充各算法的权重更新公式:目标是学习 “状态 - 动作价值函数”(Q 函数),通过 Q 值指导动作选择(如选 Q 值最大的动作)。Q-Learning(表格型,1989):经典无模型离线(Off-policy)算法,用贝尔曼方程更新 Q 表格:Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(

2025-08-22 00:00:00 627

原创 连续空间强化学习:策略输出的两种形态 —— 概率分布与确定性动作

连续空间的动作是无限的(比如 “室内温度调节” 可以是 18.5℃、23.3℃等任意值)。如果智能体每次都输出一个固定动作,很容易陷入 “局部最优”—— 比如一直用 22℃,却不知道 21.5℃能更节能。概率分布则像一个 “灵活的指南针”:大概率指向已知较好的动作(利用);小概率覆盖其他可能(探索)。随着训练深入,分布会逐渐向最优动作收缩,实现 “从探索到收敛” 的过程。

2025-08-21 00:00:00 1111

原创 神经网络中的那些关键设计:从输入输出到参数更新

神经网络的设计充满了逻辑与巧思:输入层神经元数量对应特征维度,确保信息完整输入;输出层神经元数量匹配类别数,便于输出各类别概率;交叉熵损失则通过衡量预测与真实值的差异,为参数更新提供关键指引,推动模型不断优化。理解这些基础设计原则和机制,能帮助我们更好地构建和调优神经网络模型。(注:文档部分内容由 AI 生成)

2025-08-20 00:00:00 1106 2

原创 深度强化学习之前:强化学习如何记录策略与价值?

除了记录价值,也可以直接用表格记录策略 —— 即 “在状态 s 下选择动作 a 的概率”,记为 π(a|s)。例如在围棋的简化版游戏中(假设只有 10 种可能的棋盘状态,每种状态有 5 种可行落子),策略表格就是 10×5 的矩阵,每个单元格存储 “在状态 s 下选择动作 a 的概率”。智能体决策时,直接根据表格中的概率分布随机选动作即可。表格方法的优势:直观易懂,更新规则简单,在极小空间中收敛稳定。适用场景:如网格导航、简单博弈(如井字棋)等状态 / 动作数量不超过 1000 的场景。

2025-08-18 22:00:00 1070

原创 双重调度(Double Dispatch):《More Effective C++》条款31

条款31揭示了C++单一调度的局限性,并通过虚函数重载、访问者模式和函数映射表三种方案实现双重调度。其核心思想是通过递归调用、类型分离或静态映射,将多个对象的类型信息结合起来,最终实现动态行为的精准控制。开发者需根据具体场景(如类型稳定性、操作扩展性)选择合适方案,同时注意二进制兼容性和类型安全的权衡。

2025-08-17 00:00:00 588

原创 谈谈《More Effective C++》的条款30:代理类

代理类是C++中一种强大的抽象工具,通过运算符重载实现对原始对象的灵活控制。

2025-08-16 00:00:00 1493

原创 深入理解Transformer:从训练机制到长文本处理的核心问题

Transformer的设计处处体现“平衡”:并行计算与语义连贯的平衡、算力效率与模型能力的平衡、参数规模与上下文长度的平衡。理解这些核心细节,不仅能帮助我们更好地使用大模型,更能为优化模型架构、提升训练效率提供方向。随着RoPE、FlashAttention等技术的发展,未来的大模型或将在更长上下文、更高效率的道路上持续突破。

2025-08-15 22:00:00 1272

原创 老生常谈之引用计数:《More Effective C++》条款29

条款29通过String分层设计:通过RCObject基类与RCPtr智能指针分离引用计数逻辑与业务逻辑。延迟拷贝:仅在实际修改时创建副本,平衡效率与安全性。明确接口约束:通过shareable标志与文档声明,限制潜在风险操作。引用计数至今仍是C++中高效管理共享资源的重要手段,条款29的思想为理解等现代智能指针提供了底层实现视角。

2025-08-15 00:00:00 1154

原创 老生常谈智能指针:《More Effective C++》的条款28

条款28强调,智能指针是C++资源管理的基石,但其设计与使用需谨慎。优先使用标准库智能指针(如和),而非自行实现。明确所有权规则:根据场景选择转移、共享或复制语义。避免隐式转换:显式管理指针类型转换,防止意外行为。结合RAII与异常安全:确保资源在构造函数中获取,析构函数中释放。通过深入理解条款28,开发者能有效利用智能指针提升代码的健壮性与可维护性,同时避免常见的设计陷阱。

2025-08-14 00:00:00 665

原创 机器学习阶段性总结:对深度学习本质的回顾 20250813

深度学习是数据时代的强大工具,但其本质决定了它无法替代人类的逻辑推理与创造性思维。理解它的原理、尊重它的局限、善用它的优势,才能在技术实践中真正发挥其价值。未来,随着理论研究的深入,或许 “炼丹” 将逐渐被更精准的工程方法取代,但在此之前,保持对技术的敬畏与好奇,仍是每个从业者的必修课。(注:文档核心观念和经验都是我的,但 AI 帮我做了润色和整理,不得不服AI有时写得又快又好。

2025-08-13 21:30:00 1475

原创 通过限制对象的内存分配位置来实现特定的设计目标

条款27通过控制内存分配位置,将对象生命周期管理纳入类型系统,减少了人为错误的可能性。强制堆分配:析构函数私有化 + 工厂函数。禁止堆分配:删除。处理继承与异常:合理使用protected成员和虚析构函数。开发者应根据具体需求选择合适的方法,并注意实现中的陷阱(如数组分配、智能指针兼容性)。通过结合条款27的技术,可显著提升代码的健壮性和可维护性。

2025-08-13 00:00:00 763

原创 C++ 限制类对象数量的技巧与实践

在系统设计中,我们常需限制某些类的对象数量(如单例模式、资源受限场景)。本文结合《More Effective C++》条款26,剖析C++中实现该需求的核心方法与细节。(注:代码基于《More Effective C++》条款26,结合现代C++特性优化。,内部静态对象可能在多编译单元中复制,导致。,确保全局仅一个对象。若类不应产生任何对象,直接将。因此,非成员函数版本切勿。,根据场景选择方案。

2025-08-12 00:00:00 479

原创 C++ 多态扩展:构造函数与非成员函数的“虚化”技巧

构造函数虚化:通过静态函数(虚拟构造)或虚成员函数(虚拟拷贝构造,如clone),间接实现“根据类型动态创建/复制对象”的多态行为。非成员函数虚化:借助“非成员函数调用虚成员函数”的模式,将实际逻辑封装在虚成员函数中,非成员函数仅作为调用入口,间接实现多态。核心思想是“利用成员虚函数的多态性,封装核心逻辑,再通过外层函数(静态函数、非成员函数)调用这些虚函数”,从而突破构造函数和非成员函数本身的限制,扩展多态的应用场景。掌握这些技巧,能让我们在设计复杂类体系时更灵活地处理多态需求!

2025-08-11 21:00:00 248

原创 C++ 虚函数、多重继承、虚基类与RTTI的实现成本剖析

特性对象大小增加类数据量增加内联几率降低虚函数是是是多重继承是是否虚基类往往如此有时否RTTI否是否。

2025-08-10 00:00:00 941

原创 C++程序库选择:权衡与取舍的艺术——以iostream和stdio为例

程序库的选择,本质是设计目标的优先级排序。iostream的类型安全和扩展性适合复杂系统,stdio的高效适合对性能敏感的场景。没有绝对优劣的库,只有是否匹配场景的选择。当我们的程序遇到瓶颈时,不妨回头审视:是否因为依赖的库在某个维度的取舍,导致了性能问题?换个库,或许就能打开新的优化空间。毕竟,软件开发的乐趣之一,就在于在有限的约束下,找到最适合的解决方案。

2025-08-09 00:00:00 514

原创 以复合赋值运算符(op=)优化单独运算符(op)的实现

对于内置类型,x + y和x += y是天然关联的,但自定义类型的运算符需要手动实现。a = a + b;// 单独运算符 operator+a += b;// 复合赋值运算符 operator+=同时成立,必须手动建立两者的关联——C++ 不会自动帮我们完成这件事。更重要的是,复合赋值运算符的效率通常更高,我们可以借助它优化单独运算符的实现。条款22的核心思想是“以复合赋值为基础实现单独运算符”代码复用:只需实现+=,即可推导,避免重复逻辑。效率优化:复合赋值无临时对象开销;

2025-08-08 00:00:00 488

原创 C++ 运算符重载:避免隐式类型转换的艺术

通过运算符重载避免隐式类型转换,本质是用明确的函数签名替代编译器的自动推导,既优化了性能,又增强了代码的可读性和可控性。记住:C++赋予我们灵活的工具,但合理使用才是关键。下次遇到自定义类型与内置类型的交互时,不妨试试这种“重载思维”吧!

2025-08-07 00:00:00 286

原创 C++返回值优化(RVO):高效返回对象的艺术

返回值优化(RVO)是C++编译器的“隐藏福利”,让“按值返回对象”的性能担忧成为历史。开发者只需专注语义正确性(如必须返回新对象时大胆返回),并通过直接返回构造表达式等写法协助编译器优化。语义清晰是基础,编译器会帮你处理性能细节。通过理解RVO,你不仅能写出更高效的代码,还能避免指针/引用的陷阱——这才是C++工程能力的体现。

2025-08-06 00:00:00 1069

原创 C++临时对象:来源与性能优化之道

要减少临时对象的开销,首先需要识别它们的诞生场景看到const T&参数:警惕调用时是否发生了隐式类型转换(如char*转string看到函数返回对象:思考是否可通过RVO或接口设计(如operator+=)优化。临时对象的存在是编译器为了类型兼容或语法正确的“妥协”,但通过合理的代码设计,我们可以主动消除这些不必要的开销,让程序更高效。

2025-08-05 00:00:00 690

原创 超急评估:用提前计算分摊性能成本

超急评估通过“提前付出成本”Lazy适合“结果不常需要”的场景,避免无用功;Over-Eager适合“结果常需要”的场景,通过缓存、预取摊还成本。在实际开发中,需结合使用频率、资源开销,借助Profiler分析,灵活运用三者,实现性能与资源的最优平衡。

2025-08-04 20:45:00 561

原创 深入理解C++中的Lazy Evaluation:延迟计算的艺术

Lazy Evaluation的本质是**“延迟决策,直到必须”**:通过规避不必要的工作,最大化程序效率。它不仅适用于C++,也被APL、函数式语言(如Haskell)广泛采用。在C++中,我们可以借助。

2025-08-03 00:00:00 1387

原创 软件性能优化:善用80-20法则,精准突破瓶颈

找到关键的20%,集中突破。测量:用合适的Profiler,搭配真实、代表性数据,定位资源消耗核心区段;定位:区分“直觉判断”和“实际瓶颈”,聚焦真正影响全局的20%代码;优化:针对瓶颈设计方案(如算法、IO、内存调优),避免无关优化;验证:再次用Profiler验证效果,确保投入产出比最大化。记住:与其做“到处救火的消防员”,不如先当“精准定位的侦探”——80-20法则的价值,就在于帮我们把精力花在刀刃上。(本文结合“条款16:谨记80-20法则”核心思想,围绕实践场景整理。

2025-08-02 00:00:00 1218

原创 C++异常处理的成本:理解与优化

异常处理的成本客观存在,但无需过度恐慌——C++设计中,异常本就是为“低频率、高影响”的场景而生。关键是理解这些成本的来源当异常能提升代码可读性和健壮性时,合理的开销是可接受的;当性能敏感时,通过优化策略(如关闭异常、精简try块)最小化影响。技术决策的核心是权衡,而非非黑即白的选择。了解异常的成本,才能让它成为你的助力,而非负担。

2025-08-01 00:00:00 921

原创 明智运用C++异常规范(Exception Specifications)

优点:文档化清晰,辅助编译器检测局部异常行为。缺点:编译器检查不彻底,模板和回调场景易踩坑,违反后默认行为(程序终止)过于暴力。在实践中,需结合场景权衡:若能严格控制调用链(如封闭的模块),异常规范可提升代码严谨性;若涉及复杂依赖(如模板、第三方回调),则需谨慎使用,甚至放弃,避免“意外终止”的风险。总之,异常规范的价值在于明确契约,但实现契约的代价需要提前评估。只有充分理解其陷阱与应对方法,才能真正“明智运用”。

2025-07-31 00:00:00 972

原创 C++异常捕获:为何推荐按引用(by reference)捕获?

✅ 避免指针的生命周期陷阱和内存管理困境;✅ 解决值捕获的对象切割和重复复制问题;✅ 完美支持多态,兼容标准异常体系。简言之,按引用捕获异常是C++异常处理的“最优解”,兼顾正确性、性能和代码简洁性。在实际开发中,应始终优先选择的形式!(本文内容参考《Effective C++》条款13,深入分析异常捕获的设计考量。

2025-07-30 00:00:00 936

原创 C++ 构造函数中阻止资源泄漏的实践探索

优先使用智能指针:如unique_ptrshared_ptr,它们能自动管理资源,构造函数异常时,已构造的智能指针对象析构会释放资源,简化代码且减少泄漏风险。构造函数内合理使用 try-catch:若需在构造函数处理异常(如记录日志、清理部分资源),用try-catch捕获并清理,再重新抛出异常让上层处理。避免复杂资源初始化耦合:将资源初始化逻辑拆分,降低不同资源初始化的依赖,一个资源初始化失败,不影响其他已成功初始化资源的清理。

2025-07-28 00:00:00 1364

原创 利用RAII与析构函数避免C++资源泄漏

对于非指针资源(如系统窗口句柄。

2025-07-27 00:00:00 347

原创 C++中new和delete的多重面孔:operator new、new operator与placement new解析

本文深入解析C++中new和delete的多层含义,重点区分了new operator(分配内存+构造对象)、operator new(仅内存分配)和placement new(指定地址构造)三种概念。同时介绍了对应的delete操作,并强调数组处理时new[]/delete[]的配对使用。文章通过示例代码展示了不同场景下的正确用法,最后总结各概念的特性与定制方法,为复杂内存管理(如内存池、对象池)提供了实践指导。理解这些底层机制有助于开发者更精准地控制对象生命周期和内存分配。

2025-07-26 00:00:00 757

使用OpenGL + QT 实现管线求交地操作

这份代码实现了一个基于 OpenGL 和 Qt 的三维可视化程序,用于渲染一个彩色的立方体,并支持用户通过鼠标操作来发射射线以及旋转视角。用户可以通过鼠标左键点击窗口发射射线,射线会从相机位置出发,指向点击位置在三维空间中的对应点;同时,用户按住鼠标右键拖动可以旋转视角,从而改变观察立方体的角度。

2025-03-21

Open CASCADE Technology 7.6.0用于3D建模瓶子实例教程

内容概要:本文详细介绍了利用 Open CASCADE Technology(OCCT)7.6.0 开发环境进行三维几何建模的应用实践。具体而言,通过构建瓶身模型为实例讲解如何使用 OCCT 中的基本组件完成从简单图形到复杂组合实体的各项步骤。首先定义几何形状与参数,随后创建截面并沿轴线拉伸生成实体,在此基础上进一步修饰边角添加瓶颈、螺纹特征以及内部掏空处理等一系列工艺流程都被逐步剖析。 适用人群:有经验的C++程序员或工程师,对几何建模有兴趣的技术人员。 使用场景及目标:①了解OCCT基本类及其用法;②熟悉运用C++接口操作点线面;③掌握实体变换及布尔运算;④提升解决实际工程项目问题的能力。 其他说明:提供了一种系统性的学习方法论来帮助初学者上手OCCT平台上的产品开发流程,并指出了更多深入探索的方向如咨询和支持服务网站链接。

2025-03-04

空空如也

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

TA关注的人

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