自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(180)
  • 资源 (9)
  • 收藏
  • 关注

原创 Ext2文件系统的目录原理及文件管理分析

**在Linux文件系统中一切皆文件,同样目录也是文件的一种类型。**熟悉Linux服务器的同学经常会看到如下内容,这个是某个目录的列表内容。每一行的前面形如drwxr-xr-x的内容为文件的属性,而第一个字符d则表示这个文件是一个特殊的文件,也就是目录(directory)。第一个字符是用于标示文件类型的,对于块设备则是b,字符设备是c等等,每种特殊的文件这个字符都是不同的。对于有图像界面(...

2020-01-11 19:52:03 278

原创 互联网大厂offer收割之二叉树的基本概念及常见面试题汇总

更多面试题请关注头条号、微信号: itworld123任何程序是由算法和数据结构两部分组成的。其中数据结构是用来存储数据的,在程序逻辑上涉及数据的存储和检索两方面。其中线性数据结构是常用的数据结构,比如我们存储一个班级中学生信息或者成绩列表等等,通常使用的是线性数据结构。这种线性数据结构包括数组和链表等。我们知道数组是一个连续的地址空间,链表是一个非连续的地址空间。两者的应用场景有着比较明...

2019-11-26 19:58:53 144

原创 互联网大厂offer收割之数组及相关面试题解决方法

title: 互联网大厂offer收割之数组及相关面试题解决方法date: 2019-09-24 09:31:15tags:数据结构数组更多面试题请关注头条号、微信号: itworld123数组是所有数据结构中最简单的数据结构了,很多复杂的数据结构依赖数组实现,比如哈希表等。数组是一个连续的内存空间,因此我们可以一次定位其中的元素,也就是其查找是O(1)时间复杂度。因...

2019-11-26 19:54:15 250

转载 DPDK 入门最佳指南

01 写在前面我的读者当中应该有一部分人是做 DPDK 相关的,我自己虽然现在已经不做 DPDK 了,但对这块仍然有兴趣,今天这篇文章就来总结下 DPDK 的技术栈。注意:这篇文章是小白文,不适合大神哦。文章从 DPDK 的产生背景,到核心技术,再到应用场景,都进行了阐述,有可能是你见过的讲得最全面的文章了,当然,讲得全面自然会少了深度,你如果不屑忽略就好了。02 高性能网络技术随...

2019-09-20 10:27:30 5433 4

原创 从原理到实现,RAID5原理详解及代码实现浅析

前文我们介绍了Linux下面的RAID技术基本原理,并通过RAID1介绍了其大致的实现流程。今天我们介绍一下RAID5,因为RAID5还是比较复杂的,因此觉得有必要介绍一下。RAID5的算法关于RAID5的算法,我们在网上看到最多的一张图恐怕就是下面这张图了。这张图基本上说明了RAID5的算法,但还不够。在这张图中讲清了RAID5的关键是有一个校验数据块,校验数据块按照规则分布在不同的磁盘...

2019-08-29 10:28:41 2783

转载 SVN常用命令

# checkout代码svn co svn://svnbucket.com/xxx/xxx复制代码# 更新代码svn up复制代码# 添加新文件到版本库svn add filename# 添加当前目录下所有php文件svn add *.php# 递归添加当前目录下的所有新文件svn add . --no-ignore --force复制代码# 提...

2019-08-20 11:12:09 63

原创 二叉树的基本概念及常见面试题汇总

任何程序是由算法和数据结构两部分组成的。其中数据结构是用来存储数据的,在程序逻辑上涉及数据的存储和检索两方面。其中线性数据结构是常用的数据结构,比如我们存储一个班级中学生信息或者成绩列表等等,通常使用的是线性数据结构。这种线性数据结构包括数组和链表等。我们知道数组是一个连续的地址空间,链表是一个非连续的地址空间。两者的应用场景有着比较明显的差别。数组非常适合使用在元素数量已知的场景,对于有序数...

2019-08-12 08:34:18 306

原创 这些底层技术才是一个优秀架构师必须掌握的

上层应用开发的多了之后,对底层技术的接触就越来越少了。以至于很多人有了“底层技术无用论”的观点。很多人认为学习框架多好啊,大家都在用,跳槽的时候也能用的上。学习那些底层技术干啥,平时都用不到。本号并不这么认为。我们先举一个活生生的例子,比如我们现在有个Web服务应用,崩溃重启后在绑定套接字的时候出现报错(socket_bind(): unable to bind address [98]: A...

2019-07-26 07:40:53 1573

转载 十则:程序员“笑话”据说只有真正的程序员才看得懂

一、程序员被提bug之后的反应1、绝对不可能;2、在我这是好的,不信你来看看;3、真是奇怪,刚刚还好好的;4、一定是数据问题;5、你清下缓存试试;6、重启下电脑试试;7、你装的什么版本的类库(jdk);8、这谁TM写的代码;9、尼玛怎么还在用某某安全浏览器;10、用户不会像你这么操作的。二:昨天,看到一段脑残到爆的Code,忍不住骂了句:靠,这特么是哪个...

2019-07-09 16:09:01 455

原创 Go语言开发必读书目,从菜鸟到大牛必备

Go语言是最近几年流行起来的语言,该语言有谷歌发明,并得到广泛的应用。Go语言最大的特点是并发支持度好,而且开发效率高。在C语言中需要几十行,上百行代码才能实现的功能,在Go语言中可能只需要几行代码就可以搞定。因此,目前很多人开始学习Go语言进行开发。Go语言的应用领域也很广,包括服务端的开发,Web开发和应用开发等等。下面本文推荐几本Go语言入门必读的图书。Go语言程序设计这本书是Go语言入...

2019-07-09 16:00:50 4187

转载 七岁小孩都能读懂的Kubernetes 插图指南

献给所有试图向孩子们解释软件工程的家长。很久很久以前,有一个叫 Phippy 的应用程序。她是一个简单的应用程序,由 PHP 编写且只有一个页面。她住在一个需要和其他可怕的应用程序分享环境的主机中,她不认识这些应用程序并且不愿意和他们来往。她希望她能拥有一个属于自己的环境:只有她自己和她可以称之为家的 Web 服务器。每个应用程序都有个运行所依赖的环境。对于 PHP 应用程...

2019-07-08 08:48:17 199

原创 NVMe的Linux内核驱动分析

关于本文的几点说明:1. 本文基于Linux 4.1.12 版本的内核进行介绍,其它版本的内核代码可能略有不同,但不影响理解。2. 在阅读本文之前,如果能够阅读一下本号之前关于块设备和SCSI的文章,对理解本文将很有帮助。3. 建议阅读本号之前的两篇文章(一篇文章讲清什么是NVMe和理解NVMe的内部实现原理,这一篇就够了)后阅读本文,这样理解的更透彻。前面两篇文章我们对NVM...

2019-07-08 08:46:48 1534

原创 磁盘的IO重排序与调度策略

本文期望通过一个故事让大家了解磁盘驱动如何对IO进行重排序和调度。万芝堂是百年老字号了,主营中草药,并兼老中医出诊。虽然万芝堂有近百年的历史,但活动范围仅限北京城,即使在北京城也仅有2个分号。最近万芝堂换了新掌柜的。新掌柜新官上任三把火,不仅在北京增加了分号数量,在保定府也开了好几家分号。图1 总号与分号保定府本身也比较大,分号开了5家,具体的在各大街区基本都有,繁华街区开了3...

2019-07-08 08:45:16 219

原创 一篇文章讲清什么是NVMe

因为NVMe的出现,硬盘的性能得到了极大的提升。这个极大是多少呢?读带宽从500MB/s提高到了3200MB/s,写带宽从400MB/s提高到了1200MB/s左右。而读IOPS则达到了50万,甚至更高。也就是说,现在一块基于NVMe的SSD硬盘的性能比一个企业级磁盘阵列还要好。牛皮吹了这么多,那到底什么是NVMe呢?NVMe的全称是Non-Volatile Memory Express,如果...

2019-07-02 08:59:04 1382 2

原创 程序员必备高级技术之函数调用栈

大家都知道函数调用是通过栈来实现的,而且知道在栈中存放着该函数的局部变量。但是对于栈的实现细节可能不一定清楚。本文将介绍一下在Linux平台下函数栈是如何实现的。有些同学可能觉得没必要了解这么深入,其实非也。根据本号多年的经验,了解系统深层次的原理对分析疑难问题有很好的帮助。图0 函数栈就像熟悉抓包是解决网络通信问题的高级武器一样,熟悉函数调用栈则是分析程序内存问题的高级武器。本...

2019-07-02 08:55:21 258

原创 性能优化,我们应该知道的更多一点

当我们谈到性能优化,更多的同学可能想到的是系统层面的性能优化。比如在一个Web服务程序中,通过Redis或者其它缓存来提升网站访问的速度等。这一方面是编译器为我们做了很多优化工作,另外一方面是觉得系统层面的优化效果更明显,也更高大上。实际上,除了系统层面的性能优化外,在程序代码层面的性能优化效果也是非常好的。废话不多说,我们以事实说话。大家看一下下面两段程序,两段程序的作用完全相同,就是将一个二...

2019-07-01 10:22:01 1654

原创 深入理解NVMe协议的原理

前面我们介绍了一下NVMe的基本概念,让大家在直观上认识了一下什么是NVMe。今天我们将更加深入的介绍NVMe。故事要从卡利姆多和东部王国的贸易兴起说起。卡利姆多盛产粮食,而东部王国盛产丝绸和瓷器。在卡利姆多和东部王国之间有一条非常狭小的交易通道。虽然通道狭小,但两国之间贸易较少,因此基本上也是满足要求的。但突然有一天事态发生了变化。卡利姆多人发现东方王国的丝绸非常精美,而且他们现在粮食过剩...

2019-06-27 17:50:17 6748

原创 进一步理解Linux操作系统的块设备

在前文《理解Linux操作系统的块设备》中我们从比较高层面(Hight Level)介绍了块设备的原理和块设备的特性。但是关于Linux操作系统块设备的实现原理可能还一知半解。本文将进一步深入的分析Linux的块设备,期望能让大家更加深入的理解块设备的实现细节。其实在Linux操作系统中可以非常方便的实现一个块设备,或者说是块设备驱动。在Linux中我们熟知的RAID、多路径和Ceph的RBD...

2019-06-21 11:06:08 1274

原创 性能问题的银弹---缓存技术大观

仔细观察一下我们现有的系统,小到一颗CPU,大到一个在线交易系统。任何性能问题都可以通过一种方式有效的解决,这种方式就是缓存。不错,缓存几乎可以成为解决性能问题的银弹,百发百中。缓存的主要目的是降低数据访问延时,实现手段多种多样,下面对不同种类的缓存进行介绍。CPU的缓存能想到的最小粒度的缓存恐怕就是CPU的缓存了。CPU不但有缓存,而且将缓存分成了多种级别,如图1所示,分别是L1、L2和...

2019-06-19 20:02:06 291

原创 一篇文章理解Ext4文件系统的目录

使用过Linux的同学应该对Ext4文件系统都有了解。在Linux文件系统中一切皆文件,同样目录也是文件的一种类型。熟悉Linux服务器的同学经常会看到如下内容,这个是某个目录的列表内容。每一行的前面形如drwxr-xr-x的内容为文件的属性,而第一个字符d则表示这个文件是一个特殊的文件,也就是目录(directory)。第一个字符是用于标示文件类型的,对于块设备则是b,字符设备是c等等,每种特殊...

2019-06-14 10:25:13 5035 1

原创 由孙子兵法看程序员跳槽

下面一句话是《孙子兵法》中的原文,告诉我们在战争之前需要精确的思考,讨论,这样在后续的实战中才能有战胜的把握。在战争之前考虑的问题越多,胜算的把握也就越大,考虑的越少,胜算的把握也就是越少。夫未战而庙算胜者,得算多也,未战而庙算不胜者,得算少也。多算胜,少算不胜,而况于无算乎!那么,这个东东跟我们广大程序员跳槽有什么关系呢?相信很多同学听过“裸面”这个词吧,“裸面”的意思就是没有任何准...

2019-06-14 10:24:15 166

原创 一篇文章理解Linux操作系统中的块设备

块设备也就是存储以“块”为单位存储数据的设备,比较典型的如磁盘设备、光盘或者优盘。本文首先集中在磁盘设备的相关内容的分析,其他设备类型很类似,暂时不做介绍。在Windows操作系统下磁盘设备似乎是一个实实在在的设备,我们可以通过图形界面对磁盘设备进行管理。如图1是Windows下的磁盘管理界面,可以通过这个界面清晰的看到磁盘设备,并且可以对其进行格式化等操作。图1 Windows磁盘设...

2019-06-14 10:22:44 2623

原创 Ceph存储引擎BlueStore简析

前文我们创建了一个单节点的Ceph集群,并且创建了2个基于BlueStore的OSD。同时,为了便于学习,这两个OSD分别基于不同的布局,也就是一个OSD是基于3中不同的存储介质(这里是模拟的,并非真的不同介质),另外一个OSD所有内容放在一个裸设备上。什么是BlueStore在老版本的Ceph当中FileStore是默认的对象存储引擎,但FileStore最大的问题是写放大的问题。同时由于需...

2019-06-04 20:21:44 619

原创 终于知道百度为什么掉队了

今天百家号发了一篇文章,被拒绝了,还扣了10个信用分。小编甚是不解,认真翻看了整片文章,试图找到到底那块有涉嫌推广的嫌疑。找来找去只找到了这样一个连接。yum installhttps://download.ceph.com/rpm-luminous/el7/noarch/ceph-deploy-2.0.0-0.noarch.rpm相信懂技术的同学都知道是干啥的,这个只是在C...

2019-06-03 21:07:26 767

原创 单机版Ceph环境部署,Linux平台

Ceph已经如火如荼,很多公司都在使用Ceph作为自己的存储系统。日常学习不太可能安装一个Ceph集群,因此本文介绍如何部署一个单节点的Ceph系统。另外,本文安装的后端存储引擎是BlueStore,这个引擎是目前性能比较好,且成熟的引擎。环境说明单节点:可以是VMWare或者VirtualBox虚拟机 操作系统: CentOS 7.4 或者 Ubuntu 18.04 部署...

2019-06-03 08:54:57 2792

原创 目前最全的Redis知识点及面试题汇总

Redis(全称为REmote DIctionary Server)是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Map),...

2019-05-29 11:08:47 2927 1

原创 LevelDB深入浅出之整体架构

LevelDB是一个可持久化的KV数据库引擎,由Google传奇工程师Jeff Dean和Sanjay Ghemawat开发并开源。无论从设计还是代码上都可以用精致优雅来形容,非常值得细细品味。本文将从整体特性、架构和使用等几方面做一个解释,试图通过本文的介绍让大家对LevelDB有个整体的认识并能够使用。设计思路做存储的同学都很清楚,对于普通机械磁盘顺序写的性能要比随机写大很多。比如对于...

2019-05-28 09:02:32 293

原创 vim常用命令汇总,学会这些让你健步如飞

在Linux下行走的大侠估计没人不知道vim的,但很多人可能只是简单的用一下,或者是用的时候上网查一下。但认真思考一下,似乎很多命令不能马上知道如何使用。今天本号在这里给大家分门别类的总结了一下VIM的一些快捷键与技巧,希望对大家有所帮助。vim常用命令汇总,学会这些让你健步如飞编辑. 命令可以重复上次修改。在普通模式中的各种操作算一次修改(不包括光标移动及跳转),在编辑模式下的内...

2019-05-26 20:04:42 1150

原创 Ceph块存储客户端架构及流程简析

Ceph可以提供文件、块和对象三种类型的存储形式,但最为主要的存储形式就是块存储。Ceph块存储可以直接与云计算平台进行对接,比如OpenStack等。另外,Ceph提供了访问块存储的API和内核模块。内核模块解决了通过裸机访问Ceph块存储的问题。本文主要介绍一下用户态块存储客户端的架构和基本的读写流程,后续再详细介绍内核模块客户端的实现。图1 Ceph的块存储在介绍客户端实现之前我...

2019-05-25 10:35:42 1525

原创 Ceph的客户端接口及架构分析

Ceph的客户端通过一套名为librados的接口进行集群的访问,这里的访问包括对集群的整体访问和对象的访问两类接口。这套接口(API)包括C、C++和Python常见语言的实现,接口通过网络实现对Ceph集群的访问。在用户层面,可以在自己的程序中调用该接口,从而集成Ceph集群的存储功能,或者在监控程序中实现对Ceph集群状态的监控。上述接口与Ceph集群的关系如图1所示。图1 客户端与...

2019-05-25 10:34:44 1395

原创 操作系统没那么难,你也能从零开发一个五脏俱全的操作系统

说起操作系统,大家都觉得是一个庞大的工程,超级复杂,可望而不可即。现在我们有一个大胆的想法,一个人能不能从第一行代码码起,开发一个五脏俱全的操作系统呢?答案是肯定的,而且这个操作系统具体商用操作系统的所有主要功能(当然达不到商业操作系统的全部功能了)。我们知道商业操作系统或者开源的Linux操作系统多的千万行甚至亿行代码,规模之大,让人无法想象。微软Windows开发团队多达几千人,而Linu...

2019-05-25 10:33:31 387

转载 数据一致性与Paxos算法

1. CAP与数据一致性1-1. CAP概要分布式系统的假设是,工作在网络环境下的系统拥有多个节点,而这些节点本身会由于各种原因而变得不稳定。这其中就有一个非常重要的概念——CAP原理。这个原理指导着大多数分布式系统的设计过程,CAP原理大致是说分布式系统中一定存在三个特性:一致性(Consistency)、分区容忍性(Partition)和可用性(Availability),且这三个特性...

2019-05-24 08:21:17 941

转载 Ceph BlueStore Cache

Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-cache.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduction...

2019-05-23 10:59:19 888

转载 Ceph BlueStore BlueFS

Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-bluefs.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduction...

2019-05-23 10:57:37 1054

转载 Ceph BlueStore Allocator

Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-allocator.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduct...

2019-05-23 10:56:36 731

转载 Ceph BlueStore FreelistManager

Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore-freelistmanager.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Int...

2019-05-23 10:55:35 249

转载 Ceph BlueStore

Author:EricSource:http://blog.wjin.org/posts/ceph-bluestore.htmlDeclaration: this work is licensed under aCreative Commons Attribution-NonCommercial 4.0 International License.Introduction在介绍了B...

2019-05-23 10:53:59 671

转载 设置linux系统history相关变量,命令时间、保存history条数,多session共享history

一、设置历史记录的时间# vi /etc/profile //在文件末尾添加以下内容,然后保存退出重新登陆即可HISTTIMEFORMAT='%F %T ' //注意有个空格,为了显示时日期与命令之间有空格分割。HISTSIZE="3000" //默认保留1000条。export HISTTIMEFORMAT='%F %T '2015-07-27 10:...

2019-05-22 10:55:52 827

转载 rdb map出錯rbd sysfs write failed

創建了一個rbd鏡像1然後,在Ceph client端將該rbd鏡像映射為本地設備時出錯。$ rbd map docker_test --name client.adminrbd: sysfs write failedRBD image feature set mismatch. You can disable features unsupported by the kernel ...

2019-05-21 20:08:00 299

原创 Ceph对象存储RGW架构及安装实战

Ceph RGW架构简介我们知道Ceph可以提供块、文件和对象三种形态的存储。而RGW就是提供对象存储的网关,也即对象存储网关。所谓对象存储网关,也就是对象存储的入口,本质上是一个HTTP服务器,与Nginx和Apache无异。通过这个入口,用户可以通过HTTP协议,以RESTful的方式访问Ceph的对象存储。Ceph RGW的整体架构如图1所示,对象存储网关实际上是调用librados...

2019-05-21 15:52:04 1704

JCRAFT API介绍

关于jcraft的详细资料,非常值得学习,可与而不可求啊!!赶紧下载吗

2010-09-20

B+树数据结构详解

本文是对B+树数据结构和算法的详细介绍文档。文章详细,生动的描述了如何构建一个B+树。

2019-01-31

jscaps 非破解版 珍惜啊!

sftp的不错的库文件,值得学习 sftp的不错的库文件,值得学习

2010-09-04

编程卓越之道 卷二 不错的书籍

难得的编程图书,讲解编程底层问题,写的很专业,不过这个是英文版的。

2009-12-27

Go语言电子书合集

这里是Go语言的入门图书合集,具体包括《Go语言程序设计》、《Go语言圣经》、《Go语言标准库》和《Go语言并发编程》等近10本书经典图书。

2019-03-24

A Practical Guide to Linux® Commands, Editors, and Shell Programming

关于linux实践的英文原版书籍,非常适合初学者。讲的很细致。

2010-05-14

linux bash shell

linux控制台程序的使用,外国经典名著第三版。想学linux开发的朋友可以看看

2009-06-14

jscaps 破解版 珍惜啊!

sftp for java is very used java lib do you want get it? yes i want! sftp for java is very used java lib do you want get it? yes i want!

2010-09-04

PROTEUS仿真

proteus的仿真程序

2008-03-02

空空如也

空空如也

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

TA关注的人 TA的粉丝

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