- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 C++ 八股文【二】多态 虚函数指针
要了解C++中的面向对象的特性,除了使用方法外,了解其底层的技术细节对我们编程工作非常有帮助。尤其是了解对象的内存映像、vtable(虚函数表)的构造、vptr(虚函数指针)的插入和初始化时机、构造和析构函数的自动调用时机、对象的构造和析构次序、临时对象的创建和销毁、RTTI(运行阶段类型识别)的底层实习技术等。对象在内存中的布局我们首先看一下简单的非多态类Rectangle的对象内存映像:...
2020-02-13 22:21:26 903
原创 C++八股文【三】四种cast的原理与用途
cast主要用途是用于变量或指针之间的强制转换,内在的基本原理还是指针与内存截取,但是更安全static_cast:它的使用基本上与C中的括号强转没有什么区别,主要用于基本类型的强制转换,比如int32_t 与 short之间,转换规则与C基本一致,对数据的二进制截取,如果结果非法,会返回对应的0值或空指针dynamic_cast:即RTTI:(Run Time Type Identification)通过运行时类型识别,程序能够使用基类的指针或引用来检查着这些指针或引用所指的对象的实际派生类型。co
2021-11-28 22:33:25 731
原创 C++八股文【一】全局成员与静态成员
1.初始化引用和常量:必须通过构造函数的参数列表的方式初始化。静态变量: 必须在类定义体外进行初始化与定义静态常量:可以直接在类中初始化,也可以在类中声明,在类定义体外进行定义静态成员属于类作用域,但不属于类对象,它的生命周期和普通的静态变量一样,程序运行时进行分配内存和初始化,程序结束时则被释放。所以不能在类的构造函数中进行初始化。静态函数:因为static成员函数没有this指针,所以静态成员函数不可以访问非静态成员。非静态成员函数可以访问静态成员。静态数据成员与类的大小无关,因为静态成
2021-11-28 22:04:57 996
原创 Linux常用基础命令
常用基本命令查看文件信息:lsls是英文单词list的简写,其功能为列出目录的内容,是用户最常用的命令之一,它类似于DOS下的dir命令。Linux文件或者目录名称最长可以有265个字符,“.”代表当前目录,“…”代表上一级目录,以“.”开头的文件为隐藏文件,需要用 -a 参数才能显示。ls常用参数:参数 含义 -a 显示指定目录下所有子目录与文件,包括隐藏文件 -l 以列表方式显示文件的详细信息 -h 配合 -l 以人性化的方式显示文件大小与DOS下的文件操作类似,在Unix/Linux系统中
2021-08-01 21:28:02 185
原创 Linux常用日志命令
Linux查看日志(系统、应用)使用技巧使用 重定向 输出到当前用户桌面例如: sudo journalctl -b -0 > $PWD/Desktop/system.log相关命令# 查看所有日志(默认情况下 ,只保存本次启动的日志)$ sudo journalctl # 查看内核日志(不显示应用日志)$ sudo journalctl -k # 查看系统本次启动的日志$ sudo journalctl -b$ sudo journalctl -b -0 # 查看上一
2021-08-01 18:44:33 223
原创 sanitizer工具集
sanitizer工具集的介绍Sanitizers是谷歌发起的开源工具集,包括了Address Sanitizer, undefined behavior Sanitizer, Thread Sanitizer, Leak Sanitizer。GCC从4.8版本开始支持Address sanitizer和Thread Sanitizer,4.9版本开始支持Leak Sanitizer和undefined behavior Sanitizer。Address Sanitizer(ASAN): 也即地址
2021-08-01 18:20:20 1647
原创 C++ 并发与多线程学习笔记(七)原子操作
引例先来设想一个场景:存在一个变量,有线程要读这个变量,有线程要写这个变量:int share_value = 0;void threadFunc(){ for (int i = 0; i < 100000; i++) //每个线程进行10万次计算 share_value++;}int main(){ clock_t start = clock();//为了分析性能,...
2020-03-06 14:21:59 197
原创 C++ 并发与多线程学习笔记(六)线程同步 condition_variable条件变量 async future
顾名思义,条件变量就是一种让线程满足的条件。需要和互斥锁配合使用官方文档:http://www.cplusplus.com/reference/condition_variable/condition_variable/需求:有时候,我们需要多个线程能够同时就绪,再继续往下执行,或者多个线程需要使用有限的互斥量,然后再继续执行。使线程之间从某处开始同步执行。std::condition_va...
2020-02-25 19:48:54 373
原创 C++ 并发与多线程学习笔记(五)单例设计模式 共享数据分析
在开始学习之前,先简单讲讲对于设计模式的概念,设计模式是一些代码的写法,并非什么新奇的技术,是一些歪果仁的模块化编程的经验总结,是一种设计程序的思想或者说思路模板。在前几年设计模式刚被引入的时候,大家觉得很高大上,因此曾被部分夸大,但实际中并不是必要的,用设计模式写出来的代码比较晦涩,维护、接手的时候都有一定难度。设计模式有它的优点,要活学活用,不要深陷其中,正确的认识它。所有实用的编程方法和技术......
2020-02-23 21:04:21 446
原创 C++ 并发与多线程学习笔记(四) 线程数据共享 互斥锁 死锁
消息队列的应用除了线程之间,还在进程间、系统间有广泛的应用,消息可以很简单,也可以很复杂,面对庞杂的数据时,消息队列是常用的思想,市面上有很多第三方软件封装好了消息队列供企业使用。
2020-02-21 16:56:24 388
原创 C++ 并发与多线程学习笔记(三)线程传参隐患 成员函数指针做线程函数
传递临时对象作为线程参数先来看一个例子:#include <string>#include <iostream>using namespace std;void myprint(const int &i,char *pmybuf){ cout << i << endl; cout << pmybuf <<...
2020-02-17 20:42:58 1137
原创 C++ 并发与多线程学习笔记(二)线程启动、结束、创建、join()、detach()
一个进程必然包含一个主线程,进程和主线程密不可分。thread:是一个标准库里的类实例化一个thread对象即可操作线程例:void myfun(){ ...}int main(){ ... std::thread myThreadObj(myfun); myThreadObj.join(); ... return 0;}join()方法:加入/汇合,作用是阻塞...
2020-02-16 14:22:01 652
Google C++编程风格指南.pdf
2020-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人