- 博客(250)
- 资源 (20)
- 收藏
- 关注
原创 创建线程的方法(windows)
windows上常用的创建线程的方法:CreateThread(),_beginthread(),std::thread。
2024-05-16 11:04:35 818
原创 构造函数不能做为虚函数
虚函数对应一个虚函数表,这大家都知道,可是这个虚函数表其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过虚函数表来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。虚函数的作用在于通过父类的指针或者引用来调用它的时候能够变成调用子类的那个成员函数。而构造函数是在创建对象时自动调用的,不可能通过父类的指针或者引用去调用,因此也就规定构造函数不能是虚函数。
2023-09-20 10:39:13 346 1
原创 C++11 Lambda表达式
*捕获列表:**用来说明外部变量的访问方式,外部变量访问方式说明符可以是 = 或 & ,表示函数体中用到的、定义在外面的变量在函数体中是否允许被改变。[=, &a] 表示按值传递的方法捕获父作用域的所有变量,但按引用传递的方法捕获变量a。[&, a] 表示按引用传递的方法捕获父作用域的所有变量,但按值传递的方法捕获变量a。函数对象定义在调用的地方,直接看到上下文,可读性更强,方便修改;[&] 表示按引用传递的方法捕获父作用域的所有变量。[=] 表示按值传递的方法捕获父作用域的所有变量。
2023-05-15 18:21:40 516 1
原创 C++ 智能指针和使用陷阱
weak_ptr 设计的目的是为配合 shared_ptr 而引入的一种智能指针,来协助 shared_ptr 工作, 它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造, 它的构造和析构不会引起引用记数的增加或减少。如果我们主动释放掉get 函数获得的指针,那么智能 指针内部的指针就变成野指针了,析构时造成重复释放,带来严重后果!譬如:Boy类中有Girl的智能指针;智能指针的赋值拷贝,首先拷贝指向对象的指针,再使引用次数加减操作,虽然引用次数加减是原子操作,
2023-05-10 17:29:35 902
原创 [gflags]开启页堆处理堆破坏问题
当我们从普通堆管理器分配一块内存时,内存总是8字节对齐的,页堆默认情况下也会使用这个对齐规则,但是这会导致分配的内存块的结尾不能跟页边界精确对齐,可能存在0-7个字节的间隙,显然,对位于间隙范围内的访问是不会被立即发现。因为每次分配的内存都要以这种形式布局,尤其对于小片的内存分配,即使分配一个字节,也要分配一个内存页,和一个保留的虚拟内存页(注意在目前的实现中,这个用作边界保护区域的页从来不会被提交)。正常页堆原理与CRT调试内存分配函数类似,通过分配少量的填充信息,在释放内存块时检查填充区域。
2022-09-27 18:22:43 558
原创 程序崩溃后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 965
原创 【Visual Studio】调试过程中VS卡死无响应
最近在使用vs2022 debug调试过程中,经常出现vs2022直接卡死无响应,最后发现问题的原因是加载符号导致。解决方案:调试 - 选项 - 符号1.取消勾选 xxx 符号服务器2.选择 仅加载指定的模块
2022-07-12 15:24:54 14786 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 3482
原创 【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 6813
原创 UML类图
标题uml类图分为两部分,一部分是表示类,一部分表示类与类之间的关系。uml是怎么表示类的?在面向对象中,常用的类有以下几种类:普通类抽象类接口1)普通类的表示咱们先来定义一个女人类,公有属性为:名字,年龄私有属性为:身份证号码,家庭地址,公有方法为:吃饭,睡觉,私有方法为:生孩子,做家务。那么在uml类图上怎么展示呢?...
2021-12-27 15:46:56 264
原创 [VS] 线程解冻和冻结
工具:vs2019系统:win10语言:C++本文主要通过 VS 自带的诊断工具,对线程进行冻结和解冻调试。昨天遇到一个问题,客户端会发出 gss0.bdstatic.com 的请求,但是代码里并没有搜到。所以需要定位是dll哪个模块发出。程序启动后,打开线程界面:对其中的线程进行单独冻结:最后定位到,是其中一个 xxx.dll ,发送的请求。...
2021-09-01 14:21:10 544
原创 Sublime Ctrl + Shift + F 快捷键不生效
解决方法:检查输入法是否占用了 ctrl+shift+f 的快捷键。搜狗、百度输入法都会占用该快捷键,用于简体和繁体的切换。
2021-03-25 11:09:01 644
原创 [VS] 诊断工具,检测内存泄漏,进行内存调优
工具:vs2019系统:win10语言:C++github 调试 demo:dangwei-90/ProcessOptimize (github.com)本文主要通过 VS 自带的诊断工具,对程序进行memory 内存调优。
2021-01-19 11:26:12 6098 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 1479
原创 [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 944
原创 [C++]生产消费模型
生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。github源码路径:https://github.com/dangwei-90/Design-Mode// 此文件包含 "main" 函数。程序执行将在此处开始
2021-01-05 11:58:19 300
原创 [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 729
原创 [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 501
原创 [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 859 2
原创 [libtorrent] tracker 逻辑及源码解析(调试)
操作系统:win10开发工具:VS2019(libtorrent 源码的开发环境搭建可以参考:[libtorrent] windows搭建 libtorrent 开发环境_二七-CSDN博客)(ubuntu BitTorrent 搭建可以参考:[Tracker] linux 搭建 BitTorrent_二七-CSDN博客)...
2020-12-22 16:01:54 701
原创 [Tracker] linux 搭建 BitTorrent
虚拟机: vmware 15虚拟机系统:ubuntu 20.04本机系统: win10Ubuntu 搭建BitTorrent本文是在虚拟机中搭建 bitrtorrent 和 web 平台,生成BT种子后,在本机可以下载一. 安装 BitTorrent1. 安装 python (如果已有 python 则跳过此步) sudo apt-get install python2. 通过命令安装 BitTorrent sudo apt-get inst...
2020-12-18 21:13:37 1818 2
原创 [libtorrent] windows搭建 libtorrent 开发环境
操作系统:win10开发工具:VS2019(参考文档:libtorrent)搭建 libtorrent 步骤:一. 安装 vcpkg 和 boost1.安装 vcpkg 到本地 git clone https://github.com/microsoft/vcpkg2.执行bootstrap-vcpkg.bat 脚本 .\vcpkg\bootstrap-vcpkg.bat3.添加vcpkg环境变量 环境变量->PTAH->添加 vcpkg...
2020-12-17 15:54:26 2012 6
原创 [ubuntu传送门] ubuntu官网下载太慢解决办法
下载连接:http://mirrors.163.com/ubuntu-releases/20.04/
2020-12-17 11:45:49 202
原创 chromium 之 CSS 解析过程(代码调试)
平台: WIN10调试工具: vs2019chromium: 78.0.3904.108解析网站: www.so.com(有条件的小伙伴建议根据文章里的断点,自己调试,分析堆栈和查看数据的结构,可能会有不同的理解)CSS解析过程下图是CSS的解释过程,具体是从CSS字符串经过CSS解释器处理后变成渲染引擎的内部规则表示的过程未完待续...
2020-12-15 11:47:11 672
原创 chromium 之 DOM tree 解析和创建(代码调试)
平台: WIN10调试工具: vs2019chromium: 78解析网站: www.so.com(有条件的小伙伴建议根据文章里的断点,自己调试,分析堆栈和查看数据的结构,可能会有不同的理解)WebKit构建DOM所使用的主要基础设施类下图是 chromium webkit 构建 dom 树时,主要用到的类,我们会在下图中部分类的实现中,进行跟踪,分析 dom 的构建过程DocumentLoader(src\third_party\blink\ren...
2020-12-09 12:01:25 666 2
原创 [C++] CreateThread() 与 _beginthread() 的区别
在windows开发中,我们有两种创建线程的方式:第一种:Windows API CreateThread() 来创建线程;用ExitThread() 来退出线程;第二种:调用MSVC CRT的函数 _beginthread()或_beginthreadex()来创建线程;用 CRT的_endthread() 来退出线程。而实际上,_beginthread()的内部实现,也是通过调用CreateThread() 来实现的创建线程。这两种方式的区别在于,CreateThread()...
2020-12-04 11:26:39 637
DotNetFramework_3.5.zip
2020-04-27
StopSysSleep.zip
2020-04-26
104个常用注册表文件
2013-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人