自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 问答 (2)
  • 收藏
  • 关注

原创 winDbg 调试基本流程

1、打开对应winDbg,不同位数选择相应的winDbg。2、设置symbol path,记得加上srv*3、选择对应的image path。可以看到所有线程的执行情况。4、放入对应dump文件。这个时候能显示文件和行号。

2024-04-12 17:36:34 356

原创 windows&mac QT程序开机启动

2、Mac OS开机启动,目前就看到一种方式在launchAgent目录下写plist文件。1、Windows做开机启动,非管理员权限程序写注册表的方式就可以了,

2023-11-03 18:52:38 105

原创 Genymotion_ARM_Translation 遇到的坑

记录一下,windows下的虚拟机支持arm的坑,因为Genymotion虚拟机不支持中文路径,导致浏览器下载完成zip包之后,拖拽到虚拟机中,提示文件上传完成,但是不会弹出安装提示,使用adb 命令也不能安装成功,最后原因竟然是由于下载路径中有中文路径,导致上传文件失败,但是虚拟机提示文件已上传成功,虚拟机的大坑,折腾了两个小时,哎...

2021-11-25 16:42:30 894

原创 Effective C++ -- 模板与泛型编程

41、了解隐式接口和编译期多态---- classes 和 templates 都支持接口(interfaces)和多态(polymorphiism)。---- 对classes 而言接口是显示(explicit),以函数签名为中心。多态则是通过virtual函数发生于运行期。---- 对template 参数而言,接口是隐式的(implicit),奠基于有效表达式。多态则是通过template 具现化和函数重载解析(function overloading resolution)发生于编译期。

2021-11-05 19:26:54 575

原创 Effective C++ -- 继承与面向对象设计

32、确定你的public继承代表is-a关系---- public 继承意味is-a。适用于base classes身上的每一件事情一定也适用于derived classes 身上,因为每一个derived class对象也都是一个base class对象33、避免遮掩继承而来的名称使用usingclass Base{public: virtual void mf1() = 0; virtual void mf1(int); virtual void mf2(); void

2021-10-25 19:57:14 149

原创 Effective C++ -- 实现

26、尽可能延后变量定义式的出现时间---- 尽可能延后变量定义式的出现。这样做可增加程序的清晰度并改善程序效率。27、尽量少做转型动作C++规则的设计目标之一是,保证“类型错误”绝不可能发生。理论上如果你的程序很“干净地”通过编译,就表示它并不企图在任何对象上执行任何不安全、无意义、愚蠢荒谬的操作。这是一个极具价值的保证,可别草率的放弃它。C++ 提供了四种新式转型 const_cast<T>(expression) dynamic_cast...

2021-10-25 17:22:32 95

原创 Effective C++ -- 设计与声明

18、让接口容易被正确使用,不易被误用---- 好的接口很容易被正确使用,不容易被误用。你应该在你的所有接口中努力达成这些性质---- “促进正确使用”的办法包括接口的一致性,以及与内置类型的行为兼容---- “阻止误用”的办法包括建立新类型、限制类型上的操作,束缚对象值,以及消除客户的资源管理责任---- tr1::shared_ptr支持定制型删除器。这可防范DLL问题,可被用来自动解除互斥锁等等19、设计class犹如设计type新type的对象应该如何被创建和销毁?这会影响你

2021-10-22 19:43:51 74

原创 Effective C++ -- 资源管理

13、以对象管理资源---- 为防止资泄漏,请使用RAII(Resource Acquisition Is Initialization)对象,它们在构造函数中获得资源并在析构函数中释放资源---- 两个常被使用的RAII classes 分别是 tr1::shared_ptr和auto_ptr。前者通常是较佳选择,因为其copy行为比较直观。若选择auto_ptr,复制动作会使它(被复制物)指向null14、在资源管理类中小心copying行为--- 复制RAII对象必须一并复制它所管理的

2021-10-22 15:20:49 144

原创 Effective C++ -- 构造、析构、赋值运算

5、了解C++默默编写并调用哪些函数一个空类 empty class,如果你自己没有声明,编译器就会为它声明(编译器版本的)一个copy构造函数、一个copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,编译器也会为你声明一个default构造函数。所有这些函数都是public且inline。编译器产出的析构函数是non-virtual,除非这个class的base class自身声明有virtual析构函数如果你打算在一个“内含reference成员”的class

2021-10-20 13:52:57 79

原创 Effective C++ --- 让自己习惯C++

1、视C++为一个语言联邦C++已经是个多重范型编程语言,一个同时支持过程形式、面向对象形式、函数形式、泛型形式、元编程形式的语言2、尽量以const、enum、inline 替换 #define宏一般来说不能进行调试,看不到符号体系,给调试带来困难class GamePlayer { private: static const int NumTurns = 5; // 常量声明式 int scores[NumTurns]; //

2021-10-19 20:12:08 60

原创 Effective STL--使用STL编程

43、尽量用算法调用代替手写循环-----算法通常比程序员产生的循环更高效;写循环时比调用算法更容易产生错误;算法那通常使代码相应的显示循环更干净、更直观44、尽量用成员函数代替同名的算法---大多数情况下,你应该用成员函数代替算法。这样做有两个理由。首先,成员函数更快。其次,比起算法来,它们与容器结合的更好;那是因为同名的算法和成员函数通常并不是一样,这是因为同名算法的适用性一般比成员函数广,在实现的时候的效率应该丢失了一些;而且同名算法和成员函数的谓词函数实现有可能不一致,导致不正确的结果45、

2021-10-19 17:14:07 92

原创 Effective STL--仿函数、仿函数类、函数等

38、把仿函数类设计为用于值传递------C和C++都不允许你真的把函数作为参数传递给其他函数,都是需要函数指针来传递,通过值传递方式;所以函数对象要小,而且不能多态39、用纯函数做判断式------纯函数是返回值只依赖于参数的函数。如果f是一个纯函数,x和y是对象,f(x,y)的返回值只有x或y的值改变的时候才会改变40、使仿函数类可适配------继承unary_function或binary_function41、了解使用ptr_fun、mem_fun和mem_fun_ref的原因---

2021-10-19 15:54:01 57

原创 Effective STL--算法

30、确保目标区间足够大---因为算法是基于迭代器的,会对迭代器进行+1或者-1操作,如果空前不够大,可能导致未定义行为,另外,保证空间足够大,可以减少内存重新分配的次数,增加效率31、了解你的排序选择-----如果你需要在vector、string、deque或数组上进行完全排序,你可以使用sort或stable_sort;如果你有一个vector、string、deque或数组,你只需要排序前n个元素,应该用partial_sort;如果你有一个vector、string、deque或数组,你需要鉴

2021-10-19 10:43:50 76

原创 Effective STL--迭代器

26、尽量用iterator代替const_iterator,reverse_iterator和const_reverse_iterator-------在查找和修改时要尽量使用iterator27、用distance和advance把const_iterator转化成iterator28、了解如何通过reverse_iterator的base得到iterator-----reverse_iterator.base()可以得到iterator,但是要注意偏移;插入操作时,reverse_iterat

2021-10-18 19:14:04 51

原创 Effective STL--关联容器

19、了解相等和等价的区别--------相等一般基于operator==,等价则基于一个仿函数--!key_comp()(w1,w2) && !key_comp()(w2,w1)20、为指针的关联容器指定比较类型------因为关联容器会根据比较类型确认相应的顺序,所以如果是指针的关联容器没有提供比较类型,只能采用指针的值来进行比较,这个肯定不是你想要的结果21、永远让比较函数对相等的值返回false,因为关联容器的比较基于<,所以如果相等的值返回true会导致比较返回不正确

2021-10-18 18:46:07 49

原创 Effective STL--vector和string

13、尽量使用vector和string来代替动态分配的数组----考虑string的引用计数带来的线程安全问题14、使用reserve来避免不必要的重新分配----如果预先知道或大约知道容器中有多少元素,采用reserve一次性扩充内存,避免重新分配多次内存15、小心string实现的多样性16、如何将vector和string的数据传给遗留的API-&vector[0] 和 s.c_str()17、使用“交换技巧”来修整过剩余量---vector<T>(t).swa.

2021-10-18 16:06:04 59

原创 Effective STL--容器

1、仔细选择你的容器-根据内存、操作(插入,删除、查找等)、标准化等选择容器2、小心对“容器无关代码”的幻想-----尽量抛弃这种想法,除非你要写纯c或简单数据结构的代码3、使容器里对象的拷贝轻量而正确-----因为容器是基于拷贝的操作4、用empty来代替检查size()是否0---empty保证永远是常数时间,size()在实现上,可能无法保证常数时间,很有可能是线性时间(根据实现版本有所不同),但是empty不管如何都是常数时间5、尽量使用区间成员函数代替它们的单元素兄弟-------

2021-10-18 11:31:09 81

原创 如何不被一个不知道管理的领导牵着鼻子走

如果你碰到一个做事没有什么计划,但是又什么事情都很着急的领导。那么恭喜你,你中奖了,他(她)可能随时随地的打扰到你的工作和生活计划,那你怎么做才能不被他(她)牵着鼻子走呢?    1、你要有自己的工作计划,然后列出工作优先级,当有一个非常紧急的事情到来的时候,根据事情的优先级作出合理的安排。    2、要对自己有信心,不要被外物所打扰,说的直白一点,就是不要纠结,当一件事情来了之后,迅速按照第一条...

2018-06-15 14:22:53 748

空空如也

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

TA关注的人

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