1 奋斗的小菜鸟!

尚未进行身份认证

暂无相关简介

等级
TA的排名 8w+

buffer和cache的区别

作者:知乎用户链接:https://www.zhihu.com/question/26190832/answer/32387918来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。cache 是为了弥补高速设备和低速设备的鸿沟而引入的中间层,最终起到**加快访问速度**的作用。而 buffer 的主要目的进行流量整形,把突发的大数量较小规模的 I/O 整理成平...

2019-08-18 12:01:49

GPU与CPU的区别

转载自:https://www.cnblogs.com/biglucky/p/4223565.html如介意请联系我。我觉得这个是我看到的比较清晰的介绍了CPU与GPU区别的了,关于文章中cache、buffer等概念的解释,我会另开一篇,如已经了解可直接看这篇。1.2CPU和GPU的设计区别CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。C...

2019-08-18 12:00:47

中缀表达式转后缀表达式

自从找完工作人就废了,幡然醒悟不行不行,得把忘记的都记下来。。。。。。中缀表达式就是我们正常使用的那种,例如:a+b*c后缀表达式就是abc*+;为什么要有中缀表达式和后缀表达式呢?因为中缀表达式便于人们的理解与计算,但是后缀表达式更方便计算机的运算(如二叉树、堆栈的方法计算),因此在读取一个中缀表达式后,我们得办法将他转化为后缀表达式。转化方式有三种:首先假设我们需要转化...

2019-04-12 17:55:21

打开jupyter notebook时打不开网页,网页不显示等情况

python小白为了学习爬虫,在第一步就遇到了问题,记录一下解决办法在windows下打开jupyternotebook时,首先是win+r打开控制台然后输入ipythonnotebook打开时会默认使用IE浏览器,但是只显示一个home不能打开使用,这是因为不支持该浏览器的原因。1、win+r  然后输入jupyternotebook--generate-config2...

2018-11-30 17:34:20

二十六进制加法

二十六进制加法#include<iostream>#include<string>#include<vector>#include<stdio.h>using namespace std;vector<char> add(string str1, string str2){    vector<char>...

2018-09-08 10:00:24

PCB的信号集

      每一个进程都有一个PCB(进程控制块),在PCB中有两个信号集,分别是未决信号集和阻塞信号集。       其中未决信号集是记录有没有信号来临,一旦有信号来临则该信号位置1,如下图中有2号信号来临,则将2号未决信号集置1,然后未决信号集再将该信号像阻塞信号集传递,如果对应2号信号集的位是1,则表示阻塞,该信号被阻塞在了阻塞信号集上无法到达句柄,该信号处于未决态。若阻塞信号集的2号信...

2018-08-24 14:44:30

pipe管道通信原理

每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲区把数据读走,内核提供的这种机制称为进程间通信管道是一种最基本的IPC机制,由pipe函数创建:#include<unistd.h>intpipe(intfiledes...

2018-08-03 22:50:26

僵尸进程和孤儿进程

每个进程都是由用户空间和系统空间组成,pcb在系统空间。一个进程在终止时会关闭所有文件描述符,释放在用户空间分配的内存,但它的PCB还保留着,内核在其中保存了一些信息:如果是正常终止则保存着退出状态,如果是异常终止则保存着导致该进程终止的信号是哪个。这个进程的父进程可以调用wait或waitpid获取这些信息,然后彻底清除掉这个进程。我们知道一个进程的退出状态可以在Shell中用特殊...

2018-08-03 20:55:35

cpu如何运行进程

   cpu主要是由运算器、寄存器、控制器和译码器组成,当我们运行一段代码的时候,代码被加载进寄存器中,(单cpu单核的情况)当有另一个进程需要运行的时候,第一个进程就会被存入pcb的栈中,等到一定的时间在重新加载到寄存器中运行。   一般情况下,cpu处理数据能力有1Ghz=1ns,多进程的时候cpu采取分时复用的方式进行,每个进程10ms或者其他时间的进行交换,由于运行速度很快所...

2018-08-02 16:19:10

虚拟内存

     每一个进程在打开时,都各自有自己的pcb(进程控制块),pcb相当于一个指针,指向文件描述符表,假如一个进程要打开一个文件就会产生一个句柄(文件描述符),该句柄通过pcb指向文件描述符表,通过文件描述符表的内容在磁盘中找到你想打开的文件。pcb在内核中,每一个进程打开时都会有内核层和用户层,其中内核层是不对用户开放的,其中包含命令行参数和环境变量。用户层就是我们常见的堆栈常量...

2018-08-02 15:08:13

linux下IO工作机制

        每一个FILE文件流(输出流、输入流、错误流)都有一个缓冲区buffer,默认大小8192Byte。        每一个文件流都有三个部分组成:文件描述符 、位置指针、缓冲区buffer。如下图右边所示        我们平时写程序用到的都是c标准函数,我们并不清楚在操作系统中怎么处理我们的输入的,下面就以printf来距离说明:假如现在有程序A需要向屏幕输出hell...

2018-07-31 22:22:32

树的非递归调用遍历(中序遍历)

本文讲的是非递归调用的中序遍历,如果想知道递归调用的中序遍历可以看我的另一篇博文分析:1、访问顺序   中序遍历是当左子树为空或者左子树已经访问完毕以后,在访问根节点。访问完根节点在访问右子树。2、选择什么类型的数据结构(栈?队列?)   因为先走到的后访问,后走到的先访问,所以很显然是栈结构。3、节点所有路径的情况   步骤1、如果节点有左子树,该节点入栈...

2018-07-22 16:21:43

拷贝二叉树

拷贝二叉树,就是要拷贝根节点,叶子节点,第一步得先分配一个空间给根节点, BiTNode*newnode=(BiTNode*)malloc(sizeof(BiTNode));将其叶子节点指向NULL,在判断原树的根节点的左节点和右节点是否为空,不为空就得复制过去,利用迭代就很容易做到。最后将新的子节点和根节点链接起来。typedefstructBiTNode{   intda...

2018-07-22 14:46:47

计算树的高度

树的高度就是数的层数。那怎么计算树的高度呢?我们可以分贝将左节点的高度计算出来和右节点的高度计算出来,在比较大小。大的就是树的高度。 其实不管是求树的高度还是叶子节点个数,都是在遍历整个树,只不过在遍历的过程中满足了某种条件就做出一定的处理,所以树的遍历是最基本的。typedefstructBiTNode{   intdata;   structBiTNode*...

2018-07-22 10:55:10

求树的叶子节点个数

首先我们得知道什么事叶子节点,叶子节点就是只有根节点没有子节点的节点。下面我们就根据这个特性来写一下这个程序typedefstructBiTNode{   intdata;   structBiTNode*lchild,*rchild;}BiTNode;intsum=0;//用来存放叶子节点个数voidCountLef(BiTNode*root){ ...

2018-07-22 10:43:06

树的遍历的本质

树的遍历分为前序中序后序,这三种遍历的本质是什么呢?其实不管哪种遍历方式遍历的路径都是一样的,为什么结果不一样,就在于是第几次遍历的时候输出。下面我们来看一下遍历的图如上图可以看出每一个节点都会经过三次,就像一个邮递员在寄信的时候,可以选择是第一次经过你家的时候给你投信还是回来再经过你家的时候给你投信。第一次经过一个节点的时候就输出就是前序遍历,第二次经过的时候输出就是中序遍历,最后一次经...

2018-07-22 09:20:32

树的遍历(前序、中序、后序)

前序遍历的思想:先遍历根节点,在遍历左节点,最后遍历右节点。中序遍历的思想:先遍历左节点,在遍历根节点,最后遍历右节点后序遍历的思想:先遍历左节点,在遍历右节点,最后遍历根节点光这么说太过于抽象,就举个例子说一下。前序遍历:首先遍历根节点所以输出1,然后左节点,发现左节点也是一个根节点就输出2,在遍历2的左节点,输出4,然后就到右节点了,此时以2为根节点,所以右节点是5,以...

2018-07-21 22:55:27

计算机如何计算我们的表达式的

计算机的工作本质就是做数学运算,计算机喜欢做后缀运算,而我们自己却是喜欢做中缀运算,所以计算机就会自动将我们的中缀运算转化成后缀运算,现在我们自己通过栈的应用来实现以下这个功能。例如:5+4=>54+1+2*3=>123*+ 在转化之前我们得知道计算机是如何做的转化,下面我们就来看一下这个算法1遍历中缀表达式的数字的符号,对于数字,直接输出。2对于符号:左括...

2018-07-21 22:33:30

异常简单使用

class A{public: A() { cout << "A构造" << endl; } ~A() { cout << "A析构" << endl; }};class B{public: B() { cout << "B构造" << endl; } ~B() { cout

2018-07-15 15:47:21

c++抽象类

本文转载自https://www.cnblogs.com/dongsheng/archive/2013/09/28/3343939.html如有不妥请联系我予以删除C++抽象类一、纯虚函数定义.   纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”二、引入原因:1、为了方便使用多态特性,我们常常需要在...

2018-07-12 15:19:45

查看更多

勋章 我的勋章
    暂无奖章