自定义博客皮肤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的博客

成长的路上不孤单!

  • 博客(182)
  • 资源 (21)
  • 收藏
  • 关注

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

在 radix Tree 源码分析这篇文档中对radix tree 进行了基础性的分析。那么基于radix tree 的内核中的页高速缓存会有什么样的操作函数呢?页高速缓存的处理函数对页高速缓存操作的基本高级函数有查找,增加,和删除页。在以上函数的基础上还有另一个函数确保高速缓存包含指定页的最新版本。1. 查找页函数find_get_page()接收的参数为指向address_...

2019-06-10 10:56:32 547

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

最近要接触相关领域,学习一下共勉!!本文档使用linux为linux-4.4.4版本磁盘高速缓存:是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问不用再访问磁盘而能尽快得到满足。一种对完整的数据页进行操作的磁盘高速缓存。几乎所有的文件读和写操作都依赖于页高速缓存。只有在O_DIRECT标志被置位而进程打开文件的情况下才会出现例外:此时,IO数...

2018-11-29 14:44:29 3277

原创 N-ary Tree n叉树学习

N 叉树 定义二叉树是一颗以根节点开始,每个节含有不超过2个子节点的树。N 叉树,即每个节点不超过N个子节点的树。一颗三叉树:前缀树,又称为字典树,就是一个常用的N叉树。遍历N-ary Tree Preorder Traversal:给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个 3叉树 :返回其前序遍历: [1,3,5,6,2,4]。说明: 递归法很简单...

2018-11-19 23:37:53 2482

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

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

2018-11-15 02:07:47 1637

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

最近在看相关内容,不过总是不是很系统,今日看到此博客,感觉恍然大悟,作者写的非常棒:转载: https://blog.csdn.net/stringNewName/article/details/73740155为表示对作者的尊敬,一字不动的敲击!最近在看ext4系统的extent相关内容对于文件系统,每个文件会对应一系列磁盘块,通过在inode中有序的存放磁盘块号,也就保存下了<...

2018-11-08 00:13:24 1121

转载 存储系列篇之IDE、SATA、SCSI、SAS、FC、SSD等概念介绍

author: wfsTime : 2020.7.12版权声明:本文为CSDN博主「Dave」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/tianlesoftware/article/details/6009110目前所能见到的硬盘接口类型主要有IDE、SATA、SCSI、SAS、FC等等。 IDE是俗称的并口,SATA是俗称的串口,这两种硬盘是个人电脑和低端服务器常见的硬盘。SCSI是"小型计算机系统.

2020-07-12 22:31:42 3159

转载 存储系列篇(New Begin)之三种存储技术及基本概念

参考资料:https://blog.51cto.com/xslwahaha/1617781文章目录三种存储技术简介基本概念介绍SCSI协议 & LUN & SCSI通信模型 & iSCSI协议三种存储技术简介DAS: Direct Attached Storage,直接附加存储,存储设备通过SCSI接口电缆直接连接到服务器,存储设备不带有任何操作系统。它依赖于服务器,存储设备就是将硬件堆叠起来的。DAS也可以称为SAS(Server Attached storage,即.

2020-07-12 10:38:56 981

原创 《C和指针》总结学习困惑chapter 1 2【入职前】

文章目录风格规则:逻辑上删除代码风格规则:K&R 风格(if、循环语句左括号尽量不要占据一行)用空格缩进4格逻辑上删除代码尽量不要用/**/ 来注释。更好的方法是使用 #if指令 #if 0 statements #endif ...

2020-06-13 10:38:45 437 6

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

参考《大话存储终极版》time: 2020.1.13author: wfs1874为了制造单盘容量更大的硬盘,为此RAID技术诞生!磁盘冗余阵列 RAID 即 Redundant Array of Independent Disks1. 引子RAID一共有7种模式,从 RAID0 到 RAID6, 技术逐渐提升,每种有每一种的特点!2. RAID0技术如上图所示,...

2020-01-13 14:05:34 371

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

1. 概念分布式存储系统:大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务。特点:可扩展, 低成本,高性能,易用可扩展: 分布式存储系统扩展几百台甚至几千台的集群规模,而且随着集群规模的增长,性能程线性增长。低成本:分布式存储系统的自动容错、自动负载均衡机制可使其构建在普通PC机之上。 线性扩展使得增加减少机器方便,实现自动运维。高性能:单点还是整个集群,都要求...

2019-11-07 20:32:42 721

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

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

2019-09-01 14:50:10 395

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

最近看内存寻址部分的内容,这篇真的不错。 分享转载一下:https://www.cnblogs.com/felixfang/p/3420462.html物理地址和逻辑地址物理地址: 加载到内存地址寄存器中的地址,内存单元的真正地址。在前端总线上传输的内存地址都是物理内存地址,编号从0 开始一直到可用物理内存的最高端。这些数字被北桥(Norbridge chip)映射到实际的内存条上。...

2019-08-01 16:54:45 1662

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

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

2019-07-22 10:51:34 477

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

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

2019-07-22 01:34:43 273

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

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

2019-06-25 20:47:11 781

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

题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。思路第一步想到的是排序,但是插入时间复杂度为O(n),得到中位数的时间复杂度为O(1)。也可...

2019-06-22 16:40:47 548

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

之前的一篇文章https://blog.csdn.net/qq_22613757/article/details/91041518 之后对RCU机制还是略有生疏。RCU(Read-Copy Update)是数据同步的一种方式,在当前的linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加...

2019-06-17 22:12:29 248

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

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

2019-06-14 20:32:47 192

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

题目:在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。 请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,10,2,5,3},那么对对应的重复数字是 2 或 3.解题 方法:排序:将数组排序,然后扫描排序后的数组即可。时间复杂度: O(nlogn), 空间复杂度: O...

2019-06-14 20:09:37 181

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

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

2019-06-10 21:09:12 242

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

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

2019-06-06 20:25:19 674 2

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

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

2019-06-06 11:35:59 1160 1

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

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

2019-06-02 23:43:15 194

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

最近看到操作系统,这篇文章大致的总结一下操作系统的轮廓。同时也使自己更加清晰一点,之后可能会一步一步的往下面挖。参考:https://www.yiibai.com/os/os-deadlock-detection-and-recovery.html文章目录1. 定义 && 功能2. 进程管理2.1 和进程有关的时间2.2 操作系统调度算法3. 同步同步处理算法3. 死锁3....

2019-05-29 22:53:00 488

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

最近看到muduo网络库相关书籍,看到了Reactor模式,想了解一下Reactor模式,参考了很多网上大神的资料。这里算是Mark吧。1. 为什么使用Reactor模式讲到高性能IO绕不开Reactor模式,它是大多数IO相关组件如Netty,Redis在使用的IO模式。它是如何来解决高性能并发呢?【java】Reactor模式网络编程发展史:最最原始的网络编程思想就是服务器...

2019-05-16 15:33:07 246

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

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

2019-05-15 22:45:29 370

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

转载:https://blog.csdn.net/gogokongyin/article/details/51178257不是为了学习而学习,学习的目的是为了满足对世界的好奇心,如果我怀着这样一颗好奇心,或许世界会因我而不同。fork, vfork, clone都是linux的系统调用,这三个函数都调用了_do_fork函数,差别在于参数的传递和一些基本的准备工作不同,用来linux创建新的子...

2019-05-13 23:30:56 428

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

author : wfsfrom : 《程序员代码面试指南IT名企算法与数据结构题目最优解》题目:一个栈依次压入1,2,3,4,5、那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5. 也就是实现栈中元素的逆序,但是只能用递归函数来实现,不能用其他数据结构。解答递归一直是我编程的弱点,还无法掌控全局。借此学习一下。这个题考察栈的操作和递归...

2019-05-13 21:04:40 1116 3

原创 Android外部存储详要

参考: http://www.cnblogs.com/wetest/p/8536868.htmlAndroid存储系统架构篇: http://gityuan.com/2016/07/23/android-io-arch/引子:通过打印Android文件在内核ext4层和上层的全路径,会发现同样的文件绝对路径竟然不一样,例如:在libc层绝对路径为/storage/…,但在内...

2019-05-10 15:06:48 365

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

参考: https://www.cnblogs.com/hazir/p/linux_kernel_pid.htmltime : 2019.5.7Linux 内核使用task_struct数据结构来关联所有与进程相关的数据和结构,Linux内核所有涉及到进程和程序的所有算法都是围绕该数据结构建立的,是内核中最重要的数据结构之一。该数据结构在内核文件include/linux/sched.h中...

2019-05-08 19:52:50 1025 4

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

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

2019-05-06 09:52:41 322

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

转载:https://blog.csdn.net/m0_37340681/article/details/89704825内核 3.10.40Android版本: Android 6.0.1_r1手机 Nexus 6参考资料:http://android.blogs.rice.edu/2013/09/25/adding-system-call-in-android-bionic-lib...

2019-05-05 18:31:42 1442

转载 Nginx是什么?相关介绍

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

2019-04-30 11:28:29 164

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

近一年多时间一直都在用CSDN,讲真这个CSDN有时候资料很多,我也很自豪加入这个大家庭,不过身边有两个同学:一个在github托管了属于自己的博客,另一个在云上面编写了属于自己的博客.后者的理由是,CSDN太low,上面很多都是转发的文章,他已经讲所有CSDN网站全部屏蔽了? WTF …有幸入这个坑,自己也翻阅了大量资料,感谢前辈们留下的精华,所谓前人栽树,后人乘凉.再此向那些前辈致以敬意...

2019-04-29 20:36:27 4196 2

原创 Markdown pad 2 语法学习

一、标题这是一级标题这是二级标题这是三级标题这是四级标题这是五级标题这是六级标题二、字体加粗用两个*号抱起来例如**加粗**斜体要倾斜的文字左右分别用一个*号包起来例如*倾斜*删除线要加删除线的文字分别用两个~~号包起来例如:~~这是加删除线的文字~~三、引用在引用的文字前加>即可。引用也可以嵌套,如加两...

2019-04-20 17:30:42 346

转载 mmap()函数参数详解

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

2019-04-17 15:20:41 6606

原创 linux libc--stat函数详解

stat函数头文件: #include <sys/stat.h>定义函数: int stat(const char *file_name, struct stat *buf);函数说明: 通过文件名filename获取文件信息,并保存在buf所指的结构体stat中可以获取文件大小等信息返回值: 执行成功则返回0, 失败返回-1,错误代码存于errno错误代码:ENOEN...

2019-04-11 20:58:41 624

原创 Libc层打印log的陷阱

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

2019-04-11 20:21:42 573 2

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

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

2019-04-08 22:39:39 2427

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

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

2019-04-08 10:04:52 8112

Android系统底层架构,进程的概述

是自己在调研Android系统架构时,所总结的资料,比较笼统概括,希望对你有所帮助。

2019-03-28

世界最难数独详细解题过程

世界最难数独详细解题过程!!!!讲解非常详细!!!!喜欢数独的朋友可以一起看看!!!!学习!

2019-01-23

postmark下载+教程

下载后解压,里面有安装包,在linux下面解压后,gcc命令编译即可。另外附加教程,供收藏使用。

2018-12-19

基于ext3的内核日志模块分析

基于ext3的内核日志模块分析,源码分析,里面内容丰富,比较系统,供大家学习!

2018-12-04

java面试题库,web等

java面试题库,有关于java开发的例如web开发,都可以看看!

2018-11-08

ext4写文件流程分析

ext4 写文件流程分析文档,虽然版本较低,不过有很大的参考价值,有需要的可以查看!

2018-11-07

ext4读文件流程分析

本文档为ext4读文件流程分析,版本虽然较低,不过有较大的参考意义!有需要的可以看看!

2018-11-07

mkbootimg 和 unmkbootimg 工具

在对boot.img 文件进行重打包时,此工具可以进行重打包,具体命令可以参考https://blog.csdn.net/u012417380/article/details/73353670

2018-11-06

linux 根文件系统,uml调试会用到

师兄自己制作的根文件系统,非常好用,可以配上我的 gdb+UML调试文档一起使用,谢谢采纳!

2018-11-03

gdb + UML调试linux内核

gdb + UML调试linux内核,自己总结的,非常实用,有需要的采纳,根文件系统可以到我的资源下载!

2018-11-03

Pixel 2 刷内核教程

自己亲自总结的,pixel 系列内核教程,希望可以帮助到你!里面非常详细!

2018-11-03

aarch64-linux-android-4.9

android linux交叉编译工具aarch64-linux-android-4.9版本!需要的可以下载!

2018-11-02

gdb+UML调试linux内核步骤

gdb+UML调试linux内核步骤,里面记录了我在使用gdbt调试linux内核源码的详细步骤。

2018-09-09

根文件系统

在用 uml 启动linux内核时,需要根文件系统,本文件系统是我自己做的,非常不错,希望可以帮到你!

2018-07-25

Drcom_CQU.py

重庆大学链接校园网,py入口,用python执行,登陆自己的账号密码即可联网!

2018-07-25

Hadoop创建详细过程

Hadoop框架在linux上面进行搭建的完整流程,适合初学者学习参考!

2018-07-25

重大数据挖掘往届试题

重大数据挖掘往届试题,有需要的可以下载! 祝你考试顺利!

2018-07-10

物联网技术应用题库

物联网技术应用题库,有需要的可以下载哦! 加油!

2018-07-10

大学物理答案

大学物理答案。共学生们参考学习,祝你考个好成绩!!!

2015-08-29

学生成绩管理系统

学习成绩管理系统,完成简单的学习成绩的输入,输出,学号姓名,成绩,删除插入!

2014-12-17

空空如也

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

TA关注的人

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