译 通过自动反编译和外部源提升调试
32.C和C++的类型安全
**什么是类型安全?** 类型安全很大程度上可以等价于内存安全,类型安全的代码不会试图访问自己没被授权的内存区域。“类型安全”常被用来形容编程语言,其根据在于该门编程语言是否提供保障类型安全的机制;有的时候也用“类型安全”形容某个程序,判别的标准在于该程序是否隐含类型错误。 类型安全的编程语言与类型 ......
28.拷贝初始化和直接初始化
●当用于类类型对象时,初始化的拷贝形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,拷贝初始化总是调用拷贝构造函数。拷贝初始化首先使用指定构造函数创建一个临时对象,然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。举例如下 ```C++ string str1("I am a st ......
24.C++中const和static的作用
**static** ●不考虑类的情况 ○隐藏。所有不加static的全局变量和函数具有全局可见性,可以在其他文件中使用,加了之后只能在该文件所在的编译模块中使用 ○默认初始化为0,包括未初始化的全局静态变量与局部静态变量,都存在全局未初始化区 ○静态变量在函数内定义,始终存在,且只进行一次初始化, ......
25.C++的顶层const和底层const
任意常量对象为**顶层const**,包括常量指针;指向常量的指针和声明const的引用都为**底层const** 顶层const(top-level const)表示指针本身是个常量int* const ptr=&m; 此时指针不可以发生改变,但是指针所指向的对象值是可以改变的 底层const(l ......
33.C++中的重载、重写(覆盖)和隐藏的区别
(1)重载(overload) 重载是指在同一范围定义中的同名成员函数才存在重载关系。主要特点是函数名相同,参数类型和数目有所不同,不能出现参数个数和类型均相同,仅仅依靠返回值不同来区分的函数。重载和函数成员是否是虚函数无关。举个例子: ```C++ class A { ... virtual in ......
26.数组名和指针(这里为指向数组首元素的指针)区别?
- 二者均可通过增减偏移量来访问数组中的元素。 - 数组名不是真正意义上的指针,可以理解为常指针,所以数组名没有自增、自减等操作。 - **当数组名当做形参传递给调用函数后,就失去了原有特性,退化成一般指针,多了自增、自减操作,但sizeof运算符不能再得到原数组的大小了。** ......
flex 和 bison 概述
# overview of flex & bison [flex manual](https://westes.github.io/flex/manual/) [bison manual](https://www.gnu.org/software/bison/manual/bison.html) # ......
16.strlen和sizeof区别?
- sizeof是运算符,并不是函数,结果在编译时得到而非运行中获得;strlen是字符处理的库函数。 - sizeof参数可以是任何数据的类型或者数据(sizeof参数不退化);strlen的参数只能是字符指针且结尾是'\0'的字符串。 - 因为sizeof值在编译时确定,所以不能用来得到动态分配 ......
17.常量指针和指针常量区别?
## 1)常量指针(指向常量的指针) 语法:const 数据类型 *变量名; 不能通过解引用的方法修改内存地址中的值(用原始的变量名是可以修改的)。 注意: ●指向的变量(对象)可以改变(之前是指向变量a的,后来可以改为指向变量b)。 ●一般用于修饰函数的形参,表示不希望在函数里修改内存地址中的值。 ......
19.C++和Python的区别
包括但不限于: - Python是一种脚本语言,是解释执行的,而C++是编译语言,是需要编译后在特定平台运行的。python可以很方便的跨平台,但是效率没有C++高。 - Python使用缩进来区分不同的代码块,C++使用花括号来区分 - C++中需要事先定义变量的类型,而Python不需要,Pyt ......
20.C++和C语言的区别
- C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 - 标准C++中的字符串类取代了标准C函数库头文件中的字符数组处理函数(C中没有字符串类型)。 - C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 - C++中的try/ ......
23.define宏定义和const的区别
**编译阶段** - define是在编译的**预处理**阶段起作用,而const是在编译、运行的时候起作用 **安全性** - define只做替换,不做类型检查和计算,也不求解,容易产生错误,一般最好加上一个大括号包含住全部的内容,要不然很容易出错 - const常量有数据类型,编译器可以对其进 ......
18.a和&a有什么区别?
假设数组int a[10]; int (*p)[10] = &a;其中: - a是数组名,是数组首元素地址,+1表示地址值加上一个int类型的大小,如果a的值是0x00000001,加1操作后变为0x00000005。*(a + 1) = a[1]。 - &a是数组的指针,其类型为int (*)[1 ......
22.C++中struct和class的区别
**相同点** - 两者都拥有成员函数、公有和私有部分 - 任何可以使用class完成的工作,同样可以使用struct完成 **不同点** - C中struct是没有权限的设置的,struct成员权限默认是公有的,且struct中只能是一些变量的集合体,可以封装数据却不可以隐藏数据,而且成员**不可 ......
3.指针和引用的区别
- 指针是一个变量,存储的是一个地址,需要占用存储空间;引用本质上是一个常量指针,引用跟原来的变量实质上是同一个东西,是原变量的别名 - 指针可以有多级,引用只有一级 - 指针可以为空,引用不能为NULL(必须有具体实体) - 指针声明和定义可以分开,可以先只声明指针变量而不初始化,等用到时再指向具 ......
14.宏定义和typedef区别?
- 宏主要用于定义常量及书写复杂的内容;typedef主要用于定义类型别名。 - 宏替换发生在编译阶段之前,属于文本插入替换;typedef是编译的一部分。 - 宏不检查类型;typedef会检查数据类型。 - 宏不是语句,不在在最后加分号;typedef是语句,要加分号标识结束。 - 注意对指针的 ......
10.malloc和new的区别?
- malloc和free是标准库函数,支持覆盖;new和delete是运算符,支持重载。 - malloc仅仅分配内存空间,free仅仅回收空间,不具备调用构造函数和析构函数功能,用malloc分配空间存储类的对象存在风险;new和delete除了分配回收功能外,还会调用构造函数和析构函数。 - ......
13.宏定义和函数有何区别?
- 宏在预处理阶段完成替换,之后被替换的文本参与编译,相当于直接插入了代码,运行时不存在函数调用,执行起来更快;函数调用在运行时需要跳转到具体调用函数。 - 宏定义属于在结构中插入代码,没有返回值;函数调用具有返回值。 - 宏定义参数没有类型,不进行类型检查;函数参数具有类型,需要检查类型。 - 宏 ......
9.new和delete是如何实现的?
- new的实现过程是:首先调用名为**operator new**的标准库函数,分配足够大的原始为类型化的内存,以保存指定类型的一个对象;接下来运行该类型的一个构造函数,用指定初始化构造对象;最后返回指向新分配并构造后的的对象的指针 - delete的实现过程:对指针指向的对象运行适当的析构函数; ......
1.在main执行之前和之后的代码可能是什么?
**main函数执⾏之前,主要就是初始化系统相关资源:** ■设置栈指针:所谓设置栈,就是将栈指针指向某块内存 ■初始化静态`static`变量和`global`全局变量,即`.data`段的内容 ■将未初始化部分的全局变量赋初值:数值型`short`,`int`,`long`等为`0`,`bool ......
Vue-指令-v-if和v-show
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <div v-if="count == 3">div1</div> <d ......
Vue-指令-v-bind和v-model
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <a v-bind:href="url">点击一下</a> <a :hr ......
redis集群故障无法自动提升slave
## 问题描述 生产redis集群(3master/3slave)部署在3台虚机上,每个虚机部署2个redis节点,挂了一台虚机导致redis集群异常,分析发现是挂了机器上是2master redis redis日志 ``` * MASTER REPLICA sync started # Error ......
K8S | 容器和Pod组件
不论是软件环境还是虚拟机系统的搭建,基本都是通过下载软件安装包,然后在本地部署和定期更新以及运行,基于这个场景再去理解容器和Pod组件,会轻松许多; ......
华为物联网(IoT)云端和华为云服务器
华为物联网(IoT)云端和华为云服务器是华为云平台上的两个不同的服务。 1. 华为物联网云端(IoT Cloud):华为物联网云端是专门为物联网设备提供的云服务平台。它提供了设备接入、数据存储、数据处理、消息通信等功能,用于管理和连接物联网设备,并实现数据的采集、存储和分析等操作。通过华为物联网云端 ......
前缀和学习笔记与总结
前缀和学习笔记与总结 [toc] # 前缀和 ## 一维前缀和 ### What 现有 **原数组**: $$ a_1,a_2,a_3,\ldots,a_n $$ 对应的 **前缀和数组** 应满足: $$ S_i = a_1+a_2+a_3+\cdots+a_n $$ 前缀和 $S_i$ 即为 * ......
使用Nginx Ingress实现灰度发布和蓝绿发布
应用场景 使用Nginx Ingress实现灰度发布适用场景主要取决于业务流量切分的策略,目前Nginx Ingress支持基于Header、Cookie和服务权重三种流量切分的策略,基于这三种策略可实现以下两种发布场景: 场景一:切分部分用户流量到新版本 假设线上已运行了一套对外提供七层服务的Se ......
C语言编译之分部编译
一、概述 在C语言中,将源代码转换为可执行文件的过程通常涉及以下几个步骤: 编写源代码:使用文本编辑器创建C语言源代码文件,通常以.c为扩展名。 预处理:使用预处理器对源代码进行处理。预处理器指令以#开头,用于包含头文件、宏定义等。预处理器会根据指令进行文本替换和宏展开等操作,生成经过预处理的代码。 ......