C++基础部分:

1.数组和指针的区别

(1)数组本身体现出来的就是一个 指针常量的 “特性”,即不能对数组的首地址进行修改,内存上的地址就已经是确定了的。而指针本身是一个变量,他指向了一个地址,这个是可以变化的,也就说他可以重新赋值指向新的地址;
(2)当调用sizeof函数时,对于数组,得到的是数组元素个数*数据类型的大小,而对于指针,得到的是指针类型的大小,这个取决于机器的位数,比如32位机,对应的指针就是4字节的大小;
(3)指针相比数组更加灵活。
相同之处:比如当作为形参的时候,定义成 指针还是数组都是一样的,因为这个时候传入的都是数组的首地址,也就是这个数组名,反映出来的就等于是一个指针。在传参过程中,数组会退化成指针,所以实参为数组,对应的形参可以定义为数组或者指针。

2. C++中struct和class的区别

(1)如果不申明访问权限,class的默认权限是private,而struct是public
(2)对于继承,如果也没有明确是public继承还是private继承或者是protected继承,class
默认是private的继承,而struct是public继承。
(3)从抽象上来说,class更像是对象的实现体,而struct更像是数据结构的实现体。

3.构造函数能不能是虚函数?

不可以,因为虚函数的调用必须通过虚函数表查找来实现,只有通过类对象前4个字节(32位系统)虚函数表指针找到对应类的虚函数表,才能访问虚函数,而虚函数表指针的生成是在构造函数中完成的,如果构造函数是虚函数,那么就只能通过虚表指针才能访问到,关键是此时就需要让构造函数产生出虚表指针。陷入了先有蛋还是现有鸡的问题。

4.析构函数可不可以是纯虚函数?

不建议是,因为我们知道纯虚函数是没有实现体的,那么子类对象在析构的时候,父类组成部分就没办法释放,显然不行。但是对于大部分编译器来说,可以将析构函数申明为纯虚函数,然后在类外写纯虚函数的实现体,从语法上不会报错。

5.构造函数和析构函数的调用顺序

C++标准规定构造函数是先调用基类的再调用子类的,而析构函数则是先调用子类的再调用基类的。

数据库部分:

1.索引的优缺点

优点: (1) 可以有效减少数据检索的时间,提高查询效率;

(2) 建立索引的列可以保证行的唯一性;

(3) 可以加快表与表的连接,提高表与表之间的联合查询效率;

缺点:  (1)创建索引、维护索引都需要花费时间和空间成本,每条索引都要占据数据库的存储空间;

(2)在增删改的时候都需要对索引进行动态维护,也会花费时间和空间成本;

2.索引的应用场景

接触比较多的主要有以下三个场景:(1) 数据量大并且查询频率较高的建议使用索引

(2) 表与表联合查询时,用于约束条件的字段建议使用索引

(3) 用于排序的字段建议使用索引

3.索引的原理

其实就是回答B树或者B+树的工作原理,这两种数据结构适合磁盘索引文件和元素。

4.事务的定义和基本使用

(1)基本定义:事务是一种数据库操作的机制,一般来说是指一组数据库操作的集合,实际表现为多个sql语句的集合,当数据库引擎执行该事务时,要么就全部不执行,要么就全部执行。事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。(多用户登录系统一般采用事务机制)在执行的时候,如果事务执行成功,数据库引擎会提交该事务,即将事务的执行结果提交到数据库中,但是,如果执行不成功,我们可以进行回滚,即将数据库恢复到事务执行之前的状态。

(2)使用:不同数据库的事务实现有所不同,但大体上是相似的,一般分为四个操作:开启事务,执行事务,提交事务和回滚事务。

具体可以参考以下博客:

https://www.cnblogs.com/cold-ice/p/6039595.html

Linux部分

1.常用命令

(1)与CPU、内存和磁盘相关命令:top、free、df、fdisk

(2)查找相关命令:grep(可以搭配正则表达式)、find

(3)与文本处理相关的命令:sed(用于格式化修改)、awk(可以用于统计)、tr命令(可以实现简单的文本处理,包括替换、删除、去重、截断等功能),具体可以参考下面的资料:

 http://man.linuxde.net/tr

 https://blog.csdn.net/m0_37814112/article/details/80492076

(4)与网络相关:netstat(可以用于查看系统网络连接状态)、tcpdump(可以用于抓包分析)

2.共享内存

Linux下共享内存主要有两种实现机制,一种是采用mmap,另一种是采用XSI机制中的共享内存方法。mmap是内存文件映射,将一个文件映射到进程的地址空间,用户进程的地址空间的管理是通过vm_area_struct结构体进行管理的。mmap通过映射一个相同的文件到两个不同的进程,就能实现这两个进程的通信,采用该方法可以实现任意进程之间的通信。mmap也可以采用匿名映射,不指定映射的文件,但是只能在父子进程间通信。XSI的内存共享实际上也是通过映射文件实现,只是其映射的是一种特殊文件系统下的文件,该文件是不能通过read和write访问的。

------------------------------------------------------未完待续-------------------------------------------------------------

C++后台知识点总结(一)的更多相关文章

  1. web后台知识点整理

    五.JEE 适用于创建server端的大型的软件服务系统 1. JEE : JAVA  PLATFORM  ENTERPRISE  DEDITON 2.是一个规范集.技术集.框架集(API集) 一种技 ...

  2. 【灵魂拷问】你真的懂得Mysql的管理和使用吗?

    作者 | Jeskson 来源 | 达达前端小酒馆 MySQL管理,数据库管理和数据表管理,用户管理. 初始化数据库,创建数据库,查看数据库,删除数据库. 创建数据表,查看数据表,修改数据表,删除数据 ...

  3. 【灵魂拷问】你为什么要来学习Node.js呢?

    [灵魂拷问]你为什么要来学习Node.js呢? 学习node.js适合的人群: 需要必备一些HTML,CSS,JavaScript及编程有一定程度了解的读者阅读,一些简单的命令行操作,具备服务端开发经 ...

  4. Web数据交互技术

    作者 | Jeskson 来源 | 达达前端小酒馆 web的概念 web叫全球广域网,可以叫做万维网,是一种分布式结构,建立在Internet上的网络服务.万维网共享分布在网络上的各个服务器中的所有互 ...

  5. 请求与上传文件,Session简介,Restful API,Nodemon

    作者 | Jeskson 来源 | 达达前端小酒馆 请求与上传文件 GET请求和POST请求 const express = require('express'); const app = expre ...

  6. Express服务器开发

    作者 | Jeskson 来源 | 达达前端小酒馆 Express服务器开发 创建Express应用程序,Express路由,pug视图模板的使用 Express简介: 让我们来创建Express应用 ...

  7. HTTP协议,到底是什么鬼?

    作者 | Jeskson 来源 | 达达前端小酒馆 了解HTTP HTTP是什么呢?它是超文本传输协议,HTTP是缩写,它的全英文名是HyperText Transfer Protocol. 那么什么 ...

  8. Node.js安装使用-VueCLI安装使用-工程化的Vue.js开发

    作者 | Jeskson 来源 | 达达前端小酒馆 搭建Node.js环境 什么是Node.js简介呢?它是一个基于JavaScript的运行环境,Node.js发布于2009年5月,对Chrome ...

  9. 【可视化】Vue基础

    作者 | Jeskson 来源 | 达达前端小酒馆 Vue简介 Vue框架,框架的作者,尤雨溪,组件化,快速开发的特点. 生命周期 beforeCreate:组件刚刚被创建 created:组件创建完 ...

随机推荐

  1. C语言中位运算符异或“∧”的作用

    异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧=,∧=,∧=.如: 即071∧,结果为023(八进制数). “异或”的意思是判断两个相应 ...

  2. 一篇文章带你搞懂 SpringBoot与Swagger整合

    Swagger使用由于不喜欢csdn的markwoen编辑器,对代码样式支持不好,看着不舒服,对审美要求比较高的同学移步github:https://github.com/itguang/swagge ...

  3. [软件工程基础]PhyLab 需求与功能分析改进文档

    NABCD 模型 Need 需求 根据 Default 的需求文档,物理实验网站对于北航大二学生完成物理实验有较大的帮助,反馈较好.由于在 2016-2017 春季学期,网站数据库因为不明原因被删除了 ...

  4. [poj 2104] K-th Number【主席树】

    传送门:http://poj.org/problem?id=2104 保存模版. #include <cstdio> #include <algorithm> #include ...

  5. 【aspnetcore】模拟中间件处理请求的管道

    几个核心对象: ApplicationBuilder 就是startup->Configure方法的第一个参数,请求(HttpContext) 就是由这个类来处理的 HttpContext 这个 ...

  6. [已读]JavaScript模式

    主要是介绍各种继承和设计模式.第一章是讲编程规范,然后里面讲到了使用new Function替代eval

  7. Unity EditorWindow知识记录

    1.创建EditorWindow using UnityEditor; using UnityEngine; public class ZZEditorWindow : EditorWindow { ...

  8. 阻塞 io 非阻塞 io 学习笔记

    阻塞 io 非阻塞 io 学习笔记

  9. 将Android系统源码导入Android studio的方法

    Android源码目录结构如下: |-- Makefile|-- abi (applicationbinary interface,应用程序二进制接口,生成libgabi++.so相关库文件)|-- ...

  10. [Python]输出中文报错的解决方法

    问题现象:在PyCharm工具编辑python语句输出中文时,程序报错. 解决方法(2种): 1.在代码开头加#coding=utf-8(注意要加#) 2.还是在代码开头加#-*- coding: u ...