摘要: 1. 工厂模式是什么: 把创建对象的过程比作一个工厂中生产产品的过程,即在一个工厂中(工厂类)统一创建不同类型的产品(对象)。 利用了C++面向对象中的继承来实现。 2. 工厂模式为了解决什么问题: 1). 不同的类,需要不同的创建过程。如不同种类的动物,根据不同的场景会写下如下条件分支的代码: i 阅读全文
posted @ 2021-05-07 10:33 Dylan_Liang 阅读(91) 评论(0) 推荐(0) 编辑
摘要: string 1. string的size(), length()返回的大小包括截至符吗?sizeof求数组呢?strlen()函数呢? char arr[] = "abcde"; int arraysize = sizeof(arr); // 6 int strlensize = strlen(a 阅读全文
posted @ 2021-05-05 21:05 Dylan_Liang 阅读(61) 评论(0) 推荐(0) 编辑
摘要: 为什么会有单例模式? 在程序中对于某个类只想有一个对象,并且要限制对象的创建时会用到单例模式。 单例模式实现了:程序全局都可以共享使用一个单例对象,有方便的接口可以获取这个单例对象,禁止创建这个单例类的对象,只能通过设计的接口来使用。 实现方式 做到一下几点就可以实现单例模式: 1. 私有化构造函数 阅读全文
posted @ 2021-05-01 00:36 Dylan_Liang 阅读(214) 评论(0) 推荐(0) 编辑
摘要: atomic 原子操作: 原子:即最小且不可分割的执行单元,我们知道高级语言一条命令在底层可能分解为多条命令执行,在多线程时,可能会造成无可预料的问题。 如果某些命令的操作是不可分割的,意思就是只有两种状态,完成和未完成,这样就解决了多线程同时访问导致的问题。 优势:解决多线程冲突的方法最早可以通过 阅读全文
posted @ 2021-04-30 16:28 Dylan_Liang 阅读(968) 评论(0) 推荐(0) 编辑
摘要: 宏的作用: 定义常量 定义傻瓜表达式: 只作为符号替换: #define S(a, b) a * b // S(1+2, 2+3) // 1+ 2*2 + 3 = 8 定义代码段: #define P(a) {\ printf("%d\n", a); \ } '\' 为连接符,因为C规定,宏定义只能 阅读全文
posted @ 2021-04-13 15:38 Dylan_Liang 阅读(365) 评论(0) 推荐(0) 编辑
摘要: 一. 网络分层 一个概念:任何复杂的程序都需要分层来完成。 对于网络传输这个复杂的程序而言,需要哪几层来完成呢。由上至下进行说明。 (最接近用户操作的座位上层,接近物理硬件的作为下层) 1. 应用层: 各种可见的消息,如支付信息。 封装成固定的协议,如HTTP, HTTPS等 2. 传输层 加上目标 阅读全文
posted @ 2021-03-08 16:53 Dylan_Liang 阅读(779) 评论(0) 推荐(0) 编辑
摘要: 1. 初始化时机 全局变量、文件域中的静态变量、类中的成员静态变量在main函数执行前初始化;局部变量中的静态变量在第一次调用时初始化。 C和C++的区别:局部静态变量: 在C语言中是编译期初始化并分配内存,故不能用变量给静态局部变量赋值,只能用常量。 在C++中是第一次执行时初始化,因为C++引入 阅读全文
posted @ 2021-02-19 23:09 Dylan_Liang 阅读(10105) 评论(0) 推荐(0) 编辑
摘要: C++程序内存分布 了解、理解C++内存分布机制,有利于后续很多概念的理解,内存泄漏、程序大小、静态成员等。 C++开发的基础知识。 先来张图: 分为以下几部分: 1. 栈区(stack): 由编译器自动分配并释放,一般用于:函数参数传递、函数内部局部变量。操作方式类似于数据结构中的栈,先进后出。 阅读全文
posted @ 2021-02-16 19:08 Dylan_Liang 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 1. this 是什么: this是一个指针,指向对象实例。 2. 作用: 既然this指针指向对象实例,那this指针就相当于对象指针。有如下用法和注意事项: this指针只能在类内部使用而不能在外部使用。 this指针可以访问类中所有public、private、protect的成员函数和变量 阅读全文
posted @ 2021-02-16 16:52 Dylan_Liang 阅读(492) 评论(0) 推荐(0) 编辑
摘要: 1. 背景: C++有不同的调用形式:函数指针、lambda表达式、有operator()的类对象等。 形式不同但调用方式却相同。为了能够统一,引入std::function和std::bind,来实现。 例子: // 普通函数 int add(int a, int b){return a+b;} 阅读全文
posted @ 2020-11-08 12:38 Dylan_Liang 阅读(204) 评论(0) 推荐(0) 编辑