随笔分类 - 操作系统/计算机网络/数据结构
摘要:##1. 内存泄漏 与 内存溢出 的基本概念 1、内存泄漏memory leak : 是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。 2、内存溢出 out of memory : 指程序申请内存时,没有足够的内存供申请者使用,或者
阅读全文
摘要:请你说一下进程与线程的概念,以及为什么要有进程线程,其中有什么区别,他们各自又是怎么同步的 基本概念: 进程是对运行时程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发; 线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识
阅读全文
摘要:一、Http和Https的基本概念 Http:超文本传输协议(Http,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计Http最初的目的是为了提供一种发布和接收HTML页面的方法。它可以使浏览器更加高效。Http协议是以明文方式发送信息的,如果黑客
阅读全文
摘要:TCP 使用固定的连接 TCP 用于应用程序之间的通信。 当应用程序希望通过 TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用程序之间建立一个全双工 (full-duplex) 的通信。 这个全双工的通信将占用两个计算机
阅读全文
摘要:红黑树(Red Black Tree)是一种自平衡的二叉搜索树(Self-balancing Binary Search Tree)。以前也叫做平衡二叉 B 树(Symmetric Binary B-tree)。 预备知识 树的知识框架结构如下图所示: 平衡二叉搜索树 平衡二叉搜索树(Balance
阅读全文
摘要:磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列,常用的磁盘调度算法有以下四种: 先来先服务算法(FCFS), 最短寻道时间优先算法(SSTF), 扫描算法
阅读全文
摘要:1. 最佳(Optimal)置换算法 1.1 算法原理 其选择淘汰的页面将是以后永不使用的,或许是在最长时间内不再被访问的页面。采用最佳置换算法通常可以保证获得最低的缺页率。但由于人们目前还无法预知,一个进程在内存的若干个界面中,哪一个页面是未来最长时间内不再被访问的,因而该算法是无法实现的,但可以
阅读全文
摘要:1. 系统安全状态 系统在进行资源分配之前,应先计算此次资源分配的安全性,即判断系统当前拥有的资源数,是否满足该进程目前所需要的资源数,若满足则将该进程运行完毕,并将在此之前分配给该进程的资源释放,然后继续推进,该推进顺序为安全序列;若无法满足,则称当前系统处于不安全状态。 2. 银行家算法中的数据
阅读全文
摘要:1. 基本原理 在轮转(RR)法中,系统根据FCFS策略,将所有的就绪进程排成一个就绪队列,并可设置每隔一定时间间隔(即时间片)即产生一次中断,激活系统中的进程调度程序,完成一次调度,将CPU分配给队首进程,令其执行。 进程切换时机: 若一个时间片尚未用完,进程就已经结束,则立即激活调度程序,将其从
阅读全文
摘要:1. 算法性质 HRRN算法既考虑了作业的等待时间,又考虑作业的运行时间,因此既照顾了短作业,又不致使长作业的等待时间过长,从而改善了处理机调度的性能。 2. 实现方法 我们为每个作业引入一个动态优先级,即优先级会随着时间的增加而动态增加,这样使得长作业的优先级在等待期间不断地增加,等到足够时间后,
阅读全文
摘要:1、基本函数 1.1 void push() 队列中由于是 先进先出,push即在队尾插入一个元素,如: 1 queue<string> q; 2 q.push("hello world!"); 1.2 void pop() 将队列中最靠前位置的元素拿掉,是没有返回值的void函数。如: 1 que
阅读全文
摘要:一、结构属性 相邻元素之间通过指针连接; 最后一个元素的后继指针为NULL; 链表的空间能够按需分配; 没有内存空间的浪费。 1 // 结构体定义链表 2 struct ListNode { 3 int val; 4 struct ListNode *next; 5 ListNode(int x)
阅读全文
摘要:1. 基本概念 栈中的元素遵守“先进后出”的原则(LIFO,Last In First Out) 只能再栈顶进行插入和删除操作 压栈(或推入、进栈)即push,将数据放入栈顶并将栈顶指针加一 出栈(或弹出)即pop,将数据从栈顶删除并将栈顶指针减一 栈的基本操作有:pop,push,判断空,获取栈顶
阅读全文
摘要:1 // 类定义代码 2 struct TreeNode 3 { 4 char val; 5 TreeNode* left; 6 TreeNode* right; 7 TreeNode(char x) : val(x), left(NULL), right(NULL) {} 8 }; 9 int m
阅读全文
摘要:1 //结构体定义如下 2 struct TreeNode 3 { 4 char val; 5 TreeNode* left; 6 TreeNode* right; 7 TreeNode(char x) : val(x), left(NULL), right(NULL) {} 8 }; 1. 前序遍
阅读全文