- 博客(46)
- 资源 (21)
- 收藏
- 关注
原创 页高速缓存(page cache学习)
最近要接触相关领域,学习一下共勉!!本文档使用linux为linux-4.4.4版本磁盘高速缓存:是一种软件机制,它允许系统把通常存放在磁盘上的一些数据保留在RAM中,以便对那些数据的进一步访问不用再访问磁盘而能尽快得到满足。一种对完整的数据页进行操作的磁盘高速缓存。几乎所有的文件读和写操作都依赖于页高速缓存。只有在O_DIRECT标志被置位而进程打开文件的情况下才会出现例外:此时,IO数...
2018-11-29 14:44:29 3240
原创 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 2393
原创 C++中 queue 、 deque、priority_queue详解
最近看到一道题用到了队列,在这里就具体的分析一下C++中的这三种队列的区别queue用法:#include <iostream>#include <queue>using namespace std; int main(){ queue<int> myQueue; cout << myQueue.empty() <...
2018-11-15 02:07:47 1594
转载 Linux.ext4文件系统 .inode和extent
最近在看相关内容,不过总是不是很系统,今日看到此博客,感觉恍然大悟,作者写的非常棒:转载: https://blog.csdn.net/stringNewName/article/details/73740155为表示对作者的尊敬,一字不动的敲击!最近在看ext4系统的extent相关内容对于文件系统,每个文件会对应一系列磁盘块,通过在inode中有序的存放磁盘块号,也就保存下了<...
2018-11-08 00:13:24 1079
原创 KiB、MiB与KB、MB的区别
最近看到MiB,学习计算机这么久了第一次看到,感觉自己是个外行,学习一下!具体的差别是MB等单位以10为底数的指数,MiB是以2为底数的指数,如:1KB=10^ 3=1000, 1MB=10^ 6=1000000=1000KB,1GB=10^ 9=1000000000=1000MB,而 1KiB=2 ^ 10=1024,1MiB=2^20=1048576=1024KiB。与我们密切相关的是我...
2018-11-26 13:59:24 435
原创 linux 中 tar.xz 的解压命令
对于 tar.xz结尾的压缩文件,解压有两种方式:可以先将外层用xz解压方式解压,,然后里层用tar解压方式解压:$ xz -d *****.tar.xz$ tar -xvf *****.tar2.直接使用如下命令解压:$ tar xvJf ***.tar.xz...
2018-11-26 12:18:34 33759 1
原创 变量交换 && c++中的swap(交换函数)
交换两个变量的值很简单。比如 int a = 1; b = 2; 交换a b的值这个很简单 很容易想到的是找个中间变量比如 int temp = a; a = b; b = temp;不需要中间变量可不可以?当然是可以的。加减法交换两变量a = a + b;b = a - b;a = a - b ;该方法可以交换整形和浮点型数值,但在处理浮点型的时候出现精度损失,例...
2018-11-25 20:34:50 1543
原创 剑指Offer(29):顺时针打印矩阵
题目输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每个数字,例如,如果输入如下矩阵:则依次打印出数组:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。思路将结果存放在vector 数组中,从左到右,再从上到下,再从右到左,最后从下到上遍历。思考:遍历停止的标志是什么边界必须非常清晰的控制好! 考察边界控制能力!代码:vec...
2018-11-24 15:23:19 142
原创 剑指offer 28: 对称的二叉树(递归实现)
题目实现一个函数,用来判断一棵二叉树是不是对称的。如果一颗二叉树和它的镜像一样那么它对称。分析 存在三种遍历算法,前序遍历,中序遍历,后序遍历。我们可以针对前序遍历定义一种对称的遍历算法。即先遍历父节点,再遍历右结点,最后遍历左结点。以上面的为例,先序遍历为:8 , 6, 5, 7, 6, 7, 5我们定义的遍历方式遍历为: 8 ,6,5, 7, 6 , 7, 5我们注...
2018-11-22 15:37:58 114
原创 剑指offer 面试题: 求二叉树的镜像(递归、循环、及测试用例)
编程是为了让程序变成自己喜欢的模样!坚持总结经验才是王道代码的样子决定了你的能力!题目:完成一个函数,输入一颗二叉树、该函数输出它的镜像。二叉树定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode* m_left; BinaryTreeNode* m_right;}...
2018-11-22 14:57:08 241
原创 Leetcode:83. 82. Remove Duplicates from Sorted List
概述83 . 题目Given a sorted linked list, delete all duplicates such that each element appear only once.Example 1:Input: 1->1->2Output: 1->2Example 2:Input: 1->1->2->3->3Output...
2018-11-20 21:58:43 122
原创 linux下内核多线程的简单实现
内核态多线程的 学习方法、结构介绍task_struct // 用户定义 j 进程描述符,linux中把并不对进程和线程做强制区分。kthread_run() //用户创建一个线程并运行函数原型如下 kthread_run(threadfn, data, namefmt, …), threadfn 是线程被唤醒后执行的方法。kthead_stop() //用于结束一个线程的...
2018-11-20 15:52:08 2249 1
转载 Linux内存管理 (透彻分析)
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内...
2018-11-18 17:03:32 1658 1
转载 bbs段的理解
转载:https://blog.csdn.net/wateryouyo/article/details/71158476C程序中的存储空间布局:text段。存放文本指令的地方,保存在硬盘上,只读的,不可修改,由.exec程序读取。可共享,若一个程序有多个进程同时在运行,则可共享text段。data段。初始化的字段,包含明确的初始化值,保存在硬盘上,由.exec读取bss段。未...
2018-11-17 22:43:52 423
原创 NULL和nullptr的区别
NULL是0nullptr是空指针void看例子:#include <iostream>void go(int num){ std::cout << "go num" << std::endl;}void go(char *p){ std::cout << "go p" << std::en
2018-11-16 22:32:45 281
原创 二分法求解平方根注意点:
对于一个整数求解其平方根可以使用“二分法”和“牛顿法”。所谓“二分法”就是不断地缩小平方根所在的范围,直到收敛到一个数。例如求解数k的平方根t,首先设置t的范围为[left, right](其中left和right分别初始化为1, k),然后判断m=(l+k)/2与k的平方根t的关系,如果m比t小,则t的范围为[m+1, right],否则为[left, m-1],然后依次循环,直到left...
2018-11-15 16:35:27 3910
原创 乱序保序输出
thinking:(1)每次选择输出的数字是当前序列中最小的,记该数字下标为 index,数字为a(2)检查index 之后的最小数为b(3)如果index之前有小于b且大于a的数字出现,说明这些数字是乱序的数字,要和a一行保序输出此处用 优先队列会更有优势!!!int output_in_order(vector<int> &unordered_sequen...
2018-11-15 02:42:33 288
转载 内存映射机制(mmap)
当CPU读取数据时,是由内存管理单元(MMU)管理的。MMU位于CPU与物理内存之间,它包含从虚地址向物理内存地址转化的映射信息。当CPU引用一个内存位置时,MMU决定哪些页需要驻留(通常通过移位或屏蔽地址的某些位)以及转化虚拟页号到物理页号。当某个进程读取磁盘上的数据时,进程要求其缓冲通过read()系统调用填满,这个系统调用导致内核想磁盘控制硬件发出一条命令要从磁盘获取数据。磁盘控制器通...
2018-11-15 01:03:48 21150
原创 对自己最近的反思
做项目,就像搭房子,如果你是主设计师,你需要兼顾很多东西,例如哪间房子比较特殊需要工人注意些什么,哪里的砖头需要砌多高 … …,好记性不如烂笔头,有时候尽管你记下了些东西,可是你还是犯错。为什么一个问题断断续续搞了这么长时间才在莫名其妙解决,我现在还是无法理清。总之就是突然莫名其妙的Root不了,试着刷不同的boot镜像,出厂镜像root失败 … …怎么试都失败,瞬间崩溃… …所有的烦恼都从这...
2018-11-14 22:27:04 491
转载 文件系统中的逻辑块、物理块和扇区之间的关系
转载:https://blog.csdn.net/aspirinvagrant/article/details/11365209扇区(sector):硬件(磁盘)上的最小的操作单位,是操作系统和块设备(硬件、磁盘)之间传送数据的单位。 block由一个或多个sector组成,文件系统中最小的操作单位;OS的虚拟文件系统从硬件设备上读取一个block,实际为从硬件设备读取一个或多个se...
2018-11-14 20:20:39 1891
原创 google手机恢复
google 手机 恢复 可以用这个教程,非常灵验。(不过有时候在linux下面不一定成功,在windows 下面就可以成功。 这一点不要忘记)。 可能需要翻墙。 如果不会 可以联系我:1260733611@qq.com 我会尽力帮助你!https://forum.xda-developers.com/pixel-2-xl/development/tool-deuces-bootloop...
2018-11-14 15:55:38 593
原创 Magisk && Magisk Manager 下载
Magisk &amp;&amp; Magisk Manager 下载:https://github.com/topjohnwu/Magisk/releases截图:google 手机 root 教程http://bbs.zhiyoo.com/thread-13496344-1-1.html?tdsourcetag=s_pctim_aiomsg...
2018-11-14 15:40:05 10752
原创 95. Unique Binary Search Trees II
题目参考:https://www.cnblogs.com/dbylk/p/4048209.htmlGiven an integer n, generate all structurally unique BST’s (binary search trees) that store values 1 … n.Example:Output:[ [1,null,3,2], [3,2,n...
2018-11-14 11:40:37 134
原创 Unique binary search trees 唯一二叉搜索树
题目Given n, how many structurally unique BST’s (binary search trees) that store values 1 … n?Example:Input: 3Output: 5Explanation:Given n = 3, there are a total of 5 unique BST’s:题意:给定数n ...
2018-11-13 21:20:37 357
原创 Android源码下载教程(repo)
环境ubuntu系统源码下载首先下载repo工具 mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo &gt; ~/bin/repo ## 如果上述 URL 不可访问,可以用下面的: ## curl https://storage-google...
2018-11-13 20:17:09 625
原创 Shell教程(流控制、函数)(第三天)
if else句式:if conditionthen command1 command2 ... commandN fiif else if elseif condition1then command1elif condition2 then command2else commandNfiif else...
2018-11-12 23:28:40 207
原创 Ext4文件系统架构分析(一)
本文描述Ext4 文件系统磁盘布局和元数据的一些分析,同样适用于ext2,ext3文件系统,除了它们不支持的ext4的特性。整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等。1.Ext4 文件系统布局综述一个Ext4 文件系统被分成一系列块组。为减少磁盘碎片产生性能瓶颈,块分配器尽量保持每个文件的数据块都在同一个块组中,从而减少寻道时间。以4KB的数据块为例,一...
2018-11-12 22:45:36 1014
转载 linux中fork()函数详解
fork入门知识一个进程,包含代码,数据,和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但是如果初始参数或者传入的变量不同,两个进程也可以做不同的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的进程中,只有少数值与原来的进程的值不同。相当于克隆...
2018-11-12 16:09:33 426
原创 Kernel编译出现error, forbidden warning
这是在编译的过程中,由于代码不符合规范所致,比如类型转换时未强制转化,或者定义了某些变量或者函数却没有使用,这些都会出现警告,而警告将会被看做错误来处理。修改自己的代码,将出现的警告全部解决掉,该强制转换的强制转换,该删除定义了未使用的变量函数删除或者注释掉。修改scripts/gcc-wrapper.py 将interpret_warning(line)注释掉,这样它就不会将警告...
2018-11-12 15:11:00 943
原创 基本语法掌握(shell 学习第二天)
Shell 传递参数执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……其中 $0 为执行的文件名#!/bin/bashecho "Shell 传递参数实例!";echo "执行的文件名:$0";echo "第一个参数为:$1";echo "第二个参数为:$2";...
2018-11-10 21:56:12 452
原创 基本语法掌握(shell 学习第一天)
概述Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Ken Thompson 的 sh 是第一种 Unix Shell,Windows Explorer 是一个典型的图形界面 Shell。Shel...
2018-11-09 22:13:53 130
原创 操作系统(二)
在多重处理系统中,处理死锁的办法有两种:一是防止其发生,二是发生后进行处理。所谓死锁deadlocks 是指两个或者两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们将推进下去。此时称系统处于死锁状态或者系统产生了死锁。产生死锁的四个必要条件:…互斥条件: 一个资源每次只能被一个进程使用。…请求与保持条件: 一个进程因请求资源而阻塞时,对已获得的资...
2018-11-09 21:16:25 174
原创 LeetCode 45. 55. Jump Game
45. Jump Game IIGiven an array of non-negative integers, you are initially positioned at the first index of the array.Each element in the array represents your maximum jump length at that position....
2018-11-09 17:51:16 195
原创 操作系统(面试宝典)
面试试题 1解释操作系统原理中的作业、进程,线程、管程各自的定义。答案:作业:用户在一次解题或一个事务处理过程中要求计算机系统所作的集合。它包括用户程序、所需要的数据及控制命令等。作业是一系列有序的步骤组成的。进程:一个程序在一个数据集合上的一次运行过程。所以一个程序在不同的数据集合上运行,乃至一个程序在同样数据集合上的多次运行都是不同的进程。线程:线程是进程的一个实体,是被...
2018-11-09 01:29:04 347
转载 c++ 中min和max 函数
包含在c++标准库中头文件中,在头文件<windows.h>中定义了min,max的宏,若在包含的同时包含<windows.h>会导致函数无法使用。<windows.h>提供了_cpp_min等函数来代替min函数的功能。C++11标准:中min函数的原型default(1)template const T& min (const T&...
2018-11-08 22:58:29 28246
原创 算法之贪心学习 --- 两个案例
贪心算法算法简介:贪心算法是指:在每一步的求解的步骤中,他要求"贪婪"的选择最佳操作,并希望通过一系列的最优选择,找到一个全局的最优解。(但有时候是找不到全局最优);贪心算法需满足:可行性:即每一步都必须满足问题的约束局部最优 :他是当前步骤中所有可行选择中最佳的局部选择。不可取消: 即选择一旦做出,在算法的后面步骤就不可改变。算法案例:活动选择问题:问题描述...
2018-11-08 21:22:15 273 2
原创 Linux 内核中获取时间分析基于do_gettimeofday()
Linux 内核中获取时间分析基于do_gettimeofday()内核代码能一直获取一个当前时间的表示,通过查看jifies的值。通常这个值只代表从最后一次启动以来的时间,这个事实对驱动来说无关,因为它的生命周期受限于系统的uptime。驱动可以使用jifies的当前值来计算事件之间的时间间隔(例如,在输入驱动中从单击中区分双击或者计算超时)。驱动不需要墙上时钟以月、天和小时来表达;这...
2018-11-08 15:43:31 2858
原创 mmap & page cache 中的mapping之间的区别 & 直接I/O & buffered I/O & mmap区别
ext4_file_mmap 中的mmap百度词条是这样说的:mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上,如果文件的大小不是所有页的大小之和,最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。这里的mmap,其实是将物理内存和物理磁盘进行映射,映射的表现形式通过,读inode_table,知道文件在物理磁盘的索引结构,通过读去索引结构访问磁盘找到物...
2018-11-07 17:22:58 2912
原创 c++ 中的 string 类
c++ 中string类的学习1. string类的构造函数构造函数描述string(const char *s)将string对象初始化为s指向的NBTS(表示以空字符结束的字符串)string(size_type n,char c)创建一个大小为n的string对象,并且每个元素都被初始化为字符cstring(const string & ...
2018-11-07 12:02:38 252
mkbootimg 和 unmkbootimg 工具
2018-11-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人