一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
回答不出这个问题的人是不会被雇佣的。我认为这是区分C程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量。不懂得volatile内容将会带来灾难。
阅读全文……linux初学者,体验者的最爱,
unix体验中心还真是个好地方,注册帐号,就可以进行体验拉。
Unix体验中心(Unix-Center.Net)的目标是为研究、学习和使用各种版本的Unix和类Unix操作系统的教师、学生和工程技术人员提供一个体验和测试各种版本的Unix和类Unix系统的软硬件平台。该平台能够为所有注册用户免费提供如下服务:
-- SSH登录
阅读全文……估计很多linux的使用者都遇到过df和du得到的结果不通的问题,这是因为2个命令的原理不同,df是针对分区文件系统的,du是针对每个文件的累加值,所以df的速度会比du快很多,遇到这个问题,基本上都是因为删除了很多打开的文件导致的,可以通过 lsof 命令进行查看,如果有很多标示为(deleted)的,可以重新启动相应的进程,就可以解决了,当然,如果重启系统也是可以解决的。
工作中几次rpm工作异常,有的是运行rpm就直接报错,有的是运行rpm以后一直没办法返回,最后都是通过下面的方式解决:
rm -f /var/lib/rpm/__db*
Unix编程常见问题解答(FAQ / Frequently Asked Questions)(v1.37)(中文版 v0.1.0)
关于这篇“常见问题解答”
************************
阅读全文……只要不用明文传输Http数据,就可以防止被过滤,下面只做配置,不做解释,以免有人将不健康的内容引入国内互联网。
1、ssl加密传输协议数据。
cache_peer A parent 443 3130 ssl
acl XXX dstdomain XXX.com
cache_peer_access A allow XXX
阅读全文……linux和windows都提供这样一个dns缓存机制,可以避免重复查询dns服务器,同时也提高了访问速度,但是不可必免得会遇到dns修改后补能立即生效的问题。
linux下面是由nscd服务来进行域名解析缓存,只要我们重新启动该服务就可以了,如果暴力一点,也可以直接删除/var/db/nscd下面相应的文件。
顺便提一下,dns解析和hosts的使用顺序问题,默认情况下,系统优先使用hosts配置,然后使用dns解析,如果处于安全考虑,防止钓鱼网站恶意修改,可以通过修改etc/host.conf来调整
主要差别就在回车换行上面
[code]#include <string.h>
#include <stdio.h>
#define MAX_LEN 1000
阅读全文……没必要恐慌,没必要害怕,只要做好防范就好了,毕竟不是地震的充分条件。 福州新闻网讯 19日,连江县东湖镇一条县道上突然出现大批的小蟾蜍,引来众多村民围观。有关专家解释,这是气候变化所致。
19日下午2时许,记者赶到现场,在一条连接东湖镇祠台村与洋门村,名为“飞马路”的县道上,记者看到了大批小蟾蜍,在蟾蜍最密集的地方,1平方米的路面上就有十几只。这条宽约两米的县道,一侧是双头坝水库,另一侧是几座不知名的小山,成群结对的小蟾蜍从水库方向横穿马路往小山上行进,黑压压绵延500多米地。
记者注意到,小蟾蜍长约两厘米。最早发现的祠台村村民江先生告诉记者,上午11时许,他从该路段路过,发现路面上爬满了小蟾蜍。一位70多岁的老人说,他从没见过这么多的蟾蜍。
阅读全文…… 如果有使用双网卡服务器一定会遇到路由问题,虽然使用两个网卡的IP对外提供服务,但是却发现最后只有一个网卡在使用,而且在同网段内查看2个IP的mac地址也是一样的,都是因为路由表里面的default规则造成,如果需要使用双网卡提供服务,还需要如下配置路由
[code]ip ro add default via 192.168.0.22dev eth1 table 200
ip ro ls table 200
ip ru add from 192.168.0.25 table 200
阅读全文……受老同事的误导,我一直以为lvs需要进行端口绑定,因为这个问题,也尝试了很多新的方案来解决问题,今天才偶然发现,原来lvs本身就支持多端口转发功能。
man ipvsadm,可以看到相关信息:
[code]SYNOPSIS
ipvsadm -A|E -t|u|f service-address [-s scheduler]
[-p [timeout]] [-M netmask]
阅读全文……今晚公司数据库服务器系统异常,于是重起了服务器,可是数据库却怎么也起不来,查看错误日志,发现:
[code]080402 21:38:53 mysqld started
080402 21:38:53 InnoDB: Started; log sequence number 12 1999296381
/usr/local/mysql/libexec/mysqld: File './mysql-bin.000067' not found (Errcode: 2)
080402 21:38:53 [ERROR] Failed to open log (file './mysql-bin.000067', errno 2)
阅读全文……今天上架了1台新的服务器用来替换一台旧的dns服务器,还是按照通常的步骤安装了相关的bind包,修改了配置文件,启动失败,检查系统日志发现:
[code]Mar 20 13:43:41 CSZ071125 named: named startup succeeded
Mar 20 13:43:41 CSZ071125 named[15754]: loading configuration from '/etc/named.conf'
Mar 20 13:43:41 CSZ071125 named[15754]: listening on IPv4 interface lo, 127.0.0.1#53
Mar 20 13:43:41 CSZ071125 named[15754]: listening on IPv4 interface eth0, 123.103.64.158#53
阅读全文……