Linux sed命令

sed是一种流编辑器,能够对文件中的每行进行处理。它以行为单位进行处理,可以对每行数据进行替换、删除、新增以及选取等操作。它的命令格式为:sed [-nefri] ‘command’ 输入文本

Redis源码分析

最近用c写一个程序的时,切身体会到“书到用时方恨少”。尽管以前写程序都是用的Python、PHP、Java等,代码量量不多也不是太少,也用c写过一些小程序,但这次用c写的代码量一上来,驾驭c程序的能力略低下,程序中涉及到的一些数据结构、算法还不能轻松掌握,所以就想着如何提高自己的编程能力。前几天在写一个程序时用到了redis,以前也虽用过,但都忘的差不多了,相比其他的数据库软件的安装、配置等相对复杂的过程,redis使用可以说是“一分钟上手”,于是便喜欢上了这种即学即用,简单易用的软件。了解了redis后,其架构、思想、方法都是非常优秀的,遂打算学习下这一在DB-Engines上长时间排名前十的开源软件,研究其源代码,以此了解学习如何编写一个优秀的大中型软件,顺便可提高自己的编程能力。希望可以坚持下来。

并行编程

并行运算可大大提高程序的运行时间,一个直观的例子是在linux上使用make编译程序时,如果使用参数 -j ,则能够使用多线程在多个CPU核上执行编译程序,极大加快编译速度,所以提高程序运行效率的一种最有效的办法是编写并行程序。并行编程的目的主要是进行并行计算,并行计算是将任务交给多个处理器执行,每个处理器执行一部分子任务,并行计算的目的主要是减少计算时间并且便于增加计算规模。并行计算技术包括:并行计算机体系结构,并行算法,并行程序设计等。

Git分支管理

在运用git管理代码的时候,有时需要修改代码。git提供了分支的功能,这样,可以很方便的添加功能,修改bug等,合理的运用分支,可以使代码的演进保持简介清晰,这样能够高效的管理代码,开发功能等。下面介绍一种管理分支的策略。

Linux Cgroups使用

Cgroups是linux内核的一个功能,用来限制,控制与分离一个进程组群的资源(如CPU、内存等)。Cgroups是管理虚拟化资源手段。它提供了一个虚拟的文件系统,是进行分组管理和各子系统设置的接口,所以要使用cgroups,必须挂载cgroups文件系统。通过挂载选项指定使用哪个子系统。

Linux系统监控

CPU监控

/proc/stat
user ( 15579 )    从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。
nice (99)      从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间
system (13680)  从系统启动开始累计到当前时刻,处于核心态的运行时间
idle (698457)   从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间
iowait (10939) 从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)
irq (40)           从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)
softirq (651)      从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)
stealstolen(0)     which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)
guest(0)        which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel(since 2.6.24)