自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (2)
  • 收藏
  • 关注

原创 Python终端彩色打印包colorma使用方法

本文介绍了Python的colorma库使用方法。首先需导入并初始化colorma,推荐设置autoreset=True防止颜色污染后续文本。该库提供Fore设置前景色(文字颜色)、Back设置背景色、Style控制文本样式。基本用法是在打印文本前添加颜色代码,支持字符串拼接和f-string两种格式。文章展示了如何单独或组合使用颜色和样式,并提供了遍历显示所有可用颜色和样式的示例代码。特别说明Style样式效果不明显,不推荐使用。

2026-04-13 11:31:21 28

原创 VSCode C/C++函数Ctrl+鼠标点击无法跳转的解决方法

如何解决VSCode中IntelliSense引擎禁用问题:进入设置(Ctrl+,),搜索"C_Cpp.intelliSenseEngine",将其值改为"default"(推荐)或"TagParser"(轻量模式)。这一设置调整可恢复代码智能提示功能,提升开发效率。

2026-04-11 15:34:28 46

原创 C/C++ AddressSanitizer内存错误检测工具使用方法

AddressSanitizer(ASan)是Google开发的内存安全检测工具,用于C/C++程序中检测内存泄漏、缓冲区溢出等运行时错误。它通过编译时插入检查代码,在运行时监控内存访问。使用方法:GCC使用-fsanitize=address -fno-omit-frame-pointer -g -O1编译标志,MSVC使用/fsanitize=address。ASan能精准定位非法内存操作,平衡检测精度与性能,是C/C++开发中重要的内存安全防线。

2026-04-01 15:52:43 45

原创 Git远端修改过账号密码,本地无法推送的解决方法

【摘要】Git远端修改密码后本地推送失败,报错"HTTP Basic: Access denied"。原因是本地Windows凭据管理器仍保存旧密码。解决方法:进入控制面板>用户账户>凭据管理器,删除对应的Git凭据记录。重新执行git push时会弹出认证窗口,输入新密码即可完成推送。该问题常见于密码修改后未同步更新本地凭据的情况,通过清除旧凭据并重新认证即可解决。

2026-03-25 14:02:41 43

原创 Ubuntu创建新用户后终端异常处理

摘要:Ubuntu系统使用useradd创建新用户时,若终端出现"$"符号、命令无法高亮、退格/补全键失效等问题,原因是默认shell被设为sh(dash)。解决方法为修改/etc/default/useradd文件,将SHELL=/bin/sh改为SHELL=/bin/bash,后续新建用户将默认使用bash,解决上述异常。该问题源于默认shell配置差异,调整后即可恢复正常终端功能。(149字)

2026-03-05 17:18:01 57

原创 Git基础命令使用笔记

Git基础操作指南摘要 本文介绍了Git的基本配置与常用操作,包括:1)用户信息配置(用户名和邮箱);2)仓库初始化与克隆(init/clone);3)工作流管理(工作目录、暂存区、HEAD);4)文件添加与提交(add/commit);5)远程仓库关联与推送(remote/push);6)分支操作(checkout/merge);7)拉取更新(fetch/pull);8)状态查看(status/log)。重点说明了本地配置与远程账户的独立性,以及推荐使用SSH协议克隆更稳定。适合Git初学者快速掌握版本控

2026-02-27 15:58:30 252

原创 C/C++ OpenSSL获取证书公钥并打印

摘要:该代码片段演示了如何从X509证书中提取公钥并打印其内容。首先使用X509_get_pubkey()获取公钥对象,然后创建BIO输出通道指向标准输出。通过EVP_PKEY_print_public()函数将公钥信息以可读格式输出,包括密钥类型(如RSA)、模数(Modulus)和指数(Exponent)等参数。最后释放相关资源,包括BIO对象和公钥对象。示例输出展示了2048位RSA公钥的完整信息,包含十六进制格式的模数和指数值(65537)。

2026-02-22 15:20:34 90

原创 C语言独立线程周期性执行特定任务

摘要:本文展示了使用pthread_cond_timedwait实现定时任务的代码示例。与sleep不同,该方法在等待期间不会独占线程资源。通过创建线程、初始化条件变量和互斥锁,实现了每2秒执行do_task()的定时功能。代码包含线程创建、时间等待和任务执行等关键步骤,展示了高效的线程定时任务实现方式。

2026-01-27 09:14:03 42

原创 Linux可执行程序依赖库打包脚本

这是一个用于收集程序依赖库的bash脚本。脚本首先检查指定程序是否存在,然后创建目标目录。通过ldd命令列出程序依赖库,过滤系统库后,将找到的库文件复制到目标目录。使用前需修改PROGRAM(程序路径)和DESTINATION(打包路径)变量。执行后会显示复制过程,并提示所有依赖已复制到目标目录。适用于需要打包程序依赖库的场景。

2026-01-21 10:58:57 45

原创 VS Qt错误:无法解析的外部符号 “public: virtual struct QMetaObject const * __cdecl XXX::metaObject(void)

摘要:项目中出现Qt编译错误是由于直接添加的Qt代码未被正确识别,导致未生成moc中间文件。解决方法:先注释掉Q_OBJECT宏重新生成项目,再恢复宏并重新编译,即可在输出目录看到生成的moc_XXX.obj文件。该方法通过强制触发moc编译过程解决了外部符号缺失问题。

2026-01-07 16:09:11 275

原创 C/C++ Makefile基础模板

这是一个简单的Makefile文件,用于编译和测试动态链接库。主要功能包括: 定义编译参数(CC/CFLAGS/LIBS)和目标文件(TARGET/TEST_TARGET) 提供以下构建目标: all:默认目标,编译动态库和测试程序 clean:清理编译生成的文件 test:运行测试程序 install:安装动态库到系统目录 使用gcc编译动态库(.so)和测试程序,支持线程库(-lpthread) 包含必要的依赖关系和编译选项(-Wall -g -fPIC等)

2025-12-18 15:39:08 119

原创 MySQL终端常用命令

摘要:本文介绍了MySQL数据库的基本操作命令,包括终端登录(mysql -uusername -p)、查看数据库列表(show databases)、选择数据库(use db_name)、显示数据表(show tables)以及查看表结构(desc table_name)。这些命令涵盖了从连接到查看数据库内容的完整流程,是MySQL初学者需要掌握的基础操作。

2025-12-17 12:55:04 214

原创 Linux tcpdump抓包实践(以http为例)

本文介绍了使用tcpdump捕获HTTP/HTTPS流量的基本方法。主要包括:1)捕获所有接口的80/443端口流量并保存为pcap文件;2)捕获特定IP地址的进出流量;3)使用Wireshark查看捕获的数据包。关键命令示例展示了如何指定网络接口、输出文件、端口号及IP地址等参数。这些命令适用于网络流量分析、调试等场景,捕获结果可通过Wireshark进行可视化分析。

2025-12-16 19:07:06 495 1

原创 C/C++ OpenSSL提取与格式化证书颁发者/主题信息

本文介绍了使用OpenSSL库提取X.509证书颁发者(issuer)和主题(subject)信息的代码实现。两个函数分别通过X509_get_issuer_name()和X509_get_subject_name()获取证书信息,使用BIO内存缓冲区格式化输出,以逗号分隔各字段(如OU、O、CN等)。示例输出格式为"Issuer:OU=GlobalSignRootCA-R3,O=GlobalSign,CN=GlobalSign"和"Subject:OU=GlobalSignR

2025-12-12 15:29:49 137

原创 C/C++ OpenSSL自适应格式解析证书二进制字节流

摘要:该代码实现了PEM和DER格式证书的自适应解析功能。程序首先尝试PEM格式解析,失败后转为DER格式解析,最后尝试Base64编码的DER格式解析。主要包含三个函数:base64_decode()用于Base64解码,parse_certificate()实现三种证书格式的自动识别解析,main()函数完成文件读取和证书信息打印。代码使用OpenSSL库函数,能处理.crt(PEM)和.cer(DER)两种常见证书文件格式,并输出证书颁发者信息验证解析结果。该实现具有格式自适应性,适用于不同编码格式的

2025-12-11 16:13:42 267

原创 MSVC编译器(cl)常见编译命令

摘要:本文介绍了使用cl.exe编译C++程序的基本方法。默认情况下,编译单个文件(如main.cpp)会生成a.exe,使用/Fe选项可指定输出文件名(如myapp.exe)。对于多文件项目,可同时编译多个源文件(如main.cpp和utils.cpp)。还展示了其他编译选项的用法,包括宏定义(/D)、包含目录(/I)、库路径(/LIBPATH)和链接库文件。这些命令适用于Windows环境下使用cl.exe进行C++程序编译和链接的场景。

2025-12-10 14:02:47 246

原创 Python Pandas多列合并成一长列(扁平化)

本文介绍了Pandas中三种数据扁平化方法:melt()按变量名和值两列重组数据,concat()垂直拼接多列,stack()将多列转为单列。测试数据显示melt()保留原列名信息,concat()和stack()仅保留数值。三种方法各有特点,适用于不同的数据扁平化需求。

2025-11-29 16:24:14 533

原创 OpenCV ColorMap与灰度图彩色可视化

摘要:针对灰度图像中像素差异较小时难以区分的问题,OpenCV的applyColorMap方法可通过彩色映射提升可视化效果。该方法常用于热图、混淆矩阵等场景,示例代码展示了如何将灰度热图转换为彩色热图(使用JET色图)。不同色图类型可参考OpenCV官方文档中的ColorMaps参数。彩色映射能显著提高人眼对图像细节的辨识度。

2025-11-26 17:10:13 288

原创 Windows状态栏时间显示到秒的设置方法

本文介绍如何在Windows状态栏显示秒数时间显示。通过修改注册表(新建ShowSecondsInSystemClock项并设为1),然后重启资源管理器即可实现。但需注意,修改后时间可能不够精确,可通过同步时钟功能获得精确时间。该设置适用于抢票等需要精确计时的场景。

2025-11-06 16:36:41 703

原创 C/C++ char类型字符串直接赋值与分配内存赋值的区别

本文介绍了三种C++字符串赋值的实现方式:1)直接赋值将指针指向只读内存区的常量字符串,不可修改;2)堆内存分配通过malloc/new申请可修改内存,需手动释放;3)栈数组自动分配可修改内存,无需显式释放。三种方式在内存区域、修改权限和生命周期管理上存在差异:栈数组最便捷但空间有限,堆分配灵活但需手动管理,直接赋值最简单但不可修改。示例代码展示了各方式的声明、修改和输出操作。

2025-11-05 17:23:05 229

原创 CredentialProvider交互式登录实现

文章摘要:Windows CredentialProvider插件开发中,默认ICredentialProviderCredential接口无法实现交互式登录验证。微软提供了IConnectableCredentialProviderCredential接口,通过实现Connect方法可在GetSerialization前执行自定义交互逻辑。开发者可使用IQueryContinueWithStatus参数设置验证提示信息,并支持用户取消操作。文中给出了指纹验证的代码示例,展示了进度提示和取消处理的方法。(1

2025-10-24 17:27:29 484

原创 CredentialProvider登录方法调用逻辑分析

本文深入分析了Windows Credential Provider的核心接口与登录验证流程。首先将接口分为Credential和Provider两类,前者管理凭据字段和事件响应,后者负责用户管理和场景设置。通过调试跟踪获取了详细的方法调用栈,依次解析了实例创建、场景设置、用户枚举、UI初始化等关键方法。重点阐述了凭据验证的三个核心阶段:用户交互触发SetSelected方法、验证处理通过GetSerialization方法、结果反馈由ReportResult方法完成。文章指出该接口存在文档不完善、调用逻辑

2025-10-24 13:38:11 1062

原创 CredentialProvider多用户登录实现

本文分析了微软CredentialProvider样例插件在多用户环境下仅显示单个用户登录UI的问题。通过定位代码发现,该插件仅对索引值为0的第一个用户构建了登录凭据。解决方案包括:1)将单一凭据对象改为向量存储;2)修改枚举凭据方法,为每个用户创建凭据实例;3)调整凭据数量获取方法;4)修改凭据获取方法以返回对应索引的凭据;5)更新资源释放逻辑。修改后的代码实现了在所有用户登录界面显示自定义凭据UI的功能,解决了多用户环境下的显示问题。

2025-10-21 16:49:57 458

原创 Here Document的格式及使用方法

HereDocument是Linux/Unix shell中处理多行文本的语法结构,通过"<<标记"定义文本块,常用于向命令传递多行参数。其典型应用是自动生成配置文件,如示例脚本使用cat<<EOF将配置内容通过tee写入/etc/myapp.conf。关键点:1)标记(如EOF)界定文本范围;2)只处理标记间的文本;3)避免转义字符提高可读性。该技术简化了脚本中多行文本的处理,在配置管理等场景中非常实用。

2025-10-15 16:16:16 415

原创 CredentialProvider提供的UI控件与使用方法

本文介绍了CredentialProvider提供的9种UI控件及其使用方法。这些控件通过CREDENTIAL_PROVIDER_FIELD_TYPE枚举定义,开发者只能使用预设控件而不能自定义。文章以开源样例代码为例,展示了如何通过common.h文件配置控件组合,并强调必须保留SFI_NUM_FIELDS标识字段数量。特别说明了部分控件(如提交按钮和链接文本)可以通过指定GUID参数改变显示样式,如独立显示或按钮形式。文末列出了可用的GUID定义供开发者参考使用。

2025-10-15 12:41:29 652

原创 PWSTR/LPWSTR与std::wstring的相互转换

本文介绍了Windows编程中的宽字符字符串类型PWSTR/LPWSTR和C++标准库的std::wstring。PWSTR/LPWSTR定义为wchar_t*指针,用于处理Unicode宽字符;std::wstring是专为宽字符设计的字符串类,支持多语言字符处理。文章演示了两者的基本用法,并说明了它们之间的转换方法:PWSTR可直接构造std::wstring,而std::wstring可通过取首元素地址转为PWSTR。最后指出,若非适配Windows接口,推荐使用功能更丰富的std::wstring,

2025-10-13 16:28:04 273

原创 CredentialProvider基本概念、个人理解及吐槽

微软的CredentialProvider(凭据提供者)接口是用于开发第三方登录认证插件的官方框架。该接口允许开发者集成自定义认证方式(如指纹、人脸识别),但存在诸多问题:命名晦涩难懂(如将简单变量类型复杂化重定义)、文档不完善(缺乏图示和宏观解释)、参考资料匮乏、界面自定义性差(仅支持预置控件组合,无法修改外观或使用第三方控件)。开发者普遍反映该接口设计糟糕,学习门槛高,与Linux开发体验形成鲜明对比。

2025-10-09 17:26:37 307

原创 DebugView使用方法

DebugView是微软开发的系统调试工具,用于捕获本地或远程计算机的调试输出信息(包括TRACE和OutputDebugString输出)。它支持Windows 2000至11系统,无需调试器即可实时显示内核和Win32应用调试数据,特别适用于无法直接调试的场景(如CredentialProvider等DLL程序)。使用方法分为本地模式(直接运行捕获)和远程代理模式(通过IP连接虚拟机等远程主机)。该工具提供日志记录、筛选和监控功能,相比WinDbg等工具更轻量,适合基础调试需求。类似工具包括DbgShe

2025-09-30 14:56:01 749

原创 C/C++预定义宏与调试日志输出模板

本文介绍了基于C/C++预定义宏的调试日志输出宏模板设计。文章提供了四种实用模板:1)基础调试输出宏,包含文件名、行号和函数名;2)带时间戳的调试输出宏;3)文件日志输出模板(需自定义路径);4)带时间戳的文件日志模板。这些模板利用__FILE__、__LINE__等预定义宏,通过条件编译(#ifdef _DEBUG)实现调试模式控制,可帮助开发者快速定位程序错误并记录运行日志。文中特别强调了文件日志模板需要手动指定输出路径的安全设计。

2025-09-29 10:23:04 302

原创 C/C++常见的预定义宏与基本使用方法

C++预定义宏是编译器在预处理阶段自动定义的标识符,主要用于调试和环境信息获取。常用调试宏包括:FILE(当前文件名)、LINE(当前行号)、FUNCTION/func(当前函数名)。其中__func__是标准宏,而__FUNCTION__是编译器扩展宏,不同编译器实现可能不同。其他较少使用的宏包括__DATE__(编译日期)和__TIME__(编译时间)。这些宏通过提供源代码位置信息,帮助开发者进行错误定位和调试工作。

2025-09-26 15:40:52 387

原创 Visual Studio C/C++函数/方法使用Doxygen格式注释

本文介绍了在Visual Studio中快速插入Doxygen格式注释的方法。VS默认使用XML注释格式(///开头),而许多C/C++库更常用Doxygen格式(/**开头)。通过安装DoxygenComment插件,开发者可以在函数上方输入/**回车或/*!来自动生成Doxygen注释。该插件支持自定义注释标签格式,用户可在工具选项中修改模板,如将\param改为@param等参数标记。文中提供了三种注释格式(XML、Doxygen默认、Doxygen自定义)的代码示例对比,展示了如何为函数添加说明、参

2025-09-24 17:27:02 598

原创 GUID与Visual Studio下GUID的创建

GUID是一种算法生成的全局唯一标识符,包含时间戳和机器信息等随机参数保证唯一性。手动修改可能破坏其唯一性,导致数据库冲突等问题。Windows平台广泛使用GUID标识注册表、接口、数据库等对象。在Visual Studio中可通过"工具>创建GUID"快速生成所需格式的GUID并复制使用。

2025-08-29 16:05:39 304

原创 C++线程外部终止线程

摘要:本文介绍了一种使用C++标准库中的std::atomic标志安全终止线程的方法。当需要在不终止进程的情况下停止特定线程时,可通过外部设置atomic<bool>标志位,线程内部在关键位置检查该标志位实现有序退出。该方法解决了多线程共享资源的原子访问问题,相比直接终止线程更安全可靠。文中提供了示例代码并指出需在耗时函数前添加标志检查,以确保及时响应终止请求。这是实现线程外部终止的一种基础方案。

2025-08-22 15:10:22 396

原创 C++ 日志输出函数模板(基于Qt实现)

【代码】C++ 日志输出函数模板(基于Qt实现)

2025-08-05 10:42:55 179

原创 make编译遇到 make[2]: *** 没有规则可制作目标“*.ts 问题的解决方法

ts文件为qt框架的翻译文件,需要使用Qt框架下的lrelease程序处理,原因应该是本地没有安装包含lrelease相关的Qt包,或者安装的版本不匹配等。使用apt list命令检查系统是否安装了qt4-linguist-tools或者qttools5-dev-tools包,如果未安装则使用apt install进行安装,安装完后重新make或者先cmake ..再make。

2025-08-01 09:11:45 383

原创 Linux ssh服务安装、启动与开机自启

摘要:本文介绍了在Linux系统中安装、启动和配置SSH服务的完整步骤。首先使用sudo apt install openssh-server命令安装SSH服务,接着通过systemctl命令启动服务并查看状态(显示active表示运行中)。最后设置SSH服务开机自启,使用sudosystemctl enable ssh命令完成配置。整个过程涵盖了SSH服务的安装、运行状态检查和系统启动时自动加载的关键操作。

2025-07-29 15:35:02 379

原创 Could not find a package configuration file provided by “DtkCMake“错误解决方法

(2) 涉及编译开发的库为后缀名带dev的,有以上结果可知当前安装了不同版本的dtk dev相关库,卸载dtk相关的所有dev库,再一个一个安装并使用cmake在卸载,最终确定匹配的依赖库,此处依赖的为libdtkcore-dev与libdtkcore-bin。错误分析:没有找到dtk相关库的.cmake文件,可能原因是未安装dtk相关库、或者安装的库版本与所需不匹配、再或者安装了多个版本的dtk库。(1) 先使用"apt list libdtk* | grep 已安装"命令确定已安装的dtk库情况。

2025-07-28 16:42:21 600

原创 Linux系统下使用apt下载系统组件对应版本的源码

摘要:本文介绍了在Linux系统中获取特定版本程序源码的方法。当GitHub开源版本与系统实际使用版本不一致时,可通过apt source命令从deb-src源下载对应版本源码。操作步骤包括:1)确保/etc/apt/sources.txt中deb-src源已启用;2)使用apt source <完整程序名>下载源码。以统信UOS系统的dde-control-center为例,成功获取到5.7.36.4-1版本源码。注意apt source不能使用通配符匹配程序名。该方法解决了开源版本与系统版本

2025-07-24 17:16:22 627

原创 Linux deb程序包下载、解压、打包与安装

本文介绍了deb程序包的基本操作流程:1)使用apt-get download命令下载deb包;2)通过dpkg-deb -R命令解压deb包到指定目录;3)使用dpkg-deb --build命令将修改后的程序文件夹重新打包为deb文件,需确保包含DEBIAN/control等必要文件;4)最后通过dpkg -i命令安装deb程序包。文章以UOS系统下的dde-control-center为例,详细说明了各步骤的具体操作方法和注意事项,为Linux系统下的deb包管理提供了实用指南。

2025-07-24 15:04:41 2077

原创 Linux上使用apt-file查找编译时缺失的依赖库

摘要:本文介绍了在Linux开发中遇到依赖库缺失问题的解决方法。当出现"fatal error: xxxxxxx.h: 没有那个文件或者目录"错误时,可以使用apt-file命令定位缺失的依赖库。通过执行"apt-file search xxxxxxx.h"命令,可以查找包含该头文件的开发包。文章以具体报错为例,演示了如何查找"com_deepin_daemon_accounts.h"对应的开发包为libdframeworkdbus-dev,并可通

2025-07-14 20:12:36 328

VTK图形图像开发进阶及随书代码

本书主要介绍了VTK的基础知识与开发技术,可帮助VTK开发者从入门到进阶。快速进入项目实战,同时资源中打包了随书代码可以供开发者参考。

2019-01-22

boost库帮助文档--中文chm版

该文件为boost库chm版中文帮助文档,版本为boost1.41,其目录结构明确,内容详尽,可谓boost库开发必备电子书籍,希望对使用boost库开发的人员有所帮助。

2017-09-25

空空如也

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

TA关注的人

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