笔记
文章平均质量分 93
Frank.Ginger
coder
展开
-
*面试题:
1、虚函数实现原理?2、构造函数为什么不能时虚函数?3、map底层实现原理?4、模态窗实现原理?5、多线程的几种方式?区别?6、类先分配内存还是先执行构造?7、进程间通讯的几种方式?8、GetMessage与PeekMeaasge区别?9、vector与list区别?10、几种智能指针的区别?...原创 2020-06-20 11:04:58 · 116 阅读 · 0 评论 -
windows线程同步
一、线程的基本概念。基本概念:线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元。一个标准的线程由线程ID、当前指令指针(PC),寄存器集合和堆栈组成。线程是进程中的一个实体,是被系统独立调度和分派的基本单位。线程不拥有系统资源,近拥有少量运行必须的资源。二、线程的基本状态。基本状态:就绪、阻塞和运行三种基本状态。就绪状态,指线程具备运行的...原创 2019-03-13 18:12:25 · 121 阅读 · 0 评论 -
win32 消息机制
1、windows消息分类:窗口消息:与窗口相关,以WM_开头的消息,除WM_COMMAND外。命令消息:WM_COMMAND消息,处理用户请求控件通知消息:WM_NOTIFY用户自定义消息:(WM_USER、 WM_APP)2、windows消息系统组成:消息队列:操作系统负责为进城维护一个消息队列,程序运行时不断地从消息队列进行消息的获取,处理消息消息循环:应用程序不断地获取消...原创 2018-07-13 18:38:29 · 229 阅读 · 0 评论 -
C++面试题总结
类定义中的声明顺序类定义中应该先定义public段,然后是protected段,其次是private段。每个段内应该遵循以下声明顺序:using、typedef和enums 常量 构造函数和赋值操作函数 析构函数 成员方法 成员数据1、new 、 delete 、 malloc 、 free的区别与关系? new / delete是C++的运算符,malloc / fr...原创 2019-04-09 14:07:37 · 358 阅读 · 0 评论 -
C++中的this指针
1、对于类成员函数而言,this并不是一个对象对应一个单独的成员函数体,而是此类的所有对象共有这个成员函数体,即调用同一代码段。 当一个对象调用非静态成员函数时,编译器会自动先将对象的地址赋给成员函数的this指针,即作为一个隐含参数传递给成员函数,然后每次非静态成员函数存取非静态数据成员时,都隐含使用this指针。2、一个对象的this指针并不是对象本身的一部分,不会影响sizeof()的...原创 2019-04-20 20:03:07 · 117 阅读 · 0 评论 -
tcp的可靠性体现在哪里
TCP可靠性表现在以下七个方面:1、应用数据被分割成TCP认为最适合发送的数据块。(这和UDP完全不同,应用程序产生的数据报长度将保持不变)。2、确认响应:对于一个收到的请求,将发送一个确认。这个确认通常要延迟几分之一秒。2、超时重传: 当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。3、TCP给发送的每一一个包进行编号...原创 2020-03-25 14:07:55 · 2120 阅读 · 0 评论 -
笔记7:vector和list
底层实现 vector的底层结构是动态顺序表,在内存中是一段连续的空间。 list的底层结构是带头节点的双向循环链表,在内存中不是一段连续的空间。随机访问 vector支持随机访问,可以利用下标精准定位到一个元素上,访问某个元素的时间复杂度是O(1)。 list不支持随机访问,要想访问list中的某个元素只能是从前向后或从后向前依次遍历,时间复杂度是O(N)。插入和删除...转载 2020-03-15 17:56:26 · 161 阅读 · 0 评论 -
proactor和reactor
https://www.cnblogs.com/me115/p/4452801.htmlhttps://segmentfault.com/a/1190000018331509https://www.cnblogs.com/tianzeng/p/10779425.html转载 2020-03-16 15:10:30 · 120 阅读 · 0 评论 -
笔记9:C++内存管理
1.1 C++内存分配1.1.1分配方式简介 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应...原创 2020-03-16 11:53:42 · 214 阅读 · 0 评论 -
笔记8:map与set的底层实现
C++STL中map,set的底层实现全是用的红黑树。为什么需要红黑树? map,set底层都提供了排序功能,且查找速度快。红黑树实际上是AVL的一种变形,但是其比AVL(平衡二叉搜索树)具有更高的插入效率,当然查找效率会平衡二叉树稍微低一点点。它可以在O(logn)时间内做查找,插入和删除,这里的n是树中元素的数目。平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下...转载 2020-03-15 18:33:11 · 1030 阅读 · 0 评论 -
笔记6:C++中的static关键字
C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。1.面向过程设计中的static1.1静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:#include <iostream.h&g...转载 2020-03-15 11:41:09 · 114 阅读 · 0 评论 -
笔记5:C++原子操作
原子操作是在多线程程序中“最小的且不可并行化的”操作,意味着多个线程访问同一个资源时,有且仅有一个线程能对资源进行操作。通常情况下原子操作可以通过互斥的访问方式来保证,例如Linux下的互斥锁(mutex),Windows 下的临界区(Critical Section)等。i++问题在多线程编程中,最常拿来举例的问题便是著名的i++ 问题,即:多个线程对同一个共享变量i执行i++ 操作。这...转载 2020-03-15 11:12:49 · 1381 阅读 · 1 评论 -
笔记4:重载、重写、隐藏
1、重载(overload)重载的定义为:在同一作用域中,同名函数的形式参数(参数个数、类型或者顺序)不同时,构成函数重载。例如:class A{public: int func(int a); void func(int a, int b); void func(int a, int b, int c); int...转载 2020-03-15 10:37:13 · 148 阅读 · 0 评论 -
笔记3:new、malloc()
malloc()是C语言中动态存储管理的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值是一个指向所分配的连续存储域的起始地址的指针.malloc()工作机制malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然...原创 2020-03-14 16:41:26 · 147 阅读 · 0 评论 -
笔记2:智能指针
我们知道除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。在C++中,动态内存的管理是用一对运算符完成的:new和delete,new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针,delete:指向一个动态独享的指针,销毁对象,...原创 2020-03-14 15:36:21 · 495 阅读 · 0 评论 -
笔记1:C++虚函数、多态
1、c++虚函数原理: 虚函数:指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。 c++中虚函数表的作用主要是实现了多态的机制。 多态:就是用父类的指针指向其子类的实例,然后通过父类的指针 根据不同的子类对象调用实际子类的成员函数,这种方法既不需要改动代码就可以让父类指针执行很多子类的操作,这就是虚函数的实现机制。...原创 2020-03-14 14:38:19 · 148 阅读 · 0 评论