- 博客(21)
- 收藏
- 关注
原创 【函数指针】
函数指针详解摘要 函数指针是指向函数内存地址的指针变量,允许函数像变量一样被传递和调用。与普通指针指向数据不同,函数指针指向可执行的行为/操作。核心价值在于实现动态函数调用,支持回调机制和设计模式(如工厂模式)。 关键要点: 声明形式:返回类型 (*指针名)(参数列表) 可通过typedef/using简化复杂声明 应用场景包括动态函数选择、回调函数、存储在容器中 本质区别:数据指针传递值,函数指针传递动作 底层机制支撑了虚函数、std::function等高级特性 理解函数指针需把握"指向代码而
2026-04-01 23:43:08
326
原创 23种设计模式 -【抽象工厂】
摘要:抽象工厂模式是创建型设计模式,用于生产一组相关产品(产品族),确保对象组合的正确性。其核心是抽象工厂接口定义创建方法,由具体工厂实现(如Intel/AMD工厂)生产配套产品(CPU+主板)。相比简单工厂和工厂方法模式,抽象工厂强调产品间的兼容性,适用于多产品族场景(如军事仿真系统)。通过封装对象创建过程,客户端仅依赖抽象接口,实现解耦。该模式本质是约束相关对象的创建,保证系统扩展时产品组合的一致性。
2026-03-30 13:35:19
466
原创 23种设计模式 -【工厂方法】
工厂方法模式是一种创建型设计模式,它将对象创建延迟到子类,通过定义创建对象的接口让子类决定实例化具体类。该模式包含四个核心组件:产品接口、具体产品、工厂基类和具体工厂。相比直接使用new操作符,工厂方法模式通过将创建责任分离到专门工厂类,实现创建与使用的解耦,提高了代码的可扩展性,符合开闭原则。与简单工厂模式不同,工厂方法模式为每个产品对应一个工厂类,新增产品时只需添加新类而不修改原有代码。该模式适用于存在大量直接new操作、条件判断复杂或需要插件式架构的场景,体现了面向对象通过抽象和多态实现系统灵活性的设
2026-03-30 11:34:13
343
原创 【简单工厂】
摘要 简单工厂模式是一种创建型设计模式,核心思想是将对象创建逻辑集中到工厂类中,而非业务代码直接实例化。该模式通过工厂类统一管理对象创建,降低了业务代码与具体类的耦合度。结构包含产品基类、具体产品和工厂类三部分。优点是简化业务代码、集中管理创建逻辑,但违反开闭原则,新增类型需修改工厂类。适用于类型变化不频繁的小型项目。与工厂方法模式、抽象工厂模式相比,简单工厂是一个工厂创建所有产品。工业级实现常采用注册式工厂。本质是通过控制new操作来降低系统耦合度。
2026-03-30 11:31:56
420
原创 AI核心概念完全解析:LLM、Agent、MCP一文搞懂
AI核心概念解析摘要 本文系统梳理了AI领域的核心概念体系: 基础层:LLM(大语言模型)作为AI"大脑",基于Transformer架构处理语言任务 交互层: Prompt(用户指令) Context(对话背景) Skill(预设任务模板) 三者本质都是不同形式的Prompt输入 执行层: Agent=LLM+工具+记忆+规划循环 MCP协议标准化工具调用接口 架构关系:LLM提供推理能力,Agent实现任务调度,Tools负责具体执行,MCP统一工具生态 这些概念共同构成现代AI应用
2026-03-22 01:23:56
740
原创 Visual Studio增量编译:它到底如何判断“谁需要重编译”?
C++增量编译过程解析:当修改代码时,VS会执行依赖检查和时间戳比较来判断是否需要重新编译。对于修改过的文件及其依赖项,会完整执行预处理→编译→汇编三步,生成新的.obj文件;未修改的文件则直接复用旧.obj。链接阶段只要有任一.obj更新就会重新链接。VS通过记录文件依赖关系和时间戳,在预处理时动态更新依赖信息,确保增量编译的正确性。修改头文件会触发依赖它的源文件重新编译,并自动更新依赖链,使后续修改能被正确检测。
2026-03-19 11:33:07
167
原创 为什么修改头文件后Build失败,Rebuild就好了?
Visual Studio增量编译问题常表现为修改头文件后Build报错但Rebuild成功。其根源在于增量编译依赖的三个条件(时间戳准确、依赖图完整、中间文件一致)被破坏,导致新旧obj文件混用。常见破坏场景包括git分支切换、VS崩溃、并行编译竞态等。Rebuild之所以有效是因为会删除所有obj文件并全量编译。诊断需检查Build日志、.tlog文件和时间戳对比。建议解决方案:优先Clean+Rebuild,删除.vs缓存文件夹,检查杀毒软件设置,并保存完整Build日志用于问题分析。
2026-03-12 17:23:18
529
原创 对称加密和非对称加密
本文系统介绍了加密技术的两大体系:对称加密和非对称加密。对称加密使用同一密钥进行加解密,但存在密钥分发问题;非对称加密通过公钥/私钥对解决了这个问题,公钥可公开用于加密,私钥保密用于解密。非对称加密提供两种核心功能:公钥加密确保数据保密性,私钥签名实现身份认证和数据完整性验证。这两种加密体系相互独立,共同构成了现代密码学的基础架构。
2026-03-09 16:38:20
341
原创 SSH(Secure Shell)网络通信协议
SSH 安全连接机制摘要 SSH协议通过双向验证实现安全远程连接。客户端首次连接服务器时会验证服务器公钥指纹并存入known_hosts,后续连接通过比对公钥防止中间人攻击。服务器端通过公钥认证验证客户端身份:服务器发送随机挑战,客户端用私钥签名响应,服务器用预存公钥验证签名。整个过程私钥不传输网络,仅通过数字签名证明身份,确保安全性。核心验证逻辑是确认通信方拥有对应密钥,而非直接验证身份。
2026-03-07 11:28:32
714
原创 git远程仓库连接方式
Git本地与远程仓库连接主要通过HTTPS和SSH两种协议。HTTPS使用账号+Token认证,首次需输入凭证,后续可缓存;SSH采用公钥+私钥机制,配置后无需重复验证。关键区别在于:HTTPS适合普通用户,操作简单;SSH更安全且便捷,推荐开发者使用。需注意commit作者与push账号独立,且认证实际由代码托管平台(如GitHub)完成,Git仅负责连接。SSH通过密钥对实现免密操作,一次配置即可长期使用。
2026-03-07 00:27:44
686
原创 git使用中可能遇到的问题-动态中出现陌生贡献者
Git 提交身份由user.nameuser.email组成Gitee 通过user.email识别贡献者出现陌生贡献者,本质是邮箱不一致导致修改user.email为 Gitee 绑定邮箱即可解决。
2026-02-26 09:55:58
457
原创 下载git后的配置
Git基础配置摘要:安装Git后只需配置用户名和邮箱即可本地使用(git config --global user.name/email)。建议设置默认分支为main。连接远程仓库可选HTTPS(使用Token)或SSH方式(生成密钥)。查看配置用git config --global --list。
2026-02-25 23:01:10
338
原创 git简单使用
本文介绍了Git版本控制系统的核心概念和Gitee平台的使用要点。Git分为工作区、暂存区、本地仓库和远程仓库四个区,支持灵活的代码管理。Gitee作为代码托管平台,提供仓库管理、Issue跟踪、Pull Request等功能,但不包括代码片段的版本控制。在实际开发中,建议通过分支开发、PR审查的方式协作,并合理使用.gitignore文件过滤非必要上传文件。Git负责版本管理,Gitee提供协作平台,两者配合可有效支持团队开发流程。
2026-02-25 11:49:19
582
原创 【C++编程基础】3.引用
本文核心介绍C++引用的本质(变量别名,需初始化且绑定后不可改指向)、与指针的核心差异,以及引用在函数参数(优先用const T&)和返回值(仅返回生命周期长于函数的对象,禁返局部对象引用)的使用规则与禁忌,同时明确了引用和指针的选择原则。
2026-02-01 16:10:26
824
原创 C++编程基础-1.C&C++
本文介绍了C++语言的特点与编程范式。作为从C语言发展而来的多范式语言,C++在兼容面向过程编程的同时,原生支持面向对象和泛型编程。通过同一个编程题目,分别展示了三种范式的实现方式:面向过程关注步骤逻辑,面向对象关注责任划分,泛型编程关注类型通用性。文章指出这三种范式并非互斥而是互补,在实际框架设计中往往结合使用——外层采用面向对象架构,内部使用泛型算法,细节实现则采用面向过程方法。这种分层设计体现了C++强大的表达能力,也展现了其作为系统级编程语言的灵活性。
2026-01-29 00:29:48
553
原创 AFSIM开发-脚本系统
我们在源码中写下的一个类(业务类),但脚本系统其实并不知晓,此时然后需要把这个类暴漏出去,采用的方法是再写一个“脚本包装类”(继承 UtScriptClass 或其子类),继承了UtScriptClass脚本系统依旧看不到我这个类(脚本包装类),脚本系统看到的是我把这个类给实例化后,然后我给这个实例化对象起的名字,这也是脚本系统中所使用的“类”(原型模式)当写一个类,我们想要在wizard想定编辑的脚本块中使用这个类的一些业务逻辑时,此时就需要向AFSIM的脚本系统暴漏一些信息。
2026-01-20 16:33:39
283
2
原创 AFSIM-用户开发-WsfGeoPoint-Construct()
在Construct的过程中,会把传入的"39:10:00.000n"这种标准的DMS (Degrees:Minutes:Seconds) 格式按照公式转换成十进制的度数( double 类型)进行存储,当进行使用SW.Latitude()时,直接返回对应的存储的值即可。脚本语言里(AFSIM 的脚本系统)并不能直接拿到一个 C++ 指针当作变量来用,它需要一个“脚本对象句柄/引用”,脚本运行时用这个句柄去代表某个 C++ 实例,并在你调用某个类的方法时,把调用转发到对应的 C++ 对象上。
2026-01-16 15:22:30
310
2
原创 AFSIM插件开发-WSF 插件/扩展调用顺序
注意:现有application才能有ApplicationExtension,现有Scenario才有ScenarioExtension,现有Simulation才有SimulationExtension。(源码注明“按列出顺序调用”)(源码注明“按列出顺序调用”),在这里做的事:把一个。
2026-01-14 14:36:29
524
1
原创 面向对象的设计-1.类与类之间的关系
注意:学生可独立于教室存在,ClasssRoom不负责student的生命周期(整体与部分可独立存在)。注意:发动机不能脱离车单独存在,car负责engine的生命周期(整体与部分同生命周期)。B 方法内临时创建 A 对象,用完即销毁,最弱依赖。B 的方法接收 A 对象参数,临时交互,无持有。
2026-01-06 14:22:46
294
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅