- 博客(49)
- 资源 (5)
- 收藏
- 关注
原创 2020-10-10
vs-stl实现中 std::unordered_map计算哈希值:size_type _Hashval(const key_type& _Keyval) const{ // return hash value, masked to current table size return (_Traitsobj(_Keyval) & _Mask); // size_type _Mask; // the key mask : _Mask = _Buckets ...
2020-10-10 16:05:10
279
转载 WinDbg命令详解--线程
线程命令是以~开始,后面跟线程id(一个windbg从0开始的一个编号),或者.,#,*等,可和其他命令混合使用。~ 简洁地显示当前进程的所有线程,~. 表示当前线程~# 表示异常或者产生调试事件的线程~* 表示所有线程~1 表示一号线程...
2019-07-05 11:38:56
1961
1
原创 vs下支持静态变量的线程安全初始化
// Control access to the initialization expression. Only one thread may leave// this function before the variable has completed initialization, this thread// will perform initialization. All oth...
2019-06-24 14:09:59
730
原创 std::shared_ptr所管理对象的析构问题
直接上代码:#include "stdafx.h"#include <memory>class Base{ // 没有虚析构函数};class Derived : public Base{public: Derived() = default; Derived(int int_) : i_(int_) {} ~Derived()...
2019-05-31 17:05:10
2371
转载 地址重定位:静态重定位和动态重定位
地址重定位就是操作系统将逻辑地址转变为物理地址的过程。。。也就是对目标程序中的指令和数据进行修改的过程将逻辑地址空间重定位到物理地址空间的时机有三种:1、程序编译连接时:符号绑定,各Obj模块的相对虚拟地址空间 -->统一的虚拟地址空间;可指定一个BaseAddress以优化装载时的重定位2、程序装入内存时: 虚拟地址空间 -->虚拟地址空间;如果映像文件中的Base Ad...
2019-04-24 09:06:18
36053
转载 Git进行pull时,出现please enter the commit message for your changes...
在服务端更新代码时,git pull时总是出现需要编辑一个commit messagegit status 查看了下,原来是服务端有部分代码需要commit后尚未push导致。这种问题,解决办法如下:如果你本地仓库不需要push这里编辑默认使用的vi编辑如需要修改,i进入编辑,鼠标第一行编辑默认的合并备注,编辑后按esc进入vi命令模式,:wq退出即可。如不需要修改,直接esc进入v...
2019-04-12 16:49:26
1323
原创 windbg之经典死锁案例 及 相关命令
1 先上死锁代码 如下:#include "stdafx.h"#include <mutex>#include <thread>#include <windows.h>// windows系统中 std::mutex内部是通过Event内核对象实现的,而不是CRITICAL_SECTIONstd::mutex mtx0;std::mutex ...
2019-04-12 16:33:00
781
1
转载 windbg学习21(!handle和!cs)
1.查看句柄信息!handle!handle 扩展显示目标系统中一个或所有进程拥有的句柄的信息。[cpp] view plaincopy0:001>!handle Handle4 TypeDirectory Handle8 TypeFile Handlec Type...
2019-04-12 15:19:57
418
原创 Windbg查看调用堆栈(k*)
https://www.52pojie.cn/thread-664189-1-1.html 无论是分析程序崩溃原因,还是解决程序hang问题,我们最常查看的就是程序调用堆栈。学会windbg调用堆栈命令,以及理解堆栈中的各个参数的意义就显得至关重要。上图就是一个典型的Windbg堆栈,如果不理解ChildEBP、RetAddr、Args to Child等参数意义,以及它们之间...
2019-04-12 15:10:54
3545
原创 Qt 线程安全类,可重入类,不可重入类
1、线程安全类:不同线程对同一个类的对象进行操作,例如在不同线程调用同一个对象的类成员函数,是安全的,互不妨碍的,则说明该类是线程安全的,Qt中线程安全的类有QMutex、QMutexLocker、QReadWriteLock、QReadLocker、QWriteLocker、QSemaphore、QThreadStorage<T>以及QWaitCondition;2、可重入...
2019-04-11 15:05:21
1344
1
原创 c++无类型参数模板(non-type template parameter)
a non-type template-parameter shall have one of the following types(无类型模板参数应该是下面所列举的类型):1. integral or enumeration type(整型 或者 枚举)2. pointer to object or pointer to function(对象的指针或函数指针,其实还包括基本类型的指针)...
2019-04-08 14:22:22
1092
原创 C 之 void *realloc(void *mem_address, unsigned int newsize)
例如有 void* old_addr = ...; unsigned int old_size = ...; void* new_addr = realloc(old_addr, new_size)1 返回值new_addr不为NULL的情况: 1)old_addr != NULL && new_size < old_size:紧缩并释放后面的部分(new_...
2019-03-14 10:15:16
327
转载 C++ 模板的 实例化 和 [偏]特化
最近看了看到了模板的特化,突然想起来上说的显式具体化、隐式具体化、特化、偏特化、具体化等概念弄得头晕脑胀,我在网上了找了好多帖子,才把概念给理清楚。一下是我把再网上找的资料整理一下。看着这么多叫法,其实就是三种。1. 显示实例化2. 隐式实例化3. 特化(=具体化)、偏特化一、实例化1.显示、隐式实例化什么是实例化:一个通过使用具体值替换模板参数,从模板产生的普通类...
2019-03-13 09:47:10
666
转载 stl 二分查找api lower_bound upper_bound binary_search
STL中关于二分查找的函数有三个lower_bound 、upper_bound 、binary_search 。这三个函数都运用于有序区间(当然这也是运用二分查找的前提),下面记录一下这两个函数。ForwardIter lower_bound(ForwardIter first, ForwardIter last,const _Tp& val)算法返回一个非递减序列[first, l...
2019-01-29 14:53:53
170
原创 子类隐藏父类的公共方法
class QPostEventList : public QVector<QPostEvent>{。。。private: //hides because they do not keep that list sorted. addEvent must be used using QVector<QPostEvent>::append; us...
2019-01-29 14:46:56
1359
原创 C++11 lambda编译器实现为函数对象,编译器自动生成相应的函数对象类,捕获列表即时函数对象类的数据成员(即闭包的状态)
C++11 lambda编译器实现为函数对象,编译器自动生成相应的函数对象类,捕获列表即是函数对象类的数据成员(即闭包的状态)https://blog.youkuaiyun.com/freshui/article/details/55098799...
2019-01-18 14:41:09
264
原创 boost编译
windows: boostrap.bat -----运行&生成----> b2.exe -----运行&生成----> lib/dll文件在stage/lib下 linux: boostrap.sh -----运行&生成----> b2 -----运行&生成----> so/a文件在stage/lib下 b2可配置的参数如下...
2019-01-08 09:58:05
454
原创 使用setStyleSheet怎么样才不影响子组件:解决方法
使用了级联样式setStyleSheet("border-image: url(:/image/serialport.png)");结果子组件 都影响。setStyleSheet(".QWidget{border-image: url(:/image/serialport.png)}");前面加个 . 就可以单独对需要处理的出来了。...
2018-12-29 15:55:44
2149
2
原创 继承 QWidget setStyleSheet无效,解决方法。
发现 继承自QWidget的自定义类 ,使用setStyleSheet无效,如果删除头文件中的 Q_OBJECT,setStyleSheet生效,但不用OBJECT 就无法所使用signal and slot,最后找到解决办法,继承自QWidget的自定义类中,重载 paintEvent方法,并加入如下代码:QStyleOption opt;opt.init(this);...
2018-12-29 15:51:28
825
转载 FreeCAD windows下用CMake编译
最近开始使用FreeCAD这一免费开源的软件进行专业软件的开发。软件网址:https://www.freecadweb.org/官方简介:FreeCAD is a 3D CAD/CAE parametric modeling application. It is primarily made for mechanical design, but also serves all ot...
2018-12-27 16:57:49
1925
原创 std::initializer_list<QString> 崩溃问题
发现使用std::initializer_list<QString>时,会造成程序崩溃,貌似是堆栈破坏,猜测和QString的数据隐式共享机制有关,但具体原因还未定位,测试代码如下,期待解答:#include "qstring_initializer_list_test.h"#include <QtWidgets/QApplication>#include <v...
2018-12-26 17:26:40
758
原创 alive_ptr 用于独立的判断原始指针是否有效(存活)的智能指针
#ifndef ALIVE_PTR_H_INCLUDED#define ALIVE_PTR_H_INCLUDED#include <atomic>namespace alive{ template<typename T> struct alive_ref { inline ~alive_ref() {} i...
2018-12-25 15:50:48
398
原创 std::future std::promise std::packaged_task std::async
std::promise std::packaged_task std::async 通过 std::future 异步返回结果值或异常 std::promise<value_type>:直接通过 std::promise<value_type>::set_value或std::promise<value_type>::set_exception返回结...
2018-12-24 18:29:54
205
原创 Qt 鼠标透传属性 WA_TransparentForMouseEvents
setAttribute(Qt::WA_TransparentForMouseEvents) void QWidgetWindow::handleMouseEvent(QMouseEvent *event){..............}
2018-12-21 19:14:36
6656
原创 QImage 和 QPixmap的联系与区别
1. QPixmap 针对绘图进行了优化,直接加载到显存(server端),和平台相关(在不同的平台可能绘制出的效果不一致)2. QImage 和平台无关,可以对图片进行修改(某个像素点的修改),可以在线程里绘图,可以用来优化UI响应时间QPixmap与QImage相互转换QImage image = pixmap.toImage();QPixmap pixmap = QPix...
2018-12-19 11:17:09
5308
原创 std::priority_queue 和 std::set(或std::map)的区别
std::priority_queue:是一个容器适配器(container adaptor),行为和heap一样(内部增删操作时也是通过std::make_heap等来维护元素顺序的);但是对所适配的容器有诸般要求:1 支持随机访问元素(random access),形如std::vector, std::deque; std::priority_queue默认使用的就是std::vect...
2018-11-14 09:30:03
1654
转载 VS下QT工程不能生成moc文件的解决方法: 自定义编译工具
选择要moc的类的头文件,鼠标右键,选择property->Item Type:将此项改为Custom Build Tool,然后看到左边会变成Custom Build Tool:选择Custom Build Tool->General:类比其他头文件添加指令和输出路径: Command Line:"$(QTDIR)\bin\moc.exe" "%(FullPat...
2018-10-22 16:45:42
1407
原创 AOP C++通用模板实现
has_member.h:#ifndef __AOP_SRC_HAS_MEMBER_H__#define __AOP_SRC_HAS_MEMBER_H__#include <type_traits>#define HAS_MEMBER_FUNCTION(member) \template<typename T, typename ... Args> \str...
2018-10-19 11:46:40
539
原创 Qt点滴 QLabel Disabled时 图片变灰
void QLabel::paintEvent(QPaintEvent *){ .......#endif if (d->pixmap && !d->pixmap->isNull()) { QPixmap pix; ...... } else pix = *d->p...
2018-10-15 11:12:30
3725
转载 QT程序自动寻找依赖的DLL(Qt官方开发环境生成的exe发布方式--使用windeployqt)
Qt 官方开发环境使用的动态链接库方式,在发布生成的exe程序时,需要复制一大堆 dll,如果自己去复制dll,很可能丢三落四,导致exe在别的电脑里无法正常运行。因此 Qt 官方开发环境里自带了一个工具:windeployqt.exe。以官方 Qt 5.7.0+MinGW 开发环境为例: 从开始菜单-->Qt 5.7.0-->5.7-->MinGW 5.3.0 (...
2018-08-31 16:44:12
2924
转载 windbg-跳过初始断点(调试技巧)
ntdll!LdrpDoDebuggerBreak+0x2c: 7757054e cc int 3 0:000> kv ChildEBP RetAddr Args to Child 0030f3c8 77550e00 7ffdf000 7ffd3000 775a714c ntdll!LdrpDoDebuggerBreak+0x2c (FP...
2018-08-31 16:43:59
877
转载 奇偶规则和非零环绕数规则
在图形学中判断一个点是否在多边形内,若多边形不是自相交的,那么可以简单的判断这个点在多边形内部还是外部;若多边形是自相交的,那么就需要根据非零环绕数规则和奇-偶规则判断。判断多边形是否是自相交的:多边形在平面内除顶点外还有其他公共点内-外测试 不自交的多边形:多边形仅在顶点处连接,而在平面内没有其他公共点,此时可以直接划分内-外部分。 自相交的多边形:多边形在平面内除顶点外...
2018-08-31 16:43:28
1470
原创 windows下 编译Chromium遇到的问题
1 找不到D3Dcompiler_47.dll2 找不到uiviewsettinginterop.h这个头文件,下载最新的windows 10 sdk3 CLIENT_ID redefined; 与winternal.h的CLIENT_ID冲突,注释掉chromium的那一行 struct CLIENT_ID;4 mc.exe mt.exe midl.exe 不是内部或外部的命令; 从...
2018-08-31 16:42:46
816
转载 CRTP: Curiously Recurring Template Pattern
Curiously recurring template patternFrom Wikipedia, the free encyclopedia (Redirected from Curiously Recurring Template Pattern)Jump to navigation Jump to searchThe curiously recurring templa...
2018-08-30 18:32:14
241
转载 moc文件生成方法,qt找不到moc_**.cpp
Qt 程序在交由标准编译器编译之前,先要使用 moc 分析 C++ 源文件。如果它发现在一个头文件中包含了宏 Q_OBJECT,则会生成另外一个 C++ 源文件。这个源文件中包含了 Q_OBJECT 宏的实现代码。这个新的文件名字将会是原文件名前面加上 moc_ 构成。这个新的文件同样将进入编译系统,最终被链接到二进制代码中去。因此我们可以知道,这个新的文件不是“替换”掉旧的文件,而是与原文件一起...
2018-07-20 10:26:59
13918
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人