`
文章列表
    linux世界里有两种流行的引导加载程序:LILO和GRUB。LILO是传统的的Linux引导加载程序,非常稳定而且有很好的文档,但却迅速被GRUB的锋芒盖过。     GRUB作为一个全面统一的引导加载程序,对于频繁改变系统配置的用户来说 ...
    在TCP传输中,是通过让接收方指明希望从发送方接收的数据字节数(即通告窗口的大小)来进行流量控制的。当窗口大小为0时将能有效地阻止发送方传送数据,直到窗口变为非0为止。     通常情况下,我们之所以说TCP是一种可靠的传输方式,那是因为它对所接收到的数据报文段都会发送一个ACK确认报文。但ACK的传输却是不可靠的,也就是说,TCP不对ACK报文段进行确认,而只对那些包含有数据的报文段进行确认。     如果一个确认丢失了,则双方就有可能因为等待对方而使连接终止:接收方等待接收数据(因为它已经向发送方通过了一个非0的窗口),而发送方在等待允许它继续发送数据的窗口更新。为了防止这种死锁情况 ...

linux手册页组成

    linux的在线手册非常方便,但有些命令的文档却是非常的长,包含了各种情形下的详细介绍。虽说它按节排布,但很多时候我们只对其中的某些节感兴趣,并不想挨着一节一节的翻过去。所以为了降低翻页的频率,了解每个小节的介绍范围,将有利于我们快速定位到对应的命令介绍处。     linux的手册页一般分成9节,如下表所示: 节内容1用户级命令和应用程序2系统调用和内核出错代码3库调用4设备驱动程序和网络协议5标准文件格式6游戏和演示7各种文件和文档8系统管理命令9少见隐秘的内核规范和接口     了解了各节的内容后,利用“man section command”就可让用户从某个特定的节获取手册页。例 ...
    对于学习python的人来说,python2和python3必不可少,但当同时安装了两者后,又会带来一些冲突问题,比如shell中输入python,shell就会以最先在环境变量中找到的python为准,这样很多情况下并非是我们所想。而很多人的解决办法是修改其中一个python.exe的名字,比如修改为python2.exe之类。这样做的确解决了输入python所带来的冲突问题,但这同时也带来了隐患,即直接导致python 2的pip不再可用,输入pip2将会产生错误:Fatal error in launcher: Unable to create process using '&qu ...

find命令攻略

find命令在linux中的地位可谓举足轻重,所以了解该命令的常用用法自然必不可少,下面就是经常用到的参数用法(参照了《linux shell脚本攻略》): 1、-name:按通配符匹配文件(-iname不区分大小写)。 示例:find /home/program/ -name "*.txt" -print 解释:查找/home/program目录下的所有以“.txt”结尾的文件,”-print“可省略。 更复杂一些,结合“-o”匹配多个文件:find . \( -name "*.txt" -o -name "*.pdf" \) 解 ...
注:以下是对Centos6中运行“man boot”的大致描述(翻译水平有限,多多包涵^_^),其它分支或许稍有不同。 linux系统启动过程大致可分以下五个步骤: 1、硬件启动。 2、系统引导。 3、启动内核。 4、运行init进程。 5、调用启动 ...
linux目录繁多,各目录又有对应的功能,好记性也实在记不住,无奈只有靠靠“烂笔头”了!^_^ 路径名内容/bin获得最小的系统可操作性所需要的命令/boot内核和加载内核所需的文件/dev终端、磁盘、调制解调器等的设备项/etc关键 ...
注:此处以python 3为运行环境,例子摘自《python cookbook》第8章。 python中若子类要实现父类的初始化,主要有两种方法,第一种是直接通过父类名,第二种是利用super方法。在单继承时两者没什么区别,但在多继承时就需要注意一 ...

linux常忘命令

声明:这不是一篇linux命令大全,只是记录我本人不常用的一些命令以备一时之需,而且也只不过是蜻蜓点水式的介绍一下大概的用途而已,更好更详细的介绍请自行找男人“man”吧 ^_^。 命令如下: killall:可按服务名如 httpd 来结束相关进程(kill 是按进程号 PID )。 top: 可实时查看系统进程状态。 free: 显示系统内存使用情况。 pstree: 查看运行进程间的关系。 uname: 查看系统内核等相关信息。 uptime: 查看系统运行了多长时间,其实就是top命令的第一行。 dmesg: 查看系统开机时的加载信息。 sar: 可用于侦测主机的资源使用状态,需自行安 ...
    注:本文摘自《深入理解计算机操作系统》第九章--虚拟存储器。     Linux通过将一个虚拟存储器区域与一个磁盘上的对象关联起来,以初始化这个虚拟存储器区域的内容,这个过程称为存储器映射。虚拟存储器区域可以映射到两种类型的对象中的一种:     1、unix系统中的普通文件:一个区域可以映射到一个普通磁盘文件的连续部分,例如一个可执行目标文件。文件区被分成页大小的片,每一片包含一个虚拟页面的初始内容。因为按需进行页面调度,所以这些虚拟页面没有实际交换进入物理存储器,直到CPU第一次引用到页面。如果区域比文件区大,那么就用零来填充该区域的余下部分。     2、匿名文件:一个区域也可以 ...

隔离级别

    注:本文大部分内容摘自《高性能MySQL》第一章--MySQL架构与历史。     隔离性作为事务ACID四个特性之一,其实比想象的要复杂,因为它涉及到对系统的并发控制。在SQL标准中定义了四种隔离级别(注:每种存储引擎实现 ...
注:本文中的大部分内容均是摘录自《深入理解计算机系统》一书,权当记录之用。         虚拟存储器作为现代操作系统中的一个重要概念,其重要性自然不言而喻。如果你还不了解虚拟存储器的概念,务必请查阅相关资料,本文并不打算纠结于此,而只是介绍其众多作用中的冰山一角,即如何作为存储器管理的工具。     我们知道,磁盘和主存是以数据块的形式作为传输单元,所以物理存储器一般会被划分成一个个大小固定的块,叫做物理页,也叫页帧。但仅仅这样是不够的,因为 CPU 与磁盘的速度完全不在一个等级,因此虚拟存储器才得以有了用武之地。为了更好操作,虚拟存储器也被分割成了固定大小的块,即所谓的虚拟页。在任意时刻, ...
注:本文摘自《深入理解计算机系统》第8章 --- 异常控制流。本文不适于不了解信号的人,在此也不对信号做过多解释,只是个人需要记录相关的信号处理问题而已,想了解更详细的请自行查阅相关资料。 程序只捕获一个信号时是简单直接的,但当要捕获多个信号时,就可能产生一些细微的问题。 1、待处理信号被阻塞。unix信号处理程序通常会阻塞当前处理程序正在处理的类型的待处理信号。比如,假设一个进程捕获了SIGCHLD信号(注:每个子进程终止或退出时,内核都会发送一个SIGCHLD信号给父进程),并且当前正在运行它的SIGCHLD处理程序,如果另一个 SIGCHLD 信号传递到这个进程,那么这个信号将变成待处理 ...
google高级操作基本语法:operator:searchKeyword。注意其中要注意以下几条规则: 1、操作符、冒号、搜索关键字之间没有空格,否则会被当成普通搜索。 2、searchKeyword同普通搜索,可以为一个单词或用引号引起来的词组。 3、布尔操 ...

僵尸进程

在解释僵尸进程的概念之前,我们得先了解这样的一个事实: 一个进程在由于某种原因终止后并不会像大多数人认为的那样立即被内核从系统中清理掉,而是被保持在一种已终止的状态中,等待着被它的父进程来回收。在被父进程回收后,内核会将它的退出状态传递给父进程,然后才把它抛弃掉。也只有从此刻开始,该终止进程才真正意义上的消失了。 根据这个事实,不难得出僵尸进程的大致概念,即已终止但还未被回收的进程。因为它还需要内核来保留它的某些状态以让父进程回收,所以它会消耗部分资源。因此对于长时间运行的程序,如外壳或服务器等,总是应该回收僵尸进程。如果父进程在回收它的僵尸子进程之前就被终止了, 那么内核会调用init进程(P ...
Global site tag (gtag.js) - Google Analytics