自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

caowei880123的专栏

技术追求卓越 梦想创造未来

  • 博客(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

原创 SDL调试记录

SDL调试

2023-02-28 11:10:37 272

原创 随手一记。

1.gdk 中含有nvml ,但比较老了,新的nvml已经集成到cuda sdk中

2021-08-17 18:47:32 298

原创 protobuf踩过的坑

protobuf踩过的坑proto文件生成C++枚举没有那么干脆,不像C++原生枚举定义简洁变量命令不能包含_下划线![在这里插入图片描述](https://img-blog.csdnimg.cn/20201114100029477.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Nhb3dlaTg4MDEyMw==,size_16,color_FF

2020-11-14 10:01:47 1181

原创 通过NVML获取GPU信息

之前有使用NVAPI获取gpu信息参考文章用NVAPI获取GPU信息官方文档但有些显卡不支持,好像专业显卡计算卡检测不到,比如T4;并且只支持windows平台NVSMI :nvidia-smi.exe 工具 windows下查看显卡信息,包括温度、显存占用。。。NVML 开发接口在CUDA开发包nvml文件夹中有demo,接口包含nvml.h 和 nvml.lib,...

2019-12-10 14:44:27 2747

原创 学习python imutils透视变换

python imutils透视变换将梯形校正为方形Python+Opencv4点仿射变换imutils--图像处理工具包在opencv基础上对一些方法进行了再次加工,使这些方法更加简单易用,包括 translation, rotation, resizing, skeletonization, and displaying Matplotlib images 等。github主页: ...

2019-11-16 18:33:42 796

原创 C++ 11 std::async 使用问题

使用std::async遇到的异常问题1.crash 在std中 thread 和 condition_variable相关的地方2.导致线程卡住vs2013下使用没问题,升级到vs2015后出现#include "stdafx.h"#include <stdarg.h>#include <thread>#include <fut...

2019-08-06 10:36:20 1591

转载 Protobuf使用总结

Protobuf学习google protobuf安装与使用protobuf c++入门ProtoBuf 官方文档深入 ProtoBuf - 简介[翻译] ProtoBuf 官方文档(一)- 开发者指南[翻译] 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

转载 Sqlite C++ wrapper

 reference:https://srombauts.github.io/SQLiteCpp/

2018-07-04 22:57:46 889

转载 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

原创 VLC donet 下开源库总结

nvlcvlc.donetmeta.vlclibvlcnet

2017-09-07 17:07:51 850

转载 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

windows下NSIS不受2G大小限制的绿色安装包

windows下NSIS不受2G大小限制的绿色安装包

2025-04-29

SDL窗口绘制封装类+demo.zip

基于SDL3封装支持多线程窗口绘图,本示例为windows下基于SDL3实现多线程窗口绘图Demo,源代码可跨平台,linux下编译对应的第三方库即可;目录中包含opencv、sdl3、ttf开源库

2025-04-27

SDL多窗口多线程渲染技术解析

尽管在特定环境(如Linux + 特定驱动组合)下多线程Present可能暂时正常工作,但这种行为违背了SDL的跨平台设计哲学,可能在未来更新或更换硬件时引发难以调试的问题。对于高性能多线程渲染需求,更安全的做法是将渲染命令录制与Present提交分离,规避窗口系统协议和图形驱动的线程安全隐患,通过主线程协调实现帧同步。

2025-03-31

智能指针的对象池模板ShareObjectPool

智能指针的对象池,带索引的目标池、目标管理;仅头文件,模板类,直接包含include可使用

2025-03-25

C++线程池源代码,支持C++11,仅头文件直接引用

1.头文件直接引用,轻量快捷;2.通过任务队列的方式丢进线程池中执行

2025-03-12

glog-0.3.4

google-glog 0.3.4 repository moved from code.google.com/p/google-glog to github.com/google/glog fixes for latest MSVS add libc++ support fix build issue in demangle.cc add callback for OpenObjectFileContainingPcAndGetStartAddress add StrError and replace posix_strerror_r call fix VC build by adding GOOGLE_GLOG_DLL_DECL style fix for C++11 reduce dynamic allocation from 3 to 1 per log message attempt to improve mingw-w64 support support unordered_(map|set) by stl_logging

2016-07-01

XML data bindings with gsoap

XML data bindings with gsoap, 个人备份使用,

2015-10-16

C#访问gsoa服务

C#开发客户端,gsoap开发服务端,C#调用gsoap的服务。

2015-10-14

CPictureEx类

PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特别推崇的是可以做出动画,而且轻而易举,确实很COOL。

2011-03-19

Clibpdf 编译好的静态库

CLibPdf编译好的静态库 包括#include "cpdflib.h" #pragma comment(lib,"cpdf.lib")

2011-03-15

text2pdf 程序源代码

text转pdf 的程序,是利用开源项目Clibpdf

2011-03-15

进程间通信——剪贴板

描述进程间通信 通过剪贴板来实现的一个例子 运行程序,然后打开一个记事本直接粘贴就可以看到效果了

2011-01-06

进程间通信——匿名管道

描述进程间通信,通过匿名管道的方法来实现的一个例子,仅供大家参考

2011-01-06

SQLite入门学习

SQLite入门学习的简单教程,仅供初学者

2010-12-06

ffmpeg开发手册

FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。

2010-11-25

异或加密算法C 文件加密

主要是对文件 进行加密,对字符串加密 仅供参考

2010-10-29

office2003的VBA参考文档

主要是对word对象、excel对象、ppt对象进行编程的函数介绍

2010-10-29

ackSkin个性化皮肤教程及例子

ackSkin个性化皮肤教程及例子 只通过vb实现的

2010-09-18

毕业论文 数据结构算法动态演示

毕业论文 数据结构算法动态演示 在VC6.0环境下

2010-07-22

VC++小游戏 弹球游戏

VC++小游戏 弹球游戏 bricks

2010-05-20

迷宫游戏(VC++)

用VC++编写 迷宫游戏 程序加可执行文件

2010-05-20

时钟C——图形动画技术

在TC下实现图形动画的一个实例,时钟的全屏图形动画

2010-04-09

VC C#.net图像处理

VC C#.net图像处理 讲解详细,原理剖析的清楚

2009-12-22

长整数四则运算 数据结构课程设计

长整数四则运算 数据结构课程设计 自己写的源代码,仅供大家参考1

2009-06-10

PS制作和常用快捷键

PS制作和常用快捷键,是自己精心整理的 ,应该很适合大家,仅供大家参考,谢谢!

2009-04-24

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

TA关注的人

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