2 故渊~

尚未进行身份认证

暂无相关简介

等级
TA的排名 9w+

vector 模拟实现

#define _CRT_SECURE_NO_WARNINGS 1#include<iostream>#include<algorithm>#include<assert.h>#include<Windows.h>#include<string>using namespace std;namespace myvect...

2019-08-07 18:27:58

vector详解-STL序列式容器

vector介绍首先,我们来看看C++标准库对 vector 的解释:vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数...

2019-08-07 10:48:16

date日期类实现-C++

#include<iostream>#include<assert.h>#include<vector>using namespace std;class Date{public: //构造函数 Date(int year = 1900, int month = 1, int day = 1){ this->_year = year...

2019-08-05 11:29:30

malloc / free 底层实现 详解

本文大致讲解一下linux下malloc的底层实现原理。首先malloc肯定是从堆中分配内存,而堆又在用户空间中占据什么位置?通过下面这张图可以看出来:很明显是32位系...

2019-07-30 13:16:21

STL源码剖析--空间配置器

空间配置器是最不需要介绍的东西,他总是隐藏在容器(container)的背后,默默工作,默默付出。allocator 之所以说是空间配置器而不是内存配置器,因为空间不一定是内存,也可以是磁盘或者其它辅助存储介质。空间配置器的标准接口allocator::allocator() default constructorallocator: :allocator (const allocato...

2019-07-29 18:21:18

git基本使用 详解

目录1.版本控制版本控制系统分类2.什么是gitgit的工作原理和特点git配置git配置相关命令git 获取帮助3.git基础命令git文件生命周期git基础命令git历史相关命令git撤销命令git远程仓库命令git标签命令git小窍门4.Git 分支操作git远程分支分支变基——rebaserebase的好处r...

2019-07-23 15:08:05

进程创建 及 进程终结

1.进程创建Linux中进程创建由 fork() 和 exec() 函数族实现。fork() 通过拷贝当前进程创建一个子进程。子进程与父进程的区别仅仅在于PID(每个进程唯一)、PPID(父进程的进程号,子进程将其设置为被拷贝进程的PID)和某些资源和统计量。exec() 函数负责读取可执行文件并将其载入地址空间开始运行。#include <unistd.h>extern c...

2019-07-22 18:55:34

Linux 内核空间与用户空间

Linux 内核空间与用户空间 本文以 32 位系统为例介绍内核空间(kernel space)和用户空间(user space)。内核空间和用户空间对 32 位操作系统而言,它的寻址空间(虚拟地址空间,或叫线性地址空间)为 4G(2的32次方)。也就是说一个进程的最大地址空间为 4G。操作系统的核心是内核(kernel),它独立于普通的应用程序,可以...

2019-07-22 17:30:32

进程地址空间 及 页表 详解

进程地址空间:系统中每个用户空间进程所看到的内存。Linux操作系统采用虚拟内存技术,系统中的所有进程之间以虚拟方式共享内存。地址空间进程地址空间由进程可寻址的虚拟内存组成,内核允许进程使用这种虚拟内存中的地址。每个进程都有一个32位或64位的平坦地址空间,空间大小取决于体系结构。(平坦指一段独立的连续区间)内存地址是一个给定的值,要在地址空间范围之内。尽管一个进程可以寻址4GB(2^...

2019-07-21 10:32:27

从输入URL到页面展示的详细过程

其实从输入URL到页面展示在我们眼前所经历的过程其实还是非常复杂的,牵扯到的知识点也是非常的庞杂。其中很多知识都会有专门的学科去研究,所以这里只是简单地概括一下大致流程:1、输入网址2、DNS解析3、建立tcp连接4、客户端发送HTPP请求5、服务器处理请求 6、服务器响应请求7、浏览器展示HTML8、浏览器发送请求获取其他在HTML中的资源。下面是转载自https://www.cnblogs.c...

2019-05-07 21:44:53

前置++和后置++的区别

今天在阅读《google c++ 编程风格》的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意:对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理由是 前置自增 (++i) 通常要比后置自增 (i++) 效率更高。于是我查了查前置++和后置++的区别。注意:...

2019-05-07 18:37:26

用命名管道 fifo 实现 server&client 通信

命名管道匿名管道 pipe 应用的一个限制就是只能在具有共同祖先(具有亲缘关系)的进程间通信。如果我们想在不相关的进程之间交换数据,可以使用FIFO文件来做这项工作,它经常被称为命名管道。命名管道是一种特殊类型的文件,它可见于文件系统。创建一个命名管道在命令行上创建,使用下面这个命令:$ mkfifo filename命名管道也可以从程序里创建,使用函数为int mk...

2019-05-07 14:17:24

虚拟地址空间 及 页表 详解

虚拟地址空间进程地址空间由进程可寻址的虚拟内存组成,内核允许进程使用这种虚拟内存的地址。每个进程都有一个32位或64位的平坦地址空间,空间的大小取决于体系结构。(平坦指的是地址空间范围是一个独立的连续空间)一些操作系统提供了段地址空间,这种地址空间并非是一个独立的线性区域,而是被分段的,但现代采用虚拟内存的操作系统通常都是用平坦地址空间。通常情况下,每个进程都有唯一的这种平坦地址空间。...

2019-05-06 13:24:03

僵尸进程 详解及代码实现

概念僵尸进程是一个比较特殊的状态。当子进程退出并且父进程没有读取到子进程退出的返回代码时就会产生僵尸进程。僵尸进程会以终止状态保持在进程表中,并且会一直等待父进程读取退出状态代码。只要子进程退出,父进程还在运行,但是父进程没有读取子进程状态,子进程进入僵尸状态。实现一个维持30秒的僵尸进程代码:/*这是一个30秒僵尸进程的示例代码 (严格来说,僵尸状态只能维持25秒)*/ #...

2019-05-05 20:23:38

进程 详解及底层实现

1.进程概念进程是处于执行期的程序以及相关的资源的总称。线程是进程中活动的对象,内核的调度对象是线程。Linux下对线程和进程不作区分,线程是轻量级进程。进程在创建它的时刻开始存活。在Linux系统中,通常是调用 fork() 系统调用的结果,通过复制一个现有进程来创建一个全新的进程。fork系统调用从内核返回两次:一次回到父进程,另一次回到子进程。创建新的进程都是为了立即执行新的、...

2019-05-05 11:42:57

二叉树的各种遍历详解--递归/非递归代码实现

二叉树的遍历是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次,且仅被访问一次。二叉树的遍历方式常用的有四种:前序遍历、中序遍历、后序遍历和层序遍历。前序遍历前序遍历:简单来说就是:根->左->右。规则:若二叉树为空,则空操作返回,否则先访问根结点,然后前序遍历左子树,再前序遍历右子树。递归实现://先序遍历,递归法void PrevO...

2019-04-21 17:57:30

Markdown表格快速生成

在Markdown上写一个表格真是让人头疼的事情,写的不流畅还要担心格式。我为大家总结了以下三种方法,前两种大家或许司空见惯了,第三种是神器。。。一、md原生 | 水果 | 价格 | 数量 | | -------- | -----: | :----: | | 香蕉 | $1 | 5 | | 苹果 ...

2019-04-18 12:35:34

CSDN-markdown编辑器语法——字体、字号与颜色

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过类似HTML的标记语法,它可以使普通文本内容具有一定的格式。但是它本身是不支持修改字体、字号与颜色等功能的!  CSDN-markdown编辑器是其衍生版本,扩展了Markdown的功能(如表格、脚注、内嵌HTML等等)!对,就是内嵌HTML,接下来要讲的功能就需要使用内嵌HTML的方法来实现。字体、字号与颜色<font ...

2019-04-18 12:32:22

空类和空结构体的大小

空类和空结构体在学习C语言和C++的过程中,我们可能都有一个问题,一个空类/空结构体的大小是多少呢?首先我们写代码来测试一下:#include<iostream>#include<stdio.h>struct test1 //空结构体{};class test2 //空类{}; ...

2019-04-18 12:26:34

单例模式--详解及代码实现

某些类, 只应该具有一个对象(实例), 就称之为单例.在很多服务器开发场景中, 经常需要让服务器加载很多的数据 (上百G) 到内存中. 此时往往要用一个单例的类来管理这些数据。懒汉模式和饿汉模式饿汉模式:吃完饭, 立刻洗碗, 这种就是饿汉方式. 因为下一顿吃的时候可以立刻拿着碗就能吃饭.懒汉模式:吃完饭, 先把碗放下, 然后下一顿饭用到这个碗了再洗碗, 就是懒汉方式.懒汉模式最核心的思想...

2019-04-09 17:46:57

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。