笔记
__网瘾少年
心之所向 素履以往 生如逆旅 一苇以航
展开
-
C++ 通过返回值的类型来确定调用哪个函数
class SqlObj final{public:template < typename Fn, typename... Args, typename = typename std::enable_if < std::is_assignable < std::function<typename std::result_of<Fn(Args...)>::type(Args...)>, typename std::.原创 2022-04-06 14:39:26 · 387 阅读 · 0 评论 -
WebAssembly (web端调用c++的dll)
WebAssembly (web端调用c++的dll)原创 2021-12-24 10:14:31 · 2584 阅读 · 1 评论 -
C++API 中文文档
https://www.apiref.com/cpp-zh/cpp/concepts.html原创 2021-06-05 16:50:53 · 995 阅读 · 0 评论 -
C++ explicit
class Obj { public: Obj(int a, int b) { _a = a; _b = b; } Obj(int a) { _a = a; } //explicit Obj(int a) //{ // _a = a; //} private: int _a; int _b; }; void fun(Obj o) { }int main(){ Obj oo = { 12 };//Obj{12} Ob..原创 2021-06-05 13:47:58 · 71 阅读 · 0 评论 -
C++ 通过一个字符串来创建一个已有的类对象
#include <iostream>#include <string>#include <map>using namespace std;typedef void* (*pCreateObject)(void);class ClassFactory{private: map<string, pCreateObject> m_classMap; ClassFactory() {};public: void* CreateObjectB.原创 2021-04-05 18:58:34 · 515 阅读 · 0 评论 -
Qt 用QScrollArea + QGridLayout 彷真一个listwidget(增加item时自动滚动到底部)
大概效果如上图相关代码部分如下所示Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); init(); connect(scrollArea->verticalScrollBar(), &QAbstractSlider::rangeChanged, this, &Widget::slider)...原创 2021-04-04 21:53:00 · 1264 阅读 · 0 评论 -
C++ 学习 运算类
原创 2021-03-14 20:27:46 · 82 阅读 · 0 评论 -
C++泛型编程学习 std::declval void_t
//判断是否有这种类型#define _HAS_TYPE_MEM_(parMTpNm)\template<typename T, typename U = std::void_t<>>\struct HTM_##parMTpNm: std::salse_type{}; \template<typename T>\struct HTM_##parMTpNm<T, std::void_t<typename T::parMTpNm>>:std.原创 2020-09-06 20:55:19 · 1027 阅读 · 0 评论 -
c++ (简单实现 list 与 find_if)
#include <iostream>#include <utility>using namespace std;namespace mylist{ template<typename T> struct list_node { explicit list_node(const T& x):data(x), next(nullptr), prev(nullptr) { } list_node* prev; list_n.原创 2021-03-07 17:30:20 · 458 阅读 · 0 评论 -
C++ 学习 (tuple)
#include <iostream>#include <utility>using namespace std;namespace tp1{ template<typename T, typename U = std::void_t<>> struct HasMemFunc : std::false_type { }; template<typename T> struct HasMemFunc<T, std::v.原创 2021-03-07 01:05:40 · 196 阅读 · 0 评论 -
c++模版学习(typelist)2021-03-05
namespace tplt{ //基本的操作接口 template <typename ... T> class typelist { }; template <typename TPLT> class front; template <typename fisrt, typename ...other> class front<typelist<fisrt, other...原创 2021-03-05 18:04:06 · 182 阅读 · 0 评论 -
C++ (策略)
#include <iostream>using namespace std;namespace _nmsap1{ template<typename T> struct SumFixedTraits; template<> struct SumFixedTraits<char> { using sumT = int; static sumT initValue() { return 0; } }; template<&.原创 2021-01-16 23:06:21 · 581 阅读 · 1 评论 -
git 工具的简单使用
第一步:拉取远程代码git clone ?第二步:查看本地分支和远程分支 1、cd 到工程目录下;? 2、git branch -al 查看本地和远程的所有分支。?成功看到了所有的分支: 其中master是本地分支,前面的星号*表示正在使用的分支?前面带有remotes的分支都是远程分支。第三步、将远程分支与本地分支进行关联 1、git pull origin maste...原创 2020-03-09 14:50:16 · 240 阅读 · 0 评论 -
Qt的容器类介绍
常用容器类简介表 类 简介 QList<T> 这是目前最常用的容器类。它存储了给定类型的值的一个列表,而这些值可以通过索引访问。在内部,QList使用数组来实现,以确保进行快速的基于索引的访问。可以使用QList::append()和QList::prepend()在列表的俩端添加项目,也可以使用QList:...原创 2019-05-18 00:19:48 · 288 阅读 · 0 评论 -
事件系统之Qt中的事件
事件是对各种应用程序需要知道的由应用程序内部或者外部产生的事情或者动作的通称;五种处理事件的方法:重新实现部件的paintEvent(),mousePressEvent()等事件处理函数。 重新实现notify()函数。 向QApplication对象上安装事件过滤器。 重新实现event()函数。 在对象上安装事件过滤器。...原创 2019-05-18 00:07:33 · 268 阅读 · 0 评论 -
Qt对象模型与容器类之正则表达式
正则表达式:正则表达式就是在一个文本中匹配子字符串的一种模式(pattern),它可以简写为regexp。一个regexp主要应用在以下几个方面:验证。regexp可以测试一个子字符串是否符合一些规范。 搜索。regexp提供了比简单字符串匹配更强大的模式匹配。 查找和替换。regexp可以使用一个不同的字符串替换所有匹配的子字符串。 字符串分割。regexp可以识别在哪里进行字符串...原创 2019-05-18 00:04:18 · 293 阅读 · 0 评论 -
Qt中事件 信号 简单理解
事件: QEvent信号:signal每触发一个事件会放到一个事件队列中, 处理事件的时候从事件队列中获取; 从代码中看它的每一个事件都是有返回值的, true or false信号处理是立即回调的,也就是一个信号产生后,他上面所注册的所有槽都会立即被回调。这样就会产生一个递归调用的问题,比如某个信号处理器中又产生了一个信号,会使得信号的处理像一棵树一样的展开...原创 2019-05-19 02:09:23 · 682 阅读 · 0 评论 -
C/C++ 二级指针与一级指针 (作用在参数传递时 VC)
以前也经常用到指针, 最近一段时间用着用着就懵了, 做下笔记, 以防以后用到会出现这种情况, 本程序在VC上面测试用下面是C程序:#include <stdio.h>typedef struct T_{ int a; struct T_* next;}TB, *TP;void test_malloc_1(void *p)//不成功{ p = (void*...原创 2019-05-24 02:25:47 · 453 阅读 · 0 评论 -
写一个常用makefile
DIR_INC = ./includeDIR_SRC = ./srcDIR_OBJ = ./objDIR_BIN = ./binDIR_LIB = ./lib#wildcard : 扩展通配符#notdir : 去除路径#patsubst :替换通配符SRC = $(wildcard ${DIR_SRC}/*.c) OBJ = $(patsubst %.c,${DIR_OB...原创 2019-05-15 15:13:03 · 236 阅读 · 0 评论 -
值得推荐的C/C++框架和库
值得学习的C/C++语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz...转载 2019-05-29 23:01:04 · 284 阅读 · 0 评论 -
属性系统、对象树和拥有权、元对象系统
属性系统:Qt提供了强大的基于元对象系统的属性系统,可以在运行Qt的平台支持标准C++编译器。要在一个类中声明属性,该类必须继承自QObject类,而且还要在声明前使用Q_PROPERTY()宏:Q_PROPERTY(type name(READ getFunction[WRITE setFunction]|MEMBER memberName [(READ getFunction | W...原创 2019-05-17 23:56:22 · 230 阅读 · 0 评论 -
shellCode 公式
E8 E9后的地址公式如下:X = 真正要跳转的地址 - E8这一条指令的下一行指令等价于X = 真正要跳转的地址 - (eip + 5)E8 XE9 XBYTE ShellCode[]={0x6A,0x00,0x6A,0x00,0x6A,0x00,0x6A,0x00,0xE8,0x00,0x00,0x00,0x00,0xE9,0x00,0x00,0x00,0x0...原创 2019-05-26 20:21:19 · 504 阅读 · 0 评论 -
windows C/C++ 线程安全(二)跨进程的线程控制之于互斥体
承接上一篇:https://blog.csdn.net/uVarAndMethod/article/details/90359480DWORD WaitForSingleObject( HANDLE hHandle, // handle to object DWORD dwMilliseconds // time-out interval ...转载 2019-05-20 01:23:35 · 576 阅读 · 0 评论 -
windows C/C++ 线程安全(一)临界区
承接上面一篇讲了线程创建部分:https://blog.csdn.net/uVarAndMethod/article/details/90358925临界区的使用 1、创建CRITICAL_SECTION: CRITICAL_SECTION cs; 2、在使用前进行初始化 InitializeCriticalSection(&am...转载 2019-05-20 01:12:24 · 430 阅读 · 0 评论 -
windows C/C++ 线程创建
创建线程 HANDLE CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, // 安全属性 通常为NULL SIZE_T dwStackSize, // 参数用于设定线程可以将多少地址空间用于它自己的堆栈 // 每个线程...转载 2019-05-20 01:03:03 · 1482 阅读 · 0 评论 -
GetModuleHandle
HMODULE WINAPI GetModuleHandle(_In_opt_LPCTSTR lpModuleName);用来获取函数模块的句柄 ImageBase如果参数为空为,当前应用程序的ImageBase原创 2019-05-19 14:21:17 · 838 阅读 · 0 评论 -
汇编学习(X86 VC)
寄存器:32 16 8EAX 0 EAX AH ALECX 1 ECX CH CLEDX 2 EDX DH DLEBX 3 EBX BH BLESP 4 ESPEBP 5 EBPESI 6 ESIEDI 7 EDImov eax, dword ptr ds:[0x...原创 2018-01-06 22:41:05 · 632 阅读 · 0 评论 -
linux 中shell 命令 查看当前目录下是否包含某个字符串的文件
查看当前目录下是否包含字符串的文件find .|xargs grep -ri "ECDSA_SIG" -l原创 2019-05-19 01:43:10 · 3047 阅读 · 0 评论 -
PE 结构中 DIRECTORY 这个数组中每个元素意义----- 一张图
原创 2019-05-19 01:39:58 · 324 阅读 · 0 评论 -
QT MFC 控件随窗口大小改变而改变
//Qt重载这个函数void resizeEvent(QResizeEvent *ev){ // ui.*->resize(width(), height()-ui.*->y());}//MFC 重载void OnSize(UINT nType, int cx, int cy){}原创 2019-05-19 01:25:49 · 236 阅读 · 0 评论 -
qt 之拖放操作-打印文档
{ ui->setupUi(this); QAction *acton_print = new QAction("打印",this); QAction *acton_printPreview = new QAction("打印预览",this); QAction *acton_pdf = new QAction("生成pdf",this); co...原创 2019-05-19 00:56:40 · 238 阅读 · 0 评论 -
qt 之拖放操作-自定义拖放操作
自定义拖放操作案例---在应用程序主窗口里面拖动图片显示到任意位置如下几步骤:鼠标按下事件 获取图片 自定义MIME类型 将数据放入QMimeData中 将QMimeData数据放入QDrag中 给原图片添加阴影 执行放下操作 拖动进入事件 拖动事件 放下事件 { ui->setupUi(this); setAcceptDrops(t...原创 2019-05-19 00:47:55 · 767 阅读 · 0 评论 -
Qt 之拖放操作-拖放打开文件
常用MIME类型数据处理函数 测试函数 获取函数 设置函数 MIME类型 HasText() text() setText() text/plain hasHtml() html() ...原创 2019-05-19 00:41:27 · 397 阅读 · 0 评论 -
qt 对话框
对话框分为模态和非模态;1、模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭。this->setModal(true);2、非模态对话框,当被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互。this->setModal(false);常见对话框QColor color = Q...原创 2019-05-18 23:31:39 · 190 阅读 · 0 评论 -
为什么C++中的成员函数,不用传参就能访问类中成员?因为编译器为它传递了一个this指针;
为什么C++中的成员函数,不用传参就能访问类中成员? 因为编译器为它传递了一个this指针, 从我们自己写的代码的角度是完全看不出的;成员函数的调用约定为__fastcall:通过汇编可看出:obj.funL();00B81446 lea ecx,[obj] //把当前的对象的地址(即this指针)给ecx,通过ecx传递给函数内部00B81449 call ...原创 2018-05-08 06:12:34 · 789 阅读 · 0 评论 -
windows C/C++ 内核对象、事件对象、信号量
承接上一篇:https://blog.csdn.net/uVarAndMethod/article/details/90360838 1、内核对象: 进程、线程、文件、文件映射、事件、互斥体等等 2、事件内核对象的创建 HANDLE g_hEvent = CreateEvent(N...转载 2019-05-20 01:43:08 · 666 阅读 · 0 评论 -
windows C/C++ 线程安全(三)(互斥+同步)
承接上一篇:https://blog.csdn.net/uVarAndMethod/article/details/90364461互斥: 当多个线程访问同一个全局变量,或者同一个资源(比如打印机)的时候,需要进行线程间的互斥操作 来保证访问的安全性. 临界区、互斥体、事件和...转载 2019-05-20 12:15:33 · 555 阅读 · 0 评论 -
CreateProcess的做了什么
CreateProcess的做了什么 BOOL CreateProcess( LPCTSTR lpApplicationName, // ...转载 2019-05-20 12:26:24 · 313 阅读 · 0 评论 -
PE 中NT头 遍历
LPVOID ReadPEFile(LPSTR lpszFile) { FILE *pFile = NULL; DWORD fileSize = 0; LPVOID pFileBuffer = NULL; //打开文件 pFile = fopen(lpszFile, "rb"); if(!pFile) { printf(" 无法打开 EXE ...原创 2019-05-26 13:56:32 · 410 阅读 · 2 评论 -
jni 构建java对象,并设置对象中的值 java对象与C对象对应
jni 构建java对象:Point 对象java对象与C对象对应//javapublic class Mat{ public final long nativeObj;//地址 这个地址又可以传到jni中强转过后继续使用 public Mat() { nativeObj = m_Mat(rows, cols, type);//c++创建...原创 2019-05-17 02:52:08 · 587 阅读 · 0 评论