Linuxer's Blog

世界很大,我太渺小
Linux cached and buffers memory

学习感悟

Linuxer posted @ 2010年10月15日 00:02 in 未分类 , 1718 阅读

最近做事做着,倒是挺忙活的,但发现自己的基础是越来越生疏了。以前看过的东西,最近都没什么概念啦。也是这屁事做的没一点技术含量,用到的东西比较少。这些时间来的学习,感悟挺多的。学习需要技巧,IT技术行业的学习更需要技巧,信息量太大,更新太快!这里总结一些以后要注意的学习技巧。

 

1. 做事情应该有结构和流程框架的思维方式,就像写代码,不能一股脑儿的奔着目标功能去,要有结构和流程。看代码也是的,要去看Coder的代码结构风格和整体的框架。尤其是阅读一些优秀的开源代码,你要相信你能从中学到很多东西。关注代码中的知识点很重要,这样你能有印象(巩固了基础),会思考别人是怎么用的,这样用有什么好处。就像下面这段代码:

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <string.h>

#include <sys/stat.h>
#include <fcntl.h>

void event_loop()
{
	for(;;) {
		sleep(10);
		printf("Do something...\n");
	}
}

void main()
{
	pid_t pid;
	int fd;
	char buf[64];

	pid = fork();
	if(pid < 0)
		exit(1);
	if(pid > 0)
		exit(0);

	fd = open("/var/run/daemon.pid", O_WRONLY|O_CREAT, 644);
	if(fd < 0) {
		printf("unable to create pid file.\n");
		exit(1);
	}
	if(lockf(fd, F_LOCK, 0) < 0) {
		printf("unable to lock pid file.\n");
		exit(1);
	}

	ftruncate(fd, 0);
	sprintf(buf, "%d", getpid());
	write(fd, buf, strlen(buf));

	close(0);
	open("/dev/null", O_RDWR);
	dup2(0, 1);
	dup2(0, 2);

	setsid(); // Create a new session.

	chdir("/");

	umask(0);

	event_loop();
}

这是一个简单的后台守护进程的框架,多去关注这种架构,而不是被Coder带着跟着他的流程走,这样我们虽然会在迷宫中找到出口,但我们出去了,依然对迷宫一无所知。

2.  多看代码;代码里面存在真理,其他一切都是猜想。我有个同事说他看了iscsi-target的代码,感悟很深,对用户态,内核态交互,对以前看的LDD3有了更深的理解(可以称为升华?)。

3. 多看一些经典书籍,如O'Reilly等。工作上的事,很多都是表象的事情,或者由于做的太专,而长期扎在里满,或许你的工作效率更高了,但知识积累并没有随着效率提高而增长。所以业余时间的学习很重要,我们这个行业是最需要学习的行业,不断的学习!

4. 代码输出或文字输出;曾听一位前辈讲课说,输出的东西,才是真正自己的东西。很多人应该有这样的经历,就是你知道这事应该怎么做,你上机很快就能把它写出来,但让你说出原理,说的让别人听的明白(甚至一些不懂技术的人),这会让你反复的解释,反复的比划或许别人还是没能听懂。把一些多维,结构性的东西压成一根线条样的语言表述出来,确实需要很好的组织语言的能力。写代码也是的,把你的代码一行一行,一个字母一个字母的输出来,表述你的设计,也要经过长期的实践才能。我现在写这篇blog就觉得我吸收前辈课堂上的经验,但却一塌糊涂的表述他的观点,这也是为什么要常要求自己写blog的原因。

 

经验、技巧--> 多看代码,书籍 --> 思考,总结 --> 写代码,blog

强调方法          强调输入                强调思考           强调输出

知识需要流动!


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter