学习感悟
最近做事做着,倒是挺忙活的,但发现自己的基础是越来越生疏了。以前看过的东西,最近都没什么概念啦。也是这屁事做的没一点技术含量,用到的东西比较少。这些时间来的学习,感悟挺多的。学习需要技巧,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
强调方法 强调输入 强调思考 强调输出
知识需要流动!