随笔分类 - 计算机小鸡喜
摘要:一个指针在64位的计算机上,占8个字节;一个指针在32位的计算机上,占4个字节。这么简单的问题,为什么面试官愿意问呢?其实这个问题不是在考你的记忆能力,是在考察你的计算机基础能力。就比如,在你答出来4个字节的情况下,面试官会问一句:为什么呢?首先,我们要明白,指针就是地址,地址就是指针。 而地址是内
阅读全文
摘要:首先了解时间片:时间片是CPU分配给各个程序执行的时间,每个线程都会被分配给一个时间段,成为它的时间片(就是该进程允许运行的时间)。 上下文切换:CPU通过分配时间片来执行任务,当一个任务的时间片用完了,那么就会被切换到另一个任务。在切换之前会保存上一个任务的状态(就是这个任务的上下文),当下次再切
阅读全文
摘要:内存的静态分配和动态分配区别: 1.时间不同: 静态分配发生在程序的编译和链接的时候。 动态分配发生在程序调入和执行的时候。 2.空间不同: 静态分配只能是有栈来分配(有编译器来完成,比如定义一个局部变量 int b = 1) 动态分配可以是堆分配(malloc分配,需要手动回收内存)或者栈分配(编
阅读全文
摘要:首先对于一个进程的内存空间来说,是有三部分组成的:1.代码区 2.静态数据区 3.动态数据区 动态数据区一般指的就是堆栈 堆栈的区别: 1.堆(heap)是一种链式结构,也就意味着它的地址空间在物理上可以是不连续的 栈(stack)是一种线性结构,那么它的地址空间指的是连续的一块区域。 2.堆(he
阅读全文
摘要:显存:类似与CPU的内存,扮演者GPU核心与磁盘之间的传递作用。 显存频率:指的是显存本身的速度,一般来说,显存频率越高,显存性能越好。这就好比在GPU核心与显示器之间的运输公路上,你的运输车速度。车跑的越快,当然就能提高总体的传输量。 显存位宽:显存位宽好比你运输公路的车道数,你的显存位宽越大,公
阅读全文
摘要:区别:ARM是RISC架构(50多个指令,半开源),X86是CISC架构(至少981个指令,不开源); CISC架构:CPU的运算指令可以操作在寄存器和内存中,复杂性高。 举例:add mem ,reg //把内存数据和寄存器数据相加 RISC架构:CPU只允许load和store指令与内存交互,而
阅读全文
摘要:1.卸载原来的cmake,安装依赖 sudo apt-get autoremove cmakesudo apt install build-essential libssl-dev 2.下载新的cmake https://cmake.org/files/ 选择版本:cmake-3.20.6-Linu
阅读全文
摘要:1.安装GCC依赖 sudo apt install build-essential manpages-dev software-properties-common gcc g++ make bison binutils gcc-multilib flex 2.迅雷下载 http://ftp.tsu
阅读全文
摘要:CMake:是一个编译(Build)工具,可以通过写CMakeLists.txt文件跨平台生成makefile,不用自己去修改。 makefile:它定义了一系列规则指定工程中哪些文件需要先编译,需要后编译,需要重新编译。优点:它就像一个Shell脚本,可以(make)实现自动化编译,且也可以执行操
阅读全文
摘要:如果一个文件开头一行是: #pragma once 头文件内容 (一个预处理指令), 它的作用是确保当前文件在一个编译单元中不被重复包含。效果等同于: #ifndef ERROR_CUH_ #define ERROR_CUH_ 头文件中的内容 #endif 但是更加简洁。 #pragma once在
阅读全文
摘要:宏: 1.定义变量的时候,可以增加代码的通用性,定义在头文件中,如果修改变量只需要在头文件中修改,而不需要在程序中全部修改; 2.定义函数时,宏也可以写成带参函数的形式:#define add(x,y) x+y,普通函数会在运行时被调用执行栈的进出,增加了开销,这样的宏定义就可以提高执行效率(预处理
阅读全文
摘要:如果在代码上加上const则告诉编译器此为不会再变的常量,那么就会提前load到寄存器中等待运算,否则的话就会放在缓存(cache)中,等到最后不会变时,需要参与计算了才会load到寄存器。就像DPU中如果不加const那么数据会先放在SPM中等到需要再load到寄存器,对于不会变的常量加上cons
阅读全文