- 博客(90)
- 收藏
- 关注
原创 项目层级结构
C++项目文件层级结构的标准规范。主要包含解决方案文件(.sln)、项目文件(.vcxproj)、源文件(src/)和头文件(include/)的标准目录结构,以及资源文件和第三方库的存放位置。重点说明了包含关系的三种定义方式:在项目文件中配置包含目录和库依赖、设置预处理器定义以及在源代码中使用#include语句。文章还详细解析了包含路径的搜索顺序,提供了完整的.vcxproj配置示例,并通过实际项目结构演示了正确的包含方式。最后总结了常见错误及解决方法,推荐了头文件放置、包含顺序等最佳实践。
2026-04-17 18:14:50
268
原创 常见 时间复杂度计算
4种常见复杂度类型:O(1)常数时间(数组随机访问)、O(logn)对数时间(二分查找)、O(n)线性时间(顺序查找)和O(n²)平方时间(冒泡排序)。详细说明了复杂度计算规则:保留最高阶项、忽略常数系数、考虑最坏情况。通过vector和list操作实例对比了不同数据结构的操作复杂度,并给出了复杂度对比表。最后总结了时间复杂度计算的总和规则(顺序相加、嵌套相乘、递归分析)和数据结构选择原则。掌握这些概念对算法性能分析至关重要。
2026-04-11 17:08:00
409
原创 C++ 标准模板库STL(Standard Template Library)
C++标准模板库(STL)提供六大核心组件:算法(Algorithms)、容器(Containers)、迭代器(Iterators)、函数对象(Function objects)、适配器(Adapters)和分配器(Allocators)。容器分为序列容器、关联容器和无序容器三类,算法通过迭代器与容器解耦,实现泛型编程。STL采用模板技术,提供高效通用的数据结构和算法,支持移动语义、初始化列表等现代C++特性。常见容器如vector适合快速访问,list适合频繁插入;map保持有序,unordered
2026-04-11 14:58:29
557
原创 c++迭代器
迭代器本质上是智能指针抽象,提供统一接口(如*、++等)访问容器元素。指针是最简单的迭代器(随机访问),但迭代器还包含更复杂的实现(如链表/映射的类对象迭代器)。核心特性包括: 多态性:通过操作符重载实现一致行为,隐藏底层差异(指针/类对象); 零开销:简单迭代器(如vector)可优化为原生指针; 通用性:所有容器使用相同接口,而数组下标仅适用于连续内存。 例如,vector<int>::iterator可能是指针,list<int>::iterator则是封装节点指针的类
2026-04-11 11:03:30
223
原创 编码万物4-16-1、8-1选择器,3-8译码器
摘要:本文详细介绍了16选1数据选择器的树状级联结构设计。该结构采用模块化思想,使用2个8选1选择器进行并行初选,1个2选1选择器进行最终仲裁。地址线分配中,最高位A3用于组选择(0选D0-D7,1选D8-D15),低三位A2A1A0用于组内选择(000-111)。文章对比了8选1选择器与3-8译码器的功能差异,并以智能家居系统为例,说明三者如何协同工作:3-8译码器实现目标选择,锁存器保持控制状态,8选1选择器用于状态回读。这种树状级联结构在数字电路设计中具有扩展性强、平衡速度与复杂度的优势。
2026-04-06 15:50:24
467
原创 编码万物3-数据通路构建
锁存器是记忆单元,负责在正确时刻保存稳定数据。选择器是调度单元,负责决定下一步使用哪个数据。加法器是执行单元,负责完成具体的算术运算。控制信号(SELEN 是指挥棒,它们按特定时序变化,指挥三个硬件组件有序协作,共同完成一项任务(如累加)。这正是计算机CPU内部数据通路工作的基本原理的微观体现。
2026-04-03 13:50:37
372
原创 编码万物2-加法器、补码、R-S触发器
电路中的核心基础元件。首先阐述了四种基本逻辑门(与门、或门、非门、与非门)的工作原理、布尔表达式和电路特性,重点指出与非门作为通用逻辑门的重要性。其次详细解析了8位加法器的设计原理,从1位全加器的逻辑结构到8位级联的行波进位机制,并分析了其优缺点。接着深入讲解了计算机中负数的补码表示方法,通过对比原码、反码的缺陷,说明补码在统一加减法运算中的优势。最后以R-S触发器为例,剖析了时序电路的记忆原理,包括置位、复位、保持三种基本状态及其实现机制。全文构建了从基本逻辑门到复杂运算电路的完整知识体
2026-04-02 18:01:10
408
原创 施密特触发器
施密特触发器是一种具有迟滞特性的电压比较器,能将缓慢变化或带噪声的输入信号转换为干净的数字波形。其核心特点是采用两个不同阈值电压(V_T+和V_T-),形成迟滞窗口,有效防止输入信号在阈值附近波动时输出反复跳变。这种特性赋予其强大的抗噪声能力、波形整形功能和信号恢复能力,广泛应用于开关去抖、电平检测、脉冲整形等领域。常见实现方式包括运放正反馈结构、数字集成电路内置和晶体管电路等。
2026-04-01 14:23:50
478
原创 编码万物1
摘要:继电器是电报系统的核心部件,通过电磁感应实现弱电流控制强电流,解决长途信号衰减问题。相机胶卷的DX编码则利用暗盒触点导电状态形成二进制码,配合相机内部施密特触发器电路将物理接触转换为数字信号,实现ISO感光度自动识别。这两种技术分别体现了早期电气工程和数字自动化技术的典型应用原理。
2026-04-01 11:54:58
314
原创 数据结构1-二叉树
本文全面介绍了二叉树数据结构,包括其定义、分类、存储方式、遍历方法及实际应用。二叉树是一种每个节点最多有两个子节点的树形结构,具有五种核心性质。文章详细讲解了六种常见二叉树类型(满二叉树、完全二叉树、完美二叉树、平衡二叉树、二叉搜索树和退化二叉树)及其特性,并深入分析了四种特殊二叉树(线索二叉树、哈夫曼树、表达式树和堆)的结构特点与操作原理。此外,还介绍了链式和数组两种存储方式,四种遍历方法(前序、中序、后序和层序),以及时间复杂度对比。最后总结了二叉树在数据库索引、文件系统等领域的实际应用场景,并提供了根
2026-03-31 15:17:08
596
原创 数据结构综合0-排序
本文总结了常见排序算法的核心原理和实现要点。重点包括:1. 链表操作技巧:节点插入时注意指针修改顺序;2. 栈的LIFO特性及应用;3. 各类排序算法详解: 交换排序(冒泡、快速排序) 插入排序(直接插入、二分插入、希尔排序) 选择排序 归并排序 堆排序(详细分析建堆和排序过程) 非比较排序(计数、桶排序) 算法对比表格,分析时间复杂度、空间复杂度和稳定性。其中堆排序的时间复杂度分析尤为详细,证明了其O(nlogn)的特性。文章通过具体示例和代码片段,清晰展示了各算法的实现逻辑和性能特点。
2026-03-31 14:54:34
445
原创 C++基础项目结构
本文介绍了使用C++实现排序算法的项目文件结构建议。项目采用标准的三文件结构:SortAlgorithms.h头文件包含函数声明,SortAlgorithms.cpp源文件实现具体排序算法,main.cpp作为程序入口。详细说明了在Visual Studio中创建项目的步骤和文件组织方式,并强调了头文件保护机制的重要性(使用#ifndef/#define/#endif防止重复包含)。示例代码展示了直接插入排序的实现,包含详细的步骤输出。这种结构清晰地将声明与实现分离,便于维护和扩展,是C++项目的常见组织方
2026-03-29 13:03:24
143
原创 C++基础语法2-模板
本文深入解析C++模板编程,从基础概念到高级技巧全面覆盖。首先介绍模板的基本语法和使用场景,通过函数模板和类模板示例展示如何避免代码重复。详细讲解模板特化、可变参数模板、SFINAE等核心概念,并分析C++20引入的概念约束特性。文章还探讨模板元编程、CRTP等高级技术,以及模板代码组织的最佳实践。最后总结模板在泛型编程、编译时多态和零开销抽象中的关键作用,强调其作为现代C++核心特性在STL等库实现中的重要性。
2026-03-27 15:58:04
342
原创 0:内存可见性问题,2:共享数据的访问导致竞争条件(Race Condition)
本文摘要:文章探讨了const和volatile关键字在嵌入式系统开发中的应用,以及多线程编程中的竞争条件问题。在硬件寄存器访问中,const用于保护指针指向的数据或指针本身不被修改,而volatile确保编译器不对变量进行优化。通过三种典型场景(只读寄存器、配置寄存器和设备ID寄存器)展示了不同const组合的用法。在多线程方面,分析了竞争条件的产生原因及危害,并以OpenMP的reduction子句为例,说明了如何通过同步机制避免共享数据访问冲突。这些技术要点对嵌入式开发和并发编程具有重要指导意义。
2026-03-24 11:12:27
395
原创 C++/Python的“粘合剂”:PyBind11
PyBind11是连接C++算法库与PyQt界面的关键桥梁。它允许开发者用C++直接创建可被Python调用的模块,无需编写繁琐的C扩展。通过三步流程:编写C++包装代码、编译生成Python模块、前端调用,实现高效互通。其核心价值在于提升开发效率、保持C++性能优势,并实现前后端无缝集成,让优化的C++算法能通过用户友好的PyQt界面便捷调用,完成从核心算法到可用软件的最后一跃。
2026-03-24 10:53:29
219
原创 SWOT、版本号递增、静默降级
SWOT分析是一种战略规划工具,通过评估内部优势(S)、劣势(W)和外部机会(O)、威胁(T)来制定策略。其核心流程包括:明确分析对象、收集信息、头脑风暴和交叉分析(TOWS矩阵)。关键原则是区分内部可控因素(S/W)和外部不可控因素(O/T)。常见误区包括主观臆断、混淆内外因素和表述空泛。版本号递增遵循语义化规范,V0.x表示草案阶段,V1.0标志完成稿,后续版本反映内容修订程度。静默降级是分布式系统的容错策略,当非核心功能(如AI摘要)故障时,系统自动隐藏该功能而不影响核心流程和用户体验,需配合监控机制
2026-03-23 20:00:13
427
原创 计算机存储体系
计算机存储体系采用金字塔结构,基于局部性原理实现速度与成本的平衡。该体系分为寄存器、L1-L3缓存、主内存、SSD/HDD和网络存储等层级,速度从0.3ns到100ms不等,成本随速度降低而下降。缓存通过预取数据解决CPU与内存速度差,现代CPU缓存命中率超90%。内存作为易失性存储存放运行数据,外存则长期保存数据。优化建议包括编写缓存友好代码(提升空间局部性)和数据库设计采用缓冲池机制,将热数据保留在内存中以提高性能。
2026-03-18 22:24:17
383
原创 B/S和C/S架构在服务端接收请求
本文对比分析了C/S和B/S架构在服务端接收请求的核心差异。C/S架构通常采用自定义二进制协议和长连接,服务端直接监听TCP端口处理请求;而B/S架构基于HTTP/HTTPS协议,通过Web服务器接收无状态的短连接请求。两者在协议处理、连接管理、安全机制等方面存在显著不同。现代趋势显示两种架构正在融合,如WebSocket实现实时通信、微服务统一业务逻辑。实际应用中,应根据性能要求、部署环境等选择合适架构,或将二者结合使用,实现协议层与业务层的解耦。
2026-03-18 16:13:08
694
原创 C++基础语法3-析构函数
本文介绍了C++中size_t类型的特点和使用场景。size_t是表示大小、长度等非负整数的无符号类型,具有自动匹配指针大小的平台适配性。文章重点阐述了必须使用size_t的标准库函数参数和返回值场景,以及容器遍历时的正确用法。同时详细讲解了构造函数和析构函数的实现要点,包括RAII原则、异常安全处理和移动语义支持,强调了资源生命周期管理的重要性。最后简要介绍了左值和右值的核心概念及其关键特征。
2026-03-18 16:02:58
338
原创 C++链接并操作嵌入式数据库SQLite
SQLite是一个轻量级嵌入式数据库引擎,提供C语言API接口。在C++项目中有两种使用方式:直接调用C API或使用封装库如SQLiteCpp。基本操作包括打开数据库、执行SQL语句、预处理查询等。SQLite支持事务处理,具有零配置、跨平台等特点,数据库以单文件形式存储。相比MySQL等需要服务器的数据库,SQLite更加轻量级但功能完整,适合嵌入式应用和小型项目。编译时需要链接SQLite库及线程相关库,也可通过CMake管理依赖关系。
2026-03-17 23:03:31
391
原创 做数据并行优化
数据并行是一种将数据分割成多个子集,让多个处理单元同时执行相同操作的并行计算模式,其核心特征是"数据不同,操作相同"。OpenMP是一个共享内存并行计算API,通过添加编译指令(如#pragma omp parallel for)可将串行代码改造成并行程序。它采用Fork-Join执行模型,简化了多线程管理,特别适用于网格计算等数据并行场景。使用时需识别可并行循环,确保迭代独立性,并处理数据竞争问题。OpenMP能以最小代码改动实现计算任务的并行化,显著提升程序运行效率。
2026-03-17 15:50:50
798
原创 Visual StudioProfiler对工作流进行热点分析
摘要:在VisualStudio中使用性能探查器进行C++工程优化时,主要步骤包括:通过调试菜单启动CPU使用率分析,执行典型工作流采集数据,然后解读热点视图和调用树报告定位瓶颈函数。关键配置包括使用Release模式并生成调试信息(/DEBUG),确保能正确显示函数名而非内存地址。分析时重点关注高CPU占比的网格处理函数及调用路径,确定是算法问题还是被频繁调用的辅助函数导致性能下降。(149字)
2026-03-17 15:04:16
300
原创 C/S架构0
JSON是一种轻量级数据交换格式,广泛应用于Web开发中前后端数据传输。它具有纯文本、结构化和自描述性等特点,主要由对象和数组两种结构组成。JSON相比XML更简洁高效,已成为主流数据格式。在API设计中,JSON结构需与PRD需求严格对应,关注字段完整性、命名规范及数据类型。Swagger则是管理RESTful API文档的开源工具,通过可视化界面实现API设计、测试和协作,提升开发效率。在C/S架构中,后端若采用C++,前端通常搭配Qt等框架,通过自定义协议通信;而B/S架构中SpringBoot后端则
2026-03-17 11:12:44
393
原创 B/S架构0
本文对比了B/S架构与C/S架构的核心差异,重点分析了C++、Java和Python在Web后端开发中的特点。B/S架构基于浏览器,部署简单但性能受限;C/S架构需安装客户端,性能更强但维护成本高。后端开发中,C++适合高性能场景但开发效率低,Java(如SpringBoot)提供企业级解决方案,Python则适合快速开发。SpringBoot通过起步依赖、自动配置和内嵌服务器简化开发部署。文章还解释了可执行JAR与Windows EXE的区别,以及RESTful API的设计原则。整体比较了不同技术栈在开
2026-03-16 22:05:59
384
原创 C++基础语法1-引用
0)引用1) cout、cerr和clog的区别,指出cerr更适合输出错误信息;2) 函数声明与定义的最佳实践,建议将声明放在头文件(.h),定义放在源文件(.cpp);3) 引用的详细解释,包括其特性、用法和与指针的区别;4) 头文件守卫的用法;5) 宏定义的基本形式;6) 命名空间的使用注意事项;7) 迭代器范围构造函数的应用;8) 目标文件的概念;9) 函数默认参数的巧妙用法。通过代码示例展示了引用在变量交换、函数参数传递中的优势,以及默认参数实现多种输
2026-03-14 12:15:52
373
原创 C++流类继承关系
本文介绍了C++中的继承机制及其应用。首先讲解了ostream继承体系,说明std::ostream作为输出流基类,其引用可以绑定到cout、cerr、ofstream等派生类对象,实现多态输出。然后演示了多重继承的使用,通过打印机和扫描仪基类创建多功能一体机派生类。最后针对菱形继承问题,提出使用虚继承来确保派生类只保留一份共同基类的实例,解决重复继承问题。这些内容展示了C++继承机制在实现代码复用和多态性方面的强大功能。
2026-03-14 12:07:37
93
原创 雷达仿真0-FMCW技术
FMCW通过“牺牲”信号的简单性(从单频变为调频),换取了测距能力和高分辨率,使其成为现代雷达(特别是汽车雷达和无人机感知)的绝对主流技术。
2026-03-13 16:31:35
431
原创 SQL基础0
数据备份:在执行UPDATE或DELETE前,尤其是在生产环境,最好先备份数据或使用事务。WHERE子句是安全阀:对于UPDATE和DELETE永远先检查WHERE条件是否正确。可以先使用SELECT-- 先查询确认要操作的数据-- 确认无误后,再执行 UPDATE事务控制:可以使用开始事务,确认无误后COMMIT,有问题则ROLLBACK。命令:如果想快速删除表中所有数据-- 清空整个表,比 DELETE 快与DELETE不同,TRUNCATE不能加WHERE条件,且会重置自增ID。
2026-03-13 15:46:38
206
原创 C++基础应用0:文件读写fstream
C++文件操作主要通过<fstream>头文件实现,包含ifstream(读)、ofstream(写)和fstream(读写)三个核心类。文件操作需注意:1)文本模式使用<<和>>运算符,二进制模式使用read/write方法;2)必须检查文件是否成功打开;3)混合读写时需用seekg/seekp调整指针位置;4)大文件应分块处理并及时关闭。典型应用包括CSV文件处理、二进制数据存储和配置文件读写等,通过合理使用文件指针和错误检查机制可确保操作安全可靠。
2026-03-08 15:22:54
411
原创 C++基础语法0-指针
摘要:本文介绍了C++编程中的几个关键概念:1. 控制台程序暂停技巧:使用system("pause")保持输出窗口不关闭;2. 自增运算符区别:详细解析了前置++和后置++的操作顺序与结果差异;3. 内存管理机制:对比栈(自动管理)和堆(手动管理)的特点、使用场景及常见问题;4. 指针工作原理:通过内存地址类比解释指针操作,包括指针的指针应用;5. 数组实现方式:涵盖静态数组、动态数组和vector容器的使用方法,特别说明了二维数组的动态创建和释放流程。这些内容为C++基础编程提供了实
2026-03-04 16:51:22
612
原创 burpsuite安装与入门使用
本文简要介绍了Java环境和BurpSuite的安装配置流程。主要内容包括:1)安装Java并配置环境变量;2)安装BurpSuite抓包工具;3)详细说明BurpSuite的使用方法,重点介绍了代理设置、证书下载等配置步骤,使工具能够抓取HTTPS流量;4)演示了如何通过Forward放行请求或Drop丢弃请求来操控流量。文中还指出,未配置证书时BurpSuite只能抓取HTTP网站,配置后即可抓取HTTPS流量。最后提醒在抓包未放行时页面不会显示,需关闭抓包才能正常访问网站。
2025-06-07 14:46:35
356
原创 http头部注入攻击
可进行注入的http头,必然是与数据库有连接的。与数据库有连接,才能经过sql语句,修改后报错。请求头用于传递额外的信息,如浏览器信息、Cookie、内容类型等。HTTP(HyperText Transfer Protocol)请求由 。)中包含,用于发送数据(如表单数据、JSON、文件等)。在浏览器的开发者模式可以查看详细信息。请求头和请求体之间必须有一个空行(组成,多个头字段用换行符分隔。注意改动的是POST不是GET。),用于分隔头部和正文。仅在某些请求方法(如。点击信息,会有一个弹窗。
2025-06-06 16:04:25
2159
原创 COOKIE注入攻击
将admin改为abc' union select 1,2,group_concat(schema_name) from information_schema.schemata# 是服务器发送到用户浏览器并保存在本地的一小段数据(通常不超过 4KB)。浏览器会在后续请求中自动携带 Cookie,用于实现。 的形式传输,并可以附加多个属性(如过期时间、作用域等)。浏览器在后续请求同一网站时,通过 HTTP 请求头(::->帮助Web站点保存有关访问者的信息。)自动附带该网站的 Cookie。
2025-06-05 11:46:39
1255
原创 更新密码--二阶注入攻击的原理
用户注册的特殊账号会再更新密码的过程中引起二阶注入攻击。这种防御方式能同时防护一阶和二阶SQL注入攻击。,必须通过参数化查询处理。
2025-05-30 17:37:19
1330
原创 数据库暴露--Get型注入攻击
摘要:本文通过创建漏洞演示环境,详细分析了GET型SQL注入攻击的原理、实施步骤及防护方案。实验使用PHP+MySQL搭建存在注入漏洞的书籍查询系统,演示了通过闭合SQL语句、UNION查询等方式逐步获取数据库结构及敏感数据的过程。针对不同场景,文章提出两种防护方案:MySQLi参数化查询(使用bind_param)和PDO参数化查询(支持命名参数与类型绑定),重点解析了PDO方案通过强制类型转换、禁用预处理模拟等机制实现的安全防护。最后强调应结合输入验证、最小权限原则等防御措施构建多层次安全体系。
2025-05-30 17:04:44
1399
【网络协议分析】Ethereal抓包工具的Windows平台安装与使用教程:涵盖抓包、过滤及协议插件配置
2025-05-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅