Tag: Linux


这个问题折腾了我有一个星期了,因为最近一直在搞有关磁盘的I/O的测试,因此需要绕过或者关闭VFS的cache直接对磁盘进行读写。Google过之后发现基本上想要关闭cache是不可能的,只有想办法绕过了。于是很自然的想到了write()和read()这两个东西,可是当时并没意识到buffer跟cache并不是一个东西。write()跟read()虽然叫直接I/O但事实上他们只是绕过了buffer,也就是说在读入跟输出的时候不进行任何的缓存,但VFS本身的cache仍然存在,VFS仍然会选择在合适的时候将cache的数据写入磁盘。 于是找了很多方法,有的是通过drop cache的方法,就是”echo 1 > /proc/sys/vm/drop_caches”这样的方法,不过这种方法只能清除一次cache,读写一次,很是麻烦。于是果断放弃了这种不靠谱的方法。 后来想到了APUE上没有提到的一个O_DIRECT flag(因为APUE讲的是UNIX编程,当然没必要照顾到GNU Linux特有的东西)。具体怎么用呢,下面就来说说。 首先在文件头需要定义 #define _GNU_SOURCE 然后,这个东西用在open()获得文件描述符时所填写的第二个参数,也就是open(path,flag,mode)的第二个参数。比如你要以写方式创建一个路径为”/home/user/test.test”新文件,并且要直接I/O绕过cache,就可以这样写: int fd=open(“/home/user/test.test”,O_WRONLY|O_CREAT|O_DIRECT,S_IRUSR|S_IWUSR); 之后在你需要read()或者write()的时候,传入的buffer的首地址,以及buffer的大小都必须跟文件系统的page size对齐。这个page size可以通过getpagesize()获得。memalign()可以用来得到这样一个buffer: int buffersize = getpagesize()*page_num; int pagesize=getpagesize(); char * buffer = memalign(pagesize, buffersize); 之后你就可以用这个buffer来read()或者write()了。如: read(fd,buffer,buffersize); 要注意的是,在2.4以前的kernel里,buffersize必须是页大小的整数倍,并且buffer指向的地址也必须是页大小的整数倍。用上面的简单计算就可以得到满足条件的buffer。之后的I/O便是完全绕过cache的direct I/O了。 PS:完成这个之后,周末就可以放心的回家了,很开心。


这篇东西不归到Programing里,因为这里完全不涉及到程序。一、准备要架设你自己的网站,首先要了解一些概念,如什么是IP,什么是域名,什么是服务器。对这些简单的概念有了解即可。windows用户可以用windows的IIS亲自架设服务器感受下一个网站到底是什么样子的,Linux用户推荐用Apache,这是一个开源软件,也是目前主流的个人网站常用服务器。就我个人而言我很喜欢LAMP,Linux+Apache+MySql+Php。二、域名和服务器首先需要获得一台可以运行WEB程序提供WEB程序的服务器,就个人而言,购买虚拟空间是个不错的选择,因为便宜。主流虚拟空间一般为ASP空间和PHP空间,国内提供的ASP空间较多,而国外的PHP空间也是不错的选择,当然选择PHP空间需要对Linux有一定理解。最开始,可以尝试免费试用一个正规虚拟空间,当然你需要找到一个免费试用的虚拟空间提供商。一般这类免费的空间会提供一个免费域名,当然不可能是顶级域名-_-。当真的觉得有必要投入一笔资金来正式搞一搞自己的网站的时候,就可以买个顶级域名加付费的空间了。这两项每年大概300RMB。买到域名和虚拟空间后要将这个域名绑定到你的虚拟主机之上,这些一般可以在域名提供商的网站上按提示顺利完成。三、上传网站多数虚拟空间都提供FTP方式上传你的网站。选择合适的FTP软件按照虚拟主机提供的帐号和密码以及地址连接到FTP上就可以上传文件了。如果你对web programing没啥了解,选择成品程序上传,按照提示,一般可以正常架设起自己的网站。这种产品比如,discuz的论坛,wordpress的个人博客系统。上传之后,用浏览器访问你的域名,简单设置之后你的网站就算开张了。四、SEO这部分主要就是让你的网站能被搜索引擎搜索到。关于SEO还是很有趣的一部分,大型网站几乎都有自己专业的SEO团队。举例来说,在GOOGLE里输入SB搜到第一个结果就是个SEO实验页,也比较成功。当然,如果你企图用SEO进入BAIDU的首页,我劝您还是省下力气多去完善自己的网站吧。设想你有个www.****.com的域名,并且在GOOGLE搜索中搜索****第一个结果就是你的网站该是多拉风一件事。 总之,建设个人网站其实可以完全没有PROGRAM知识,但若想有自己独一无二的网站,并实现自己涉及的功能,自己写程序是必须的。


openCV,搞一搞图像识别。LaTeX,这东西早就想搞了,因为实在无法忍受PPT,WORD对数学符号以及公式的支持。PHP的DOM,想变化下以后的开发模式,实现更好的前后台分离。Smarty,一个php开发模板,可以实现前后台分离,尝试下。操作系统,把图书馆那本看完。FLEX,这个东西,还是挺有趣的,就是一直不太习惯。还有一个月零7天,开始GRE写作特训,每天1I+2A。12月单词争取过3遍,每星期争取浏览一期TIMES。就这些吧,够我搞的了,或者是我被这些东西搞。

CodePhoto.WTF © 2025