linux内核同步方法-原子操作

转自:edsionte's TechBlog

原子操作

原子操作用于执行轻量级、仅执行一次的操作,比如修改计数器,某些条件下的增加值或设置位等。原子操作指的是指令以原子的方式执行。之所以用原子来修饰这种操作方式是因为它们均不可再分。也就是说,原子操作要么一次性执行完毕,要么就不执行,这些操作的执行过程是不可被打断的。原子操作的具体实现取决于体系架构,以下代码如无特别声明,均来自linux/arch/x86/include/asm/atomic.h中

内核中提供了两组原子操作的接口:原子整形操作和原子位操作。前者是一组对整形数据的操作,后者则是针对单独的位操作。通过上面的叙述我们可以知道,这写操作接口完成的动作都是原子的。

继续阅读

linux shell 字符串操作(长度,查找,替换)详解

转自 沉于思考,默默学习!

在做shell批处理程序时候,经常会涉及到字符串相关操作。有很多命令语句,如:awk,sed都可以做字符串各种操作。 其实shell内置一系列操作符号,可以达到类似效果,大家知道,使用内部操作符会省略启动外部程序等时间,因此速度会非常的快。

继续阅读

Linux shell脚本编写基础

在进行linux测试时编写脚本是必不可少的,Shell脚本的名称可以随便定义,也不要什么后缀名,例如可以写abc,smartzip这类名称,运行时只要键入

./smartzip就能运行脚本了。。

每行命令开头处不用就空格也行。。

第1部分. Linux 脚本编写基础

1.1 语法基本介绍

1.1.1 开头

程序必须以下面的行开始(必须方在文件的第一行):

#!/bin/sh

符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。

当编辑好脚本时,如果要执行该脚本,还必须使其可执行。

要使脚本可执行:

编译 chmod +x filename 这样才能用./filename 来运行
继续阅读

Linux chmod命令

之前用chmod命令一直也没注意chmod go-w xxx, chmod ugo+x xxx这类命令的意义,只是简单的766、+x、+w之类,所以特意把这篇文章转过来给备忘。

转自http://blog.csdn.net/linuxgroup

chmod 命令

用途
更改文件方式。

语法

要用符号更改文件方式
chmod [ -R ] [ -h ] [ -f ] [ [ u ] [ g ] [ o ] | [ a ] ] { { - | + | = } [ r ] [ w ] [ x ] [ X ] [ s ] [ t ] } { File ... | Directory ... }

要用数字更改文件方式
chmod [ -R ] [ -h ] [ -f ] PermissionCode { File ... | Directory ... }

继续阅读

Debian6国内更新源

网上找到到更新源,转载到此。

# ------------------------------------------------------------------------------
# 主源
# 必须,一般的包都从此获取。

# 香港主站
deb http://ftp.hk.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.hk.debian.org/debian squeeze main contrib non-free

# 网易镜像
deb http://mirrors.163.com/debian squeeze main contrib non-free
deb-src http://mirrors.163.com/debian squeeze main contrib non-free

# 台湾主站
deb http://ftp.tw.debian.org/debian squeeze main contrib non-free
deb-src http://ftp.tw.debian.org/debian squeeze main contrib non-free

# 搜狐镜像
deb http://mirrors.sohu.com/debian squeeze main contrib non-free
deb-src http://mirrors.sohu.com/debian squeeze main contrib non-free

# ------------------------------------------------------------------------------
# 计划更新
# 通常不必,发布小版本之前的测试库。该库包括所有的安全更新,有此则无需再设置安全
# 更新源。

# 香港主站
deb http://ftp.hk.debian.org/debian squeeze-proposed-updates main contrib non-free
deb-src http://ftp.hk.debian.org/debian squeeze-proposed-updates main contrib non-free

# 网易镜像
deb http://mirrors.163.com/debian squeeze-proposed-updates main contrib non-free
deb-src http://mirrors.163.com/debian squeeze-proposed-updates main contrib non-free

# 台湾主站
deb http://ftp.tw.debian.org/debian squeeze-proposed-updates main contrib non-free
deb-src http://ftp.tw.debian.org/debian squeeze-proposed-updates main contrib non-free

# 搜狐镜像
deb http://mirrors.sohu.com/debian squeeze-proposed-updates main contrib non-free
deb-src http://mirrors.sohu.com/debian squeeze-proposed-updates main contrib non-free

执行make时报告没什么可做的解决方法

当我们编写好Makefile并执行make时,我们有时会碰到类似下面的提示:

make: 没有什么可以做的为 `default'。

据说碰到这种情况的原因很多,就是因为make跑到default时发觉自己并没有被安排什么工作,但是其实我们是安排的不少活给它的。

我们开发的时候喜欢使用空格代替tab缩进,这样就有可能导致上面的问题。比如我们使用了vim,同时我们还没事写点python程序娱乐那么一下,那么就十分有可能使用了“:set expandtab”打开了空格代替tab缩进的开关。所以我们每次写makefile的时候不要忘记使用“:set noexpandtab”来关闭空格代替tab缩进开关。当然如果你希望彻底关闭,也可以到你的vimrc中删除“set expandtab”。

Linux下豆瓣电台桌面版

虽然我平时主要弄web编程,现在的浏览器和web标准也越来越强大,但是随着越来越多的JS使用,web浏览器占用的资源也越来越多。所以如果一个不错的应用出现了对应的桌面版,我一般都会找到并安装。

这两天我一直在折腾linux下的豆瓣电台。

首先是一些基于AIR的富客户端,这些客户端普遍占用资源比较多。所以试用后果断的删除掉了。

其次是rhythombox和banshee的插件,个人觉得这两个插件还不错。资源占用少,因为放出的时间不长,所以难免有些小BUG,目前banshee的插件偶尔会崩溃,貌似清空一下播放队列就好了。但是如果您不是ubuntu11.04用户,这两个软件都需要更新到最新版本。下面是ubuntu10.10的banshee PPA:

sudo add-apt-repository ppa:banshee-team/banshee-unstable
sudo apt-get update && sudo apt-get install banshee banshee-community-extensions

这是banshee 豆瓣FM插件地址:http://code.google.com/p/banshee-doubanfm/

最后想要重复造轮子的人们可以自己造一个豆瓣电台桌面版,现在有很多地方提供了接口的调用方法。经过测试豆瓣电台api2.0可以使用,但是描述不完整。同时rhythombox和exaile的插件同时使用了一个叫做libdoubanfm.py的库,大家也可以调用这个库。重复造轮子可以定制适合自己的应用,当然也最费时间。

折腾了两天,写了个半成品,用mplayer播放取回来的歌曲,因为是自己按照描述不完整的接口描述写的,所以存在一些问题。和大部分重复造轮子的人一样,只是为了学习和研究而已。希望爱折腾的人能写出符合自己想法的东西。