本文主要分析内存以及I/O相关的系统调用和库函数的实现原理,根据原理给出在使用过程中需要注意的问题和优化的侧重点,本文涉及到的系统调用包括readahead,pread/pwrite,read/write,mmap,readv/writev,sendfile,fsync/fdatasync/msync,shmget,malloc。本文先简单介绍应用程序对内存的使用以及I/O系统对内存的使用的...
Linux 的虚拟内存管理有几个关键概念:每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址虚拟地址可通过每个进程上页表与物理地址进行映射,获得真正物理地址如果虚拟地址对应物理地址不在物理内存中,则产生缺页中断,真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。基于以上认识,这篇文章通过本人以前对虚拟内存管理的疑惑由浅...
前言一、红黑树定义和性质二、红黑树查找三、红黑树插入四、红黑树删除六、结语七、思考题和习题答案本文将通过图文的方式讲解红黑树的知识点,并且不会涉及到任何代码,相信我,在懂得红黑树实现原理前,看代码会一头雾水的,当原理懂了,代码也就按部就班写而已,没任何难度。阅读本文你需具备知识点:二叉查找树完美平衡二叉树事不宜迟,让我们进入正题吧。红黑树也是二叉查找树,我们知道,二叉查找树这一...
什么是 深度/广度 优先遍历?深度优先遍历简称·DFS(Depth First Search),广度优先遍历简称BFS(Breadth First Search),它们是遍历图当中所有顶点的两种方式。这两种遍历方式有什么不同呢?我们来举个栗子:我们来到一个游乐场,游乐场里有11个景点。我们从景点0开始,要玩遍游乐场的所有景点,可以有什么样的游玩次序呢?第一种是一头扎到底的玩法。我们选择一...
前言一、引入B树的原因二、B-树的性质三、B-树的结构四、B-树的查找六、B-树的中序遍历B树是为磁盘或其他直接存取的辅助设备而设计的一种多路平衡搜索树,许多数据库系统使用B树或B树的变种来存储信息。一、引入B树的原因前面我们介绍了高效的二叉搜索树AVL树、红黑树,为什么还要出现B树?当你使用AVL、红黑树时,一次只能获取一个键值的信息,鉴于计算机的局部性原理,B树可以至多存储M-1个键值的...
前言一、2-3 树定义二、2-3 树性质三、2-3树查找四、2-3树插入五、2-3树删除六、结语我们知道二叉搜索树 (BST) 和二叉平衡树 (AVL) ,二叉搜索树在最好的情况下搜索的时间复杂度为 O(logn) ,但如果插入节点时,插入元素序列本身就是有序的,那么BST树就退化成一个线性表了,搜索的时间复杂度为 O(n)。如果想要减少比较次数,就需要降低树的高度。在插入和删除节点时,要保证...
软件下载地址:Zookeeper :http://apache.fayea.com/zookeeper/Kafka :http://kafka.apache.org/downloads.html一、Zookeeper安装1、JDK安装① 、JAVA_HOME: C:\Program Files (x86)\Java\jre1.8.0_60(这个是默认安装路径,如果安装过程中更改了安...
前言一、什么是FTP协议?二、FTP有服务器和客户端,各自有什么作用?三、FTP的端口号是什么?四、FTP常用的状态码?五、HTTP和FTP的区别?一、什么是FTP协议?FTP(File Transfer Protocol,文件传输协议) 是 TCP/IP 协议组中的协议之一。FTP协议包括·两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP...
前言1.建立连接定时器(connection-establishment timer)2.重传定时器(retransmission timer)3.延迟应答定时器(delayed ACK timer)4.坚持定时器(persist timer)附:糊涂窗口综合症5.保活定时器(keepalive timer)6.FIN_WAIT_2定时器(FIN_WAIT_2 timer)7.TIME_WAIT定...
一 、什么是Vector?vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。vector的扩充机制:按照容器现在容量的一倍进行增长。vec...
算法面试题】交换排序问题2016年12月19日 17:32:25 _stark 阅读数:298更多所属专栏: 刷题版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/bit_clearoff/article/details/53744749面试题原数组pArr为[‘A’,’B’,’C’,’D’,’E’],现在给定新位置pPos[3,0,1,4...
命令代换在shell编程中,一共有两种命令代换方式:反引号和$()。shell先执行该命令,然后将输出结果立刻代换到当前命令行中。比如:我们用反引号替换date命令,$()代换pwd:当然,``和$()仅仅是命令代换,相当于多产生了一个别名,而并没有将原先命令替换。既然是两种命令代换,那么是否有什么区别或适用场景吗?在多层次的符合代换命令中,反引号需要添加"\"转义,而$()则不需要,...
MySQL 数据库的使用是非常的广泛,稳定性和安全性也非常好,经历了无数大小公司的验证。仅能够安装使用是远远不够的,MySQL 在使用中需要进行不断的调整参数或优化设置,才能够发挥 MySQL 的最大作用。MySQL 的优化可以从个方面来做:1、缓存。缓存是解决这类问题的一把手。它既可以加快整个系统(并非数据库系统,使用缓存的时候并没有去访问数据库)的访问速度,也可以减少数据库负载的压力。而缓存...
topK问题是一个经典的海量数据处理问题,比如热搜上每天都会更新出排行前10的热门搜索信息,再或者通过大数据找出陕西省人最爱吃的水果等,都可以使用topK问题来解决,其核心思想就是最小堆的引入。topK问题分析在海量数据中找出出现频率最高的前k个数,或者从海量数据中找出最大的前k个数,这类问题通常被称为top K问题。下面我们通过一个简单的示例来说明:假如面试官给你100W个数据,请找出其中...
前言23种设计模式
前言Nginx是一款由俄罗斯程序员Igor Sysoev所开发的轻量级WEB服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。相较于Apache、lighttpd具有占用内存少、稳定性高等优势,依靠其强大的并发能力、丰富的模板库以及友好灵活的配置而闻名。Nginx的Master-Worker模式以我的阿里云ECS(lnmp环境)为例,启动nginx服务后,会在80端口启动s...
# 用户访问网站流程框架第一步:客户端用户从浏览器输入www.baidu.com网站网址后回车,系统会查询本地hosts文件及DNS缓存信息,查找是否存在网址对应的IP解析记录。如果有就直接获取到IP地址,然后访问网站,一般第一次请求时,DNS缓存是没有解析记录的;第二步:如果客户端没有DNS缓存或hosts没有对应www.baidu.com网站网址的域名解析记录,那么,系统会把浏览器的解析...
所谓资源管理就是,一旦用了它,将来必须还给操作系统.如果不这样,糟糕的事情就会发生,C++程序中最常使用的资源就是动态分配内存,但内存只是你必须管理的众多资源之一. 其他常见的资源还包括文件描述器,互斥锁,图形界面中的字型和笔刷,数据库连接,以及网络sockets。不论是哪一种资源,重要的是,当你不再使用它你就要将它返回给系统.条款13:以对象管理资源举个例子一个大型的项目里面的代码都是成...
条款6:若不想使用编辑器自动生成的函数,那就应该明确拒绝我们也知道类这个东西就是为了解决实际生活当中的实际问题的,当然我们有时候在生活中不希望有哪些事情发生,在类中就会有不希望那些函数被使用,对吧. 举个例子,给论文加一个类,或者事情营销方案,各国机密的类你觉得应不应该提供拷贝构造这种类呢?有些东西世界上只能存在一份. 还有我们以前学习的智能指针当中的一个Scoped_ptr,它为了防...
互联网架构演进之路单体架构->垂直架构->SOA架构->微服务架构1,比如最开始创业公司要一个APP原型,即满足一个业务需求,所有功能放一起,就是单体架构2,随着公司壮大,业务逐渐壮大,慢慢把功能就分开了,形成模块开发,比如MVC架构,也就是垂直架构3,模块化也就意味着耦合度高,所以出现面向服务架构,就是将中心模块即共有抽取出来,也就是面向服务架构4,服务越来越多,也...