摘要:
堆和栈的区别: 栈的特征 执行的速度相对较快; 空间较小; 生存期由系统决定; 作用域较小; 有名空间,可以通过变量名或者数据名访问; 堆的特征 执行的速度相对较慢; 空间较大; 生存期由“自己”决定,malloc申请,free释放; 作用域很大(整个程序都可以访问); 无名空间,只能通过指针使用; C语言空间的申请 malloc 功能: 分配 size 字节的未初始化内存。若分配成功,则返回指向... 阅读全文
摘要:
柔性数组的概念 柔性数组(flexible array member)也叫伸缩性数组成员,这种结构产生与对动态结构体的去求。在日常编程中,有时需要在结构体中存放一个长度是动态的字符串(也可能是其他数据类型),一般的做法,实在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间。 在通 阅读全文
摘要:
大小端的由来 当数据类型为int,在32bit的系统中,它需要占用4个字节(32bit),这个时候就会产生这4个字节在寄存器中的存放顺序的问题。比如int x = 0x12345678。具体的该怎么存放呢?这个时候就需要理解计算机的大小端的原理了。 图解大小端 大小端主要看低地址存放的是高字节还是低字节 低地址中存储的是高字节位,为大端模式 低地址中存放的是低字节位,为小端模式 大小端存储说明 ... 阅读全文
摘要:
位域的概念 1个字节包含8位,有些变量保存的数据不需要占用这么长的空间(比如bool类型,只有两个状态true和false, 1位就可以搞定,剩下的7位就浪费了),这就催生了“位域”结构,位域将1个字节划分成不同的区域,每个区域都有个位域名,程序员可以代码通过位域名访问其中的数据。 位域的声明 位域 阅读全文
摘要:
字节对齐原因: 1)平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据,某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常2)硬件原因:经过内存对齐之后,CPU的内存访问速度大大提升,帮助cpu寻址。 【注意】(对齐位数跟处理器位数和编译器都有关)VS, VC等编译器默认是#pragma pack(8),所以测试我们的规则会正常;注意gcc默认是#pragma p... 阅读全文
摘要:
指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。所有指针在32位上都是4个字节,在64位系统是8个字节。 为什么要用指针 1)指针的使用 阅读全文
摘要:
1.什么是Socket? socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭),so 阅读全文
摘要:
首先在VScode中下载安装插件SFTP Windwos下摁Ctrl+Shift+P,输入SFTP: config命令并运行,进入sftp.json配置项如下: 修改为自己机器对应的配置Ctrl+S即可。 阅读全文
摘要:
GCC编译过程 一个C/C++文件要经过预处理(preprocessing)、编译(compilation)、汇编(assembly)、和连接(linking)才能变成可执行文件。 gcc的常用选项 -E 只预处理,不会编译、汇编、链接 -S 编译到汇编语言不进行汇编和链接 -c 编译和汇编,不会链 阅读全文
摘要:
Lambda函数 C++11新增了lambda函数,其基本格式如下 1 [捕捉列表] (参数) mutable -> 返回值类型 {函数体} 1 [捕捉列表] (参数) mutable -> 返回值类型 {函数体} 1 [捕捉列表] (参数) mutable -> 返回值类型 {函数体} 1 [捕捉 阅读全文
摘要:
算法思想 冒泡排序分为趟数和交换次数。 外层循环为趟数,如果有n个元素则要循环n-1趟。 内层循环主要做每一趟的交换,从第0个元素开始如果发现当前元素大于它的后一个元素,将其交换,每一趟下来,最后一个元素都是最大的,所以每次循环只要循环到0~n-1-i即可,因为后面的元素就是有序的了。 算法代码 此 阅读全文
摘要:
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行:local_root=/var/www/html chroot_local_user=YES anon_root=/var/www/html 注:local_root 针对系统用户;anon_root 针对匿名用户。 重新启动服务:service vsftpd restart 任何一个用户ftp登... 阅读全文
摘要:
重置密码的第一步就是跳过MySQL的密码认证过程,方法如下:vim /etc/my.cnf (注:windows下修改的是my.ini) 在[mysqld]后面任意一行添加skip-grant-tables 用来跳过密码验证的过程,如下图所示: 保存文档并退出 接下来我们需要重启MySQL:systemctl restart mariadb 然后用空密码方式使用root用户登录 MySQL... 阅读全文
摘要:
安装了CentOS7后,本地Windows系统连接用的是校园网,虚拟机用的是桥接模式,无法上网。 解决的办法是:找到连接的校园网的网卡,给虚拟机的VMnet8共享。 步骤:打开【网络和共享中心】-【更改适配器设置】-找到【校园网对应的网卡】-右键属性-共享 想共享设置为如上图所示即可 在虚拟机设置中设置 然后进入Linux中连接网络即可上网。 阅读全文
摘要:
先进入管理员模式 执行: yum remove firefox 然后用whereis 查看,却发现还是有: [root@localhost ~]# whereis firefox firefox: /usr/lib64/firefox 然后用whereis 查看,却发现还是有: 再执行 cd /us 阅读全文
摘要:
4 perspective, standpoint coerce sb. into, compel massive, colossal, tremendous eventually, ultimately perpetual, immutable startle, astound, astonish 阅读全文
摘要:
二叉搜索树的概念 从前面讨论折半搜索的性能中可知,如果每次从搜索序列的中间进行搜索,把区间缩小一半,通过有限次迭代,很快就能通近到所要寻找的元素。进一步,如果我们直接输入搜索序列,构造出类似于折半搜索的判定树那样的树形结构,就能实现快速搜索。这种树形结构就是二又搜索树。 二又搜索树(binary s 阅读全文
摘要:
红黑树的介绍 红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树。红黑树是特殊的二叉查找树,意味着它满足二叉查找树的特征:任意一个节点所包含的键值,大于等于左孩子的键值,小于等于右孩子的键值。除了具备该特性之外,红黑树还包括许多额外的信息。红黑树的每个节点上都有存储 阅读全文
摘要:
线索二叉树概述 二叉树虽然是非线性结构,但二叉树的遍历却为二又树的结点集导出了一个线性序列。希望很快找到某一结点的前驱或后继,但不希望每次都要对二叉树遍历一遍,这就需要把每个结点的前驱和后继信息记录下来。为了做到这一点,可在原来的二叉链表中增加一个前驱指针域(pred)和一个后继指针域(succ), 阅读全文
摘要:
二叉树的定义 以递归形式给出的:一棵二叉树是结点的一个有限集合,该集合或者为空,或者是由一个根结点加上两棵分别称为左子树和右子树的、互不相交的二叉树组成。二又树的特点是每个结点最多有两个子女,分别称为该结点的左子女和右子女。在二又树中不存在度大于2的结点,并且二又树的子树有左、右之分,其子树的次序不 阅读全文