自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bobowen的博客

请君加油!

  • 博客(288)
  • 收藏
  • 关注

原创 Windows C++:MoveFile、MoveFileEx、MoveFileWithProgress、CopyFile、CopyFileEx。

文件管理是一个至关重要的领域,涉及文件的创建、移动、复制和删除等操作。MoveFileMoveFileExCopyFile和CopyFileEx,这些函数在实现高效的文件操作时,提供了丰富的功能和灵活性。MoveFile是最基本的文件移动函数,允许开发者轻松地将文件或目录移动到指定位置或重命名。尽管功能简单,但它的有效性在于易用性,适合进行快速的文件操作。然而,它的局限性在于无法处理已存在的目标文件,这为更复杂的应用场景带来了挑战。为了解决这个问题,MoveFileEx。

2024-09-25 22:44:27 1260

原创 C++ 宏定义 ## 令牌粘合运算符

在 C++ 中,令牌粘合运算符(##),也称为令牌拼接运算符或令牌连接运算符,是一种用于宏定义的预处理器运算符。它的主要功能是在宏展开过程中,将两个令牌拼接在一起形成一个新的单一标识符或令牌。这个运算符使得可以在宏中动态地构建标识符,从而生成更加灵活的代码结构。通过以上复杂的使用案例,你可以看到##令牌粘合运算符在 C++ 中具有强大的应用场景。它能帮助开发者自动生成代码、简化重复任务,特别是在处理动态生成标识符、自动化对象创建和管理方面非常有用。然而,使用##

2024-09-02 00:09:42 1066

原创 C++:Github开源7.8Kstar的线程池介绍

不仅帮助我理解了C++线程池的内部机制,还让我掌握了多线程编程中的一些重要技巧,如任务调度、线程同步和资源管理。在未来的编程实践中,我可以将这些知识应用到更复杂的多线程项目中,提高程序的性能和稳定性。通过学习这个线程池的实现,我深刻体会到,良好的代码设计对于解决复杂问题、提升软件质量至关重要。

2024-08-27 23:00:01 1491

原创 std::ifstream read函数读取细节

std::ifstream read是 C++ 标准库中的类的成员函数之一,它用于从文件流中读取一块数据到缓冲区buffer中。底层的实现涉及文件流的管理、文件指针的移动、内存操作等多个方面。

2024-08-20 21:41:54 2707

原创 Windows Visual Studio 指定应用程序的执行环境

我们可以看到不同子系统选项的作用和应用场景,从控制台应用程序到内核模式驱动,再到EFI环境下的驱动开发,每种子系统都有其独特的用途。选择合适的子系统有助于确保程序在正确的环境中执行,并且满足预期的功能需求。

2024-08-19 00:44:38 986

原创 跨平台C++ Log:spdlog的使用方法总结

容器支持spdlog的to_hex函数支持多种标准容器,如等,甚至支持原生指针或迭代器范围。格式标志:通过格式标志,开发者可以控制十六进制输出的样式,例如是否大写、是否显示字节分隔符、是否显示 ASCII 字符等。通过这种方式,你可以在一个日志记录器中同时使用多个 sinks,并为每个 sink 定制不同的日志级别和格式。这样可以满足不同的日志记录需求,比如将详细的调试信息保存到文件中,同时在控制台上只显示更为重要的日志消息。

2024-08-11 15:48:12 3935

原创 ZeroMQ(五):独占模式,C和C++

ZeroMQ的独占模式(Exclusive Pair Pattern)是一种设计模式,旨在确保两个通信对端(PAIR)在同一时间段内独占地访问共享资源,防止其他对端干扰。它通过限制并发访问,确保资源的安全性和一致性。在高并发场景中,独占模式有助于避免数据竞争、死锁和不一致性问题。ZeroMQ通过多种套接字模式(如PAIR、REQ/REP)和线程同步机制,支持独占模式的实现,保证消息在严格的单对单通信通道中传递,从而提高系统的稳定性和可靠性。

2024-08-10 00:11:48 1200

原创 ZeroMQ(四):管道模式,C和C++。

ZeroMQ 的管道模式是一种特殊的消息传递模式,通常用于将任务或消息从一个生产者传递到多个消费者。消息一对多传递:单个生产者可以将消息发送到多个消费者。负载均衡:消息在消费者之间进行负载均衡,以确保每个消费者都能接收到均衡的消息量。下游消费者处理:消费者处理消息,并且可以将处理后的消息传递给下游消费者,形成消息处理链。在 ZeroMQ 中,管道模式由PUSH和PULLPUSH 套接字:生产者使用PUSH套接字发送消息。消息按照负载均衡的方式发送到连接的PULL套接字。PULL 套接字:消费者使用。

2024-08-09 00:02:39 1219

原创 ZeroMQ(三):发布-订阅模式,C和C++。

发布订阅模式是典型的异步模式,通过ZeroMq来看看他的原理与实现。简称 Pub-Sub,是一种消息传递模式。允许发送者(发布者)和接收者(订阅者)之间解耦。它广泛应用于消息队列、事件驱动系统和实时通知等场景。

2024-08-08 23:35:31 1251

原创 ZeroMQ(二):请求-响应模式,C和C++。

使用 ZeroMQ 实现请求-响应模式可以带来显著的性能提升和灵活性。它不仅支持高性能的消息传递,还提供了丰富的特性,如自动重连、负载均衡、多语言支持等,使得它成为构建高性能、可靠的分布式系统和微服务架构的理想选择。

2024-08-04 03:32:14 1244

原创 ZeroMQ(一):通信模式介绍(请求-回复、发布-订阅、管道、独占对等)

引用官方的说法: “ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”

2024-08-04 02:19:55 1647

原创 C++: 类图基础介绍、类图绘制

类图

2024-07-28 23:57:37 2130

原创 C++: 函数指针

函数指针是C/C++中的一个强大工具,允许我们在运行时灵活地调用函数。它的原理基于函数的内存地址和指针的基本概念,通过编译器生成的代码实现函数调用。函数指针在很多高级编程场景中非常有用,例如回调机制、动态链接库和命令模式等。理解函数指针的工作原理有助于我们编写更加灵活和高效的代码。

2024-07-28 01:37:18 1226

原创 Windows系统的注册表盘点、大全

Windows系统的注册表盘点、大全

2024-07-24 23:36:57 1797 1

原创 windows注册表:开机自启动程序配置

在Windows操作系统中,注册表是一个关键的数据库,它存储了系统和应用程序的设置和选项。设置开机自启动程序通常涉及到对注册表的修改。以下是一些关键点和注意事项。

2024-07-24 23:11:30 12353

原创 windows:加载dll时的DLLMain介绍

在实际开发中,通常情况下,系统自带的初始化和清理机制(如全局变量初始化和析构、自动内存管理等)已经足够。然而,有些特定场景下,需要开发者自己在DllMain中处理和。以下是一些可能的情况:线程本地存储(TLS)当需要在每个线程中维护独立的数据(如线程本地存储),必须手动进行线程初始化和清理。例如,多线程日志记录、线程特定的配置等。示例:每个线程都有独立的日志文件句柄或配置对象。资源管理当需要在DLL加载时分配全局资源(如文件句柄、网络连接)并在卸载时释放这些资源时,必须手动进行初始化和清理。示例。

2024-07-19 01:01:54 1982 1

原创 C++:进度条bar设计(附代码)

进度条是工具类软件的灵魂,可以缓解使用者的焦虑。下面探讨简单的进度条设计。元素:显示进度的符号、进度条长度、颜色、标题。

2024-07-16 23:59:23 456

原创 C++ 模板:全特化和偏特化

在C++中,模板特化(template specialization)是一种强大的功能,允许对模板进行特定情况下的处理。模板特化主要分为全特化和偏特化两种。

2024-06-25 23:17:39 678

原创 C++ 字符串流化 stringstream

位于头文件中,是的类型定义。它是一个模板类,继承自,可以同时进行输入和输出操作。可以看到在各种实际编程任务中都有广泛的应用。不论是格式化输出、数据解析、生成动态内容,还是处理多行文本、生成命令行字符串等,都提供了灵活且强大的解决方案。这些示例展示了的多种妙用,希望能帮助你更好地理解和应用这一强大的工具。

2024-06-21 01:34:55 1293

原创 Linux GCC & G++:各个版本发行年份及新增特性盘点

全称主要功能:GCC 是一个编译器套件,支持多种编程语言,包括 C、C++、Fortran、Ada、Go 等。命令行工具gcc全称主要功能:G++ 是 GCC 的一个前端,用于编译 C++ 程序。命令行工具g++

2024-06-20 00:33:20 5877

原创 Windows C++:父子进程通信利器:匿名管道(Anonymous Pipe)

匿名管道在父子进程之间的简单高效通信、低开销、隐私和安全性、句柄继承的便利性以及与标准输入输出的集成等方面具有显著优势。它们是适用于同一台计算机上进程间通信的有效工具,特别适用于父子进程间需要快速和高效数据传输的场景。

2024-06-16 23:18:29 1338

原创 Windows C++: 剪切板内容获取

获取Windows用户的剪切操作是部分程序的需求,我们同样可以利用这个功能做一个小工具来记忆曾经的复制内容。我们可以直接监控,但是程序必须阻塞,也可以开线程来监控。

2024-06-09 02:44:58 830

原创 阅读《HTTP权威指南》:重温HTTP基础。

HTTP权威指南:重温HTTP基础。以下是如何在Windows C++中使用函数的示例代码: 第四章、连接管理 客户端请求:服务器响应: 第七章、缓存 第十章、HTTP-NG

2024-05-26 04:56:45 885

原创 windows C++:进程间通信高实时性、安全、数据量大的通信方式(一)文件映射 (File Mapping)

文件映射通过将文件的部分或全部内容映射到一个或多个进程的虚拟地址空间,使得这些进程可以像访问普通内存一样访问文件内容。创建或打开文件:进程首先需要创建或打开一个文件。创建文件映射对象:通过调用 Windows API 函数,创建一个文件映射对象。这个对象表示文件的映射视图。映射视图到内存:使用函数将文件映射对象的一个视图映射到进程的地址空间中。

2024-05-15 01:07:46 1420

原创 AES对称加密算法原理、C++代码示例

高级加密标准(AES,全称:Advanced Encryption Standard)是一种对称加密算法,由美国国家标准与技术研究院(NIST)于2001年发布。它取代了数据加密标准(DES),成为许多政府、企业和机构广泛使用的标准加密方法。AES (Advanced Encryption Standard) 是一种对称加密算法,由 NIST 于 2001 年发布,取代了 DES。它通过多轮数学操作将明文转换为密文,密钥长度为 128、192 或 256 位。主要步骤包括字节代替、行移位、列混合和轮密钥加。

2024-05-12 16:55:54 1232

原创 Windows C++: 提升代码权限,运行前、运行时。

关联和区别:通过修改应用程序的清单文件,可以使程序在启动时默认要求管理员权限。与运行时动态获取权限的方法不同,清单文件的方法是固定和全局的。优点简单直接,不需要额外代码。一次配置后,程序始终要求管理员权限。缺点如果不需要所有操作都以管理员身份执行,此方法可能过于强制。使用场景:适合于所有操作都需要管理员权限的程序,例如系统工具或安装程序。这些方法从全局到局部、从简单到复杂提供了不同的获取管理员权限的方案。

2024-05-12 05:52:30 2671

原创 Windows C++ 读取、修改配置文件.ini

INI文件(初始化文件)是一种简单的文本文件,用于存储程序的配置设置。它们通常用于Windows操作系统环境中,但也可以在其他操作系统中使用。INI文件以简单的键值对格式存储数据,使其易于读取和修改。这种文件格式非常适合存储程序的首选项和配置信息。INI文件由多个节(Section)组成,每个节可以包含多个键(Key)和相应的值(Value)。节通过方括号[]包围的标题来标识,键和值之间通常使用等号分隔。[Settings]Theme=Dark[User]在这个例子中,Settings和User。

2024-05-12 01:24:56 660

原创 winhex工具,将文件转换为16进制数据放入代码。

在本文中,我们详细探讨了使用 WinHex 工具的实际应用,该工具能够读取文件内容并以16进制格式显示。WinHex 不仅提供了一种直观的方式来查看和编辑二进制文件,而且还支持将这些数据导出为C语言代码,极大地方便了程序开发和数据分析。我们通过一个具体的示例展示了如何使用 WinHex 打开一个文件,并将其内容作为16进制数据导出。接着,利用 C++ 代码,我们将这些数据写入到新的文件中,确保新文件与原文件内容完全一致,体现了数据处理的精确性和高效性。通过本文的讲

2024-05-11 22:42:50 1782

原创 【GO】“time“ 包基础介绍

1. 时间和日期的表示基本时间获取时间组件的访问时间戳的使用2. 时间的构造基本的时间构造构造不同时区的时间使用不同的时间单位时间和日期的边界3. 时间格式化与解析时间格式化(Format)时间解析(Parse)4. 时间的比较、计算时间比较时间加减复杂的时间计算使用 Duration 类型5. 时间间隔和定时器时间间隔(Duration)使用 time.Sleep 实现延时使用 time.Tick 创建定时器使

2024-04-28 01:39:16 1037

原创 【GO】命令行解析 os 与 flag

【GO】命令行解析 os 与 flag

2024-04-27 00:52:24 688

原创 【Go】匿名函数与闭包

【Go】匿名函数与闭包

2024-04-26 23:59:29 1021

原创 【Go】关闭通道 用例展示

在 Go 语言中,close函数用于关闭一个通道,表明没有更多的数据将被发送到这个通道。这是一个重要的操作,因为它可以帮助接收方理解发送方何时停止发送数据,从而可以安全地停止从通道接收更多数据。关闭通道后,通道中已存在的数据仍然可以被接收,但不能再向该通道发送数据。

2024-04-26 01:02:48 926

原创 【Go】通道作为函数参数

Go 语言中,通道(channel)是实现协程(goroutine)之间的通信的重要工具。通道可以安全地在多个协程之间传输数据。将通道作为函数参数传递是一种常见的模式,它可以帮助设计清晰且模块化的并发程序。下面我将详细介绍几个实例来展示这一概念。 这段代码定义了主函数,首先通过 创建了两个缓冲通道 和 ,它们的类型都是可以传递字符串的通道。缓冲大小为1,意味着通道可以在阻塞之前存储一个元素。 函数接收两个参数:一个只能发送数据的通道 和一个字符串 。函数的作用是将 发送到 通道

2024-04-23 00:30:09 1219

原创 Windows COM技术:COM介绍、代码演示。

件对象模型(COM)是一个由微软开发的软件架构,旨在促进不同软件组件之间的二进制交互。COM定义了一种方法,使得在各种编程语言中编写的组件可以相互通信,不仅在同一个程序内部,而且可以在不同的计算机上。以下是对COM基础知识的更详尽的解释:

2024-04-21 03:21:54 3459

原创 【Go】通道:缓冲通道和非缓冲通道

非缓冲通道是Go语言中一种实现goroutine间同步通信的强大机制。通过确保每个发送操作都必须有一个对应的接收操作同时准备好,非缓冲通道可以精确控制数据的即时传递和goroutine的执行顺序。这种通道不仅是数据传输的渠道,也是协调并发操作的关键工具。通过非缓冲通道,Go程序能够以直接且同步的方式处理并发任务,从而保持高效和可靠的执行流程。简而言之,非缓冲通道是Go并发编程中不可或缺的同步神器缓冲通道在Go语言中是一种允许在没有接收方准备好时进行数据传输的通信机制。

2024-04-16 00:25:19 869

原创 【Go】 编码解码基础,encoding标准库:base64、binrary、json、xml、gob、hex、pem、csv

在 Go 语言中,通过encodingASN.1:适用于处理复杂的数据结构,常用于安全和网络协议中。Base64:用于在文本中表示二进制数据,广泛用于数据编解码。Binary:直接以二进制形式读写固定大小的数据,用于低层数据操作。JSON:处理现代网络通信中普遍使用的数据格式,易于数据交换。XML:用于标记化的数据表示,常见于配置文件和网络服务。CSV:用于读写简单的表格数据,广泛应用于数据导入导出。GOB:Go 特有的二进制格式,优化了同语言间的数据结构传输。HEX。

2024-04-16 00:10:17 1048

原创 【Go】原子并发操作

Go语言中,原子并发操作是非常常用的,确保协程环境中对资源的共访是安全的。Go的包提供了一系列底层的原子性操作函数,允许你在基本数据类型上执行无锁的线程安全操作。使用原子操作可以避免在并发访问时使用互斥锁(mutexes),从而在某些情况下提高性能。

2024-04-15 22:07:07 904

原创 【Go语言】go语言简单的变量声明和结构体使用

go基础

2024-04-12 00:32:14 1158

原创 windows C++ 进程遍历、线程遍历模板。后附模板代码

进程遍历是windows软件必备需求,从安装到软件运行再到卸载我们或许都需要知道其他进程的信息。

2024-04-02 23:52:43 1968

原创 银河麒麟安装回退至GCC5.4.0 添加镜像源地址并设置其优先级。问题已解决

问题:因为软件依赖低版本的gcc,而新版银河麒麟gcc默认时高版本,考虑到软件适配应该考虑最低版本的麒麟系统,需要将gcc降级。过程中遇到问题,无法直接找到gcc5.4.0。

2024-03-30 16:39:21 888

VNC Viewer windows端远程工具

直接能使用的VNC Viewer。 介绍:VNC Viewer是一款远程桌面软件,它允许用户在不同的计算机或设备之间进行远程连接和控制。VNC代表“Virtual Network Computing”(虚拟网络计算),是一种远程桌面协议,它可以让用户通过网络远程控制另一台计算机。 使用VNC Viewer,用户可以在任何地方远程控制其他计算机。例如,您可以使用VNC Viewer从家里的电脑连接到您在办公室的计算机,或者从笔记本电脑连接到您的台式机。 VNC Viewer有多种不同的版本,可以在多个平台上使用,包括Windows、Mac、Linux、iOS和Android。该软件非常易于使用,只需要输入要连接的计算机的IP地址和端口号即可。此外,它还提供了多种安全选项,以确保远程连接是安全的。 总之,VNC Viewer是一款非常实用的远程控制工具,适用于个人和商业用途。

2023-02-16

windows子进程获取父进程id,并获得父进程生死状态

windows子进程获取父进程ID 具体参考:https://blog.youkuaiyun.com/weixin_44120785/article/details/127569712?spm=1001.2014.3001.5502

2022-10-28

空空如也

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

TA关注的人

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