自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Ding 的博客

真正的大师永远怀着一颗学徒的心 Code never lie!

  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux进程间通信机制详谈

Linux进程间通信机制Unix系统提供的进程间通信机制主要有:管道和FIFO(命名管道)套接字信号信号量消息队列共享内存区管道pipe管道机制思想是在内存中创建一个共享文件,从而使得通信双方利用该共享文件进行交互。需要注意的是管道数据流动是单向的,是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道。管道只在具有公共祖先的两个进程之间使用,可以将管道视为一个独立的文件系统,管道在管道两侧的进程看来就是一个文件,只是这个文件只存在于内存中。一个进程写入管道的所有数

2020-06-27 17:54:01 1248

原创 操作系统设计思想--主奴思想

操作系统设计思想–主奴思想对于操作系统而言,如何稳定可靠运行无疑是最重要的。目前的方案均为将用户进程和其他用户进程、将用户进程和操作系统进行分离。实现操作系统可以管理用户进程,但用户进程不能侵入内核,同时用户进程之间也不能互相干预。那么,在同一个cpu同一个指令集以及内存条等的情况下,如何实现该机制?这就是操作系统设计的一个思想,主奴思想,即特权思想。我们希望能够实现,操作系统可以访问以及管理应用程序,但应用程序之间不能够互相干预,同时应用程序的权限是有限的,即不可以干扰操作系统。因此,操作系统需要

2020-06-26 17:46:07 1473

原创 Linux内核学习--内存寻址

Linux内核学习–内存寻址内存地址使用 x86 处理器时,需要区分三种地址:逻辑地址(程序看到的地址):逻辑地址由一个段和偏移量组成。线性地址(虚拟地址):位于逻辑地址和物理地址之间物理地址:真实的地址,用于内存芯片级内存单元寻址逻辑地址-->[分段单元]-->线性地址-->[分页单元]-->物理地址分段可以给每一个进程分配不同的线性空间地址,而分页可以把同一线性空间映射到不同的物理空间段寄存器为了快速地找到段选择符,处理器提供了一些段寄存器cs:代码段

2020-06-25 21:10:09 165

原创 虚拟化环境配置

虚拟化环境配置检查硬件是否有 kvm 支持命令行输入egrep '(vmx|svm)' /proc/cpuinfo没有输出则说明没有硬件支持,需要在bios中检查能否开启虚拟化支持确定系统支持虚拟技术已经设置为允许。(这个很关键)重启服务器,进入BIOS设置界面,如果是centOS,启动系统时按F11。上下左右键,找到processorsetting,按enter键进入,找到VitualizationTechnology,设置为允许,即 Enabled。退出设置时保存在vmware的虚

2020-06-25 14:42:03 1091

原创 C++深入学习:STL源码剖析 (3) 从源码深入剖析list

C++深入学习:STL源码剖析 (3) 从源码深入剖析listvector和list是最常用的容器,vector是连续的线性空间,list则是非连续的用指针串联起的空间。因此list对于空间的利用是非常充分的,对于任意位置的插入删除操作,list是常数时间完成。list不仅是双向链表,而且是环形双向链表,因此只需要一个指针便可以实现对整个list的迭代器的标记。为了符合STL的前闭后开的区间要求,list实现时将该指针节点指向一个置于尾端的空白节点,则该节点的前面是尾结点,该节点的后面是头结点,根据此

2020-06-23 17:12:29 330

原创 C++深入学习:STL源码剖析 (2) 从源码深入剖析vector

C++深入学习:STL源码剖析 (2) 从源码深入剖析vector​ vector的使用就像数组,但是vector的空间是可变的。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。vector的实现技术,关键就在于对大小的控制以及重新配置时的数据移动效率。需要注意的是,对于空间的扩充,是(配置新空间->数据移动->释放旧空间)的大工程,时间成本是较高的,因此如果每次需要扩充仅仅只扩充所需的,则会导致频繁的扩充,因此vector采用了未雨绸缪的考虑。学习vect

2020-06-22 09:42:07 269

原创 C++深入学习:STL源码剖析 (1) {STL、迭代器、前闭后开}

C++深入学习:STL源码剖析 (1) {STL、迭代器、前闭后开}STL六大组件容器(containers):各种数据结构:如vector,map,list,deque,set等算法(algorithm):各种常用算法:如sort,max,min,search,copy等迭代器(iterators):扮演容器与算法的胶合剂,泛型指针仿函数:实现角度可以认为是重载了operator()的class配接器:用来修饰容器或仿函数或迭代器接口配置器:负责空间配置管理前闭后开区间表示法 [)任

2020-06-20 11:04:51 578

原创 C++基础知识面试必备、复习细节 (9) {enum new union extern}

C++基础知识面试必备、复习细节 (9) {enum new union extern}new和deletenew表达式三步操作:new调用一个名为operator new(或operator new[])的标准库函数,该函数分配一块足够大的、原始的、未命名的内存空间以便存储特定类型的对象(或者对象的数组)编译器运行相应的构造函数以构造这些对象,并传入初值对方被分配空间并构造完成后,返回一个指向该对象的指针delete表达式两步操作:对所指的对象或者所指的对象数组中的元素执行对应的析

2020-06-19 14:06:51 205

原创 C++基础知识面试必备、复习细节 (8)(tuple、随机数、异常处理、多继承)

C++基础知识面试必备、复习细节 (8)(tuple、随机数、异常处理、多继承)tuple类型tuple是一个类似于pair的模板,pair类型是每个成员变量各自可以是任意类型,但是只能有两个成员,而tuple与pair不同的是它可以有任意数量的成员个人常把tuple当作一个结构体使用,如果只是一次使用的话就避免了结构体繁琐的创建tuple的基本操作:tuple<int,string,int> t{1,"James",1000}; //可以用来存一个序号,名字,工资这样的信

2020-06-19 10:41:59 210

原创 C++基础知识面试必备、复习细节 (7) (关联容器、动态内存)

C++基础知识面试必备、复习细节 (7) (关联容器、动态内存)pair类型pair保存两个数据成员,通常用来存储具有一定关系的二元组pair<int,string> t; //保存一个int和一个stringpair<int,vector<int>> m; //保存一个int和一个vector<int>t=make_pair(i,str); //t的值为 <i,str>cout<<t.first<&lt

2020-06-18 11:28:17 199

原创 C++基础知识面试必备、复习细节 (6) (容器、lambda函数)

C++基础知识面试必备、复习细节 (6)常见的顺序容器顺序容器类型特点vector可变大小的数组。支持快速随机访问。在尾部之外的位置插入或删除元素代价较高list双向链表。支持双向顺序访问。任意位置的插入删除都效率较高,不支持快速访问forward_list单向链表。支持单向顺序访问,任意位置插入删除效率较高。string可变大小的保存字符的容器。支持快速随机访问。尾部插入删除速度快array固定大小数组。支持快速随机访问。不能添加或删除元素d

2020-06-17 23:23:27 241

原创 r个桶数量的DGIM算法的错误率上限

r个桶数量的DGIM算法的错误率上限当允许具有相同大小的桶的数目是1或者2时,错误率上限为50%故对相同大小的桶的数目,令其为 r-1 或者 r ,对于最大桶和最小桶则数目可以为1~r间的任意一个数。桶合并规则为:如果大小为 2j2^j2j 的桶的数目为r+1,则将最左边的两个桶合并为一个 2j+12^{j+1}2j+1大小的桶,如果可以继续合并则继续合并直至不能合并。故当最左边的桶中仅有一个1在查询范围内时,错误率相对来说是最大的,此时查询结果被高估。假设最左边的桶大小为 2j2^j2j ,则真实

2020-06-11 15:23:11 424

原创 根据IP的字符串复原IP地址

leetcode93 复原IP地址之前面试字节跳动遇到该题,当时时间较短,只有大致思路和基本首先框架,没有AC了,今天又正好看见该题。93. 复原IP地址给定一个只包含数字的字符串,复原它并返回所有可能的 IP 地址格式。有效的 IP 地址正好由四个整数(每个整数位于 0 到 255 之间组成),整数之间用 ‘.’ 分隔。示例:输入: "25525511135"输出: ["255.255.11.135", "255.255.111.35"]分析:首先明白,什么是一个合法的IP地址:应该分成

2020-06-10 15:34:52 593

原创 计算机网络传输层---TCP连接的建立和终止(详解三次握手四次挥手)

计算机网络传输层—TCP连接的建立和终止(详解三次握手四次挥手)TCP 是面向连接的、可靠的、基于字节流的传输层通信协议。TCP的特点:TCP提供客户与服务器之间的连接,是基于连接的数据传输协议,因此是一对一的TCP提供可靠性,数据可以无差错、不丢失、不重复、按需到达TCP提供拥塞控制和流量控制,保证数据传输的安全性TCP是全双工的,在一个连接上的任意时刻在进出两个方向上既可以发送数据也可以接收数据TCP 首部长度较长,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节TCP的

2020-06-04 23:17:53 1292

原创 计算机网络应用层----DNS协议:因特网的目录服务

计算机网络应用层----DNS协议:因特网的目录服务DNS : (domain name system) 域名系统由于IP地址非常复杂难以记忆,我们平时访问网站时,输入的都是字母组成的字符串,而不是直接输入IP地址,但是数据在网络中传播需要IP地址,因此就需要有效管理主机名和IP地址之间的关系的系统,也就是DNS系统。DNS系统可以维护一个用来标识组织内部主机名和IP地址之间对应关系的数据库。DNS组成:一个由分层的DNS服务器实现的分布式数据库一个使得主机能够查询分布式数据库的应用层协议

2020-06-03 19:17:01 325

原创 计算机网络应用层--远程登陆TELNET和SSH

计算机网络应用层–远程登陆TELNET和SSH实现从本地计算机登陆到网络另一端计算功能的应用叫做远程登陆。远程登陆主要使用TELNET和SSH两种协议TELNETTELNET是典型的客户/服务器模型的服务,TELNET利用TCP的一条连接,通过该连接向主机发送文字命令并在主机上执行,本地用户好像直接与远端主机的Shell相连一样,直接在本地进行操作。telnet客户进程同时与终端驱动,TCP/IP协议模块进行交互,负责信息的传输。telnet服务进程负责与伪终端驱动,TCP/IP进行数据交互但

2020-06-03 16:18:39 713

原创 计算机网络应用层--FTP文件传输和SMTP邮件传输

计算机网络应用层–FTP文件传输和SMTP邮件传输文件传输协议:FTP文件传输协议(File Transfer Protocol,FTP),主要用于将文件复制到使用TCP/IP协议的网络上的远程计算机系统中,或者从远程计算机系统中将文件复制出来。通过FTP可以传输任意类型、任意大小的文件,是常用的文件传输协议。在一个典型的FTP会话中,用户在本地主机前,向一台远程主机传输文件或接收来自远程主机的文件。通常为了使用户能访问其远程账户,需要提供一个用户标识和口令,提供了授权信息后才能从本地文件系统向远程主

2020-06-03 15:28:29 2415

原创 计算机网络应用层--cookie和web缓存

计算机网络应用层–cookie和web缓存cookie:用户与服务器的交互由于http服务器是无状态的,然而一个Web站点通常希望能够识别用户,可以用于将内容与用户身份联系起来,因为,HTTP使用了cookie,允许站点对用户进行跟踪。cookie的组件:在HTTP响应报文中的一个cookie首部行在HTTP请求报文中的一个cookie首部行在用户端系统中保留一个cookie文件,由用户浏览器管理在Web站的一个后端数据库,用于存储映射关系cookie的工作原理:(图片来源:(计算机

2020-06-03 10:35:28 396

原创 Linux内核学习---写时复制(COW)技术

Linux内核学习—写时复制(COW)技术写时复制技术(copy-on-write)传统的Unix系统以一种比较统一的方式对待所有的进程:子进程复制父进程所有的资源。这种方法有一些很明显弊端:将使用大量内存复制操作耗费大量时间通常情况下子进程不需要读或者写父进程拥有的所有资源,故该方法效率也是非常低的(复制的大量资源都没有使用)并且,如果应用程序在进程复制后使用exec立即加载新程序,这意味着之前的复制基本是完全多余的,因为进程地址空间需要重新初始化,之前复制的数据不再需要,这导致之前做的都

2020-06-02 11:20:25 1733 1

原创 Linux内核学习---操作系统基础概念

Linux内核学习—操作系统基础概念(本节记录一些操作系统的很基本的知识,比较琐碎,之后将详细对每一模块进行学习)内核内核是硬件和软件之间的一个中间层,主要作用是将应用程序的请求传给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。当操作系统启动时,内核被装入到RAM中,内核中包含的是系统运行所必不可缺的核心过程。资源管理程序内核的两个目标:(软硬件之间的媒介)与硬件交互,为包含在硬件平台上的所有低层可编程部件提供服务为运行在计算机系统上的应用程序提供执行环境内核分为微内核和宏内

2020-06-01 11:09:24 480 1

Git入门指南(Git新人入门必看)

一文搞定Git入门,带你玩转Git。本pdf是详细的Git入门介绍,可以迅速带领新人入门Git,走向协同与开源的code之路。

2020-09-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除