自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_22613757的博客

成长的路上不孤单!

原创 页高速缓存(page cache学习)

最近要接触相关领域,学习一下共勉!!本文档使用linux为linux-4.4.4版本 磁盘高速缓存:是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问不用再访问磁盘而能尽快得到满足。 一种对完整的数据页进行操作的磁盘高速缓存。 几乎所有的文件...

2018-11-29 14:44:29

阅读数 680

评论数 0

原创 N-ary Tree n叉树学习

N 叉树 定义 二叉树是一颗以根节点开始,每个节含有不超过2个子节点的树。N 叉树,即每个节点不超过N个子节点的树。 一颗三叉树: 前缀树,又称为字典树,就是一个常用的N叉树。 遍历 N-ary Tree Preorder Traversal: 给定一个 N 叉树,返回其节点值的前序遍历...

2018-11-19 23:37:53

阅读数 189

评论数 0

原创 C++中 queue 、 deque、priority_queue详解

最近看到一道题用到了队列,在这里就具体的分析一下C++中的这三种队列的区别 queue 用法: #include <iostream> #include <queue> using namespace std; int mai...

2018-11-15 02:07:47

阅读数 404

评论数 0

转载 Linux.ext4文件系统 .inode和extent

最近在看相关内容,不过总是不是很系统,今日看到此博客,感觉恍然大悟,作者写的非常棒:转载: https://blog.csdn.net/stringNewName/article/details/73740155 为表示对作者的尊敬,一字不动的敲击! 最近在看ext4系统的extent相关内容...

2018-11-08 00:13:24

阅读数 77

评论数 0

原创 Hua Wei er前奏曲之RAID概述

参考《大话存储终极版》 time: 2020.1.13 author: wfs1874 为了制造单盘容量更大的硬盘,为此RAID技术诞生! 磁盘冗余阵列 RAID 即 Redundant Array of Independent Disks 1. 引子 RAID一共有7种模式,从 RA...

2020-01-13 14:05:34

阅读数 17

评论数 0

原创 分布式存储系统概述【分布式存储 1】

1. 概念 分布式存储系统:大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务。 特点:可扩展, 低成本,高性能,易用 可扩展: 分布式存储系统扩展几百台甚至几千台的集群规模,而且随着集群规模的增长,性能程线性增长。 低成本:分布式存储系统的自动容错、自动负载均衡机制可使其...

2019-11-07 20:32:42

阅读数 45

评论数 0

原创 const指针&&指向const的指针

今天总结一下const的用法,重点关注const指针和指向const的指针。 const指针 const指针是指指针变量的值一经初始化,就不可以改变指向。 定义: type * const 指针名称; 声明指针const有三种方式,但含义不同; const int *pOne; //指向整形...

2019-09-01 14:50:10

阅读数 23

评论数 0

转载 内存寻址管理(分页,分段,逻辑地址,物理地址与地址转换方式)

最近看内存寻址部分的内容,这篇真的不错。 分享转载一下: https://www.cnblogs.com/felixfang/p/3420462.html 物理地址和逻辑地址 物理地址: 加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0 ...

2019-08-01 16:54:45

阅读数 74

评论数 0

转载 C语言指针转换为 intptr_t 类型

intptr_t类型 数据类型特别是int相关的类型在不同位数机器的平台下长度不同。C99标准并不规定具体数据类型的长度大小。 为了保证平台的通用性,程序中尽量不要使用long类型。可以使用固定大小的数据类型宏定义,这些宏定义需要引用stdint.h头文件。 /* There is some...

2019-07-22 10:51:34

阅读数 35

评论数 0

原创 《Linux 内核设计与实现》内存管理

内核的内存使用不像用户空间那样随意,内核的内存出现错误时只有靠自己来解决。 1. 内存的管理单元 内存最基本的管理单元是页,同时按照内存地址的大小,大致分为3个区。 1.1 页 页的大小与体系结构有关,在x86结构中一般是4KB或者8KB。 可以通过getconf命令来查看系统的page的大小: ...

2019-07-22 01:34:43

阅读数 92

评论数 0

原创 文件描述符、打开文件列表和inode的关系

inode对应一个磁盘文件,只有一个,文件file结构体是和 inode 为多对一的关系,因为一个file结构体表示上层open的文件。

2019-06-25 20:47:11

阅读数 144

评论数 0

原创 【剑指offer】数据流中的中位数(C++大小堆)

题目描述: 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。 ...

2019-06-22 16:40:47

阅读数 76

评论数 0

转载 【Linux RCU机制详解】(2)

之前的一篇文章https://blog.csdn.net/qq_22613757/article/details/91041518 之后对RCU机制还是略有生疏。 RCU(Read-Copy Update)是数据同步的一种方式,在当前的linux内核中发挥着重要的作用。 RCU主要针对的数据对...

2019-06-17 22:12:29

阅读数 37

评论数 0

原创 【剑指offer】二维数组中查找

题目描述 给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。 思路: 暴力 时间复杂度 O(mn) 利用二维数组由上到下,由左到右递增的规律,那么选取左下角或者右上角的元素a[ i ] [ j ] 与 target进行比较,当t...

2019-06-14 20:32:47

阅读数 19

评论数 0

原创 【剑指 offer】 51. 数组中重复的数字

题目: 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。 请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,10,2,5,3},那么对对应的重复数字是 2 或 3. 解题 方法: ...

2019-06-14 20:09:37

阅读数 26

评论数 0

原创 【操作系统 (一)】虚拟内存

本文内容总结于《操作系统概念》 Peter Baer Galvin . Greg Gagne 著, 郑扣根 译 这本书讲的很详细,翻译的也很好,非常的全面,拿来用来学习操作系统足矣。 在未来的 2-3 月内,我将以此书为向导,以内核源码为依托,对操作系统刨根问底。 本系列文章与我的内核源...

2019-06-10 21:09:12

阅读数 19

评论数 0

原创 【页高速缓存】address_space 操作函数分析

在 radix Tree 源码分析这篇文档中对radix tree 进行了基础性的分析。 那么基于radix tree 的内核中的页高速缓存会有什么样的操作函数呢? 页高速缓存的处理函数 对页高速缓存操作的基本高级函数有查找,增加,和删除页。在以上函数的基础上还有另一个函数确保高...

2019-06-10 10:56:32

阅读数 28

评论数 0

原创 【页高速缓存】radix tree 源码解析

项目要在内核做和页高速缓存相类似缓存机制,在写内核代码之前必须先搞清楚页高速缓存源码是什么情况。 之前有一篇博客分析过了页高速缓存的基础,但是远远没有达到动手写代码的基础。这几天端午节假期集中精力,搞懂整个框架 与 在内核中的应用。 其他类别的博客也不会停止更新。 谨以此祭奠逝去的时间...

2019-06-06 20:25:19

阅读数 67

评论数 2

转载 深入理解Linux内核 RCU 机制

内核源码中有很多rcu的标志,到底什么是RCU,一直都不清楚。 RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制。顾名思义就是 “读 , 拷贝更新”,再直白点是“随意读,但更新数据的时候,需要先复制一份副本,在副本上完成修改,再一次性地替换旧数据”。这是l...

2019-06-06 11:35:59

阅读数 98

评论数 1

翻译 【1】select、poll、epoll对比分析

本系列文章都来自于:http://gityuan.com/2015/12/06/linux_epoll/ select、poll、epoll、都是IO多路复用机制,可以同时监控多个描述符,当某个描述符就绪(读或写就绪),则立即通知相应程序进行读或写操作。本质上select、poll、epol...

2019-06-02 23:43:15

阅读数 26

评论数 0

原创 【操作系统:简要】总结

最近看到操作系统,这篇文章大致的总结一下操作系统的轮廓。同时也使自己更加清晰一点,之后可能会一步一步的往下面挖。 参考:https://www.yiibai.com/os/os-deadlock-detection-and-recovery.html 文章目录1. 定义 && 功...

2019-05-29 22:53:00

阅读数 35

评论数 0

原创 【设计模式】高性能IO----Reactor模式

最近看到muduo网络库相关书籍,看到了Reactor模式,想了解一下Reactor模式,参考了很多网上大神的资料。这里算是Mark吧。 1. 为什么使用Reactor模式 讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty,Redis在使用的IO模式。它是如何来解决高...

2019-05-16 15:33:07

阅读数 84

评论数 0

原创 【设计模式】观察者模式(发布/订阅模式)

模式定义 观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。观察者模式又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/L...

2019-05-15 22:45:29

阅读数 29

评论数 0

转载 fork()、vfork()、clone()区别详解

转载:https://blog.csdn.net/gogokongyin/article/details/51178257 不是为了学习而学习,学习的目的是为了满足对世界的好奇心,如果我怀着这样一颗好奇心,或许世界会因我而不同。 fork, vfork, clone都是linux的系统调用,这三个...

2019-05-13 23:30:56

阅读数 15

评论数 0

原创 【C++】仅用递归函数和栈操作逆序一个栈

author : wfs from : 《程序员代码面试指南IT名企算法与数据结构题目最优解》 题目: 一个栈依次压入1,2,3,4,5、那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5. 也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其...

2019-05-13 21:04:40

阅读数 99

评论数 0

原创 Android外部存储详要

参考: http://www.cnblogs.com/wetest/p/8536868.html Android存储系统架构篇: http://gityuan.com/2016/07/23/android-io-arch/ 引子: 通过打印Android文件在内核ext4层和上层的...

2019-05-10 15:06:48

阅读数 48

评论数 0

转载 【进程ID】Linux内核进程管理深入分析之进程ID

参考: https://www.cnblogs.com/hazir/p/linux_kernel_pid.html time : 2019.5.7 Linux 内核使用task_struct数据结构来关联所有与进程相关的数据和结构,Linux内核所有涉及到进程和程序的所有算法都是围绕该数据...

2019-05-08 19:52:50

阅读数 168

评论数 4

原创 git学习笔记【廖雪峰教程有感】

最近学习廖雪峰老师的git教程。老师讲的非常好。 廖雪峰Git教程 文章目录Git 简介Git安装 && 创建版本库(Linux为例)时光穿梭机远程仓库分支管理标签管理自定义Git总结 Git 简介 Git 是世界上最先进的分布式版本控制系统 Linus花了两周时间自己用C写了一...

2019-05-06 09:52:41

阅读数 47

评论数 0

转载 Android bionic libc添加内核系统调用

转载:https://blog.csdn.net/m0_37340681/article/details/89704825 内核 3.10.40 Android版本: Android 6.0.1_r1 手机 Nexus 6 参考资料: http://android.blogs.rice.edu/2...

2019-05-05 18:31:42

阅读数 160

评论数 0

转载 Nginx是什么?相关介绍

最近在搭建博客,用到了Nginx,以前也听说过Nginx,但是对这个Ngnix比较陌生,今天入一下门。 Nginx的产生 Ngnix的同行Apache,我们都比较熟悉。Ngnix同Apache一样都是一种WEB服务器。基于REST架构风格,以统一资源描述符(Uniform Resource Ide...

2019-04-30 11:28:29

阅读数 28

评论数 0

原创 利用Github快速搭建个人博客总结(亲测)

近一年多时间一直都在用CSDN,讲真这个CSDN有时候资料很多,我也很自豪加入这个大家庭,不过身边有两个同学:一个在github托管了属于自己的博客,另一个在云上面编写了属于自己的博客.后者的理由是,CSDN太low,上面很多都是转发的文章,他已经讲所有CSDN网站全部屏蔽了? WTF … 有...

2019-04-29 20:36:27

阅读数 1524

评论数 0

原创 Markdown pad 2 语法学习

一、标题 这是一级标题 这是二级标题 这是三级标题 这是四级标题 这是五级标题 这是六级标题 二、字体 加粗 用两个*号抱起来 例如 **加粗** 斜体 要倾斜的文字左右分别用一个*号包起来 例如 *倾斜* 删除线 要加删除线的文字分别用两个~~号包起来...

2019-04-20 17:30:42

阅读数 35

评论数 0

转载 mmap()函数参数详解

author : wfs time : 2019.4.17 功能描述 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。 munmap执行相反的操作,删除特定地址区域的对象映射。 基于文件的映射,在m...

2019-04-17 15:20:41

阅读数 384

评论数 0

原创 linux libc--stat函数详解

stat函数 头文件: #include <sys/stat.h> 定义函数: int stat(const char *file_name, struct stat *buf); 函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中 可以获取文件...

2019-04-11 20:58:41

阅读数 48

评论数 0

原创 Libc层打印log的陷阱

前面已经讲过了如何在Libc层打印log信息:: 在Libc库打印log信息 最近在Android libc 库中添加代码,同时打印log遇到了很大的坑: 1. 问题描述: 在Libc库中的write, close函数中,添加代码调用函数时,在函数中使用了打印了log信息,使真个APP崩溃。 ...

2019-04-11 20:21:42

阅读数 98

评论数 0

转载 Linux下特殊文件---/dev/null && /dev/zero详解

1.概论(维基百科解释) /dev/null : 在类Unix系统中,/dev/null,或称空设备,是一个特殊的设备文件,它丢弃一切写入其中的数据(但报告写入操作成功),读取它会立即得到一个EOF。 /dev/null 被称为位桶(bit bucket)或者黑洞(black hole)。空设备...

2019-04-08 22:39:39

阅读数 560

评论数 0

原创 数据大小端64位字节相互转换

在linux内核中有htonll()这个函数来进行网络大小端字节转换的功能,但是在Libc中没提供此函数,所以必须自己利用已用的函数进行封装。 大小端与数据存放顺序 C语言中,大于一个字节的数据类型在内存中表示时,不同CPU有不同的存放顺序,分为大端序和小端序。大端序即高字节存放在低地址,小端序相...

2019-04-08 10:04:52

阅读数 620

评论数 0

原创 C语言lseek()函数和 fseek()函数 rewind函数

lseek():移动文件读写位置 头文件: #include <sys/types.h> #include <unistd.h> 定义函数: off_t lseek(int fildes, off_t offset, int whence); 函数说明: 每一个已打...

2019-04-07 09:52:18

阅读数 147

评论数 0

转载 了解常见的开源协议(BSD, GPL , LGPL, MIT)

一直对各种开源协议比较模糊,搜索一些资料。 这个图很简单明了: 基本概念了解 1. contributors 和 Recipients Contributors 指的是对某个开源软件或项目提供了代码(包括最初的或者修改过的)发布的人或者实体(团队、公司、组织等),Contributors ...

2019-04-06 22:54:22

阅读数 57

评论数 0

转载 c++头文件加.h不加.h & 命名空间

自己经常问自己很多看似低级问题,但是无法给出答案,之前没注意到或者没有深入探索。 关于命名空间 问题:学习过C,然后再学c++的人可能会这么问,我#include之后,不就是把头文件拉进来了吗,而cin cout等函数不就是iostream.h里面的函数吗,我使用cin cout时,编译器为什么会...

2019-03-29 11:22:16

阅读数 126

评论数 0

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