自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

就是那个党伟

早起的鸟儿有虫吃,早起的虫虫吃嫩叶。

  • 博客(256)
  • 资源 (20)
  • 收藏
  • 关注

原创 DLL和CRT

也就是说,每个使用CRT静态链接的dll中都有一个自己的全局堆句柄,他们自己都在这个句柄上使用内存。也就是说在编译的最后一步(链接阶段),如果程序需要使用静态库,在这一步都会一起打包到可执行文件中。所需文件:接口.h头文件,dll文件,lib文件。:每个dll都是去调用CRT库的dll函数来分配和释放内存的,使用的是同一个句柄,所以没问题。CRT运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。若作为其他库的依赖库,将会造成多余的副本,因为必须与目标文件打包。

2024-05-30 10:49:24 297

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

*特点:**如果原始对象和拷贝对象共享同一块内存,当其中一个对象修改了这块内存中的数据时,另一个对象中的数据也会被修改,因为它们指向同一块内存区域。这可能导致意外的数据修改或释放问题。浅拷贝带来的问题是堆区的内存重复释放,当数据成员中有指针时,如果采用简单的浅拷贝,则两类中的两个指针将指向同一个地址,当对象快结束时,会调用两次析构函数,从而导致指针使用异常而程序崩溃。深拷贝是指在拷贝对象时,会创建一个新的对象,并将原始对象的所有内容都复制到新对象中,包括指针所指向的内容。

2024-05-30 10:15:10 120

原创 std::move和左值右值

首先,函数参数T&&是一个指向模板类型参数的右值引用,通过引用折叠,此参数可以与任何类型的实参匹配(可以传递左值或右值,这是std::move主要使用的两种场景)。在 C++ 中,左值是可以被取地址的表达式,而右值是临时的、不可取地址的表达式。通常,左值是具有名称、有持久性的,而右值是临时性的、瞬时的。std::move 是 C++ 标准库中的一个函数模板,用于将一个左值(左值引用)转化为右值引用,从而实现移动语义。一个对象被用作右值时,使用的是它的内容(值),被当作左值时,使用的是它的地址。

2024-05-29 11:07:19 407

原创 UI线程和工作线程

操作系统在开启一个新的进程时,并没有为其创建消息队列,而是当进程第一次调用GDI函数后,并且进程持有窗口时,才持有消息队列。在Windows下,只有那些具备窗口(GUI用户接口界面)的进程,才会有消息队列,那些不具备GUI的进程是没有消息队列的。只处理逻辑的线程,例如:启动一个线程,用来做一个复杂的计算,计算完成之后,此线程就自动退出,这种线程称为工作线程。Windows应用程序一般由窗口和控件组成,这也是应用程序与人交互的媒介,拥有窗口(控件)的线程称为UI线程。一个进程只有一个UI线程(即主线程)

2024-05-29 10:35:49 328 1

原创 windows消息循环

引用: windows程序员面试指南windows为每个UI线程准备了一个消息队列,window会将线程的消息放入对应线程的消息队列中,线程负责从队列中取出消息,并作处理。一般而言,线程在第一次创建GDI对象时,系统会为线程创建消息队列。非UI线程是没有消息队列的。PS:并不是有消息队列的线程就一定是UI线程,非UI线程也可以有消息队列有了消息队列以后,线程需要不断的去队列中取消息,并分发给各个GDI对象;因此,需要一个while循环,该循环称之为消息循环。在消息循环中,可以对消息做一些简单的过滤和处理

2024-05-29 10:21:51 249

原创 windows句柄

句柄是Windows系统中对象或实例的标识,这些对象包括模块、应用程序实例、窗口、控件、位图、GDI对象、资源、文件等。:indows使用句柄来标识诸如窗口、位图、画笔等对象,并通过句柄找到这些对象。:是Windows中各个对象的一个唯一的、固定不变的ID;:是一个32位无符号整型值(32位系统下);:相当于指针的指针;

2024-05-29 10:05:17 235

原创 创建线程的方法(windows)

windows上常用的创建线程的方法:CreateThread(),_beginthread(),std::thread。

2024-05-16 11:04:35 840

原创 构造函数不能做为虚函数

虚函数对应一个虚函数表,这大家都知道,可是这个虚函数表其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过虚函数表来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。

2023-09-20 10:39:13 351 1

原创 C++11 Lambda表达式

*捕获列表:**用来说明外部变量的访问方式,外部变量访问方式说明符可以是 = 或 & ,表示函数体中用到的、定义在外面的变量在函数体中是否允许被改变。[=, &a] 表示按值传递的方法捕获父作用域的所有变量,但按引用传递的方法捕获变量a。[&, a] 表示按引用传递的方法捕获父作用域的所有变量,但按值传递的方法捕获变量a。函数对象定义在调用的地方,直接看到上下文,可读性更强,方便修改;[&] 表示按引用传递的方法捕获父作用域的所有变量。[=] 表示按值传递的方法捕获父作用域的所有变量。

2023-05-15 18:21:40 523 1

原创 C++ 智能指针和使用陷阱

weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针,来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少。如果我们主动释放掉get 函数获得的指针,那么智能 指针内部的指针就变成野指针了,析构时造成重复释放,带来严重后果!譬如:Boy类中有Girl的智能指针;智能指针的赋值拷贝,首先拷贝指向对象的指针,再使引用次数加减操作,虽然引用次数加减是原子操作,

2023-05-10 17:29:35 928

原创 windbg错误码汇总

windbg错误码汇总。

2023-03-15 15:35:51 1219

原创 map、multimap、unordered_map

map、multimap、unordered_map

2023-03-02 20:27:36 400

原创 STL的特点

STL

2023-03-02 20:14:33 133

原创 vector、list、queue

vector/list/queue

2023-03-02 20:06:46 498

原创 C++多态的方式:重写和重载

重载和重写

2023-03-02 19:50:05 227

原创 析构函数作为虚函数的作用

虚析构函数的作用

2023-03-02 19:31:04 742

原创 虚函数的原理

虚函数的原理

2023-03-02 19:17:50 148 1

原创 线程共享和私有的数据

线程共享和独享的数据

2023-03-01 16:43:21 131

原创 C++多线程的同步

多线程的同步

2023-03-01 16:32:22 822

原创 windows进程间的通信

windows进程间通信

2023-03-01 15:55:54 775

原创 windows码农屠龙手册

windows程序员面试指南

2023-03-01 15:18:07 404

原创 [gflags]开启页堆处理堆破坏问题

当我们从普通堆管理器分配一块内存时,内存总是8字节对齐的,页堆默认情况下也会使用这个对齐规则,但是这会导致分配的内存块的结尾不能跟页边界精确对齐,可能存在0-7个字节的间隙,显然,对位于间隙范围内的访问是不会被立即发现。因为每次分配的内存都要以这种形式布局,尤其对于小片的内存分配,即使分配一个字节,也要分配一个内存页,和一个保留的虚拟内存页(注意在目前的实现中,这个用作边界保护区域的页从来不会被提交)。正常页堆原理与CRT调试内存分配函数类似,通过分配少量的填充信息,在释放内存块时检查填充区域。

2022-09-27 18:22:43 575

原创 程序崩溃后windbg自动启动

1.在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options下,新建子项。2.在新的子项 Infloflow.exe 下,新建字符串,命名 debugger,数据填写 windbg.exe 的路径。譬如调试的进程是 infoflow.exe,就取名 infoflow.exe。3.使用管理员权限打开命令行,执行 windbg -I (大写I)

2022-09-26 10:11:38 996

原创 【windows核心编程】第二章-笔记

windows

2022-09-13 02:50:02 139

原创 【windows核心编程】第一章-笔记

windows核心编程

2022-09-13 00:10:06 175

原创 【性能监视器】监视查看CPU、内存等数据

性能监视器,windows,内存,cpu

2022-08-30 14:43:44 4177

原创 【Visual Studio】调试过程中VS卡死无响应

最近在使用vs2022 debug调试过程中,经常出现vs2022直接卡死无响应,最后发现问题的原因是加载符号导致。解决方案:调试 - 选项 - 符号1.取消勾选 xxx 符号服务器2.选择 仅加载指定的模块

2022-07-12 15:24:54 15092 18

原创 windows获取系统DPI

dc.GetDeviceCaps(LOGPIXELSX); //每英寸水平逻辑像素数dc.GetDeviceCaps(LOGPIXELSY); //每英寸垂直逻辑像素数dc.GetDeviceCaps(HORZRES); //水平像素总数dc.GetDeviceCaps(VERTRES); //垂直像素总数dc.GetDeviceCaps(DESKTOPHORZRES); //可视桌面的水平像素总数dc.GetDeviceCaps(DESKTOPVERTRES); //可视桌面的水平像素总数dc

2022-02-17 18:08:34 3506

原创 【SDK8.1】VS2019/VS2022 安装SDK8.1

VS2019 开始,默认不包含SDK8.1,因此如果需要SDK8.1则需要单独安装。SDK8.1 官网下载地址:https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/

2021-12-31 15:19:22 6942

原创 UML类图

标题uml类图分为两部分,一部分是表示类,一部分表示类与类之间的关系。uml是怎么表示类的?在面向对象中,常用的类有以下几种类:普通类抽象类接口1)普通类的表示咱们先来定义一个女人类,公有属性为:名字,年龄私有属性为:身份证号码,家庭地址,公有方法为:吃饭,睡觉,私有方法为:生孩子,做家务。那么在uml类图上怎么展示呢?...

2021-12-27 15:46:56 266

原创 [VS] 线程解冻和冻结

工具:vs2019系统:win10语言:C++本文主要通过 VS 自带的诊断工具,对线程进行冻结和解冻调试。昨天遇到一个问题,客户端会发出 gss0.bdstatic.com 的请求,但是代码里并没有搜到。所以需要定位是dll哪个模块发出。程序启动后,打开线程界面:对其中的线程进行单独冻结:最后定位到,是其中一个 xxx.dll ,发送的请求。...

2021-09-01 14:21:10 558

原创 Sublime Ctrl + Shift + F 快捷键不生效

解决方法:检查输入法是否占用了 ctrl+shift+f 的快捷键。搜狗、百度输入法都会占用该快捷键,用于简体和繁体的切换。

2021-03-25 11:09:01 658

原创 [VS] 诊断工具,检测内存泄漏,进行内存调优

工具:vs2019系统:win10语言:C++github 调试 demo:dangwei-90/ProcessOptimize (github.com)本文主要通过 VS 自带的诊断工具,对程序进行memory 内存调优。

2021-01-19 11:26:12 6315 4

原创 [VS] 诊断工具,CPU调优

工具:vs2019系统:win10语言:C++github 调试 demo:dangwei-90/ProcessOptimize (github.com)本文主要通过 VS 自带的诊断工具,对程序进行CPU调优。Begin1. 编译测试 demo 读者可以通过dangwei-90/ProcessOptimize (github.com)下载,也可以自己编写测试 demo. 通过一个 while 循环来占用 CPU 资源。void CProcessOptimizeDlg...

2021-01-19 11:15:39 1494

原创 [C/C++] undefined reference to ‘std::cout‘

gcc TrackersManger.cpp -o TrackersManger编译时出现如下错误:原因是:编译 cpp 文件时,需要使用 g++ 编译,改为如下即可:g++TrackersManger.cpp -o TrackersManger

2021-01-13 11:15:40 949

原创 [C++]生产消费模型

生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。github源码路径:https://github.com/dangwei-90/Design-Mode// 此文件包含 "main" 函数。程序执行将在此处开始

2021-01-05 11:58:19 304

原创 [libtorrent] linux 搭建 libtorrent 开发编译环境

操作系统:ubuntu 20.04(参考文档:http://libtorrent.org/building.html)搭建 libtorrent 步骤:一. 下载源码 1. 从官网下载 libtorrent 源码 git clone --recurse-submodules https://github.com/arvidn/libtorrent.git 2. 安装 gcc sudo apt install gcc g++ automake ...

2020-12-29 15:55:13 736

原创 [xbttracker] linux 下 xbt tracker环境搭建(ubuntu)

系统环境:Ubuntu x64 20.04操作系统:win10xbt源码:https://github.com/dangwei-90/xbt参考文档:http://xbtt.sourceforge.net/tracker/ (官网)(注:官网 xbt 源码已经无法下载)XBT Tracker 环境搭建一. 安装依赖库 1. 安装 boost sudo apt-get install libboost-dev 2. 安装 mysql (*sql 版...

2020-12-28 14:34:42 506

原创 [git] git 更换仓库并保留提交记录

方法简单好用:1. 从原地址克隆一份裸版本库,比如原本托管于 GitHub。 git clone --bare https://github....(原始仓库地址)2. 进入克隆下来的目录 cd project.git(project即为克隆下来的项目目录)3. 以镜像推送的方式上传代码到新的仓库地址。 git push --mirror http://...(目标仓库地址)done....

2020-12-28 11:38:21 866 2

原创 [libtorrent] tracker 逻辑及源码解析(调试)

操作系统:win10开发工具:VS2019(libtorrent 源码的开发环境搭建可以参考:[libtorrent] windows搭建 libtorrent 开发环境_二七-CSDN博客)(ubuntu BitTorrent 搭建可以参考:[Tracker] linux 搭建 BitTorrent_二七-CSDN博客)...

2020-12-22 16:01:54 716

DotNetFramework_3.5.zip

.net Framework是微软的.net框架程序的运行库。.NET Framework 3.5用于构建具有视觉上引人注目的用户体验。NET Framework 3.5是支持生成和运行下一代应用程序和XML Web Services 的内部Windows 组件。Microsoft .NET Framework 3.5实现跨技术边界的无缝通信,并且能支持各种业务流程。

2020-04-27

PcShutDownByTime.zip

定时关机小程序。 源码路径:https://github.com/dangwei-90/PcShutDownByTime

2020-04-26

StopSysSleep.zip

windows系统,防止系统睡眠和休眠的小工具。 源码路径:https://github.com/dangwei-90/StopSysSleep

2020-04-26

gsview和ghostscript(不需要注册码).rar

gsview和ghostscript(不需要注册码).rar

2017-11-08

189个常用修改注册表REG

189个常用修改注册表的REG文件 本人亲测,安全有效!

2013-09-01

104个常用注册表文件

压缩包内文件格式: 可执行文件 附件来源: 互联网 运行平台: Windows平台 是否经本人验证: 是 附件性质: 免费 详细说明: 还在苦苦的找寻吗?104个常用注册表文件 本资料共包含以下附件: 104个常用注册表文件.rar

2013-09-01

chm类型的VB下API

VB的API调用,CHM格式,类似于MSDN,方便查询,搜索

2013-08-31

微软Overlay Linker3.60编译器

微软Overlay Linker3.60编译器 经过本人亲测,可以完美使用。

2013-05-01

C++笔试题[c++]

C++笔试题。 常见笔试题和常见题库。 供C++童鞋面试笔试时参考。

2013-04-30

企业管理系统【C/C++】

企业管理系统【C/C++】 只实现了简单功能,可以作为毕业设计使用。 内含源代码。

2013-04-30

Visual+C++软件项目开发实例源码

Visual+C++软件项目开发实例源码 配合 Visual+C++软件项目开发实例 书使用。

2013-04-27

dotNet特性演示软件(附加源码)

dotNet特性演示软件(附加源码) 取自 --软件项目开发实例

2013-04-27

MyDraw绘图软件(附加源码)

MyDraw绘图软件(附加源码) 取自 --软件项目开发实例

2013-04-27

网络数据管理系统(附加源码)

网络数据管理系统(附加源码) 取自 ----=软件项目开发实例

2013-04-27

Hook钩子教程

钩子的简单使用,适合初步想要了解的童鞋 钩子的函数使用

2013-04-24

MFC简单教程

关于MFC的学习与使用 适合初学者。可以简单了解MFC

2013-04-24

数据库第四版答案

数据库第四版的答案,对比书本后一致 供大家参考

2011-12-24

CB6.0界面开发实例

关于界面开发的、呃、个人觉得不错、很受用 !!!

2011-11-22

空空如也

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

TA关注的人

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