- 博客(90)
- 资源 (49)
- 收藏
- 关注
转载 硬盘写到一半时断电,文件系统里会发什么?
【伯乐在线转注:】本文源自知乎问答帖:《硬盘写到一半断电时文件系统发生了什么?》。原题主的问题补充:断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面
2017-04-30 11:40:05 3018
转载 malloc 背后的系统知识
面试的时候经常会被问到 malloc 的实现。从操作系统层面来说,malloc 确实是考察面试者对操作系统底层的存储管理理解的一个很好的方式,涉及到虚拟内存、分页/分段等。下面逐个细说。1. 虚拟内存首先需要知道的是程序运行起来的话需要被加载的物理内存中,具体到计算机硬件就是内存条。操作系统启动的时候先把自己加载到物理内存的固定位置(一般为底部),物理内存的其他位置就用来运行用户程
2017-04-30 11:37:28 747
转载 千万千万不要运行的 Linux 命令
文中列出的命令绝对不可以运行,即使你觉得很好奇也不行,除非你是在虚拟机上运行(出现问题你可以还原),因为它们会实实在在的破坏你的系统。所以不在root等高级管理权限下执行命令是很好的习惯。 早晚有一天,Linux 系统会像 Windows 那样流行,用的人越来越多,包括对计算机不是很了解的人,本文的目的就是告诉大家:在 Linux 给你最大程度自由度的同时,也使得破坏系统变得更加容易,如
2017-04-30 11:31:27 657
转载 linux shell 流程控制
linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法。一、shell条件语句(if用法)if语句结构[if/then/elif/else/fi]if 条件测试语句thenaction[elif 条件actionelseaction]
2017-04-30 11:29:43 307
转载 如何识别图像边缘?
图像识别(image recognition)是现在的热门技术。文字识别、车牌识别、人脸识别都是它的应用。但是,这些都算初级应用,现在的技术已经发展到了这样一种地步:计算机可以识别出,这是一张狗的照片,那是一张猫的照片。这是怎么做到的?让我们从人眼说起,学者发现,人的视觉细胞对物体的边缘特别敏感。也就是说,我们先看到物体的轮廓,然后才判断这到底是什么东西。计算机
2017-04-27 21:58:37 647
转载 Linux Shell 文本处理工具集锦
本文将介绍Linux下使用Shell处理文本时最常用的工具:find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;提供的例子和参数都是最常用和最为实用的;我对shell脚本使用的原则是命令单行书写,尽量不要超过2行;如果有更为复杂的任务需求,还是考虑python吧;find 文件查找查找txt和pdf文件 find
2017-04-27 21:53:16 301
转载 漫画:三分钟了解敏捷开发
小灰经过千辛万苦,终于拿到了心仪的offer,今天小灰上班的第一天......下班后,小灰找到同学大黄来请教......场景一:小灰在餐厅场景二:无奈的项目经理
2017-04-27 21:52:00 3140 2
转载 试试Linux下的ip命令,ifconfig已经过时了
linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。要安装ip,请点击这里下载iproute2套装工具 。不过,大多数Linux发行
2017-04-26 22:09:48 980
转载 shell中>/dev/null 2>&1是什么鬼?
背景我们经常能在shell脚本中发现>/dev/null 2>&1这样的语句。以前的我并没有去深入地理解这段命令的作用,照搬照用,直到上周我将这段命令不小心写成了2>&1 >/dev/null,出了一点小问题之后,我才开始去了解这段命令背后的“玄机”。shell重定向介绍就像我们平时写的程序一样,一段程序会处理外部的输入,然后将运算结果输出到指定的位置。在交互式的程序中
2017-04-26 21:34:24 511
转载 长时间工作意味着什么?
在科研和设计部门经常有人会长时间工作,一周会超过70个小时。他们就像获得荣誉勋章的烈士一样。但我们要清楚一点,长时间工作其实意味着:你是在免费工作。即使你获得了薪水,但你还是在免费工作。因为每周工作40小时之后,你继续工作的话也不会让你的口袋多增加一分钱。长时间工作不合理,也不可持续。客户和老板会期望开发人员长时间工作。允许长时间工作的公司的企业文化大有问题。
2017-04-26 21:32:20 569
转载 C编译: makefile基础
在编译一个大型项目的时候,往往有很多目标文件、库文件、头文件以及最终的可执行文件。不同的文件之间存在依赖关系(dependency)。比如当我们使用下面命令编译时:$gcc -c -o test.o test.c$gcc -o helloworld test.o可执行文件helloworld依赖于test.o进行编译的,而test.o依赖于test.c。 依
2017-04-25 21:57:22 273
转载 internet协议入门——你该懂得知识
前言劳于读书,逸于作文。博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析了不同网络协议的传送的数据和传送的方式。而此篇博客则用来作为一个大纲式的内容,按照层级划分,逐步介绍各层级的协议以及他们所起的作用。若有错误之处,欢迎批评指正。正文1.概述互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下
2017-04-25 21:54:23 762
转载 Linux文件管理
对于计算机来说,所谓的数据就是0和1的序列。这样的一个序列可以存储在内存中,但内存中的数据会随着关机而消失。为了将数据长久保存,我们把数据存储在光盘或者硬盘中。根据我们的需要,我们通常会将数据分开保存到文件这样一个个的小单位中(所谓的小,是相对于所有的数据而言)。但如果数据只能组织为文件的话,而不能分类的话,文件还是会杂乱无章。每次我们搜索某一个文件,就要一个文件又一个文件地检查,太过麻烦。文件系
2017-04-25 21:47:30 244
转载 Linux文件系统的实现
Linux文件管理从用户的层面介绍了Linux管理文件的方式。Linux有一个树状结构来组织文件。树的顶端为根目录(/),节点为目录,而末端的叶子为包含数据的文件。当我们给出一个文件的完整路径时,我们从根目录出发,经过沿途各个目录,最终到达文件。我们可以对文件进行许多操作,比如打开和读写。在Linux文件管理相关命令中,我们看到许多对文件进行操作的命令。它们大都基于对文件的打开和读写操作。
2017-04-25 21:45:58 308
转载 每天一个linux命令(51):lsof命令
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打
2017-04-24 22:54:39 261
转载 每天一个linux命令(49):at命令
在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务。 通过'添加任务计划'的一步步引导,则可建立一个定时执行的任务。在linux系统中你可能已经发现了为什么系统常常会自动的进行一些任务?这些任务到底是谁在支配他们工作的?在linux系统如果你想要让自己设计的备份程序可以自动在某个时间点开始在系统底下运
2017-04-24 22:52:42 288
转载 每天一个linux命令(47):iostat命令
Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。
2017-04-24 22:50:16 354
转载 每天一个linux命令(46):vmstat命令
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结
2017-04-24 22:47:16 348
转载 每天一个linux命令(43):killall命令
Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name)。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。1.命令格式:killall[参数][进程名]2.命令功能:用来结
2017-04-24 22:42:48 370
转载 linux中强大且常用命令:find、grep
在linux下面工作,有些命令能够大大提高效率。本文就向大家介绍find、grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们。本文结构如下:find命令find命令的一般形式find命令的常用选项及实例find与xargsgrep命令grep命令的一般形式grep正则表达式元字符集(基本集)grep命令的常用选项及实例1、find命令
2017-04-24 22:40:41 353
原创 手把手git教程(10)--github如何删除一个repository(仓库)
如果小伙伴们跟着我的教程一步步做下来一定已经学会使用了git了,但是同时也有个副产品出现了,就是我们学习过程中在GitHub上创建的仓库。这个仓库在以后的使用中是多余的,我们需要一个干净的GitHub,里面只有我们需要的仓库,我们应该怎么做呢?今天就来讲解最后一节:github如何删除一个repository(仓库)如何删除自己创建的一个项目,我浏览了一下github网站,确实不太容易找到
2017-04-23 11:14:03 9594
原创 手把手git教程(09)--多人协作,推送分支,抓取分支
多人协作当你从远程库克隆时候,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且远程库的默认名称是origin。要查看远程库的信息 使用 git remote要查看远程库的详细信息 使用 git remote –v如下演示:origin https://github.com/RTplay/testgit.git (fetch)抓取
2017-04-23 10:57:29 2590
原创 手把手git教程(08)--开发分支常用处理流程
分支管理策略 通常合并分支时,git一般使用”Fast forward”模式,在这种模式下,删除分支后,会丢掉分支信息,现在我们来使用带参数 –no-ff来禁用”Fast forward”模式。首先我们来做demo演示下:创建一个dev分支:git checkout -b dev修改readme.txt内容:echo aaaaaaa>>readme.txt添加到暂存区:g
2017-04-22 20:05:48 521
原创 手把手git教程(07)--如何解决冲突
如何解决冲突?下面我们还是一步一步来,先新建一个新分支,比如名字叫fenzhi1,在readme.txt添加一行内容8888888,然后提交,如下所示:同样,我们现在切换到master分支上来,也在最后一行添加内容,内容为99999999,如下所示:现在我们需要在master分支上来合并fenzhi1,如下操作:Git用>>>>>>标记出不同分支
2017-04-21 23:39:19 566
转载 理解inode
inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔记,尽量保持简单。一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(S
2017-04-21 23:20:36 356
转载 sudo 命令情景分析
Linux 下使用 sudo 命令,可以让普通用户也能执行一些或者全部的 root 命令。本文就对我们常用到 sudo 操作情景进行简单分析,通过一些例子来了解 sudo 命令相关的技巧。情景一:用户无权限执行 root 命令普通用户登录 shell 之后,如果自身没有权限访问某个文件或执行某个命令时,若该用户获得root授权,那么就可以在需要执行的命令之前加上 sudo,临时切换
2017-04-21 23:14:11 237
转载 对Linux系统休眠的理解
今天看了一个关于中断例程为什么不能休眠的文章,引发了我的思考。其实这个问题在学习驱动的时候早就应该解决了,但是由于5年前学驱动的时候属于Linux初学者,能力有限,所以对这个问题就知其然,没有能力知其所以然。现在回头看这个问题的时候,感觉应该可以有一个较为清晰的认识了。首先必须意识到:休眠是一种进程的特殊状态(即task->state= TASK_UNINTERRUPTIBLE | TASK_
2017-04-21 23:11:27 8146
转载 幽默讲解linux的Socket IO模型
前言之前有看到用很幽默的方式讲解Windows的socket IO模型,借用这个故事,讲解下linux的socket IO模型;老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们小区门口的收发室里。这和Socket模型非常类似。下面就以老陈接收信件为例讲解linux的 Socket I/O模型。一、同步阻塞模型老陈的女儿
2017-04-21 23:05:28 541
转载 常见hash算法的原理
散列表,它是基于高速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构能够理解为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行訪问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来訪问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列
2017-04-21 22:57:46 458
转载 Linux中设置服务自启动的三种方式
有时候我们需要Linux系统在开机的时候自动加载某些脚本或系统服务主要用三种方式进行这一操作:ln -s 在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一)chkonfig 命令行运行级别设置ntsysv 伪图形运
2017-04-20 21:58:52 675
转载 内核页表和进程页表
初学内核时,经常被“内核页表”和“进程页表”搞晕,不知道这到底是个啥东东,跟我们平时理解的页表有和关系。。内核页表:即书上说的主内核页表,在内核中其实就是一段内存,存放在主内核页全局目录init_mm.pgd(swapper_pg_dir)中,硬件并不直接使用。进程页表:每个进程自己的页表,放在进程自身的页目录task_struct.pgd中。在保护模式下,从硬件角度看,其运行的基本对
2017-04-20 21:54:08 6453
原创 手把手git教程(06)--分支的创建、合并与删除
创建与合并分支在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。首先,我们来创建dev分支,然后切换到dev分支上。如下操作:git ch
2017-04-19 22:03:01 613
转载 linux内核 RCU机制详解
简介 RCU(Read-Copy Update)是数据同步的一种方式,在当前的Linux内核中发挥着重要的作用。RCU主要针对的数据对象是链表,目的是提高遍历读取数据的效率,为了达到目的使用RCU机制读取数据的时候不对链表进行耗时的加锁操作。这样在同一时间可以有多个线程同时读取该链表,并且允许一个线程对链表进行修改(修改的时候,需要加锁)。RCU适用于需要频繁的读取数据,而相
2017-04-19 21:38:04 555
转载 tasklet机制和工作队列
1. Tasklet机制分析上面我们介绍了软中断机制,linux内核为什么还要引入tasklet机制呢?主要原因是软中断的pending标志位也就32位,一般情况是不随意增加软中断处理的。而且内核也没有提供通用的增加软中断的接口。其次内,软中断处理函数要求可重入,需要考虑到竞争条件比较多,要求比较高的编程技巧。所以内核提供了tasklet这样的一种通用的机制。
2017-04-18 22:16:47 562
转载 linux软中断机制分析
软中断分析最近工作繁忙,没有时间总结内核相关的一些东西。上次更新博客到了linux内核中断子系统。这次总结一下软中断,也就是softirq。之后还会总结一些tasklet、工作队列机制。http://alloysystem.blog.chinaunix.netAndy.yx.deng#gmail.com(#->@)
2017-04-18 22:12:39 980
转载 Linux 新的API signalfd、timerfd、eventfd使用说明
三种新的fd加入linux内核的的版本:signalfd:2.6.22timerfd:2.6.25eventfd:2.6.22三种fd的意义:lsignalfd传统的处理信号的方式是注册信号处理函数;由于信号是异步发生的,要解决数据的并发访问,可重入问题。signalfd可以将信号抽象为一个文件描述符,当有信号发生时可以对其read,这样可以将信号的
2017-04-18 22:08:32 464
转载 深入理解 RCU 实现
深入理解RCU实现——基于内核2.6.21 RCU实现(lvyilong316)RCU(Read-Copy Update),顾名思义就是读-拷贝修改,它是基于其原理命名的。对于被RCU保护的共享数据结构,读者不需要获得任何锁就可以访问它,但写者在访问它时首先拷贝一个副本,然后对副本进行修改,最后使用一个回调(callback)机制在适当的时机把指向原来数据的指针重新指向新的被修
2017-04-18 22:05:36 6587
转载 一次完整的 HTTP 请求过程
一次完整的HTTP请求过程从TCP三次握手建立连接成功后开始,客户端按照指定的格式开始向服务端发送HTTP请求,服务端接收请求后,解析HTTP请求,处理完业务逻辑,最后返回一个HTTP的响应给客户端,HTTP的响应内容同样有标准的格式。无论是什么客户端或者是什么服务端,大家只要按照HTTP的协议标准来实现的话,那么它一定是通用的。HTTP 请求格式HTTP请求格式主要有四部分组
2017-04-18 21:54:37 535
转载 Linux系统启动过程分析
经过对Linux系统有了一定了解和熟悉后,想对其更深层次的东西做进一步探究。这当中就包括系统的启动流程、文件系统的组成结构、基于动态库和静态库的程序在执行时的异同、协议栈的架构和原理、驱动程序的机制等等。 本人在综合了现有网上大家智慧的基础上,结合对2.6.32的内核代码的研读,基于CentOS 6.0系统对Linux的启动流程做了些分析。由于才疏学浅,知识所限,有些地方分析不
2017-04-18 21:45:37 398
转载 Linux内核通知链机制的原理及实现
一、概念: 大多数内核子系统都是相互独立的,因此某个子系统可能对其它子系统产生的事件感兴趣。为了满足这个需求,也即是让某个子系统在发生某个事件时通知其它的子 系统,Linux内核提供了通知链的机制。通知链表只能够在内核的子系统之间使用,而不能够在内核与用户空间之间进行事件的通知。 通知链表是一个函数链表,链表上的每一个节点都注册了一个函数。当某个事情发生时,链表上所有节点对应的函数就
2017-04-18 21:34:27 1217
NppAStyle_bin.zip
2016-08-15
MyApplicationC1.zip
2020-04-02
从1开始写一个操作系统.pdf
2019-09-26
RT-OSforSTC15W.zip
2019-09-22
nanomsg-1.1.4.tar.gz
2018-09-22
inirw源码文件
2018-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人