## 1、条件变量 当线程需要等待特定事件发生、或是某个条件成立时,可以使用条件变量`std::condition_variable`,它在标准库头文件``内声明。 ```c++ std::mutex mut; std::queue data_queue; std::condition_variab ...
PE结构是`Windows`系统下最常用的可执行文件格式,理解PE文件格式不仅可以理解操作系统的加载流程,还可以更好的理解操作系统对进程和内存相关的管理知识,DOS头是PE文件开头的一个固定长度的结构体,这个结构体的大小为64字节(0x40)。DOS头包含了很多有用的信息,该信息可以让Windows... ...
通过gcc或msvc,clang等编译器编译出来的C++源文件是.o文件。在windows上也就是PE文件,linux为ELF文件,在这一步中,调用其它代码文件中的函数的函数地址是未知的(00000),等到链接之后才会替换掉函数地址的 [linux,windows 可执行文件(ELF、PE)](ht ...
在正常情况下,要想使用`GetProcAddress`函数,需要首先调用`LoadLibraryA`函数获取到`kernel32.dll`动态链接库的内存地址,接着在调用`GetProcAddress`函数时传入模块基址以及模块中函数名即可动态获取到特定函数的内存地址,但在有时这个函数会被保护起来,... ...
[TOC](qt初识2) 前言: 我可没说放弃 ```csharp Base class中的三个选项: QMainWindow:主窗口类,包括菜单栏、工具栏、状态栏。 QWidget:可以创建一个空白的窗口,是所有界面组件的基类。 QDialog:对话框类。 Clang代码模型: help->Abo ...
算法学习笔记,记录容易忘记的知识点和难题。数组实现单链表、双链表、栈、单调栈、队列、单调队列、KMP、字典树 Trie、并查集、数组实现堆、哈希表(拉链法、开放寻址法、字符串前缀哈希法)、STL常用容器 ...
## 1、使用互斥量 在C++中,我们通过构造`std::mutex`的实例来创建互斥量,调用成员函数`lock()`对其加锁,调用`unlock()`解锁。但通常更推荐的做法是使用标准库提供的类模板`std::lock_guard`,它针对互斥量实现了RAII手法:在构造时给互斥量加锁,析构时解锁 ...
## 预编译头文件 在 Visual Studio 中创建新项目时,会在项目中添加一个名为 pch.h 的“预编译标头文件”。 (在 Visual Studio 2017 及更高版本中,该文件名为 stdafx.h)此文件的目的是加快生成过程。 应在此处包含任何稳定的标头文件,例如标准库标头(如 ) ...
>5月份时曾部署上线了C++的Web服务器,温故而知新,本篇文章梳理总结一下部署流程知识; >- 最初的解决方案:https://blog.csdn.net/BinBinCome/article/details/129750951?spm=1001.2014.3001.5501 >- 后来的解决方案 ...
## 1、线程的基本管控 包含头文件``后,通过构建`std::thread`对象启动线程,任何可调用类型都适用于`std::thread`。 ```c++ void do_some_work(); struct BackgroundTask { void operator()() const; } ...
[TOC]([Qt开发探幽(二)]浅谈关于元对象,宏和Q_ENUM) # [Qt开发探幽(二)]浅谈关于元对象,宏和Q_ENUM ## 前言 最近在开发的时候,我自己写了一套虚函数。这也是我第一次写这么大一个框架,遇到了一些有点莫名其妙的问题(也不能算莫名奇妙,只能说有点玩不明白),详情可以见 [[ ...
算法学习笔记,记录容易忘记的知识点和难题。快速排序、归并排序、整数二分、浮点数二分、高精度运算、一维前缀和、二维前缀和、一维差分、二维差分、双指针算法、位运算、整数离散化、区间合并 ...
在笔者前几篇文章中我们一直在探讨如何利用`Metasploit`这个渗透工具生成`ShellCode`以及如何将ShellCode注入到特定进程内,本章我们将自己实现一个正向`ShellCode`Shell,当进程被注入后,则我们可以通过利用NC等工具连接到被注入进程内,并以对方的权限及身份执行命令... ...
## 2023年8月23日 ### #include `cstdio` 有两个函数 printf,scanf 用于输出和输入 ```txt int : %d float : %f double : %lf char : %c long long : %lld ``` `iostream` 有 cin ...
**本文为[李你干嘛](https://www.cnblogs.com/liniganma)原创,转载请注明出处:[Pybind11绑定C++抽象类(DLL接口)](https://www.cnblogs.com/liniganma/p/17666063.html)** # 摘要 假设我们将DLL中 ...
Boost ASIO(Asynchronous I/O)是一个用于异步I/O操作的C++库,该框架提供了一种方便的方式来处理网络通信、多线程编程和异步操作。特别适用于网络应用程序的开发,从基本的网络通信到复杂的异步操作,如远程控制程序、高并发服务器等都可以使用该框架。该框架的优势在于其允许处理多个并... ...
前言 AC自动机(\(Aho\ Corasick\ Atomaton\))有着一种 \(KMP\) 的思想,所以在学习之前建议先学一下 \(KMP\)。同时还需要了解一下 \(Trie\) 树(建议去看一下 oi-wiki 上的字典树) 问题描述 给定一个字符串 \(S\) 和 \(n\) 模式串, ...
## 问题描述 现有$n$个正整数组成的序列$a$,从中删除一个数,得分是其本身同左、右相邻的数的乘积, 然后再在剩余的整数中继续删除,注意**序列两端的数字a1和an是不能删除的**,求这样删除$n-2$个整数后的最大得分。 例如有四个数$3 、4、5、6$,按照先$4$后$5$的删除顺序,其得分 ...
### 什么是 $Lyndon$ 串 我们定义一个串是 $Lyndon$ 串,当且仅当这个串的**最小后缀**就是这个串本身。 也就是说 $Lyndon$ 串等价于这个串是它的所有循环表示中**字典序最小**的。 ### $Lyndon$ 分解定义 将一个字符串 $S$ 分解为若干个子串:$s_1s ...
# 平衡树 平衡树就是为了实现一类元素在线性结构中动态变化的功能所需要的数据结构。 平衡树是一种基于二叉搜索树的数据结构。 满足:左儿子 $<$ 根 $<$ 右儿子。 也就是一切小于根节点的在左边,一切大于根节点的在右边。 这样想要查找一个节点的位置时间复杂度就是 $O(\log n)$。 平衡树主 ...