
常见问题
Lange_Taylor
从零开始
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆和栈区别
堆区和栈区:程序运行时的内存区域 我们把内存分为堆空间和栈空间。 栈空间比较小,但是读取速度快 堆空间比较大,但是读取速度慢1.栈区 栈的特征: 数据只能从栈的顶端插入和删除 把数据放入栈顶称为入栈(push) 从栈顶删除数据称为出栈(pop) 简单地说:先进后出2.堆(区分数据结构中堆(Top k)二者没有任何关系)堆是一块内存区域,与栈不同,堆里的...原创 2019-07-09 21:09:26 · 207 阅读 · 0 评论 -
如果很多连接都是处于time_wait状态,该怎么处理
参考大佬领会链接奉上:https://www.cnblogs.com/wzj4858/p/8227350.htmlTIMEWAIT状态本身和应用层的客户端或者服务器是没有关系的。仅仅是主动关闭的一方,在使用FIN|ACK|FIN|ACK四分组正常关闭TCP连接的时候会出现这个TIMEWAIT。服务器在处理客户端请求的时候,如果你的程序设计为服务器主动关闭,那么你才有可能需要关注这个TIMEWA...原创 2019-08-27 14:36:08 · 3184 阅读 · 0 评论 -
Linux软链接文件与硬链接文件 静态链接与动态链接
软链接文件与硬链接文件区别硬链接文件是一个文件别名(目录项)--与源文件操作同一个inode节点软链接文件是一个单独的文件,数据中存储源数据路径软链接可以对目录创建,硬连接不可以软链接可以跨分区建立,硬连接不可以删除源文件,软链接文件失效,硬链接文件无影响(链接数-1)静态链接与动态链接静态链接:链接静态库,将代码拷贝,程序大,运行时不依赖静态库,运行时大概率代码冗余动...原创 2019-08-17 20:48:35 · 411 阅读 · 0 评论 -
TCP
TCP协议保证数据传输可靠性的方式主要有:(校序重流拥)校验和 发送的数据包的二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。 确认应答+序列号 TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。 超时重传 当TCP发出一个段后,它启动一个定时器,等待目的端...原创 2019-08-25 15:53:49 · 868 阅读 · 1 评论 -
源码到可执行文件 僵尸进程
源码到可执行文件的过程1)预编译主要处理源代码文件中的以“#”开头的预编译指令。处理规则见下1、删除所有的#define,展开所有的宏定义。2、处理所有的条件预编译指令,如“#if”、“#endif”、“#ifdef”、“#elif”和“#else”。3、处理“#include”预编译指令,将文件内容替换到它的位置,这个过程是递归进行的,文件中包含其他文件。4、删除所有的注释,“//...原创 2019-08-15 18:52:12 · 248 阅读 · 0 评论 -
大小端
大小端是哪里来的概念大端、小端是“字节顺序”里面的概念。字节顺序可以分为大端序、小端序、混合序。什么是字节顺序“字节顺序”简称为“字节序”。在计算机系统中,存储对象一般是以字节为单位的,每个地址单元都对应着一个字节。对于单字节对象,存放方法和传输方式一般相同。对于多字节对象,情况就不同了。我们必须建立两个规则:1.这个对象的地址是什么2.在存储器中如何排列这些字节这个对象的地...原创 2019-08-11 20:27:01 · 522 阅读 · 0 评论 -
C++源文件 include头文件
C++源文件从文本到可执行文件经历的过程?对于C++源文件,从文本到可执行文件一般需要四个过程:预处理阶段:对源代码文件中文件包含关系(头文件)、预编译语句(宏定义)进行分析和替换,生成预编译文件。编译阶段:将经过预处理后的预编译文件转换成特定汇编代码,生成汇编文件汇编阶段:将编译阶段生成的汇编文件转化成机器码,生成可重定位目标文件链接阶段:将多个目标文件及所需要的库连接成最终的可执行...原创 2019-08-10 23:25:31 · 1683 阅读 · 0 评论 -
线程
有了进程,为什么还要有线程?线程产生的原因:进程可以使多个程序能并发执行,以提高资源的利用率和系统的吞吐量;但是其具有一些缺点:进程在同一时间只能干一件事 进程在执行的过程中如果阻塞,整个进程就会挂起,即使进程中有些工作不依赖于等待的资源,仍然不会执行。因此,操作系统引入了比进程粒度更小的线程,作为并发执行的基本单位,从而减少程序在并发执行时所付出的时空开销,提高并发性。和进程相...原创 2019-08-14 21:22:56 · 200 阅读 · 0 评论 -
浏览器输入url
浏览器中输入url后发生了什么我将该过程分为了以下六步:DNS域名解析在浏览器DNS缓存中搜索在操作系统DNS缓存中搜索读取系统hosts文件,查找其中是否有对应的ip向本地配置的首选DNS服务器发起域名解析请求建立TCP连接为了准确地传输数据,TCP协议采用了三次握手策略。发送端首先发送一个带SYN(synchronize)标志的数据包给接收方,接收方收到后,回传一个带有...转载 2019-08-09 21:39:38 · 278 阅读 · 0 评论 -
fork和vfork
fork和vfork的区别:fork的基础知识:fork:创建一个和当前进程映像一样的进程可以通过fork( )系统调用:#include <sys/types.h>#include <unistd.h>pid_t fork(void);成功调用fork( )会创建一个新的进程,它几乎与调用fork( )的进程一模一样,这两个进程都会继续运行。在子进程中,成功的...原创 2019-08-09 21:23:03 · 299 阅读 · 0 评论 -
进程与线程 以及通信方式
基本概念:进程是对运行时程序的封装,是系统进行资源调度和分配的的基本单位,实现了操作系统的并发;线程是进程的子任务,是CPU调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发;线程是操作系统可识别的最小执行和调度单位。每个线程都独自占用一个虚拟处理器:独自的寄存器组,指令计数器和处理器状态。每个线程完成不同的任务,但是共享同一地址空间(也就是同样的动态内存,映射文件,目标代码等等)...原创 2019-08-07 17:46:38 · 468 阅读 · 0 评论 -
指针与引用 cast转换
指针与引用:定义:1、引用:C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用就是C++对C语言的重要扩充。引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明方法:类型标识符 &引用名=目标变量名;引用引入了对象的一个同义词。定义引用的表示方法与定义指针相...原创 2019-08-07 17:41:19 · 1446 阅读 · 0 评论 -
内存泄露 智能指针
为什么要使用智能指针:智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指针就是一个类,当超出了类的作用域是,类会自动调用析构函数,析构函数会自动释放资源。所以智能指针的作用原理就是在函数结束时自动释放内存空间,不需要手动释放内存空间。RAII://RAII(Resource Acquisit...原创 2019-08-13 20:31:29 · 402 阅读 · 0 评论 -
static作用,指针与数组区别,野指针
**static作用**对于函数定义和代码块之外的变量声明,static修改标识符的链接属性,由默认的external变为internal,作用域和存储类型不改变,这些符号只能在声明它们的源文件中访问。对于代码块内部的变量声明,static修改标识符的存储类型,由自动变量改为静态变量,作用域和链接属性不变。这种变量在程序执行之前就创建,在程序执行的整个周期都...原创 2019-08-06 17:48:19 · 1256 阅读 · 0 评论 -
Linux虚拟地址空间
Linux虚拟地址空间为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏,采用了虚拟内存。虚拟内存技术使得不同进程在运行过程中,它所看到的是自己独自占有了当前系统的4G内存。所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存储到物理内存上。 事实上,在每个进程创建加载时,内核只是为进程“创建”了虚拟内存的布局,具体就是初始化进程控制表中内存相关的链表,实际上...原创 2019-08-08 19:34:54 · 360 阅读 · 0 评论 -
++i和i++ C与C++小问题
++i和i++的区别 ++i先自增1,再返回,i++先返回i,再自增1++i 实现:int& int::operator++(){*this +=1;return *this;}i++ 实现:const int int::operator(int) { int oldValue = *this; ++(*this); return oldValu...原创 2019-08-08 19:11:09 · 436 阅读 · 0 评论 -
宏与内联函数
宏常量const :C++中用来替换宏#define PI 3.14#define PI " 3.14"没有参数类型检测代码运行错误,(报错位置)难以调试C++中 const 修饰常量弥补缺乏类型检测缺点并且具有宏替换属性int main() { const int a = 10; int * pa = (int*)&a; *pa = 100;//c...原创 2019-07-10 17:45:44 · 186 阅读 · 0 评论 -
顺序表与链表 栈和栈区 循环队列判空/满
顺序表与链表的不同点顺序表链表尾插和尾删时间复杂度O(1);任意位置的插入删除时间复杂度O(N)删除尾节点O(N)(不带头节点的单链表);有保存则为O(N) ;任意位置插入删除O(1);底层空间为一段连续的空间底层空间不是连续的支持随机访问 (基于底层空间的结构)不支持随机访问空间容量需要扩容不需要扩容应用场景不同(少操作高效存储)(栈的实现)...原创 2019-05-13 11:15:32 · 1248 阅读 · 0 评论 -
MAC地址与IP地址的区别 ARP协议 数据链路层功能
MAC地址与IP地址的区别文章来源:https://www.cnblogs.com/wbxjiayou/p/5157411.html介绍一下MAC地址的知识,MAC地址和IP地址的区别以及MAC地址在实际应用中所涉及到的安全问题。一、基础知识如今的网络是分层来实现的,就像是搭积木一样,先设计某个特定功能的模块,然后把模块拼起来组成整个网络。局域网也不例外,一般来说,在组网上我们使用的是IE...原创 2019-09-02 09:11:27 · 1495 阅读 · 0 评论