
新手入门
文章平均质量分 79
Polymer to C++
重视细节,但不要沉迷于细节
展开
-
设计模式:创建型设计模式、结构型设计模式
设计原则之间有概念重复的部分,侧重点又有所不同;因此在开发时,应参考设计原则进行代码结构设计。原创 2023-04-30 15:29:28 · 1018 阅读 · 0 评论 -
海量数据去重的Hash与BloomFilter,bitmap,分布式一致性hash
布隆过滤器是由位图和k个hash函数构成的有时,我们不需要通过key查找特定的value,只是想确定某个key是否存在,又或是为了节省内存,可以使用布隆过滤器。原创 2023-04-09 16:34:36 · 537 阅读 · 0 评论 -
【gdb配置】打印stl容器,.gdbinit文件
原生gdb通过p打印C++容器,打印出的内容往往难以理解,通过以下的脚本可以实现常用容器的打印。如果不想每次启动gdb都要手动输入读取脚本,可以将上面stl_views_1.0.3.gdb的内容直接拷贝到.gdbinit文件中,具体操作可以看后面的第二大点同样的,可以通过pmap,pset,plist…等等来打印STL容器的内容,方便调试。原创 2023-01-14 16:24:35 · 1582 阅读 · 0 评论 -
高效的NoSql数据库——Redis
Redis是一个高性能的Key-Value数据库,它默认将数据存储在内存中,实现数据的高效存取,通常作为缓存使用。原创 2022-09-24 18:35:48 · 449 阅读 · 0 评论 -
【Linux】进程(二)Linux进程地址空间、写时拷贝
目录原创 2021-11-19 23:45:34 · 865 阅读 · 0 评论 -
【Linux】文件描述符的理解、重定向原理
目录1. 文件描述符的本质2. 重定向原理1. 文件描述符的本质我们知道,当一个程序在运行时,会挂起一个task_struct结构体,保存着描述该进程的信息,包括2. 重定向原理原创 2021-07-10 21:58:00 · 550 阅读 · 0 评论 -
【Linux】gcc/g++的使用(下)gdb调试
注意:在发布调试版本和release版本时,编译选项(优化级别、链接库等)应尽可能保持一致。l(list) 行号。enable 断点号。原创 2021-06-21 21:33:07 · 880 阅读 · 0 评论 -
【Linux】编译器gcc/g++的使用(上)程序编译的过程
目录1. gcc编译程序的四个过程1.1 预处理(进行宏替换)1.2 编译(生成汇编)1.3 汇编(生成机器可识别代码)1.4 链接(生成可执行文件或库文件 )2. 动态链接与静态链接(函数库)3. gcc选项1. gcc编译程序的四个过程格式 gcc [选项] 要编译的文件 [选项] [目标文件]1.1 预处理(进行宏替换)预处理功能主要包括宏定义,文件包含,条件编译,去注释等。预处理指令是以#号开头的代码行。实例: gcc –E test.c –o test.i选项“-E”,该选项的作原创 2021-06-21 19:18:15 · 255 阅读 · 0 评论 -
【C++入门】类的默认成员函数
目录1.类的6个默认成员函数2.构造函数3.析构函数4.拷贝构造函数5.赋值操作符重载6.默认拷贝函数与赋值运算符重载的问题7.const成员函数8.取地址及const取地址操作符重载1.类的6个默认成员函数如果一个类中什么成员都没有,则成为空类。空类中真的什么都没有吗?答案是否定的,任何一个类在定义时我们什么都不写的情况下,都会自动生成下面6个默认成员函数。class Date{};2.构造函数对于Date类,可以通过SetDate公有方法给对象设置内容,但如果每次创建对象都调用该方法来初始原创 2021-06-16 14:17:40 · 423 阅读 · 0 评论 -
【C++入门】引用详解
目录1.引用概念2.引用特性3.常引用4.使用场景4.1 引用做函数参数4.2 引用做函数返回值5.传值、传引用的效率比较6.值和引用作为返回值类型的性能比较7.引用和指针的区别1.引用概念引用不是新定义一个变量,而是给已存在的变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共同使用同一块内存空间。例如,你小时候家里人叫你的小名“二宝”,上学了同学们叫你的绰号“菠萝头”,“二宝”和“菠萝头”都是你的别名。用法:类型& 引用变量名(对象名) = 引用实体void Test原创 2021-06-13 15:05:42 · 178 阅读 · 0 评论 -
【数据结构】(三)栈和队列
目录1.栈1.1 栈的概念及结构1.1.1 概念1.1.2 结构1.2 栈的实现2.队列2.1 队列的概念及结构2.2 队列的实现1.栈1.1 栈的概念及结构1.1.1 概念栈 是一种特殊的线性表,其只允许在固定的一段进行元素的插入和删除操作。**进行数据插入和删除的一端称为栈顶,另一端称为栈底。**栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。压栈:栈的插入操作称为进栈/压栈/入栈,压入的数据在栈顶。出栈:栈的删除操作叫做出栈,出数据也在栈顶。原创 2021-06-05 20:30:45 · 270 阅读 · 0 评论 -
【C语言知识点总结】你要的都在图里
原创 2021-06-03 14:37:05 · 240 阅读 · 0 评论 -
【数据结构】(二)顺序表、链表结构的实现与对应操作详解
//顺序表的动态存储typedef struct SeqList{ SLDataType* array;//指向动态开辟的数组 size_t size;//有效数据个数 size_t capacity;//容量空间的大小}原创 2021-06-03 14:25:18 · 917 阅读 · 1 评论 -
【数据结构】(一)数据结构入门:数据结构、算法,时间复杂度和空间复杂度
目录1.什么是数据结构?2.时间复杂度和空间复杂度2.1 时间复杂度2.1.1定义2.1.2 大O的渐进表示法2.2 空间复杂度1.什么是数据结构?数据结构(Data Structure) 是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。提到数据结构,就不得不提到算法,不论是在学习还是工作过程中,数据结构与算法可以说占据了半壁江山,可谓是重中之重,因此学好是很有必要的。算法(Algorithm): 就是定义良好的计算过程,其取一个或一组的值为输入,并产生出一个或一组值原创 2021-06-01 15:47:00 · 375 阅读 · 0 评论 -
动态内存函数介绍:malloc、calloc、realloc、alloca
一.为什么存在动态内存分配?我们已知的开辟空间的方式有:int c=10;//申请一个四个字节的空间char arr[10]={0};//申请十个字节的空间以上申请内存的特点是:1.申请出的内存大小是固定的2.在变量或数组声明时,所占用的内存空间是固定的,不能由具体的应用灵活调整大小有时候,程序所需要的内存空间是无法确定的,需要在程序运行过程中才能得知,这时候,就要借助动态内存分配。二.动态内存函数介绍1.malloc和freemalloc函数原型:void* malloc(size原创 2021-05-25 20:56:55 · 579 阅读 · 2 评论 -
找单身狗(找只出现一次的数字)
题目:一个数组中只有两个数字是出现一次,其他所有数字都出现了两次。编写一个函数找出这两个只出现一次的数字1.基本思路考虑用异或的方法来实现,找出一个只出现过一次的数字的问题处理方法就是找一个数字把里面所有的数字都异或一遍,利用异或两次等于没异或的特点来处理。那么如果有两个数字都只出现了一次,那么如此得到的应该是两个数异或的结果。(这是因为任何数和自己的异或结果都为0,任何数与0的异或结果都为这个数本身;又因为异或运算满足交换律和结合律,故得以上结论);理解了这点,剩下的就变得easy很多。首先这个结原创 2021-04-25 14:14:12 · 252 阅读 · 0 评论 -
结构体的内存对齐现象
本篇主要介绍如何计算结构体的大小,这涉及到一个特别热门的考点:结构体内存对齐。为什么存在内存对齐?大部分的参考资料都是这么说的:1. 平台原因(移植原因): 不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2. 性能原因: 数据结构(尤其是栈)应该尽可能地在自然边界上对齐。 原因在于,为了访问未对齐的内存,处理器需要作两次内存访问;而对齐的内存访问仅需要一次访问。总体来说:结构体的内存对齐是拿空间来换取时间的做法。下面先来了解原创 2021-04-22 14:52:51 · 314 阅读 · 2 评论