栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

计算机基础知识总结

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

计算机基础知识总结

文章目录
  • 1. Linux常用基本命令
    • 文件管理
    • 用户管理
    • 进程管理
    • 软件仓库搭建
    • 远程登陆服务器
    • 文件传输
    • 定时任务/延迟任务
  • 2. C++基础知识
    • 面向对象的四大特征
    • C++和C语言有什么不同
    • new/delete 和 malloc/free 的区别
    • 类与结构体的区别
    • 构造函数和析构函数
    • 拷贝构造函数和赋值运算符重载
    • 指针和引用的区别
    • 几种关键字
    • 继承顺序和构造顺序
    • 虚函数
    • 重载和覆盖的区别
    • 定义和声明的区别
    • 内存的存储内容
    • 内存泄漏和内存溢出的区别
    • vector的内存增长问题
  • 3. Linux系统编程
    • 进程和线程的区别
    • 进程
    • 线程
    • HTTP网络编程

1. Linux常用基本命令 文件管理
命令功能
touch创建文件
mkdir创建目录
rm删除文件 / 目录
vim文件编辑
cat文件查看
cp复制
mv移动
file查看文件类型
wc文件容量
pwd当前位置
cd切换到指定目录下
ls显示指定目录下的内容
用户管理
命令功能
id查当前id
su切换当前用户
usermod修改用户信息
passwd设置密码

/etc/passwd     用户文件位置
/etc/group     用户组文件位置
/etc/shadow     认证信息文件位置

进程管理
命令功能
ps查看进程
pgrep指定显示
top动态查看
nice更改优先级
renice更改优先级状态
Ctrl+z当前进程打入后台
jobs查看后台进程
bg调到前台(不占用shell)
fg调到前台
kill关闭进程
systemctl start sshd开启sshd服务
w -i显示谁登陆过last
软件仓库搭建
  1. 下载安装包,hostnamectl 查看系统版本
  2. 创建目录,mount 挂载镜像
  3. cd /etc/yum.repos.d/ 下建文件,名以repo结尾,两个仓库AppStream和baseOS
  4. dnf install gcc 安装

dnf list     列出软件信息
dnf install     安装软件
yumdownloader httpd -destdir=/mnt     下载仓库中的安装包到目录

远程登陆服务器

shh -l root 192.168.0.10     连接

文件传输

上传     scp 文件名 root @ 192.168.0.10:/root/路径
下载     scp root @ 192.168.0.10:/root/路径
有的不复制,没有的复制     rsync -lr

打包: tar cf 文件
压缩: zip / gzip / bzip / xz
解压: unzip / gunzip
直接打包: tar zcf / tar zxf

定时任务/延迟任务
命令功能
at 01:52设定延时任务
at -c 1查看任务
at -r 1取消任务
mail查看输出

白名单: /etc/at.allow
黑名单: /etc/at.deny

crontab -e     定时任务(crond服务) 秒 分 时 天 月 周

系统级任务: 进目录 cd /etc/cron.d 写文件

2. C++基础知识 面向对象的四大特征
  1. 抽象:抽出具体事物的普遍特性;
  2. 封装:把数据和处理都包在一起;
  3. 继承:可以给别的函数使用;
  4. 多态:同一个函数的多种形态。
C++和C语言有什么不同
序号方向CC++
1面向面向过程——解决问题面向对象——找谁解决
2头文件#include#include
3函数重载函数名不允许相同函数名相同但其他参数不同,则两个函数不同
4命名空间无此概念using namespace std;
5输入输出需要写变量类型cin/cout 不用写变量类型,可以自动识别
6动态内存malloc / freenew / delete
new/delete 和 malloc/free 的区别
  1. 属性:new是关键字,需要编译器支持;malloc是库函数,需要头文件支持;
  2. 参数:new申请内存时不用指定内存块的大小,编译器会根据类型计算;
  3. 返回类型:new返回对象类型指针;malloc返回void*,需要强制转换;
  4. 分配失败:new会抛出bas_alloc异常;malloc分配失败会返回NULL;
  5. 内存区域:new会在自由存储区申请内存;malloc会在堆上申请内存。
类与结构体的区别
序号方向结构体
1存储位置栈存储堆存储
2公有私有默认public默认private
3保护声明不能声明protected可以声明protected
4构造函数不能声明默认的构造函数不限制声明构造函数
5类型不同值类型引用类型

当函数参数或局部变量与成员变量重名时,就必须用 this

构造函数和析构函数

构造函数的特点:

  1. 创建对象时调用 ;
  2. new可调用;
  3. 必须与类同名;
  4. 没有返回值;
  5. 可以有多个构造函数。

默认构造函数:如果没有创建构造函数就会有一个隐藏的不带参数的构造函数。
作用:

  1. 建立标识;
  2. 开辟内存空间;
  3. 完成成员初始化。

析构函数的特点:

  1. 离开作用域时调用;
  2. delete可调用;
  3. 与类同名并加 ~ ;
  4. 没有参数;
  5. 没有返回值;
  6. 只能有一个析构函数。
拷贝构造函数和赋值运算符重载

拷贝构造函数:防止二次释放

  1. 类之间直接复制;
  2. 函数值传递;
  3. 作为返回值传递。

赋值运算符重载:
stack s;
stack t;
t = s;

指针和引用的区别
序号指针引用
1指向一块内存,内容是地址某块内存的别名
2定义后还可以变只能在定义时初始化(必须初始化)
3需要解引用不需要解引用
4sizeof指针是指针大小sizeof引用是对应类型大小
几种关键字

友元声明friend: 其他类或外部函数要访问类中私有成员
特点:单向性;不可传递性。

const限定符:
变量:只读,不可修改;定义时必须初始化;
#define宏定义:预处理时替换,没有类型,不分配内存。const相反。
指针:指针常量,不可修改地址;
引用:别名;
函数:非const类型参数不接受const变量;
类:const成员变量,要初始化;const成员函数,表示不修改成员变量

static限定符:
变量:静态变量,改变作用域和生存周期;
函数:只源文件内部使用的函数;
成员变量:对象共享变量;
成员函数:类提供的函数,静态成员对象的接口。

内联函数inline:如同整个函数体替换在主函数中

  1. inline是放在函数体前才能声明为内联函数;
  2. 类中成员函数默认为内敛函数;
  3. 编译器会决定是否为内联函数。
继承顺序和构造顺序

继承顺序:

构造顺序:

虚函数

虚函数: 父子类有相同函数;如果调用父类那就调用父类自己的函数;如果调用子类,看子类有没有virtual,没有调用父类中的函数,有则调用子类中的函数。
本质:虚函数表
纯虚函数:定义抽象表virtual int GetLength() const = 0;

重载和覆盖的区别
序号重载覆盖
1函数名相同,但其他参数有不同函数名和所有的参数都相同
2同一个类中不同成员函数之间的关系父类与子类中不同成员函数的关系
3根据参考列表决定根据对象类型决定
4在编译时确定调用在执行时确定调用
定义和声明的区别

定义:变量分配存储空间,为变量指定初始值。只有一个定义;
声明:向程序表明变量的类型和名字。

内存的存储内容

内存泄漏和内存溢出的区别

内存泄漏: 在动态申请内存空间时,对指针申请了空间,但使用完后未进行释放,指针变为野指针,形成内存泄漏。
内存溢出: 内存泄漏的堆积会导致内存溢出,内存溢出是你要的内存空间超过系统给分配的空间。

vector的内存增长问题

vector的内存增长问题,其中 size() 和 capacity() 问题,vector的内存分配是按照2的倍数分配内存的。当前容量对插入元素不够时,分配一块新的内存(2倍),然后复制旧内存,释放旧内存,会多次涉及拷贝构造函数和析构函数。

3. Linux系统编程 进程和线程的区别
序号方向进程线程
1定义程序的执行过程执行的每一个任务
2包含包含多个线程只属于一个线程(本身)
3地址有自己的地址空间没有地址空间,他包含在进程的地址空间中
4资源消耗更多的计算机资源开销代价更小
5共享不同进程间数据很难共享同一进程下不同线程数据容易共享
进程

fork() 父子进程:父进程返回值是子进程的pid;子进程返回值是0。

特点:

  1. 并发进行:两进程同时跑,互不干扰;
  2. 相同但独立的地址空间:系统会把虚拟内存拷贝一份出来,两进程名自有堆和栈;
  3. 加static地址会短,静态变量在数据区,地址较小。

休眠:sleep(1)

僵尸进程:子进程退出,父进程未获得子进程状态信息;在父进程调用wait;有害
孤儿进程:父进程先于子进程退出;init进程为新父进程;无害

线程

比进程更小的独立运行的基本单位,是并发的;

线程标识: pthread_self()
创建: pthread_creat(id,NULL,函数,函参)

线程共用全局变量也共用局部变量

使用线程合并:pthread_join(id,返值) 主进程等待子进程跑完

信号量: 让父进程和子进程有序打印
sem_wait(&sem)     上锁
sem_post(&sem)     解锁

互斥量:
pthread_mutex     定义互斥量
pthread_mutex_lock(&互斥量)     加锁
pthread_mutex_unlock(&互斥量)     解锁

信号量互斥量
对象:线程和进程对象:线程
可由不同线程完成加解锁由同一线程使用
用于线程同步用于线程互斥

条件变量: 完成条件后再执行线程
pthread_cond_t 条件变量 = PTHREAD_COND_INITIALIZER;
条件等待:pthread_cond_wait(&条件变量,&互斥量)
单个激活:pthread_cond_signal(&条件变量)

读写锁: 读取过程共同读,提高工作效率
读锁:读过程中其他读也可以进行读操作
写锁:写过程中不能进行其他操作

HTTP网络编程

HTTP是应用层上的协议,HTTP是基于TCP/IP通信协议来传递数据,可以使用建立socket的方式来监听某一端口(8080端口),来实验这个web服务器。基于socket来实现客户端和服务器的交流。

HTTP协议是超文本传输协议,通过http请求可以访问服务器上的HTML文件、图片等。

请求报文: 客 => 服

GET是客户端把密码或检索信息发给服务器,发给URL

响应报文: 服 => 客

注意:文本格式去掉,可响应各种类型的文件

状态码:

状态码对应英文意义
200OK请求成功
301Moved Permanently资源被永久转移到其他URL
404Not Found请求资源不存在
500Internal Server Error服务器内部错误,无法完成请求

HTTP服务器

  1. 启动服务器;
  2. 启动客户端(网页)输入 http://127.0.0.1:8080,发送请求报文给服务器,服务器端收到报文;
  3. 服务器端向服务器发送响应报文,客户端(网页)信息栏可以看到报文首部信息,页面上可以看到报文主题。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/389183.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号