- 博客(206)
- 资源 (20)
- 问答 (1)
- 收藏
- 关注
原创 C++面试4-sizeof解析
掌握`sizeof`的每个细节,相当于获得了窥探C++对象内存模型的X光机——既能诊断内存问题,又能优化性能瓶颈。在面试中,这不仅是技术能力的试金石,更是对候选人系统理解能力的终极考验。
2025-05-19 19:40:06
1037
原创 C++面试3——const关键字的核心概念、典型场景和易错陷阱
const关键字的核心概念、典型场景和易错陷阱,掌握const的每个细节,相当于拿到了C++类型系统的核按钮——既能保证代码安全,又能精准控制程序的每一块内存。
2025-05-19 14:05:50
373
原创 C++面试2——C与C++的关系
C与C++在编程范式和语法特性上存在显著差异。C语言是过程式编程的代表,强调算法流程,而C++支持多范式编程,包括面向对象、泛型和函数式编程。C++通过类实现封装、继承和多态,构建复杂的对象模型,而C只能通过结构体和函数指针模拟类似功能。在语法上,C++引入了模板、STL、智能指针等现代特性,提升了代码的抽象性和安全性。内存管理方面,C++通过RAII和智能指针实现半自动化管理,而C依赖手动操作。尽管C++在语法上部分兼容C,但两者在编程范式和工程实践上已发生本质变化。C适用于内核开发、嵌入式系统等场景,而
2025-05-18 20:15:00
1051
原创 C++面试1——C++程序员简历撰写指南(附模板)
本文为C++程序员提供了详细的简历撰写指南,包括核心结构、技术能力矩阵、项目经验、工作经历和教育背景的撰写要点。强调了简历中的技术栈分级、数字驱动、关键词植入和开源贡献的重要性,并提供了应届生和资深工程师的简历模板示例。此外,文章还列出了简历撰写时应避免的常见错误,如绝对化表述、模糊表达和技术栈堆砌,并建议根据目标公司调整技术侧重,以工程思维展现解决问题的能力。
2025-05-18 15:17:30
338
原创 Glibc内存管理:从原理到实战的深度解剖
Glibc的内存管理是一个充满妥协的战场:它在多线程性能与内存效率之间走钢丝,在快速响应与长期稳定之间求平衡。glibc的内存管理是平衡的艺术,malloc_trim如同外科手术刀——精准但危险。它既要应对多线程高频分配的性能需求,又要避免内存碎片引发的OOM(Out-Of-Memory)灾难。真正的系统级优化需从内存分配模式重构入手,配合现代分配器,方能在内存的刀尖上跳出完美舞步。每个线程拥有独立的arena,大内存(≥128KB)通过。:仅当堆顶存在足够大的连续空闲内存时,通过。
2025-05-07 09:23:14
559
原创 《CUDA:解构GPU计算的暴力美学与工程哲学》
CUDA 的诞生,宛如在 GPU 发展史上划下了一道分水岭。它不仅赋予了 GPU 走出图形处理的 “舒适区”,投身通用计算的 “新战场” 的能力,更是一场对计算资源分配与利用逻辑的彻底重构。在这场技术革命中,CUDA 以它犀利的架构设计和精妙的技术原理,重新定义了高性能计算的边界。
2025-05-04 12:37:54
920
原创 GPU软硬件架构协同设计解析
GPU的软硬件协同设计体现了垂直整合创新硬件层面通过SM的模块化、存储层次化、互连高带宽化构建并行计算基石;软件层面借助编程模型抽象、编译器智能优化、运行时动态调度释放硬件潜力;协同机制则体现在计算流水线深度定制、内存访问模式匹配、能效跨层优化等关键技术上。这种“硬件功能固化+软件灵活调度”的范式,使得现代GPU在AI训练、科学计算等场景实现百倍于CPU的能效比。未来随着Chiplet、存算一体等技术的成熟,软硬件协同将向更细粒度、更高智能的方向演进,持续突破计算系统的性能边界。
2025-04-21 16:48:17
984
原创 Wayland介绍
Wayland 是一种现代化的显示服务器协议,旨在替代传统的 X Window System(X11),为 Linux 和类 Unix 系统提供更高效、安全的图形显示管理。- 负责合成窗口、处理输入事件(鼠标、键盘等),直接通过 Linux 内核接口(如 DRM/KMS)管理显示。:客户端(应用)直接与 GPU 通信(如通过 OpenGL/Vulkan),减少中间层,提升性能。:专业工具(如 CAD)、游戏(输入延迟优化)和高级功能(色彩管理)仍需完善。:逐步取代 X11,成为 Linux 图形栈的标准。
2025-04-07 23:23:18
682
原创 Xorg内存管理机制深度解析
Xorg 的内存缓存机制是客户端-服务器协作、硬件加速与软件策略结合的综合体系。客户端未正确释放资源(如SDL未调用关键Xlib函数)扩展模块的资源管理缺陷(XRender、Composite等)驱动层的内存回收延迟(尤其是闭源驱动)开发者需结合协议分析(xtrace)、资源监控(xrestop)和驱动级调试(dmesg)进行系统性诊断。理解Xorg内存管理的内在逻辑,是优化图形应用性能的关键基础。
2025-04-06 23:59:17
1036
原创 Xorg 内存上涨的根源探究
X11 后端资源释放不彻底•观测证据xrestop显示每次窗口操作泄漏 4 个 Misc 资源,对应 XIC(输入上下文)、Colormap Entries(调色板条目)、WM Atoms(窗口管理器原子)、Event Masks(事件监听器)。•代码缺陷SDL 的未完全调用XDestroyIC等函数,导致 Xorg 误判资源仍被引用,无法进入可回收状态。Xorg 的内存上涨问题本质是特定负载模式下系统设计边界的显现,需通过客户端-服务端-驱动的协同优化解决。非必要避免频繁创建关闭窗口,如若需要则。
2025-04-06 23:36:30
729
原创 Xrestop介绍
是调试 Xorg 性能问题的实用工具,尤其适用于排查内存泄漏或资源占用异常的图形应用程序。通过实时监控 X Server 的资源分配,可以快速定位问题源头,辅助优化系统性能。,但专注于显示 X Server 的资源分配细节(如内存、窗口、Pixmap 等)。的命令行工具,类似于系统资源监控工具。
2025-04-05 11:25:59
515
原创 SDL多窗口多线程渲染技术解析
尽管在特定环境(如Linux + 特定驱动组合)下多线程Present可能暂时正常工作,但这种行为违背了SDL的跨平台设计哲学,可能在未来更新或更换硬件时引发难以调试的问题。对于高性能多线程渲染需求,更安全的做法是将**渲染命令录制与Present提交分离**,**规避窗口系统协议和图形驱动的线程安全隐患**,通过主线程协调实现帧同步。建议仅在以下场景使用此架构:- 纯 Linux 部署环境- 窗口数量较少(≤8)- 无需跨窗口资源共享对于跨平台或大规模窗口场景,尤其生产环境下,仍建议采用主
2025-03-30 20:59:02
440
原创 cppcheck使用
cppcheck是一个静态代码检查工具,支持c, c++ 代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。执行的检查包括:自动变量检查数组的边界检查class类检查过期的函数,废弃函数调用检查异常内存使用,释放检查内存泄漏检查,主要是通过内存引用指针异常STL 函数使用检查代码格式错误,以及性能因素检查。
2023-07-27 23:55:04
642
原创 protobuf踩过的坑
protobuf踩过的坑proto文件生成C++枚举没有那么干脆,不像C++原生枚举定义简洁变量命令不能包含_下划线- 开发者指南[翻译] ProtoBuf 官方文档(二)- 语法指引(proto2)[翻译] ProtoBuf 官方文档(三)- 语法指引(proto3)[翻译] ProtoBuf...
2019-04-20 10:04:59
3116
1
转载 C++/CLI问题集锦 FAQ
C++/CLI中的const literal initonly 友元C++/CLI中的constVisual C++并不允许在const对象上调用成员函数,除非该成员函数也被声明为const。 C++/CLI托管代码中,无法把任何类型的函数声明为const;但可以把一个对象声明为const;然而由于无法编写const函数,这种const对象也几乎没有办法进行操作。 ...
2019-01-05 16:34:52
717
转载 Effiective Debugging——通用的工具和技术
用Unix命令行工具对调试数据进行分析用Unix命令来获取、帅选、处理并汇总文本记录,从而实现对调试数据的分析 把Unix命令用管道连接起来,可以迅速完成很多复杂的分析任务掌握命令行工具的各种选项及习惯用法通过grep命令的各种选项对搜索的结果进行逐步帅选 对程序的标准错误端进行重定向,以便于分析 用tail-f命令来监控内容持续增加的日志文件用编辑器对调试程序时所需的数据进行浏...
2018-08-28 18:36:55
204
转载 Effective Debugging——通用的方法与做法
相信自己能够把问题调试好确信问题是可以追查并解决的 给调试工作留出足够的时间 安排好工作环境,是自己不受干扰 遇到难题的时候可以先睡一觉 不要彻底放弃 投入精力去学习环境、工具及知识高效地重现程序中的问题如果能够准确重现程序中的问题,那么我们的调试过程就得以简化 创建一个简短且自足的范例,以便重现程序中的问题 设法创建一套可以制作副本的执行环境 采用版本控制系统给特定的软...
2018-07-17 19:35:19
422
转载 Effective Debugging——宏观策略
通过事务追踪系统处理所有问题通过事务追踪系统处理所有问题 确保每项事务都能够以短小、自足而又正确的范例,精确地描述出该问题地重现方式 对事务进行分类,并根据每项事务的优先级与严重程度来安排工作。 通过事务追踪系统来记录进度。 在网上确切的查询你所遇到的问题,以寻找解决问题的灵感 把错误消息打上双引号,以便在网上准确地进行搜索 认真查看StackExchange系列网...
2018-06-29 15:40:06
373
原创 lua与C++交互
luaplusLuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。使用LuaPlus在C++项目中集成Lua脚本 luaJITluajit ffiluajit ffi 小结 nuaLuaBind LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有能力支持
2017-10-18 17:18:41
804
转载 SQLite加密
用开源的wxsqlite31、到SQLite官网http://www.sqlite.org/下载sqlite-amalgamation-XXXXXX.zip,它已经包含了所有的源文件,也不需要另外的辅助工具了,解压到某一目录,如Sqlite3。 2、如果你下的sqlite-amalgamation-XXXXXX.zip没有makefile,那就自己做一个project吧,在VS2008里新建一个空
2017-05-26 19:51:42
697
转载 C++模板的问题集锦
关于C++模板的链接错误问题前几天写了一个模版,按以前的习惯,把定义写在头文件中, 把实现写在cpp文件中。结果在编译的时候没有发生错误,但在连接的时候出现了找不到xxx的错误。一时之间不知道该怎么办才好,后来上网一查,自己再一想,唉,原来如此: 模版之所以为模版,就是可以容纳不同的类型嘛,所以它只有在指定了其类型的时候才会生成实际的代码,如果你只把模版的定义写在头文件中,那么你生成在使
2017-05-26 16:48:32
533
原创 搭建自己的wiki系统
搭建自己的wiki系统开源wiki很多,综合比较dokuwiki和mideawiki比较适合。关于各自详细介绍直接点链接。本人先用dokuwiki小试一把。搭建web服务Apache+PHP+mysql-windows下直接安装WampServer -linux下各自安装,文档网上很多。安装dokuwiki-下载dokuwiki -解压dokuwiki -拷贝dokuwiki到www目录下
2017-03-05 10:51:39
36641
2
原创 文件路径中转义符的问题
文件路径转义符引发的问题需求问题描述:文件路径在存储到数据库时‘\’就变没了,比如:“D:\abc\123.jpg”,经过C++语言的转义就变成“D:\abc\123.jpg”,在存到数据库里,这个过程mysql又会进行一次转义,结果‘\’就变没了。解决方案1.将’\’转换成”\\”C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,st
2016-11-03 10:59:19
12551
原创 TCHAR引起的DLL函数导出问题
问题来由: 代码库有两个版本,其中一个代码库里的某个功能想用第二个代码库里相同的功能,由于项目需要直接用第二个版本的 dll。由于第二个版本代码库的dll在vs编译设置方面与第一个版本的有所不同,导致导出的函数名不一致。不同点在对TCHAR的设置上,“配置属性->C++->语言” 的“将wchar_t配置成内置类型“,第一个设置为no ,第二个设置了yes。 两者导出的函数名有何不同? 差别在
2016-10-18 09:57:08
373
原创 Compiling erro C2061 ( identifier 'STAT_CHUNK')问题
Compiling erro C2061 ( identifier ‘STAT_CHUNK’)错误: [cpp] view plain copy print? error C2061: syntax error : identifier ‘STAT_CHUNK’ ………….. 解决:应该是版本的问题,检查你的项目目录下的
2016-09-23 17:10:54
1636
原创 CMake学习总结
什么是CMake?CMake的由来?做什么用的?怎么用?以及使用过程中遇到的一些问题。大家都是知道程序是由成百上千的.h,.cpp文件通过编译器生成的,那么大量的源码文件就需要项目工程来构建和管理。windows下自然是VS开发工具,linux下使用Qt Creator,eclipse等等,但是两个不同平台上面的项目构建不能相互移植,当然Qt Creator是跨平台的工具,已经帮我们解决了好多问题
2016-09-10 22:44:21
15846
原创 Qt画图
Qt画图有几个概念先要理清楚:QImage、QPixmap、QBitmap和QPicture。都是处理图像的类,有着各自的特点。 QImage优化了I/O操作,可以直接存取操作像素数据; QPixmap主要用来在屏幕上显示图像; QBitmap从QPixmap继承,只能表示两种颜色; QPicture是可以记录和重放QPainter命令的类。QImage提供了与硬件无关的图像表示方法,通过Q
2016-09-04 18:37:00
863
转载 关于hpp文件
hpp,顾名思义等于.h加上.cpp,在boost、Xerces等开源库中频繁出现。 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用pro
2016-08-15 17:04:12
3612
转载 QApplication与QCoreApplication
QApplication (GUI 程序中 有且仅有一个)QApplication 类 管理GUI程序的控制流和主设置。QApplication 包含主事件循环。所有来自窗口系统和其他源的事件将被处理和分配。它也处理程序的初始化,析构和提供会话管理。对于非GUI的用QCoreApplication 代替QApplication,它不依赖QtGui库。qApp是一个全局的指针,指向QApplicati
2016-07-03 00:14:38
14544
3
原创 glog使用
版本:glog-0.3.4 下载: https://github.com/google/glog http://download.csdn.net/detail/caowei880123/9565134编译: glog-0.3.4里面有vs2008的sln 打开sln直接编译就行了,没悬念.编译后生成: libglog.dll libglog.lib libglog_static.lib.
2016-07-01 17:36:40
4531
原创 C++开源log选用
C++比较有名的日志类库公有log4cpp 、log4cxx、 log4cplus、glog,其中log4cpp log4xx最近两年都没有更新了。只有log4cplus和glog在更新,因此在log4plus和glog二选一。glog的典型用法 LOG(INFO) << “Found ” << num_cookies << ” cookies”; 是线程安全的,宏展开后会等价于新建一个LogM
2016-06-30 15:00:07
3349
转载 学习OpenGL
openGL官网https://www.opengl.org/如何检测显卡类型和OpenGL版本? [OpenGL入门学习](http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html)** OpenGL在线书籍:Learn OpenGLOpenGL库深度剖析 & gl,glu,glut的区别OpenGL开发库的组成开发基于Open
2016-06-26 14:33:02
1658
SDL窗口绘制封装类+demo.zip
2025-04-27
SDL多窗口多线程渲染技术解析
2025-03-31
glog-0.3.4
2016-07-01
CPictureEx类
2011-03-19
glog不可跨dll项目使用
2016-11-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人