- 博客(560)
- 收藏
- 关注
原创 计算机图形学基础(1)绪论
计算机图形学是一门研究如何利用计算机研究图形的生成、处理和显示的学科。简单来说,它的核心任务是用像素讲故事,将存储在计算机中的数学模型或数据,转换成人类视觉能够理解的、逼真或具有艺术感的图像、视频或动画。
2025-11-28 15:28:47
293
原创 OCCT 实战(5)交互
在 OpenCASCADE 可视化模块中扮演着一个桥梁或适配器将不同操作系统和UI框架下的原生窗口,抽象成一个可供OCC 3D视图器统一使用的渲染目标。没有,OCC就需要为每个平台和UI框架编写完全不同的集成代码。有了它,OCC实现了一次开发,多处嵌入,让开发者能轻松地将强大的3D可视化功能集成到任何桌面应用程序中。它是OCC可视化模块能够跨平台、跨框架的基石。
2025-11-26 20:27:14
209
原创 UML(1)简介
不是编程语言:UML 仅用于描述和设计,无法直接编译执行。不是开发方法:UML 可与任意开发方法(如敏捷、瀑布)结合,是辅助设计的工具而非方法论。统一性与标准化:UML 由 OMG(Object Management Group)维护,定义了统一的图表类型、符号含义和语法规则,避免了不同团队因自定义建模方式导致的沟通障碍。
2025-11-26 09:36:05
182
原创 程序员的自我修养(12)系统调用
系统调用(System Call)是操作系统为用户态程序提供的、用于请求内核态服务的标准化接口。核心本质:用户程序与内核的通信协议,用户程序提出需求(如“读文件”“分配内存”),内核执行特权操作(直接操控硬件或系统资源),再将结果返回给用户程序。关键特征触发特权级切换:调用时必须从用户态切换到内核态(内核拥有最高权限),执行完后再切回用户态;标准化接口:不同操作系统(Linux、Windows)都有固定的系统调用集合,如Linux的readwrite、Windows的CreateFile。
2025-11-20 11:23:14
633
原创 程序员的自我修养(1)程序编译的内部过程:预处理、编译、汇编、链接
C 语言的经典hello world程序,执行编译运行得到一个可执行程序。从源码到可执行程序,可以分解为4个步骤,分别是。
2025-11-13 10:13:55
328
原创 程序员的自我修养(10)中断机制
中断是一种向CPU发出的信号,要求CPU暂停当前正在执行的程序,转而去处理某个特定事件,处理完毕后再返回原程序继续执行。在计算机的早期,程序必须忙等待,即CPU需要不断地轮询(Polling)检查外部设备的状态,这造成了巨大的资源浪费。提高CPU效率:CPU无需主动询问,设备准备好后会主动通知CPU。在等待慢速设备(如磁盘、键盘)时,CPU可以执行其他任务,实现了并发。实现异步事件处理:突发事件(如用户按键、网络数据包到达)可以随时得到响应,保证了系统的实时性。保障系统安全与稳定。
2025-10-23 15:47:03
319
原创 程序员的自我修养(9)入口函数
操作系统加载程序 → 跳转到 CRT 入口函数()→ 初始化环境(TLS/全局变量/CRT/命令行)→ 调用main→main执行 → 收尾(释放资源/退出)。main是用户代码的入口,但并非程序的起点;作为 CRT 入口函数,承担了“环境搭建”的核心角色,是main能够正常执行的前提。理解这一流程,有助于排查全局变量初始化顺序、内存分配失败等底层问题。
2025-10-23 14:49:38
852
原创 程序员的自我修养(8)延迟绑定
避免了这一问题——仅解析实际被使用的符号,未使用的符号(如库中未调用的函数)始终不解析,大幅减少程序启动阶段的冗余工作,尤其对依赖大量外部库的复杂程序(如大型应用、IDE),启动速度提升效果显著。:Linux 中通过 PLT/GOT 实现函数延迟绑定时,首次调用函数会触发动态链接器解析地址并更新 GOT 表,第二次及以后调用直接从 GOT 表读取地址,无需再次解析。在程序运行过程中,部分外部符号可能仅被调用一次(如初始化阶段的配置读取函数),若加载时提前解析,该地址仅被使用一次,解析开销与实际收益不匹配。
2025-10-20 17:33:40
931
原创 程序员的自我修养(7)Windows平台IAT与INT表
存储外部符号的实际地址utils.dlladdglobalutils.dlladdutils.dllglobalutils.dll:存储外部符号的标识信息utils.dll。
2025-10-20 09:27:28
664
原创 程序员的自我修养(6)动态链接
要解决空间浪费和更新困难这两个问题最简单的方法就是把程序的模块相互分隔开,形成独立的文件,而不再将它们静态链接在一起。程序的链接过程推迟到运行时再进行,(Dynamic Linking)的核心思想是。
2025-06-11 09:58:52
344
原创 Javascript 编程基础(5)面向对象 | 5.3、class 语法糖
JavaScript 的class语法通过更简洁、更符合直觉的方式实现继承,但并未改变其基于原型的本质。它提供了私有成员、静态成员、继承等现代语言特性,使代码更具可读性和可维护性,尤其适合大型项目和团队协作。
2025-06-06 15:01:11
180
原创 Javascript 编程基础(5)面向对象 | 5.1、构造函数实例化对象
在 JavaScript 里,构造函数是创建对象实例的一种方式。构造函数本质上是普通的函数,不过有其特定的使用模式:要用。
2025-06-06 10:06:40
504
原创 Javascript 编程基础(5)面向对象 | 5.2、原型系统
JavaScript是一种基于原型的语言,与传统的类继承不同,它通过原型对象实现属性和方法的共享。每个对象都有一个内部属性(在多数浏览器中可通过__proto__访问),它指向该对象的原型对象。当访问一个对象的属性时,JavaScript会先在对象本身查找,若未找到则沿链向上查找,直到找到该属性或到达原型链的终点(JavaScript的原型系统是一种强大而灵活的继承机制,它通过原型链实现了对象间的属性共享和行为委托。理解原型的核心原理(构造函数、、属性查找机制)是掌握JavaScript高级特性的基础。
2025-06-06 10:04:38
1270
原创 程序员的自我修养(4)虚拟存储
虚拟存储是计算机系统的一种内存管理技术,它通过软硬件结合的方式,使得应用程序可以使用比实际物理内存更大的地址空间。核心思想是,从而扩展可用内存容量。
2025-06-03 14:05:05
262
原创 dumpbin 工具
dumpbin 是 Microsoft Visual Studio 工具链中提供的 COFF 二进制文件转储工具,属于 Microsoft COFF Binary File Dumper。它是分析 Windows 平台可执行文件、库文件和对象文件的瑞士军刀。
2025-05-21 17:26:42
1474
原创 Javascript 编程基础(4)函数 | 4.4、bind() 方法
bind()是 JavaScript 函数对象的一个内置方法,它创建一个新的函数(称为"绑定函数"),这个新函数的this值会被永久绑定到指定的对象。与call()和apply()不同,bind()不会立即执行函数,而是返回一个准备就绪的新函数。
2025-05-21 16:21:22
437
原创 Javascript 编程基础(4)函数 | 4.1、函数简介
1.2、函数表达式1.3、箭头函数(ES6 新增)单个参数:当函数仅接受一个参数时,可以省略圆括号。多个参数:当有多个参数时,需要用圆括号包围它们。无参数:如果函数不需要任何参数,则使用一对空的圆括号。多行语句:如果函数体包含多条语句,则需要使用花括号 包围,并且需要显式地使用 来返回结果。2、函数参数2.1、参数传递2.2、默认参数默认参数应该放在参数列表的最后。如果非默认参数放在默认参数后面,调用时仍需传递值或使用 2.3、剩余参数基
2025-05-21 15:25:37
1037
原创 Javascript 编程基础(4)函数 | 4.2、this 绑定机制
是 JavaScript 中最容易混淆的概念之一,它的绑定机制决定了函数执行时的上下文。的工作原理对于编写可靠的 JavaScript 代码至关重要。的一个属性,每次函数调用都会创建一个新的执行上下文,其中的。JavaScript 按照以下优先级顺序确定。的值不是在函数定义时确定的,而是在。这与大多数编程语言中的。
2025-05-21 15:24:02
793
原创 Javascript 编程基础(3)数据类型 | 3.1、类型介绍
JavaScript采用动态类型系统,变量可以在运行时改变其数据类型,这提供了灵活性但也需要开发者注意类型相关的问题。
2025-05-20 15:28:55
494
原创 Javascript 编程基础(2)基础知识 | 2.2、变量
JavaScript 的变量系统虽然看似简单,但包含了许多需要注意的细节。理解变量声明方式、作用域、提升机制以及类型差异对于编写健壮的 JavaScript 代码至关重要。随着 ES6+ 的普及,let和const已成为现代 JavaScript 开发的首选,而var的使用应逐渐减少。
2025-05-20 14:27:07
1012
原创 Javascript 编程基础(2)基础知识 | 2.1、javascript与Node.js
现代Web开发中,两者通常配合使用,JavaScript处理客户端逻辑,Node.js处理后端服务,共同构成完整的JavaScript全栈解决方案。
2025-05-19 15:02:25
586
原创 C/C++ 知识点:引用临时对象
这是完全合法的,而且临时对象的生命周期会被延长到与引用相同的作用域。这种机制使得C++能够高效地处理临时对象,同时保持类型安全。这也是合法的,同样会延长临时对象的生命周期。这是不合法的,编译器会报错。
2025-05-19 14:08:05
452
原创 程序员的自我修养(2)目标文件格式
目标文件是编译的中间产物,包含代码、数据、符号和重定位信息。COFF是Windows目标文件的标准格式,结构清晰,分为文件头、节区、符号表和重定位表。链接器的任务是合并多个目标文件,解析符号引用,生成可执行文件。现代格式_PE/ELF/Mach-O均从COFF演进而来,适应不同操作系统的需求。通过理解COFF目标文件的结构,可以更深入地掌握编译、链接的工作原理,为调试和性能优化奠定基础。
2025-05-07 23:32:09
1083
原创 C++对象注册系统(1)实现原理
自动化:避免手动维护注册逻辑,实现「声明即注册」确定性:规避静态初始化顺序的不可控性扩展性:天然支持动态加载的插件架构高效性:利用链接器原生支持的低成本收集机制这种模式广泛用于游戏引擎(Unreal的UClass)、序列化框架(Protocol Buffers)等需要动态类型管理的系统。
2025-05-07 18:18:27
1071
原创 OCCT 实战(4)数据结构
OCCT(Open CASCADE Technology)的基础数据结构是其几何建模能力的核心,主要围绕 边界表示法(BRep) 构建,同时包含几何、拓扑、算法和工具类等模块。
2025-04-21 17:59:20
470
原创 Python 入门教程(9)文件操作 | 9.1、文件基础操作
Python 提供了多种文件操作方法,主要用于。在 Python 中写入文件时,可以通过。来指定文件的编码格式(如。函数打开文件,需指定。在 Python 中,,具体取决于你的需求。手动关闭文件(若未用。
2025-04-21 13:58:29
743
原创 OCCT 实战(3)核心模块与架构
OpenCASCADE Technology (OCCT) 采用模块化分层架构,核心模块分为基础层建模层和可视化层,各层协同工作以提供完整的几何建模能力。
2025-04-15 17:56:25
946
原创 OCCT 实战(1)OCCT 概述
OCCT 是一个开源跨平台的三维几何建模内核,广泛应用于 CAD/CAM/CAE、工业仿真、3D 打印等领域(如 FreeCAD、KiCAD 等软件的核心引擎)。提供下面这些基本功能几何建模基础实体(立方体、圆柱、球体等)高级曲线/曲面(NURBS、Bezier、B样条)布尔运算(并/差/交)、特征操作(拉伸/旋转/扫掠)数据交换支持STEP、IGES、STL等工业格式导入导出。可视化与交互基于OpenGL的3D渲染,支持选择、高亮、动态交互(AIS框架)。网格处理。
2025-04-15 17:36:23
1120
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1