12 2020 档案

摘要:半连接满了会怎么样?什么参数来调 丢失连接把?tcp_max_syn_backlog tcp拥塞控制知道么 知道,先慢启动,然后拥塞避免,快速重传和快速恢复。 那bbr知道吗? 知道一点点,相对于别的算法它通过物理延时和链路带宽瓶颈来主动的探测,寻找合适的发送速度和发送量。 那quic知道吗? 知道 阅读全文
posted @ 2020-12-31 17:06 zeroPatrick 阅读(65) 评论(0) 推荐(0)
摘要:mysql 为什么用b+树结构,而不用哈希什么的? 主要是b+树数据都存在叶子节点,然后非叶子节点就存了主键和指针,比较少,加载到内存中的数据更多,这样查找数据磁盘IO次数少,并且叶子节点还是有序的适合范围查询,而哈希的话对于等值查询来说很好,但是像范围查询啊就比较无力了。 参考链接:https:/ 阅读全文
posted @ 2020-12-31 17:03 zeroPatrick 阅读(76) 评论(0) 推荐(0)
摘要:● 正向代理、反向代理 正向代理:是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端。 反向代理:是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端。 正向代理的用途: (1)访问原来无法访问的资源,如google (2) 可以做缓存,加速访问资源 (3)对客户端访问授权,上 阅读全文
posted @ 2020-12-31 14:19 zeroPatrick 阅读(85) 评论(0) 推荐(0)
摘要:转载自:https://www.nowcoder.com/discuss/584461 Get和Post的区别 1. Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。 2. Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据 阅读全文
posted @ 2020-12-31 14:01 zeroPatrick 阅读(111) 评论(0) 推荐(0)
摘要:需重点考虑以下两种情况: 90 90 80 80 60 20 50 50 50 10 10 40 30 20 90 90 90 40 40 80 30 70 70 70 20 60 15 10 10 阅读全文
posted @ 2020-12-31 13:48 zeroPatrick 阅读(256) 评论(0) 推荐(0)
摘要:本文转载自:https://www.cnblogs.com/zhangkele/p/10323588.html 1、MSL是Maximum Segment Lifetime英文的缩写,中文可以译为“报文最大生存时间”,他是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。因为tcp报文(se 阅读全文
posted @ 2020-12-29 20:36 zeroPatrick 阅读(3472) 评论(0) 推荐(0)
摘要:本文转载自:https://www.cnblogs.com/duan2/p/9180861.html 什么是计时器呢?我们可以理解成一块闹钟,隔一段时间响一次,提醒TCP做特定的事情。TCP要正常工作,必须要有特定的计时器。那么TCP中有哪些计时器呢? TCP中有四种计时器(Timer),分别为: 阅读全文
posted @ 2020-12-29 20:18 zeroPatrick 阅读(410) 评论(0) 推荐(0)
摘要:直接定址法: 直接取关键字的某个线性函数值为散列地址。Hash(key) = a*key + b (其中a,b为常数) 方法简单,不会产生冲突,若关键字分布不连续,则会浪费空间。 解决哈希冲突的方法:开放定址法、拉链法 开放定址法中不能随便删除某个元素,因为会导致对相同H(key)的后续检索,当几个 阅读全文
posted @ 2020-12-29 13:55 zeroPatrick 阅读(206) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/qq_36610462/article/details/83277524 查找、删除、插入时间复杂度: 1.节点是红色或黑色。 2.根节点是黑色。 3.每个叶子节点都是黑色的空节点(NIL节点)。 4 每个红色节点的两个子节点都是黑色。(从每个叶子 阅读全文
posted @ 2020-12-28 16:24 zeroPatrick 阅读(74) 评论(0) 推荐(0)
摘要:转载自:https://leetcode-cn.com/problems/longest-palindromic-substring/solution/zhong-xin-kuo-san-dong-tai-gui-hua-by-liweiwei1419/ 阅读全文
posted @ 2020-12-28 14:38 zeroPatrick 阅读(123) 评论(0) 推荐(0)
摘要://升序队列,小顶堆 priority_queue <int,vector<int>,greater<int> > q; //降序队列,大顶堆 priority_queue <int,vector<int>,less<int> >q; //greater和less是std实现的两个仿函数(就是使一个 阅读全文
posted @ 2020-12-28 13:09 zeroPatrick 阅读(65) 评论(0) 推荐(0)
摘要:前序 class Solution { public: vector<int> preorderTraversal(TreeNode* root) { vector<int> res; if (root == nullptr) { return res; } stack<TreeNode*> stk 阅读全文
posted @ 2020-12-28 12:41 zeroPatrick 阅读(136) 评论(0) 推荐(0)
摘要:进程(进程实体)由程序段、数据段、PCB三部分组成。 PCB(PCB Process Control Block):用于描述进程的当前情况以及控制进程运行的全部信息。 阅读全文
posted @ 2020-12-28 00:03 zeroPatrick 阅读(84) 评论(0) 推荐(0)
摘要:用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。用户态拥有最低的特权级,内核态拥有较高的特权级。运行在用户态的程序不能直接访问操作系统内核数据结构和程序。内核态和用户态之间的转换方式主要包括:系统调用,异常和中断。 阅读全文
posted @ 2020-12-27 23:57 zeroPatrick 阅读(105) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/ifwecande/article/details/107470579 管道 操作系统分为内核态和用户态,管道就是在内核中开辟一块缓冲区,不同的进程通过对这个缓冲取进行读写操作实现IPC。 管道其实有三种不同的形式, 匿名管道,半双工通信,只能在父 阅读全文
posted @ 2020-12-27 22:48 zeroPatrick 阅读(3484) 评论(0) 推荐(0)
摘要:《Linux内核设计与实现》 阅读全文
posted @ 2020-12-27 22:05 zeroPatrick 阅读(47) 评论(0) 推荐(0)
摘要:《Linux内核设计与实现》 阅读全文
posted @ 2020-12-27 22:04 zeroPatrick 阅读(81) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-12-27 22:02 zeroPatrick 阅读(57) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-12-27 21:58 zeroPatrick 阅读(60) 评论(0) 推荐(0)
摘要:本文转载自:https://blog.csdn.net/com_ma/article/details/78701376 Linux下有3个特殊的进程,idle进程(PID = 0), init进程(PID = 1)和kthreadd(PID = 2) * idle进程由系统自动创建, 运行在内核态  阅读全文
posted @ 2020-12-27 21:14 zeroPatrick 阅读(356) 评论(0) 推荐(0)
摘要:进程提供两种虚拟机制:虚拟处理器和虚拟内存。 在进程看来它在独占处理器且拥有整个系统的全部内存资源。 同一进程的不同线程可以共享内存,但拥有各自的虚拟处理器。 不同进程之间内存空间是独立的。 阅读全文
posted @ 2020-12-27 20:37 zeroPatrick 阅读(84) 评论(0) 推荐(0)
摘要:Linux的进程、线程、文件描述符是什么 转自:https://github.com/ZeroPatrick/fucking-algorithm/blob/master/%E6%8A%80%E6%9C%AF/linux%E8%BF%9B%E7%A8%8B.md 说到进程,恐怕面试中最常见的问题就是线 阅读全文
posted @ 2020-12-27 20:32 zeroPatrick 阅读(106) 评论(0) 推荐(0)
摘要:1、TASK_RUNNING:(R)进程当前正在运行,或者正在运行队列中等待调度。只有在该状态的进程才可能在CPU上运行,同一时刻可能有多个进程处于可执行状态。 2、TASK_INTERRUPTIBLE:(S)进程处于睡眠状态,处于这个状态的进程因为等待某事件的发生(比如等待socket连接、等待信 阅读全文
posted @ 2020-12-27 20:14 zeroPatrick 阅读(434) 评论(0) 推荐(0)
摘要:PCB(PCB Process Control Block):用于描述进程的当前情况以及控制进程运行的全部信息。 PCB一般包括: 1.程序ID(PID、进程句柄):它是唯一的,一个进程都必须对应一个PID。PID一般是整形数字 2.特征信息:一般分系统进程、用户进程、或者内核进程等 3.进程状态: 阅读全文
posted @ 2020-12-27 19:27 zeroPatrick 阅读(440) 评论(0) 推荐(0)
摘要:[转载]原链接:https://blog.csdn.net/qq_36898043/article/details/79574153 Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。这两个到底有什么区别呢?两者没太大差别,讨论这个问题,要追溯到Unix系统中的两种风格,S 阅读全文
posted @ 2020-12-27 18:16 zeroPatrick 阅读(215) 评论(0) 推荐(0)
摘要://shared_ptr 源码中的对象引用次数 自增的实现,代码位于 memory文件中, //其中 _MT_INCR 的定义是:#define _MT_INCR(x) _INTRIN_RELAXED(_InterlockedIncrement)(reinterpret_cast<volatile 阅读全文
posted @ 2020-12-27 16:36 zeroPatrick 阅读(941) 评论(0) 推荐(1)
摘要:转载自:http://www.nowamagic.net/librarys/veda/detail/1994 僵尸进程是指一个已经终止、但是其父进程尚未对其进行善后处理获取终止进程的有关信息的进程,这个进程被称为“僵尸进程”(zombie)。 怎样产生僵尸进程 一个进程在调用exit命令结束自己的生 阅读全文
posted @ 2020-12-26 23:14 zeroPatrick 阅读(157) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-12-26 20:33 zeroPatrick 阅读(62) 评论(0) 推荐(0)
摘要:OSI分层(7层) 物理层、数据链路层、网络层、运输层、会话层、表示层、应用层 TCP/IP分层(4层) 网络接口层、网络层、运输层、应用层 五层协议(5层) 物理层、数据链路层、网络层、运输层、应用层 每层对应的功能及协议 功能 常见 协议 物理层 (比特Bit) 设备间接收或发送比特流; 说明电 阅读全文
posted @ 2020-12-26 15:50 zeroPatrick 阅读(189) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2020-12-26 14:24 zeroPatrick 阅读(409) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/u013241673/article/details/79582872 一 共享秘钥 1.1 概念 共享秘钥和我们生活中同一把锁的钥匙概念类似,对同一把锁来说,加锁时使用什么钥匙,解锁也必须使用同样的钥匙。 1.2 共享秘钥在HTTP传输中的缺点 阅读全文
posted @ 2020-12-26 11:50 zeroPatrick 阅读(199) 评论(0) 推荐(0)
摘要:【转载】转自:https://www.cnblogs.com/shijingjing07/p/5965792.html 1.公钥与私钥原理1)鲍勃有两把钥匙,一把是公钥,另一把是私钥2)鲍勃把公钥送给他的朋友们 帕蒂、道格、苏珊 每人一把。3)苏珊要给鲍勃写一封保密的信。她写完后用鲍勃的公钥加密,就 阅读全文
posted @ 2020-12-26 11:48 zeroPatrick 阅读(133) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/banana960531/article/details/85621865 数字中的第一位指定了响应类别,后两位无分类,响应类别有一下5种: 状态码分类表 类别 原因短语 1xx Informational(信息性状态码) 接受的请求正在处理 2x 阅读全文
posted @ 2020-12-26 10:48 zeroPatrick 阅读(306) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/kking_edc/article/details/105929271 C++ 万能头文件 #include <bits/stdc++.h>(写了这个一个下面的都可以不用写啦,一劳永逸有木有) 数据流输入/输出:cin>>,cout<<的头文件:# 阅读全文
posted @ 2020-12-26 10:36 zeroPatrick 阅读(333) 评论(0) 推荐(0)
摘要:struct pair_hash { template<class T1, class T2> std::size_t operator() (const std::pair<T1, T2>& p) const { auto h1 = std::hash<T1>{}(p.first); auto h 阅读全文
posted @ 2020-12-26 00:32 zeroPatrick 阅读(892) 评论(0) 推荐(0)
摘要:编译器将使用相应的函数代码替换函数调用。对于内联代码,程序无需跳到另一个位置处执行代码,再调回来。因此,内联函数的执行速度比常规函数稍快,但代价是需要占用更多的内存。如果程序在10个不同的地方调用同一个内联函数,则该程序将包含该函数代码的10个副本。 应有选择地使用内联函数。如果执行函数代码的时间比 阅读全文
posted @ 2020-12-25 14:32 zeroPatrick 阅读(373) 评论(0) 推荐(0)
摘要:1.iterator,const_iterator作用:遍历容器内的元素,并访问这些元素的值。iterator可以改元素值,但const_iterator不可改。 2.const_iterator 对象可以用于const vector 或非 const vector,它自身的值可以改(可以指向其他元 阅读全文
posted @ 2020-12-25 14:16 zeroPatrick 阅读(479) 评论(0) 推荐(0)
摘要:#define _CRTDBG_MAP_ALLOC #include <cstdlib> #include <crtdbg.h> int main() { int* p = (int*)malloc(sizeof(int)*10); _CrtDumpMemoryLeaks(); return 0; 阅读全文
posted @ 2020-12-25 10:51 zeroPatrick 阅读(297) 评论(0) 推荐(0)
摘要:使用方法: unique_ptr<string> ps1(new string("hello")); shared_ptr<vector<int>> ps2(new vector<int>(3)); //(*ps2).size() = 3;weak_ptr <vector<int>> ps5(ps2 阅读全文
posted @ 2020-12-22 19:51 zeroPatrick 阅读(54) 评论(0) 推荐(0)
摘要:智能指针和普通指针的区别在于智能指针实际上是对普通指针加了一层封装机制,这样的一层封装机制的目的是为了使得智能指针可以方便的管理一个对象的生命期。 在C++中,我们知道,如果使用普通指针来创建一个指向某个对象的指针,那么在使用完这个对象之后我们需要自己删除它,例如: ObjectType* temp 阅读全文
posted @ 2020-12-22 19:44 zeroPatrick 阅读(97) 评论(0) 推荐(0)
摘要:const_cast: 用来移除变量的const或volatile限定符。注意:const_cast是不能用来执行任何类型的转换的,比如只能讲const char* p 转换成char* p,而不能转成int* p。 int main() { struct T { int i; }; const T 阅读全文
posted @ 2020-12-22 13:03 zeroPatrick 阅读(733) 评论(0) 推荐(0)
摘要:参考链接:https://baike.baidu.com/item/%E5%B0%BE%E9%80%92%E5%BD%92/554682?fr=aladdin 如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表 阅读全文
posted @ 2020-12-21 20:10 zeroPatrick 阅读(107) 评论(0) 推荐(0)
摘要:#include <iostream> #include <string> #include <algorithm> #include <vector> using namespace std; bool comp(int a, int b) { return a < b; } struct cus 阅读全文
posted @ 2020-12-21 15:47 zeroPatrick 阅读(426) 评论(0) 推荐(0)
摘要:整数、浮点数转字符串 std::to_string 定义于头文件 <string> std::string to_string( int value ); (1) (C++11 起) std::string to_string( long value ); (2) (C++11 起) std::st 阅读全文
posted @ 2020-12-21 13:21 zeroPatrick 阅读(1271) 评论(0) 推荐(0)
摘要:this 指针 this 指针是一个隐含于每一个非静态成员函数中的特殊指针。它指向调用该成员函数的那个对象。 当一个成员函数被调用时,自动向它传递一个隐含的参数,该参数是一个指向这个成员函数所在的对象的指针。 当对一个对象调用成员函数时,编译程序先将对象的地址赋给 this 指针,然后调用成员函数, 阅读全文
posted @ 2020-12-19 17:09 zeroPatrick 阅读(135) 评论(0) 推荐(0)
摘要:在multimap中,同一个键关联的元素必然相邻存bai放。基于这个事实,就可以将某个键对应的值一一输出。 1、使用find和count函数。count函数求出某个键出现的次数,find函数返回一个迭代器,指向第一个拥有正在查找的键的实例。 2、使用lower_bound(key)和upper_bo 阅读全文
posted @ 2020-12-18 16:43 zeroPatrick 阅读(411) 评论(0) 推荐(0)
摘要:question description: solution with C++: vector<int> Solution::poker(vector<int> desk) { if (desk.size() == 0) { return {}; } deque<int> hand; //手中的牌 阅读全文
posted @ 2020-12-17 20:26 zeroPatrick 阅读(61) 评论(0) 推荐(0)
摘要:二叉树广度优先算法: public void LevelOrder() { Queue<Node> queue = new Queue<Node>(); queue.Enqueue(_head); while (queue.Count>0) { Node node = (Node)queue.Deq 阅读全文
posted @ 2020-12-17 19:08 zeroPatrick 阅读(117) 评论(0) 推荐(0)
摘要:静态成员函数与普通成员函数的根本区别在于:普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。 一、面向过程设计中的static1.静态全局变量在全局变量前,加static,该变量被定义为一个静态全局变量 作 阅读全文
posted @ 2020-12-17 17:24 zeroPatrick 阅读(329) 评论(0) 推荐(0)
摘要:线程间通信的方式: 临界区:通过多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问; 互斥量Synchronized/Lock:采用互斥对象机制,只有拥有互斥对象的线程才有访问公共资源的权限。因为互斥对象只有一个,所以可以保证公共资源不会被多个线程同时访问 信号量Semphare:为控 阅读全文
posted @ 2020-12-17 09:10 zeroPatrick 阅读(1522) 评论(0) 推荐(0)
摘要:进程间通信的方式: 进程间通信主要包括管道、系统IPC(包括消息队列、信号量、信号、共享内存等)、以及套接字socket。 1.管道: 管道主要包括无名管道和命名管道:管道可用于具有亲缘关系的父子进程间的通信,有名管道除了具有管道所具有的功能外,它还允许无亲缘关系进程间的通信 1.1 普通管道PIP 阅读全文
posted @ 2020-12-16 22:34 zeroPatrick 阅读(274) 评论(0) 推荐(0)
摘要:参考链接:https://www.nowcoder.com/tutorial/93/0cf933dc97be4913b3f5d012eba1e875 1、概括 对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据); 而对于POST,浏览器先发送h 阅读全文
posted @ 2020-12-16 22:26 zeroPatrick 阅读(79) 评论(0) 推荐(0)
摘要:参考链接:https://www.nowcoder.com/tutorial/93/0cf933dc97be4913b3f5d012eba1e875 TCP和UDP的区别和各自适用的场景 参考回答: 1)TCP和UDP区别 1) 连接 TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。 阅读全文
posted @ 2020-12-16 22:21 zeroPatrick 阅读(932) 评论(0) 推荐(0)
摘要:请问tcp握手为什么两次不可以?为什么不用四次? 参考回答: 两次不可以:tcp是全双工通信,两次握手只能确定单向数据链路是可以通信的,并不能保证反向的通信正常 不用四次:本来握手应该和挥手一样都是需要确认两个方向都能联通的,本来模型应该是:1.客户端发送synX给服务器2.服务器收到synX,回复 阅读全文
posted @ 2020-12-16 22:16 zeroPatrick 阅读(84) 评论(0) 推荐(0)
摘要:浏览器中输入URL 浏览器要将URL解析为IP地址,解析域名就要用到DNS协议,首先主机会查询DNS的缓存,如果没有就给本地DNS发送查询请求。DNS查询分为两种方式,一种是递归查询,一种是迭代查询。如果是迭代查询,本地的DNS服务器,向根域名服务器发送查询请求,根域名服务器告知该域名的一级域名服务 阅读全文
posted @ 2020-12-16 22:14 zeroPatrick 阅读(123) 评论(0) 推荐(0)
摘要:HTTP协议和HTTPS协议区别如下: 1)HTTP协议是以明文的方式在网络中传输数据,而HTTPS协议传输的数据则是经过TLS加密后的,HTTPS具有更高的安全性 2)HTTPS在TCP三次握手阶段之后,还需要进行SSL 的handshake,协商加密使用的对称加密密钥 3)HTTPS协议需要服务 阅读全文
posted @ 2020-12-16 20:30 zeroPatrick 阅读(63) 评论(0) 推荐(0)
摘要:const用法总结 1、修饰常量时: 1 2 const int temp1; //temp1为常量,不可变 int const temp2; //temp2为常量,不可变 2、修饰指针时: 主要看const在*的前后,在前则指针指向的内容为常量,在后则指针本身为常量; 1 2 3 4 const 阅读全文
posted @ 2020-12-16 19:57 zeroPatrick 阅读(294) 评论(0) 推荐(0)
摘要:在现实生活中常常遇到实现某种目标存在多种策略可供选择的情况,例如,出行旅游可以乘坐飞机、乘坐火车、骑自行车或自己开私家车等,超市促销可以釆用打折、送商品、送积分等方法。在软件开发中也常常遇到类似的情况,当实现某一个功能存在多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该 阅读全文
posted @ 2020-12-16 19:52 zeroPatrick 阅读(103) 评论(0) 推荐(0)
摘要:如果要在派生类中重新定义基类的方法,通常应将基类方法声明为虚的。这样,程序将根据对象类型而不是引用或指针的类型来选择方法版本。 为基类声明一个虚析构函数也是一种惯例。如果析构函数是虚的,将调用相对应对象类型的析构函数。因此,如果指针指向的是派生类的对象,将调用派生类对象的析构函数,然后自动调用基类的 阅读全文
posted @ 2020-12-16 14:20 zeroPatrick 阅读(71) 评论(0) 推荐(0)
摘要:首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。 1、简介 假设我们有下面的 阅读全文
posted @ 2020-12-16 13:59 zeroPatrick 阅读(106) 评论(0) 推荐(0)
摘要:公有继承(public)、私有继承(private)、保护继承(protected)是常用的三种继承方式。 1. 公有继承(public) 基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。 2. 私有继承(private) 阅读全文
posted @ 2020-12-16 13:51 zeroPatrick 阅读(1024) 评论(0) 推荐(0)
摘要:1. 单线程;redis单线程模型只能使用一个cpu,可以开启多个redis进程 阅读全文
posted @ 2020-12-15 22:23 zeroPatrick 阅读(70) 评论(0) 推荐(0)
摘要:主键表中每一行都应该有一列(或几列)可以唯一标识自己。顾客表可以使 用顾客编号,而订单表可以使用订单 ID。雇员表可以使用雇员 ID或雇 员社会安全号。 唯一标识表中每行的这个列(或这几列)称为主键。主键用来表示一个 特定的行。没有主键,更新或删除表中特定行就极为困难,因为你不能 保证操作只涉及相关 阅读全文
posted @ 2020-12-15 21:24 zeroPatrick 阅读(764) 评论(0) 推荐(0)
摘要:堆和栈的区别 主要的区别由以下几点: 1、管理方式不同; 2、空间大小不同; 3、能否产生碎片不同; 4、生长方向不同; 5、分配方式不同; 6、分配效率不同; 管理方式:对于栈来讲,是由编译器自动管理,无需我们手工控制;对于堆来说,释放工作由程序员控制,容易产生memory leak。 空间大小: 阅读全文
posted @ 2020-12-15 20:51 zeroPatrick 阅读(351) 评论(0) 推荐(0)
摘要:BSS段 可执行程序包括BSS段、数据段、代码段(也称文本段)。 BSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。特点是:可读写的,在程序执行之前BSS段会自动清0。所以,未初始的全局变量在程序执行之前已经成0了。 数据段包括 阅读全文
posted @ 2020-12-15 20:36 zeroPatrick 阅读(280) 评论(0) 推荐(0)
摘要:1、 堆栈尺寸设置过小 由堆栈溢出的定义便可知,堆栈尺寸设置过小时,其能储存的内容过小,容易发生溢出。 2、递归层次太深或函数调用层次过深导致堆栈溢出 调用函数时,系统将为调用者构造一个由参数表返回地址组成的活动记录,并将其押入到由系统提供的运行时刻栈的栈顶,然后将程序的控制权转移到被调函数。若被调 阅读全文
posted @ 2020-12-15 20:01 zeroPatrick 阅读(851) 评论(0) 推荐(0)
摘要:RAII (Resource Acquisition Is Initialization),也称为“资源获取就是初始化”,是C++语言的一种管理资源、避免泄漏的惯用法。C++标准保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用。简单的说,RAII 的做法是使用一个对象,在其构造时获 阅读全文
posted @ 2020-12-15 18:14 zeroPatrick 阅读(137) 评论(0) 推荐(0)
摘要:当我们向操作系统申请内存时,操作系统并不是直接分配给我们物理内存,而是只标记当前进程拥有该段内存,当真正使用这段段内存时才会分配。 这种延迟分配物理内存的方式就通过page fault机制来实现的。 当我们访问一个内存地址时, 1.如果该地址非法(访问系统为进程分配的地址空间之外的物理内存),或者我 阅读全文
posted @ 2020-12-15 16:32 zeroPatrick 阅读(662) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/q1449516487/article/details/100598325 概念 在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单 阅读全文
posted @ 2020-12-15 15:35 zeroPatrick 阅读(116) 评论(0) 推荐(0)
摘要:一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。 子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上 阅读全文
posted @ 2020-12-15 13:49 zeroPatrick 阅读(951) 评论(0) 推荐(0)
摘要:“cd” change directorycd 切换到根目录cd ~ 切换到根目录cd 文件夹名称 切换到当前文件夹下的子文件夹cd ./文件夹名称 切换到当前文件夹下的子文件夹, “ . ”表示当前文件夹cd … 返回当前文件夹的上级文件夹 pwd Print Working Directory查 阅读全文
posted @ 2020-12-15 11:06 zeroPatrick 阅读(167) 评论(0) 推荐(0)
摘要:【转载自 C++prime 第六版】 C++(自C++11起)使用四种不同的方案来存储数据,这些方案的区别就在于数据保留在内存中的时间。 1. 自动存储: 在函数定义中声明的变量(包括函数参数)的存储持续性为自动的。它们在程序开始执行所属的函数或代码块时被创建,在执行完函数或代码块时,它们使用的内存 阅读全文
posted @ 2020-12-14 21:07 zeroPatrick 阅读(1821) 评论(0) 推荐(0)
摘要:【转载】https://blog.csdn.net/guaiguaihenguai/article/details/81160310 程序要运行起来,必须要经过四个步骤:预处理、编译(转换成汇编指令)、汇编(转换成二进制文件)和链接。接下来通过几个简单的例子来详细讲解一下这些过程。 对于上边用到的几 阅读全文
posted @ 2020-12-14 19:51 zeroPatrick 阅读(118) 评论(0) 推荐(0)
摘要:【转载】https://blog.csdn.net/qq_24656927/article/details/82456097 一.预编译又称为预处理,是做些代码文本的替换工作。处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等,就是为编译做的预备工作的阶 阅读全文
posted @ 2020-12-14 16:41 zeroPatrick 阅读(317) 评论(0) 推荐(0)
摘要:如果文件名包含在尖括号中,则C++编译器将在存储标准头文件的主机系统的文件系统中查找;如果文件名包含在双引号中,则编译器将首先查找当前的工作目录或源代码目录(或其他目录,这取决于编译器)。如果没有在那里找到头文件,则将在标准位置查找。 因此,在包含自己的头文件时,应使用引号而不是尖括号。 阅读全文
posted @ 2020-12-14 16:13 zeroPatrick 阅读(125) 评论(0) 推荐(0)
摘要:const int Month = 12; #define PI 3.14 const 的优点: 1. 能够明确指定类型,define只是简单的字符串替换,没有类型检查。而const有对应的数据类型 2. 可以使用C++的作用域规则将定义限制在特定的函数或文件中 3. 可以将const用于更复杂的类 阅读全文
posted @ 2020-12-13 23:21 zeroPatrick 阅读(97) 评论(0) 推荐(0)
摘要:转载自:https://blog.csdn.net/qq_38810767/article/details/85265541 malloc memory allocate;calloc clear allocate; ralloc re-allocate 1. malloc/calloc/reall 阅读全文
posted @ 2020-12-13 22:22 zeroPatrick 阅读(484) 评论(0) 推荐(0)
摘要:1、malloc与free是c++/c语言的标准函数,new/delete是C++的运算符。 2、new返回指定类型的指针,并且可以自动计算出所需要的大小。 malloc必须用户指定所申请内存的大小,并且默然返回类型为void*,必须强行转换为实际类型的指针。 int *p = new int; / 阅读全文
posted @ 2020-12-13 16:28 zeroPatrick 阅读(85) 评论(0) 推荐(0)
摘要:自动变量在程序执行到其所属的代码块(由 { } 符号来标识,通常是函数定义)时产生,在离开该代码块时终止。静态变量在整个程序周期内都存在。 阅读全文
posted @ 2020-12-13 15:38 zeroPatrick 阅读(170) 评论(0) 推荐(0)
摘要:OOP(object oriented programming)强调的是运行阶段(而不是编译阶段)进行决策。使用OOP是,可以在运行阶段确定数组的长度,使用new来请求内存,使用指针来跟踪新分配的内存的位置。 阅读全文
posted @ 2020-12-13 10:34 zeroPatrick 阅读(150) 评论(0) 推荐(0)