- 博客(155)
- 资源 (20)
- 收藏
- 关注
原创 Linux的静态库和动态库
静态库静态库命名规则静态库文件命名为libxxx.alib为固定前缀xxx为库的名字,库名字内容长度自己定。注意库的名字和库文件名字是两个东西.a为固定的库文件后缀静态库的制作与使用静态库代码的编写//math.hclass CMath{public: CMath(); ~CMath(); static int add(int a, int b); static int sub(int a, int b); static int mul(i
2021-01-03 23:45:51
14
原创 Linux的SOCKET编程
网络中进程之间如何通信进程通信的概念最初来源于单机系统。由于每个进程都在自己的地址范围内运行,为保证两个相互通信的进程之间既互不干扰又协调一致工作,操作系统为进程通信提供了相应设施,如UNIX BSD有:管道(pipe)、命名管道(named pipe)软中断信号(signal)UNIX system 有:消息(message)、共享存储区(shared memory)和信号量(semaphore)等.他们都仅限于用在本机进程之间通信。网间进程通信要解决的是不同主机进程间的相互通信问题(可把同机进程通信
2021-01-03 22:24:09
19
原创 git基础
将git与码云连接起来注册码云,下载git安装设置码云的SSH公钥生成SSH公钥命令打开GIT Bashssh-keygen -t rsa -C "1390811049@qq.com"# Generating public/private rsa key pair...# 三次回车即可生成 ssh key你的C:\Users\admin.ssh这个路径下会生成两个文件:id_rsa和id_rsa.pub将id_rsa.pub中的内容拷贝到码云的SSH公钥中使用 ssh -T gi
2021-01-03 17:15:52
10
原创 ActiveMQ
什么是ActiveMQ?ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件;由于ActiveMQ是一个纯Java程序,因此只需要操作系统支持Java虚拟机,ActiveMQ便可执行。支持的编程语言包括:C、C++、C#、Delphi、Erlang、Adobe Flash、Haskell、Java、JavaScript、Perl、PHP、Pike、Python和Ruby。支持的消息类型主要有Queues和Topics两种消息类型。Queues是一对一的模式,一个生产者对应一个消费者,
2021-01-01 18:50:14
40
原创 Makefile基础
Make的工作主要依赖于一个叫Makefile的文件。Makefile文件描述了整个程序的编译、链接等规则。Makefile格式all: hellohello: main.o function1.o function2.o g++ main.o function1.o function2.o -o hellomain.o: main.cpp g++ -c main.cppfunction1.o: function1.cpp g++ -c functi
2020-12-28 00:02:39
20
原创 g++的基本使用
g++是GNU组织推出的C++编译器。它不但可以用来编译传统的C++程序,也可以用来编译现代C++,比如C++11/14等。g++的用法和gcc类似,编译C++的时候比gcc更简单,因为它会自动链接到C++标准库,而不像gcc需要手工指定。g++编译程序的内部过程和gcc一样,也要经过4个阶段:预处理、编译、汇编和链接。g++的基本语法格式如下:g++ [选项] 准备编译的文件 [选项] [目标文件]编译单个源文件g++ test.cpp -o testtest.cpp为需要编译的源文件,
2020-12-27 18:36:00
64
原创 GDB调试
代码调试器避免不了,程序会出现bug,但是使用命令行编译出错后是没有调试信息的(g++编译时),因此我们需要使用gdb对程序进行调试这次主要介绍GDB指令,其他编译方法和指令请自行上网查询!启动gdb后,可以进入到交互模式,通过以下命令对程序完成调试工作!编译时加上-g参数 生成符号文件g++ -g -std=c++11 main.cppgdb a.out运行指令run(简写r):运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步命令continue(简写c) :继续
2020-12-27 17:51:09
69
原创 VSCode教程
推荐插件Bracket Pair Colorizer2括号阻止开发人员活着的祸害。 使用大量嵌套代码,几乎不可能确定哪些括号彼此匹配。 Bracket Pair Colorizor(如你所料)为括号匹配颜色,以使代码更具可读性。 相信我,你想要!Markdown All in One & Markdown Preview Enhanced喜欢写作的朋友福利来了!让Markdown更好的在 VScode 进行编辑和预览,查看这两个组件的详情就知道了,非常简洁明了。Material Icon
2020-12-27 15:39:10
12
原创 VSCode远程开发与调试
下载VSCodeVSCode官网:https://code.visualstudio.com/VSCode插件下载:https://marketplace.visualstudio.com/vscode安装插件中文语言包Chinese (Simplified) Language Pack for Visual Studio CodeC++插件:实时显示编译阶段的错误、代码片段、补全、格式化、单文件的编译与调试C/C++ for Visual Studio Code远程开发调试插件Remot
2020-12-25 14:02:00
41
原创 Shell基础
什么是shellshell是linux的命令解释器它向用户提供了一个向linux内核发送请求以便运行程序shell处在内核与外层应用程序之间在用户与系统之间进行交互的作用与windows的鼠标点击软件后就能运行软件的功能类似如windows下创建一个文件夹我们先决定去哪里新建即进入该路径再右键选择新建文件夹即可在linux当中也是通过类似的方法不过完全使用命令行罢了这就是shell能够在用户与系统间进行交互实现相应的功能shell是一个强大的编程语言与一般的编程语言不同的是
2020-12-21 00:32:48
27
原创 Linux基础
Linux基本目录结构Linux 文件系统是一个目录树的结构,文件系统结构从一个根目录开始,根目录下可以有任意多个文件和子目录,子目录中又可以有任意多个文件和子目录bin 存放二进制可执行文件(ls,cat,mkdir等)boot 存放用于系统引导时使用的各种文件dev 用于存放设备文件etc 存放系统配置文件home 存放所有用户文件的根目录lib 存放跟文件系统中的程序运行所需要的共享库及内核模块mnt 系统管理员安装临时文件系统的安装点opt 额外安装的可选应用程序包所放置的位置
2020-12-20 22:43:59
10
原创 Linux命令大全
一、文件管理catcat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。语法格式cat [-AbeEnstTuv] [--help] [--version] fileName参数说明:-n 或 --number:由 1 开始对所有输出的行数编号。-b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。-s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。-v 或 --show-nonprin
2020-12-20 18:29:01
80
原创 VS调试Qt源码
1. 安装或者下载QT源码2. 最好自己编译一下3.在VS的配置中加入编译好的目录4.如果源码路径有变动,VS会让你重新选择源码路径,接着断点就可以进入qt源码了
2020-12-15 13:40:42
24
原创 Qt样式表
什么是QSSQSS称为Qt Style Sheets也就是Qt样式表,它是Qt提供的一种用来自定义控件外观的机制。QSS大量参考了CSS的内容,只不过QSS的功能比CSS要弱很多,体现在选择器要少,可以使用的QSS属性也要少很多,并且并不是所有的属性都可以用在Qt的所有控件上。一、名词解释1.选择器选择特定的类,一般为一个可以定制样式表的 Qt 类选择器 { 属性 : 值 ;}QPushButton { color: red }2. 辅助控制器辅助控制器 一词是相对于选择器存在的
2020-12-13 16:03:21
91
1
原创 VS 查看类内存布局
vs输出class布局方法:先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局这个开关输出所有类, 主要是一大堆编译器内部的结构的内存布局, 其实还有一个开关是d1reportSingleClassLayout用起来是这样:-d1reportSingleClassLayoutCTest test.cpp或者-d1reportSingleClassLayoutCTest切切注意, Layout跟指.
2020-11-23 10:11:46
35
原创 libcurl
curl_easy_setopt(m_hCurl, CURLOPT_ACCEPT_ENCODING, "");传递一个char *参数,指定您想要的编码。设置HTTP请求中发送的Accept-Encoding:标头的内容,并在接收到Content-Encoding:标头时启用对响应的解码。libcurl可能支持多种不同的压缩编码,具体取决于内置的支持。为了帮助应用程序不必担心此特定的libcurl构建支持哪些特定算法,libcurl允许设置长度为零的字符串(“”)要求使用Accept-Enc
2020-11-06 11:48:12
20
原创 无法解析的外部符号 QString::fromStdWString
一般的代码里(或者叫默认)都设置wchar_t做为内置类型,但现在有两个静态库,一个要求wchar_t为内置类型,另一个要求不将wchar_t做为内置类型,否则就会出现errorLNK2019:无法解析的外部符那么现在的情况就是:实质上其中一个lib中的函数以wchar_t*作为字符串,另外一个lib中的函数以unsignedshort*作为字符串。如果不重新编译lib,解决办法就是改头文件,现在两个lib的头文件里的函数声明,都是声明用wchar_t*作字符串,但实质上其中一个lib导出...
2020-10-17 11:22:53
79
原创 std::exception的使用
std::exception:标准异常类的基类,其类的声明在头文件<exception>中。所有标准库的异常类均继承于此类,因此通过引用类型可以捕获所有标准异常。std::exception类定义了无参构造函数、拷贝构造函数、拷贝赋值运算符、一个虚析构函数和一个名为what的无参虚成员。其中what函数返回一个const char*,该指针指向一个以null结尾的字符数组,并且确保不会抛出任何异常,该字符串的目的是提供关于异常的一些文本信息。除析构函数外,其它函数均通过关键字noexcept
2020-09-24 23:29:03
123
原创 C++11中头文件cmath
<math.h>是C标准函数库中的头文件。在C++中一般用<cmath>。此头文件中声明了一系列函数来计算常见的数学运算和变换:std::abs: 计算绝对值,包括整数类型;std::fabs: 计算绝对值,不包括整数类型;std::fma(x,y,z):x*y+z;std::sin: 正弦;std::asin: 反正弦;std::sinh: 双曲正弦;std::asinh: 双曲反正弦;std::cos: 余弦;std::acos: 反正弦;
2020-09-24 23:26:39
176
原创 C++11中的std::tuple
std::tuple是类似pair的模板。每个pair的成员类型都不相同,但每个pair都恰好有两个成员。不同std::tuple类型的成员类型也不相同,但一个std::tuple可以有任意数量的成员。每个确定的std::tuple类型的成员数目是固定的,但一个std::tuple类型的成员数目可以与另一个std::tuple类型不同。但我们希望将一些数据组合成单一对象,但又不想麻烦地定义一个新数据结构来表示这些数据时,std::tuple是非常有用的。我们可以将std::tuple看作一个”快速而随意
2020-09-21 21:39:52
331
原创 C++11中的正则表达式
正则表达式(regular expression)是计算机科学中的一个概念,又称规则表达式,通常简写为regex、regexp、RE、regexps、regexes、regexen。正则表达式是一种文本模式。正则表达式是强大、便捷、高效的文本处理工具。正则表达式本身,加上如同一门袖珍编程语言的通用模式表示法(general pattern notation),赋予使用者描述和分析文本的能力。配合上特定工具提供的额外支持,正则表达式能够添加、删除、分离、叠加、插入和修整各种类型的文本和数据。完整的正则
2020-09-21 21:29:13
31
原创 Lambda表达式
Lambda表达式语法:[capture ] ( params ) mutable exception attribute -> return-type { body }其中capture为定义外部变量是否可见(捕获),若为空,则表示不捕获所有外部变量,即所有外部变量均不可访问,= 表示所有外部变量均以值的形式捕获,在body中访问外部变量时,访问的是外部变量的一个副本,类似函数的值传递,因此在body中对外部变量的修改均不影响外部变量原来的值。& 表示以引用的形式捕获,后面加上需要捕获的
2020-09-21 21:27:27
47
原创 C++11中std::function和std::bind
std::function类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。通过std::function对C++中各种可调用实体(普通函数、Lambda表达式、函数指针、以及其它函数对象等)的封装,形成一个新的可调用的std::function对象,让我们不再纠结那么多的可调用实体。std::function实现了一套类型
2020-09-20 22:51:19
40
原创 C++11中decltype
decltype与auto关键字一样,用于进行编译时类型推导,不过它与auto是有一些区别的。decltype的类型推导并不是像auto一样是从变量声明的初始化表达式获得变量的类型,而是总是以一个普通表达式作为参数,返回该表达式的类型,而且decltype并不会对表达式进行求值。decltype关键字用于查询表达式的类型,并不会对表达式进行求值。decltype的作用是获得一个变量或表达式的类型。decltype 不会执行表达式而auto会,decltype仅仅推论一下表达式的类型。对于declty
2020-09-20 22:25:30
10
原创 C++中typeid的使用
引用。type_info的name成员函数返回C-style的字符串。如果表达式的类型是类类型且至少包含有一个虚函数,则typeid操作符返回表达式的动态类型,需要在运行时计算;否则,typeid操作符返回表达式的静态类型,在编译时就可以计算。使用typeid时应注意:(1)、typeid运算符允许在运行时确定对象的类型;(2)、typeid的结果是const type_info&;(3)、typeid运算符在应用于多态类类型的左值时执行运行时检查,其中对象的实际类型不能由提供的
2020-09-20 17:10:58
41
原创 C++中friend的使用
友元函数并不能看做是类的成员函数,它只是个被声明为类友元的普通函数:(1)、在类里声明一个普通函数,在前面加上friend修饰,那么这个函数就成了该类的友元,可以访问该类的一切成员。(2)、一个普通函数可以是多个类的友元函数。(3)、一个类的成员函数也可以是另一个类的友元,从而可以使得一个类的成员函数可以操作另一个类的数据成员。(4)、整个类也可以是另一个类的友元,该友元也可以称作为友类。友类的每个成员函数都可以访问另一个类的所有成员。友元声明中声明的函数被视为已使用extern关键字声
2020-09-20 16:57:39
80
原创 C++中函数指针的使用
函数指针是一个指向函数的指针,函数指针表示一个函数的入口地址。指针是变量,所以函数指针也是变量,因此可以使用变量定义的方式来定义函数指针。只是这个指针它不像普通的指针指向一个变量,而它指向的是一个函数,也就是它存储的是一个函数的地址。 在C中,一个函数指针可以多次赋值。取地址符号是可选的,却是推荐使用的。在C++中,对于赋值必须要加”&”,而且还必须在此之前已经定义好了一个类实例,取地址符号要操作于这个类实例的对应的函数成员上。在使用成员函数的指针调用成员函数时,必须要加类实例的...
2020-09-20 16:53:29
17
原创 Google C++ 风格指南内容整理
现在很多公司进行C++开发都要求按照Google C++风格。在这个网站http://zh-google-styleguide.readthedocs.org/en/latest/contents/ 有人已经把其翻译成中文。为了便于以后查看,下面的内容完全是来自于这个网站,只是把多个网页的内容整理放在了一起。1.头文件:通常每一个.cc文件都有一个对应的.h文件。也有一些常见例外,如单元测试代码和只包含main()函数的.cc文件。#define保护:所有头文件都应该使用#...
2020-09-20 16:20:24
56
原创 编写高质量代码改善C++程序的150个建议
第一部分 语法篇第1章从C继承而来的建议0:不用让main函数返回void main函数的返回类型是int,不是void或其它类型。建议1:区分0的4种面孔(1)、整型0;(2)、空指针NULL,指针与int类型所占空间是一样的,都是32位;(3)、字符串结束标志’\0’;(4)、逻辑FALSE/false,FALSE/TRUE是int类型,而false/true是bool类型。建议2:避免那些由运算符引发的混乱 不要...
2020-09-20 15:48:05
391
原创 DLL动态库导出C++类
使用纯C语言方式头文件//在DLL的工程中定义 DLL_EXPORTS宏(表示导出) 一般直接加到项目配置的 预处理器定义宏中#ifdef DLL_EXPORTS#define DLLAPI __declspec(dllexport)#else#define DLLAPI _declspec(dllimport)#endif//需要导出的类class CTest{public: int add(int a, int b, int c); void relea
2020-09-17 00:57:39
23
原创 x64汇编
x64是AMD64与Intel64的合称,是指与现有x86兼容的64位CPU。在64位系统中,内存地址为64位。x64为环境下寄存器有较大的变化。x64系统通用寄存器的名称,第1个字母从"E"改为"R"(例如"RAX"), 大小扩展到64位,数量增加了8个(R8~R15), 扩充了8个128位XMM寄存器(在64位程序中,XMM寄存器经常被用来优化代码)。64位寄存器与x86下的32位寄存器兼容,例如RAX(64位)、EAX(32位)、AX(低16位)、AL(低8位)、AH(8-15位)。x64新扩展的
2020-09-15 00:27:15
249
原创 IDA的使用
简介ida可以分析的文件格式也非常多 包括windows下的pe格式文件(.exe .dll .sys)linux 下的elf文件(.elf .so )mac系统的常见文件格式,以及一些不常见到系统的文件格式。ida的功能强大,对于一般的无壳保护,无混淆代码的程序ida能直接反汇编出位代码(F5快捷键),在一定程度上减少了逆向分析的难度和门槛。ida分为32位和64位,在进行逆向分析时选择32-bit IDA分析32位程序,64-bit IDA 分析64位程序。一般来说直接ok打开,ida会帮你
2020-09-12 00:57:28
103
原创 编译QT源码
下载QT源码1.离线安装安装的时候勾选Sources2.直接下载源码例如5.12.0的源码下载地址:qt-everywhere-src-5.12.02. 编译工具下载ActivePerlActivePerl下载地址:默认安装时会添加ActivePerl到环境变量。测试添加是否成功:Python下载Python,添加Python到环境变量。测试添加是否成功:RubyRuby下载地址:RubyInstaller for Windows安装时勾选添加到环境变量的选项:
2020-09-04 00:45:19
162
原创 cmder
简介官网 https://cmder.net/进入官网以后,有mini版和完整版,建议完整版,完整版功能更齐全,还可以使用git,下载好解压文件包以后就可以使用。设置环境变量添加cmder到邮件菜单Cmder.exe /REGISTER ALL解决中文乱码问题Settings->Startup->Environment 添加set LANG=zh_CN.UTF-8set LC_ALL=zh_CN.utf8常用命令创建文件夹mkdir删除文件夹rmdir
2020-08-31 23:24:13
77
原创 windows的消息机制
一、 什么是消息在解释什么是消息之前,我们先讨论一下程序的执行机制问题。大体上说,程序按照执行机制可以分为两类:第一类是过程驱动。比如我们最早接触编程时写的C程序,又或者单片机程序。这类程序往往预先已经设定好了执行流程,我们执行时只是按部就班的执行;第二类是事件驱动。事件,相信大家都能够理解。每个事件的发生都是随机的,每个事件都会有发生的时刻,类似生活中的事件。程序中的事件也会有自己的触发点,事件驱动程序就是事先编写好了针对每个事件的处理流程。在Windows的操作系统中,消息就是Windows中的
2020-08-09 15:57:55
92
原创 植物大战僵尸分析
查找产生僵尸的CALL使用CE搜索地图上僵尸的数量,找到保存僵尸数量的地址,然后CE附件找到增加僵尸数量的语句,因为产生僵尸后一定会增加僵尸的数量。CE附加找访问该地址的代码使用OD在 0043678F - 01 46 10 - add [esi+10],eax 下断点产生僵尸时,断下,查看栈在反汇编窗口中查看第一个CALL,返回这个CALL没有参数,产生僵尸的CA...
2020-08-09 14:12:34
140
原创 Qt更方便的使用线程池
使用Qt的线程池必须继承QRunnable这样有的时候用起来很麻烦#include <memory>#include <functional>#include <QRunnable>class CThreadPoolTask : public QRunnable{private: CThreadPoolTask(std::function&l...
2020-08-09 14:11:09
126
原创 C++类型转换
在C语言中转换类型的方法一般是使用强制转换,就如下列的转换方法inti=0;void*v=(void*)i;在C++中类型的转换大致有四种:1. dynamic_cast类型转换(1) dynamic_cast是在运行时检查的,属于动态转换;(2) 一般用于基类和派生类之间的相互转换。QThread*thread=newQ...
2020-08-09 14:10:53
36
Qt5.13.0 Https库.zip
2019-10-15
Navicat Premium 12 中文免安装版破解版
2019-04-28
WIN10-PCHunter64.zip
2020-04-05
activemq-cpp编译出来的所有库包括openssl,cppunit,apr
2021-01-03
QT Player Demo
2020-12-02
PE格式解析.zip
2020-09-09
二维码识别zbar.zip
2020-04-12
botan版本2.3.0.zip
2020-04-12
Qt中文文档.zip
2020-04-01
二维码本地识别.zip
2020-03-27
Windows,JAVA,Android的API文档.zip
2020-03-22
qrencode.zip
2019-10-07
botan-2.1.0.zip
2019-10-07
globalshortcut.zip
2019-10-04
VAX番茄助手支持Visual Studio2010,2012,2013,2015,2017.zip
2019-05-09
Winhex 19.8 中文版
2019-04-28
win7,win10注入CSRSS 不蓝屏
2019-04-22
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝