自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 全网唯一C++调用由com组件生成的dll教程

首先是一般的dll调用 可以参考这个博文https://blog.csdn.net/Giser_D/article/details/89677441一般的dll结构如下(放在depends.exe软件下查看):这类dll的特点是不需要注册dll,直接就可以查看内部的函数 进行调用操作。使用上述的博客的方法 即可调用dll本文主要针对于由com组件生成的dll 要如何使用com组件生成的dll 结构如下:由这四个函数组成调用方式:1.首先创建MFC-VS项目–点击完成–右.

2020-06-22 16:54:43 204 6

原创 全网唯一Python爬取B站、微博、小红书、抖音用户粉丝数教程(含代码)

首先介绍一下我自己写的一个爬取工具BusinessTool.exe使用方法:只要在config.txt中配置相应的type和url类型即可。修改这俩部分其中url指的是需要爬取的微博博主的主页url、或者抖音、小红书、b站的链接type指的是对应的链接类型:1:微博,2抖音,3快手,4.b站 5.小红书配置结束后,运行BusinessTool.exe即可爬取到相应的粉丝数实例代码这个是将我写了一天的代码大放送,免费赠给大家import requestsfrom bs4 impor

2020-05-29 09:22:13 2565 27

原创 FeatureLayer.FeatureClass.Feature --以及图层最容易理解的讲解;如有巧合,一定是别人抄袭(Arcgis辅助理解)

首先呢,作为一名giser而言,最基本的就是操作地图;操作地图当中有个很基本的概念就是图层,这篇文章就是介绍一下我所理解的图层;主要就是Feature、FeatureClass、FeatureLayer的介绍以及额外的知识。 首先是用ArcMap来进行图解。。。。。。Go guys! 何为一个图层?那就从创建图层来说起。。。。创建图层首先得创建一个MDB或者GDB来保存它。...

2018-09-21 00:23:17 2097 6

原创 C++实现复制文本粘贴文本功能

复制功能、参考链接:https://www.cnblogs.com/xuan52rock/p/6061155.html粘贴功能参考链接:https://bbs.csdn.net/topics/390008354?list=1963771整合代码如下:/** * 复制功能 */BOOL CopyToClipboard(const char* pszData, const int nDataLen){ if(::OpenClipboard(NULL)) { ::EmptyClipboard

2020-08-06 17:08:34 39 2

原创 LeetCode-----旋转数组的最小数字

题目把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/xuan-zhuan-shu-zu-de-zui-xiao-shu-zi-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解法:c.

2020-07-24 14:21:11 41

原创 LeetCode-----斐波那契数列

题目:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。 来源:力扣(LeetCode)链接:https://leetcode-cn.c.

2020-07-22 17:39:23 36

原创 LeetCode-----用两个栈实现一个队列

知识点:栈----先进后出,队列–先进先出题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof著作权归领扣网络所有。商业转载请联系官方授权,.

2020-07-22 16:22:52 38

原创 LeetCode-----重建二叉树

知识点:---- 二叉树(遍历顺序)前序遍历:中—左----右中序遍历:左—中----右后序遍历:左—右----中题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。解法:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ..

2020-07-22 14:49:20 44

原创 LeetCode-----反转链表

题目输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)解法·1.垃圾解法:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int.

2020-07-22 09:33:09 30

原创 LeetCode-----替换空格

题目请实现一个函数,把字符串 s 中的每个空格替换成"%20"。实现class Solution {public: string replaceSpace(string s) { // push_back 添加字符 // append 添加字符串 string sm; string demo = "%20"; for(int i = 0; i < s.size(); i++) {.

2020-07-22 08:52:39 29

原创 LeetCode-----二维数组中的查找

题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。1.最普通的解法:class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { // 从左到右递增,从上到下递增 .

2020-07-20 09:47:52 45

原创 WinXp系统中没有ChangeWindowMessageFilter这个函数

因为ChangeWindowMessageFilter在User32.dll中,然而xp系统中user32.dll中没有这个函数解决方案:。。。注释掉这行代码。。

2020-07-17 18:10:11 27

原创 Chrome 插件开发与本地程序交互流程
原力计划

Chrome 插件开发与本地程序交互流程一、 将本地程序写入注册表可以采用bat的方式写入注册表REG ADD “HKCU\Software\Google\Chrome\NativeMessagingHosts\com.google.chrome.example.echo” /ve /t REG_SZ /d “%~dp0com.google.chrome.example.echo-win.json” /只需要改动此处的json文件即可,其中该json文件与bat文件 在同级目录该json格式如下

2020-07-10 09:30:58 225

原创 Windows句柄和指针的区别

正好看了一本书,有介绍到 觉得写的挺好的 分享

2020-07-05 17:47:41 61

原创 C++引用与指针的区别

1.初始化要求不同。引用在创建的同时必须初始化。即引用到一个有效的对象。指针在定义的时候不必初始化。可以在定义后面的任何地方重新赋值。2.可修改性不同。引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象的引用。而指针在任何时候都可以改变为指向另一个对象。给引用赋值并不是改变它和原始对象的绑定关系。3.不存在NULL引用。引用不能使用指向空值的引用,它必须总是指向某个对象。而指针则可以是NULL,不需要总是指向某些对象,可以把指针指向任意的对象。更加灵活,不易出错。4.使用引用的..

2020-07-05 16:33:47 60

原创 C++中内联函数和宏定义的区别

1.内联函数在编译时展开,宏在预编译时展开2.在编译的时候,内联函数可以直接被镶嵌在目标代码中,而宏只是一个简单的文本替换。3.内联函数可以完成诸如类型检测,语句是否正确等编译功能,宏就不具有这样的功能。4.宏不是函数,inline函数是函数,5.宏在定义时,要小心处理宏参数,否则容易出现二义性,而内联函数定义时不会出现二义性。*补充:内联函数本质上 就是空间换时候,代码替换------ 减少调用的开销-------增加代码量----内存增大。...

2020-07-05 16:21:02 87

原创 SizeOf相关代码

#include <iostream>#include <string>#include <algorithm>#include <vector>using namespace std;// 遍历输出void PrintVec(const vector<int>& vec_){ auto i_ = vec_.begin(); while(i_ != vec_.end()) { cou

2020-07-05 16:06:17 45

原创 STL中sort排序的简单使用

测试int的sort功能#include <iostream>#include <string>#include <algorithm>#include <vector>using namespace std;// 遍历输出void PrintVec(const vector<int>& vec_){ auto i_ = vec_.begin(); while(i_ != vec_.end()) {

2020-07-04 21:43:16 118

原创 如何判断lib是/md or /mt编译的

如何判断lib是/md or /mt编译的使用dumpbin.exe 打开命令行输入 dumpbin.exe /directives xxx.lib其中 /DEFAULTLIB 显示是哪一种方式编译其中MSVCRT 表示MD编译MSVCRTD 表示MDd 编译LIBCMT 表示 MT编译LIBCMTD 表示MTd编译...

2020-06-29 10:45:03 74

原创 近期的一系列爬虫代码

爬取某考研网站的历年真题(仅供学习使用,不用于任何其他商业目的)import requestsfrom bs4 import BeautifulSoupimport osimport timefrom tkinter import *import threadingimport _threadimport urllibdef downloadFile(name, urla_): ''' :param name:下载保存的名称 :param url: 下...

2020-05-14 10:59:43 418 2

原创 Java Swing框架实战

Java Swing框架介绍Swing 是一个为Java设计的GUI工具包。(PC的一个UI库)Swing是JAVA基础类的一部分。Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(...

2020-05-07 10:04:29 476 2

原创 记录一下腾讯视频桌面windows客户端面试(一面)

由于疫情原因,一面是视频面试。抱着看一下大厂的面试 到底是怎样的,就进行了这次面试首先是简单的自我介绍,由面试官先介绍,然后说了一下腾讯视频windows客户端开发的相关要求,win32编程,c++基础,主要是维护开发相关。然后后面就是让我先介绍一下,我做的项目,后面我也简单的说了一下,做的项目和运用的框架,主要是qt和redm框架。然后后面开始问了,这里进入重点1.qt的相关机...

2020-03-20 17:13:12 1593 4

原创 Windows核心编程学习笔记

字符串处理strcpy和wcscpy不安全,是因为无法判断缓冲区最大长度的参数,不知道是否会破坏内存一个进程—》 一个内核对象+一个地址空间每个对象只是一个内存块文件地址包括字节偏移量。实际地址=段首地址+字节偏移量,原因是因为,地址占的内存大小太大,而一段的大小无法满足要求,所以需要在通用寄存器中开辟一段内存,用于存放剩余的字节地址,所以其为偏移量。内核对象的数据结...

2020-03-16 21:28:43 322 2

原创 《Web前端开发最佳实践》学习笔记

一、Web前端开发概述Web前端:前端UI+后端数据交互具体技能:页面标记 + 页面样式 + 前端编程 + 跨平台、跨浏览器 + 前端框架 + 调试工具二、高效Web前端开发文件结构:js: lib custom.js(业务js)css: lib images(样式中的背景图) reset.css(统一元素默认样式css) cu...

2020-03-15 20:14:08 632 4

原创 QT配置文件类封装

很多桌面软件在打开的时候,都有记住密码等选项,而且在没联网的情况下也能读取,这个是因为,它把配置信息写在本地,每次打开之前先读取本地的配置信息,即可加载相关配置,那么在这种情况下,可以封装一个配置类,方便我们以后复用。先看一下本地配置信息大概的结构这是Windows文本是随机的一个本地配置信息可以看出,配置文本结构主要由[属性名]和键=值的方式构成然后基本是以.ini为后缀的形式...

2020-03-06 17:17:54 375 2

原创 Windows进程管理类封装

头文件#include <Windows.h>#include <iostream>using namespace std;class ProcessMgr{public: ProcessMgr(); ~ProcessMgr(); static ProcessMgr* GetInstance(); // 判断是否进程存在 // @params...

2020-03-03 15:02:08 164 1

原创 C++监控注册表信息

首先,监控注册表信息的作用在于防止他人篡改数据,因为多数木马程序都是通过修改注册表信息来对电脑进行攻击,在WindowsAPI中,系统提供了RegNotifyChangeKeyValue这个函数方法来实现对注册表相关信息的监控。RegNotifyChangeKeyValue ( __in HKEY hKey, __in BOOL bWatchSubtree, __i...

2020-02-28 11:26:46 300 2

原创 Windows下设置开机自启动的方式(手动/C++代码的形式)

Windows下设置开机自启动的方式(手动/C++代码的形式)Windows下自启动相关软件的原理首先讲解一下Windows下是如何会实现开机自启动相关软件的原理,由于Windows本身有注册表机制,所谓注册表,可以理解其为Windows自带的数据库。在win+r输入regedit即可查看如图所示,注册表当中基本上都是以key-value的形式进行保存。然后Windows在系统打开...

2020-02-25 14:21:40 1208 4

原创 C++11左值和右值引用讲解

// VisuakBack.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>#include <string.h>using namespace std;// 测试左值引用和右值引用void testLeftValueRef(){ // 左值引用内存...

2020-02-25 09:50:24 102

原创 C++ 处理异常相关

主要分成bad_cast:比如指的是指针转整形或者类似的数据类型转换异常bad_alloc:指的是分配内存的时候的异常情况bad_typeid:空指针的异常示例:using namespace std;int main(){ try { int iy = 1920909109030139 * 2902930290329; int* id_ = new int[iy]; ...

2020-02-22 18:08:51 68

原创 c++ 14新的语法特性之返回类型推导

c++ 14新的语法特性之返回类型推导一、返回类型推导返回类型推导 即编译器会在运行期间,推导出该函数方法的返回类型,不过应该也会存在问题,比如返回类型不同的时候,所以这个特性 还是谨慎使用比较好。实例代码:auto TestAdd(int i, int j){ if (i > 0) { return i + j; } else { return i - j;...

2020-02-22 11:30:37 86

原创 C++ 输出数据类型

// c++输出数据类型template<typename T>void PrintDataType(T var_){ cout << typeid(var_).name() << endl;}这个可以直接输出数据的数据类型,例如int啥的...

2020-02-22 11:26:21 507

原创 C++ 11互斥锁的应用(针对于多线程的情况)

C++ 11 线程锁:一、mutex使用方法:1.mutex的lock和unlock(最基本的操作)mutex g_mutex;g_mutex.lock();cout << "test" << endl;g_mutex.unlock();2.try_lock_for:尝试上锁,如果前面已经上锁了 则返回false,否则返回true用法:vo...

2020-02-21 15:11:05 247

原创 Windows下打开Url 代码封装 C++

bool OpenUrl(std::wstring& url_, OPEN_BROWSER_TYPE browser_type = OPEN_BY_DEFALUT_BROWSER ){ // 如果使用IE打开的话 if (browser_type == OPEN_BY_IE) { HINSTANCE hRet = ::ShellExecuteW(NULL, L"open", L...

2020-02-20 14:03:02 90

原创 内存对齐的作用

1.为了更好的跨平台,原因:某些硬件只能从特定的内存地址中读取特定类型的数据,然而每个数据的所占的字节数不同,需要统一对齐,那样才会比较方便读取,所以为啥C++比较好跨平台的原因也就是这样。2.加快CPU访问性能,加快的原因是假如一个int或者double类型的数据占4字节的情况下,然后她的起始字节数假设是从1开始,cpu读取的话,就得先1-4 4-8 然后提出1.5-8 再把2-5的字节数放进...

2020-02-20 11:10:18 69

原创 WindowsAPI-------获取系统的相关信息

头文件#include "stdafx.h"using namespace std;struct WindowVersion{ DWORD marjorVer; //大版本号 DWORD minorVer; // 小版本号 DWORD buildNumber; //构建版本号};class SystemInfo{public: SystemInfo(); ~Syste...

2020-02-19 11:55:23 160

原创 C++ 手动实现简单的智能指针类

何为智能指针,即不需要用户再自动手动New和Delete掉,由内部类进行new和delete,这样可以防止用户忘记释放掉指针而造成的内存泄漏。这里简单的实现unique_ptr智能指针的方式。头文件// 自制智能指针类头文件template<typename T>class SmartPointer{public: SmartPointer(T* ptr_); ~S...

2020-02-18 16:07:05 394 5

原创 内联函数和宏定义的相关区别

内联函数和宏定义的区别相同点 : 主要是为了避免被调用时的开销,是通过编译器来进行实现,而宏定义是通过预处理器进行替换,宏定义不检查函数参数,返回值等东西,只是展开,而相对来说,内联函数会进行检查参数类型,所以会更安全。其中内联函数代码不能太多,不然的话编译器会将其认为是普通函数进行执行。内联函数可以在类里面进行定义,这点宏定义是完全做不到的,即可以访问类的成员等东西...

2020-02-15 21:45:44 77

原创 C++ 深拷贝和浅拷贝

深拷贝和浅拷贝:听名词很抽象,本质上,就是值传递和引用传递的区别值传递:指的是传递对象,简单的来说,就是复制一个新的给你, 引用传递,指的就是把这个东西给你用,你用了,我这边也会改变,在内存当中的表现,就是深拷贝和浅拷贝的区别。浅拷贝,指的是 内存地址给你用,然后并不会创建一个新的内存,而深拷贝,则会创建一块新的内存。接下来是代码实例:深拷贝和浅拷贝实例代码:// CopyDem...

2020-02-11 16:42:41 101 1

原创 QT实现完整TIM登录框界面样式

先上实现TIM登录框效果图此图为实现的TIM效果图:此图为TIM实际登录框样式可以看出,上述实现的 还是基本上实现完整,还有一点小的细节没实现好。接下来是实现的过程的讲解首先创建一个QMainWindow 项目这边只要一路往下按就创建成功,然后双击Form里面的ui文件,进入QTDesigner界面然后后面 就是添加按钮等控件,按钮控件可以通过直接拖动的形式添加简单的...

2020-01-18 20:34:42 4762 9

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