自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (1)
  • 收藏
  • 关注

原创 存储笔记--块设备驱动的操作

1。块设备的openstatic int sbull_open(struct inode *inode, struct file *filp) { struct sbull_dev *dev = inode->i_bdev->bd_disk->private_data; del_timer_sync(&dev->timer)...

2018-03-27 10:36:02 465 1

原创 存储笔记--块设备驱动的注册

块设备的注册1。块设备模型示意图一个块是一个固定大小的数据块, 大小由内核决定. 块常常是 4096 字节, 但是这个值可依赖体系和使用的文件系统而变化. 一个扇区, 相反, 是一个小块, 它的大小常常由底层的硬件决定. 内核期望处理实现 512-字节扇区的设备。2。注册2.1 块驱动的注册 int register_blkdev(unsigned int major,...

2018-03-27 09:58:06 686

原创 存储笔记--NVMe原理篇之数据传输

接上文继续 http://blog.csdn.net/u010709783/article/details/791107531。read–write 命令基本流程Host在与SSD的数据传输过程中,Host是被动的一方,SSD是主动的一方。你Host需要数据,是我SSD主动把数据写入到你的内存中;你Host写数据,同样是我SSD主动去你Host的内存中取数据,然后写入到闪存。Writ

2018-01-29 20:29:14 10637 1

原创 存储笔记--NVMe原理篇

参考:http://home.eeworld.com.cn/home.php?mod=space&uid=346593&do=blog&id=272657目录目录NVMe 是什么nvme 处于什么位置为什么需要nvme命令如何执行支持的admin command支持的io command下发命令流程流程步骤图详解总结NVM

2018-01-19 21:06:09 12571 5

原创 存储笔记--ssd基本原理篇

1.SSD介绍1.什么是ssd?固态硬盘(Solid State Drives),用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH芯片、DRAM芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。2.ssd分类固态硬盘(SSD)的存储介质分为两种,一种是采用闪存(FLASH芯片)作为存储介质,

2018-01-16 20:31:57 15408

原创 存储笔记--磁盘原理篇

1。磁盘体系结构2。磁盘组织结构图1。 在磁盘不工作的时候,磁头停靠在靠近主轴接触盘片的表面,即线速度最小的地方,这里是一个不存放任何数据的特殊区域,称为启停区或着陆区,启停区以外就是数据区。 2。 在磁盘的最外圈,离主轴最远的磁道称为“0”磁道,磁盘数据的存放就是从最外圈“0”磁道开始的。既然磁盘数据从最外圈开始,而停止时磁头又是在最内圈启停区,那么磁头是如何找到“0”

2018-01-16 19:42:33 467

原创 存储笔记--导论篇2

计算机内部通信将通信的所有节点连接起来,然后找到目标,找到后就发送数据。即“连找发”网络三元素模型。连:就是保证每个网络点到其它网络点总有通路,总是可达的。找:就是提供区分机制,区分体现在主机总线中就是设备地址映射。每个IO设备在启动时都要向内存中映射一个或者多个地址,这个地址有8位长,又被称为IO端口。针对这个地址的数据,统统被北桥芯片重定向到总线上实际的设备上。假如,IDE磁盘控制

2018-01-15 20:41:08 284

原创 存储笔记--导论篇

1.计算机器总线示意图计算机总线工作模式:    半双工总线或设备的位宽:     按照数据总线的条数CPU位数:         内部寄存器到计算单元之前的总线条数PCI总线:         目前台式机与服务器所普遍使用的一种南桥与外设连接的总线技术。PCI地址总线、数据总线分时复用。系统总线(前端总线):   CPU与北桥连接的总线内存总线:         内存

2018-01-15 20:10:48 300

转载 Linux 学习--GNU nano编辑器的使用

转载:http://blog.csdn.net/doupeihua/article/details/22041555Linux GNU nano编辑器的使用 被nano编辑器折腾了半天,收藏一下吧。省得以后到处找我们以后基本都需要编辑文件来实现不同的设置,那么我们用什么来设置配置文件呢,用编辑器,就好比windows下的记事本和写字板,我们今天就来讲一下debian的默认编辑器—-nano首先我们

2017-12-15 10:06:52 1508

原创 linux私房菜 之centos 的安装

安装须知 1。linux 的角色定位 2。选择的版本 3。计算机硬件配比 4。磁盘分区的配置

2017-12-14 17:48:30 162

原创 C语言面向对象编程之封装与继承

c语言的封装封装在 C++ 语言中有 protected 、 private 关键字在语言层面上支持,而 C 语言中没有这些。 C 有结构( struct ),其实可以实现封装和隐藏。c++的实现QObject{ public: xxx xxx private: QObjectPrivate * priv; }; c的实现 struct st_a

2017-11-13 19:18:24 377

原创 linux 学习之tmux 分屏

使用tmux分屏(既可以左右分屏,也可以上下分屏)、(1)安装工具在ubuntu系统中使用sudo apt-get install tmux安装tmux工具(2)使用工具1,输入命令tmux使用工具2,上下分屏:ctrl + b 再按 “3,左右分屏:ctrl + b 再按 %4,切换屏幕:ctrl + b 再按o5,关闭一个终端:ctrl + b 再按x6,上下分屏与左右分屏切换: ctr

2017-11-08 14:40:47 532

转载 linux 驱动学习之ioctl 命令_IOC _ 相关宏

转载 :http://blog.csdn.net/u010245383/article/details/29391805简介在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值。cmd除了可区别数字外,还包含有助于处理的几种相应信息。 cmd的大小为 32位,共分 4 个域:bit31~bit30 2位为 “区别读写” 区,作用是区分是读取命令还是

2017-11-01 14:41:03 1598

转载 linux驱动学习之模块访问权限的控制

简述:在驱动模块,可以对没有权限的进程和应用程序拒绝访问,有权限的才允许访问。权限控制接口:bool capable(int cap); 定义头文件: include “linux/capability.h”用法例子:if (! capable (CAP_SYS_ADMIN)) return -EPERM;capable()没有权限时返回0,有权限时返回1。 在file_operti

2017-11-01 14:12:32 1117

转载 linux驱动学习之kthread_work和kthread_worker机制

转载 :http://blog.csdn.net/cq062364/article/details/39647907kthread_work和kthread_worker机制Kernel中提供的kthread_work和kthread_worker机制和经典的work_struct和workqueue_struct的关系有点类似.通过一个kthread_worker可以处理多个kthread_wor

2017-10-30 17:47:04 4205

转载 Linux——信号掩码(signal mask)

转载 :http://blog.csdn.net/budory/article/details/46803863在POSIX下,每个进程有一个信号掩码(signal mask)。简单地说,信号掩码是一个“位图”,其中每一位都对应着一种信号。如果位图中的某一位为1,就表示在执行当前信号的处理程序期间相应的信号暂时被“屏蔽”,使得在执行的过程中不会嵌套地响应那种信号。为什么对某一信号进行屏蔽呢?我们来看

2017-10-30 09:47:21 2768

转载 linux 驱动学习之kmalloc 内存分配

kmalloc 函数void *kmalloc(size_t size, int flags); 第一个参数是要分配的块的大小. 第 2 个参数, 分配标志, GFP_ATOMIC用来从中断处理和进程上下文之外的其他代码中分配内存. 从不睡眠.GFP_KERNEL内核内存的正常分配. 可能睡眠.GFP_USER用来为用户空间页来分配内存; 它可能睡眠.GFP_HIGHUSER如同 GFP_

2017-10-27 17:59:07 1113

转载 linux 驱动学习之list链表机制

转载:http://blog.chinaunix.net/uid-27122224-id-3277511.html双向链表struct list_head{ struct list_head *next, *prev;};struct dlist{ int no; void* data; struct dlist *prev, *next; };

2017-10-27 17:24:49 445

转载 linux驱动学习之工作队列机制

转载:http://www.cnblogs.com/wwang/archive/2010/10/27/1862202.html什么是工作队列?工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列相关数据结构struct w

2017-10-26 19:25:37 220

转载 c++ 之static_cast、dynamic_cast、const_cast和reinterpret_cast总结

转载: http://www.jellythink.com/archives/205C++中的类型转换分为两种: 隐式类型转换; 显式类型转换。 在标准C++中有四个类型转换符:static_cast、dynamic_cast、const_cast和reinterpret_cast。static_caststatic_cast的转换格式:static_cast (expression)

2017-10-26 18:13:37 192

转载 算法系列--荷兰国旗问题

转载 :https://yq.aliyun.com/articles/3604【问题】现有红白蓝三个不同颜色的小球,乱序排列在一起,请重新排列这些小球,使得红白蓝三色的同颜色的球在一起。这个问题之所以叫荷兰国旗问题,是因为我们可以将红白蓝三色小球想象成条状物,有序排列后正好组成荷兰国旗。【分析】这个问题我们可以将这个问题视为一个数组排序问题。红白蓝分别对应数字0、1、2。红、白、蓝三色小球数量并不一

2017-10-16 16:45:59 752

转载 代码阅读方法

转载: http://blog.csdn.net/ilyfeng1314/article/details/7452326 网上搜到的一篇介绍阅读别人源代码的方法,放在这里,有空可以查看。 阅读别人的代码作为开发人员是一件经常要做的事情。一个是学习新的编程语言的时候通过阅读别人的代码是一个最好的学习方法,另外是积累编程经验。如果你有机会阅读一些操作系统的代码会帮助你理解一些基本的原理。还有就是

2017-10-16 15:21:52 432 1

转载 C++之构造函数后面:冒号的作用

转载: http://blog.csdn.net/kaixinbingju/article/details/9094289其实冒号后的内容是初始化成员列表,一般有三种情况: 1、对含有对象成员的对象进行初始化,例如, 类line有两个私有对象成员startpoint、endpoint,line的构造函数写成: line(int sx,int sy,int ex,int ey):startpoi

2017-10-16 10:42:43 4018

转载 linux c 语言之--fseek(),fseeko(),fseeko64(),ftell(),ftello()讲解

转载:http://blog.csdn.net/lemoncyb/article/details/16841317fseek() 函数讲解:函数定义:int fseek(FILE *stream, long offset, int fromwhere);int fseeko(FILE *stream, off_t offset, int fromwhere);int fseeko64(FILE *s

2017-10-10 14:29:41 7201

原创 linux c语言之文件操作相关函数--fopen(),fopen_s(),fread(),fwrite(),fclose(),

fopen: 原型: FILE * fopen(const char * path,const char * mode);接收两个实参 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中fopen_s: 原型: errno_t fopen_s( FILE** pFile, const char *filename, cons

2017-09-30 18:19:20 7028

翻译 Rocksdb数据库---levle compaction

rocksdb levled compactionStructure of the filesrocksdb 把磁盘上的文件组织为多层,我们称之为level1,levle2,或者L1,L2… 比较特殊的levle0层包含的文件是从memtable 中flushed过来 的,每个层的数据按照以下的方式组织排序 非0 level上的数据,被分片保存在大量不同 的sstable 文件中。 每

2017-09-28 10:52:50 2055

翻译 Rocksdb 数据库--MANIFEST文件

官方文档—https://github.com/facebook/rocksdb/wiki/MANIFEST 如有错误或翻译不当,请指正。其他rocksdb 文档请关注后续文章。MANIFESTrocksdb 是一个与存储介质无关的文件系统,文件系统的操作不是原子操作,所以在系统失败后,很容易导致文件的不一致,尽管后来随着日志记录的出现,但是也没有办法保证长期运行期间文件数据的一致性,POSIX

2017-09-27 11:15:17 2365

原创 leveldb 源码分析---接口详解之include文件

leveldb头文件结构include└── leveldb ├── c.h => c binding ├── cache.h => cache接口 ├── comparator.h => 比较器接口 ├── db.h => DB接口 ├── env.h =>

2017-09-26 19:26:34 566

转载 linux c语言之pipe()函数

函数简介函数原型 int pipe(int fd[2]) 函数传入值 fd[2]:管道的两个文件描述符,之后就是可以直接操作者两个文件描述符 返回值 成功 0 失败 -1 管道简介管道是Linux 支持的最初Unix IPC形式之一,具有以下特点: 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道; 只能用于父子进程或者兄弟进程之间(具有亲缘关系的进程); 单独构成一

2017-09-22 16:53:39 13274 1

原创 c/c++ 之指针的指针总结

1.指向整形数的指针指针变量p的值是001BFD18,而*号的作用是取值,*p即取地址001BFD18中存放的值2.指向字符型指针其实p中存放的是地址,只是当cout时,如果指针是字符型指针,那么会输出p中地址指向的内存中的内容(这里是h)直到遇到’\0’才结束。所以直接输出p时会输出hello,而将p强制转换为void *时输出的是地址。3.指向整形指针的指针(指针的指针指向整形数)从上图可以看出

2017-09-20 17:39:39 288

原创 算法处理之Bloom Filter介绍

参考: http://blog.csdn.net/jiaomeng/article/details/1495500 http://blog.csdn.net/hguisu/article/details/7866173简介Bloom Filter是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。Bloom Filter的这种高效是有一定代价的:

2017-09-20 16:58:05 218

原创 c 语言之fork() 函数用法

fork调用的一个奇妙之处就是它仅仅被调用一次,却能够返回两次,它可能有三种不同的返回值:1)在父进程中,fork返回新创建子进程的进程ID;2)在子进程中,fork返回0;3)如果出现错误,fork返回一个负值;原理:  Linux下一个进程在内存里有三部分的数据,就是”代码段”、”堆栈段”和”数据段”。接触过汇编语言的人了解,一般的CPU都有上述三种段寄存器,以方便操作系统的运行。这三个部

2017-09-19 09:52:06 1441

转载 C++ 之const_cast常见用法

C++提供了四个转换运算符: 1. const_cast (expression) 2. static_cast (expression) 3. reinterpret_cast (expression) 4. dynamic_cast (expression)const_cast (expression)用const_cast来去除const限定const int co

2017-09-18 19:11:09 4927

转载 c++ 之 reinterpret_cast <new_type> (expression) 常见用法

参考:http://blog.csdn.net/u013763860/article/details/40857881reinterpret_cast (expression)reinterpret_cast是强制类型转换符!他是用来处理无关类型转换的,通常为操作数的位模式提供较低层次的重新解释!但是他仅仅是重新解释了给出的对象的比特模型,并没有进行二进制的转换! 他是用在任意的指针之间的转换,

2017-09-18 19:02:20 762

转载 C语言之 snprintf()函数 用法

参考: http://blog.csdn.net/u013763860/article/details/40857881函数原型:int snprintf(char* dest_str,size_t size,const char* format,…);函数功能:先将可变参数 “…” 按照format的格式格式化为字符串,然后再将其拷贝至dest_str中。所需头文件:#include< stdi

2017-09-18 18:50:08 750

转载 C++ 之namespace常见用法

参考: http://www.cnblogs.com/ChYQ/p/6263932.html http://blog.csdn.net/softmanfly/article/details/44828651 namespace通常用来给类或者函数做个区间定义,以使编译器能准确定位到适合的类或者函数最佳实践:头文件中不应该包含using声明,因为这样就会导致包含了该头文件的其他文件被迫使用了某个

2017-09-18 18:46:21 684

转载 varint---数值压缩存储

1.varint 介绍Varint 是一种紧凑的表示数字的方法。它用一个或多个字节来表示一个数字,值越小的数字使用越少的字节数。这能减少用来表示数字的字节数。比如对于 int32 类型的数字,一般需要 4 个 byte 来表示。但是采用 Varint,对于很小的 int32 类型的数字,则可以用 1 个 byte 来表示2.详解2.1 最高位:Varint 中的每个 byte 的最高位 bit 有特

2017-09-18 09:29:10 1377

转载 SkipList跳跃表

转载 :http://blog.csdn.net/duan19920101/article/details/51579136 在学习rocksdb 时,组件memtable 存储数据的主要数据结构是skiplist,不是太了解,学习后感觉设计很精巧。1.什么是SkipList跳跃表跳表是平衡树的一种替代的数据结构,但是和红黑树不相同的是,跳表对于树的平衡的实现是基于一种随机化的算法的,这样也就是说

2017-09-15 19:31:38 499

转载 shell 脚本入门--sed命令匹配

转载: http://man.linuxde.net/sed简介sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件

2017-09-08 18:34:48 10280

转载 shell 脚本入门-- if条件判断总结

装载: http://www.jb51.net/article/56553.htm#!/bin/shSYSTEM=`uname -s` #获取操作系统类型,我本地是linuxif [ $SYSTEM = "Linux" ] ; then #如果是linux的话打印linux字符串echo "Linux"elif [ $SYSTEM = "FreeBSD" ] ; then

2017-09-08 16:37:53 206

数据结构课件

数据结构c+什么是数据结构 抽象数据类型及面向对象概念 数据结构的抽象层次 用C++描述面向对象程序 算法定义 模板 性能分析与度量+,

2013-05-15

空空如也

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

TA关注的人

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