
学习Linux的心得
正好我上午正在看的这篇:======================== 解答:学习Linux的四个步骤 假设你是计算机科班出身,计算机系的基本课程如数据结构、操作系统、体系结构、编译原理、计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高 从安装使用=>linux常用命令=>linux系统编程=>内核开发阅读内核源码 其中学习linux常用命令时就要学会自己编译内核,优化系统,调整参数 安装和常用命令书太多了,找本稍微详细点的就ok,其间需要学会正则表达式 系统编程推荐《高级unix环境编程》,黑话叫APUE 还有《unix网络编程》 这时候大概还需要看资料理解elf文件格式,连接器和加载器,cmu的一本教材中文名为《深入理解计算机系统》比较好 内核开发阅读内核源码阶段,从写驱动入手逐渐深入linux内核开发 参考书如下《linux device drivers》,黑话叫ldd 《linux kernel development》,黑话叫lkd 《understading the linux kernel》,黑话叫utlk 《linux源码情景分析》 这四本书为搞内核的必读书籍 最后,第三阶段和第四阶段最重动手,空言无益,光看书也不罩,不动手那些东西理解不了 学习linux\\\/unix编程方法的建议 建议学习路径: 首先先学学编辑器,vim, emacs什么的都行。
然后学make file文件,只要知道一点就行,这样就可以准备编程序了。
然后看看《C程序设计语言》K&R,这样呢,基本上就可以进行一般的编程了,顺便找本数据结构的书来看。
如果想学习UNIX\\\/LINUX的编程,《APUE》绝对经典的教材,加深一下功底,学习《UNP》的第二卷。
这样基本上系统方面的就可以掌握了。
然后再看Douglus E. Comer的《用TCP\\\/IP进行网际互连》第一卷,学习一下网络的知识,再看《UNP》的第一卷,不仅学习网络编程,而且对系统编程的一些常用的技巧就很熟悉了,如果继续网络编程,建议看《TCP\\\/IP进行网际互连》的第三卷,里面有很多关于应用协议telnet、ftp等协议的编程。
如果想写设备驱动程序,首先您的系统编程的接口比如文件、IPC等必须要熟知了,再学习《LDD》2。
对于几本经典教材的评价: 《The C Programing Language》K&R 经典的C语言程序设计教材,作者是C语言的发明者,教材内容深入浅出。
虽然有点老,但是必备的一本手册,现在有时候我还常翻翻。
篇幅比较小,但是每看一遍,就有一遍的收获。
另外也可用谭浩强的《C语言程序设计》代替。
《Advanced Programing in Unix Envirement》 W.Richard Stevens:也是非常经典的书(废话,Stevens的书哪有不经典的
),虽然初学者就可以看,但是事实上它是《Unix Network Programing》的一本辅助资料。
国内的翻译的《UNIX环境高级编程》的水平不怎么样,现在有影印版,直接读英文比读中文来得容易。
《Unix Network Programing》W.Richard Stevens:第一卷讲BSD Socket网络编程接口和另外一种网络编程接口的,不过现在一般都用BSD Socket,所以这本书只要看大约一半多就可以了。
第二卷没有设计到网络的东西,主要讲进程间通讯和Posix线程。
所以看了《APUE》以后,就可以看它了,基本上系统的东西就由《APUE》和《UNP》vol2概括了。
看过《UNP》以后,您就会知道系统编程的绝大部分编程技巧,即使卷一是讲网络编程的。
国内是清华翻译得《Unix网络编程》,翻译者得功底也比较高,翻译地比较好。
所以建议还是看中文版。
《TCP\\\/IP祥解》一共三卷,卷一讲协议,卷二讲实现,卷三讲编程应用。
我没有怎么看过。
,但是据说也很经典的,因为我没有时间看卷二,所以不便评价。
《用TCP\\\/IP进行网际互连》Douglus.E.Comer 一共三卷,卷一讲原理,卷二讲实现,卷三讲高级协议。
感觉上这一套要比Stevens的那一套要好,就连Stevens也不得不承认它的第一卷非常经典。
事实上,第一卷即使你没有一点网络的知识,看完以后也会对网络的来龙去脉了如指掌。
第一卷中还有很多习题也设计得经典和实用,因为作者本身就是一位教师,并且卷一是国外研究生的教材。
习题并没有答案,留给读者思考,因为问题得答案可以让你成为一个中级的Hacker,这些问题的答案可以象Douglus索取,不过只有他只给教师卷二我没有怎么看,卷三可以作为参考手册,其中地例子也很经典。
如果您看过Qterm的源代码,就会知道Qterm的telnet 实现部分大多数就是从这本书的源代码过来的。
对于网络原理的书,我推荐它,而不是Stevens的《TCP\\\/IP祥解》。
《Operating System - Design and Implement》这个是讲操作系统的书,用Minix做的例子。
作者母语不是英文,所以英文看起来比较晦涩。
国内翻译的是《操作系统设计与实现》,我没看过中文版,因为翻译者是尤晋元,他翻译的《APUE》已经让我失望头顶了。
读了这本书,对操作系统的底层怎么工作的就会 有一个清晰的认识。
《Linux Device Driver》2e ,为数不多的关于Linux设备驱动程序的好书。
不过内容有些杂乱,如果您没有一些写驱动的经验,初次看会有些摸不着南北。
国内翻译的是《Linux设备驱动程序》第二版,第一版,第二版的译者我都有很深的接触,不过总体上来说,虽然第二版翻译的有些不尽人意,但是相比第一版来说已经超出了一大截。
要读这一本书,至少应该先找一些《计算机原理》《计算机体系结构》的书来马马虎虎读读,至少应该对硬件和计算机的工作过程有一些了解。
对 linux的学习
第一点:我学习linux是在大二的时候。
那时候装的发行版本是redhat。
可是刚刚开始的时候声卡的驱动装不上,其它比如说显卡,网卡都弄好。
但是由于没有声音所以就没坚持用下去。
几年后再次弄那个声卡的时候还是弄不上,可是这次的决心比较大,所以查了n多的资料;请教了很多人。
终于被我弄好了。
总结:无论是学习linux还是其它,决心是要摆在很重要的位置的。
第二点:前两年的时候,对linux以及gnu的很多开源的东西产生了浓厚的兴趣;所以就开始深入的研究linux。
甚至使用linux不久就开始阅读内核代码。
可是到今天我还没真正意义上理解内核的结构,以及很多模块的功能,及实现原理。
总结:不要在错误的时间做错误的事情。
具体的讲有那么几层意思:a》不要动不动就去读kernel代码;b》不要太高估自己的能力;c》千万要在有一定知识积累的时候才能去研究更深层次的东西;d》要带的问题去学习,而不是空洞地进行技术研究;研究技术本身是的作风。
第三点:linux上面的开源的软件 ,和linux所包含的开放的精神,文化和内涵;它们是比更有价值的。
总结:选择了linux其实也是选择了一种文化,选择了一种信仰;既然把这个选择上升到那么高的层次,那么任何的比较(与其它系统)都是不明智的;至少是不会有很大价值的。
接触(安装一个发行版本) =》 熟悉(用它来完成一些日常的工作)=》 创造(在前面几步的基础上做一些改进,创新)。
当然在这样一个过程中有很多的功课要做, 方面的知识当然是很重要的;但是不是很急迫,所以可以在后来有基础了再去了解;至于象也是一样。
我个人做了这样一个学习的等级划分: 1。
重要,紧急: 熟悉,熟悉基本操作命令(注意是基本),的使用(使用vi或者emacs但是不建议都学,因为本人当初就是想都精通,后来惹了不必要的麻烦;现在专心用vi)。
2。
重要,不紧急: ,grep,sed,awk, perl,gcc,gdb(其实这些东西的学习是需要很长的过程,但是它的使用又是贯穿整个系统;之所以重要是因为它们很好地体现了linux的精神;之所以不紧急并不是真的不紧急,是因为它们本身就是一个很伟大很复杂的软件需要慢慢消化吸收而不是囫囵吞枣)。
3。
不重要,紧急: 一个绚丽的桌面,一些幽雅的桌面小插件(linux的强大事实上并不在其桌面环境,虽然gnome和kde都非常的幽雅;之所以不重要是相对于其它更重要的东西而言的,而之所以紧急是因为这些东西会在很短的时间内catch住你的心,你的兴趣;而兴趣是支撑你接下去学习过程的最最重要的东西---这一点请相信)。
4。
不重要,不紧急: 将windows上常用的东西移到linux上,比如要在wine上玩wow或者cs(原因是显而易见的,开航母去钓鱼肯定没有划着小船来的有情调) 最后我个人的建议是:了解的组成,工作原理要从了解它上面运行的应用软件开始。
了解它上面的应用软件则要通过日复一日地使用它。
我不觉得哪一本书能达到你期望的那种效果;但是如果在你坚持使用linux的过程中总是不断地去总结和接受新的东西,那么不要过很久你会发现linux是你的一个很好的助手。
我想学习LINUX
LINUX跟DOS差不多 就是大概了解一下LINUX的结构之后记命令就行了================================不可误人子弟,,,记得以前也在知道里回答过类似的问题,=======================================================================我个人在这里说一下在学习linux的这几年的一点心得,不敢说有什么成功的经验,但是有很多失败的教训。
第一点:我学习linux是在大二的时候。
那时候装的发行版本是redhat。
可是刚刚开始的时候声卡的驱动装不上,其它比如说显卡,网卡都弄好。
但是由于没有声音所以就没坚持用下去。
几年后再次弄那个声卡的时候还是弄不上,可是这次的决心比较大,所以查了n多的资料;请教了很多人。
终于被我弄好了。
---------总结:无论是学习linux还是其它,决心是要摆在很重要的位置的。
第二点:前两年的时候,对linux以及gnu的很多开源的东西产生了浓厚的兴趣;所以就开始深入的研究linux。
甚至使用linux不久就开始阅读内核代码。
可是到今天我还没真正意义上理解内核的结构,以及很多模块的功能,及实现原理。
----------总结:不要在错误的时间做错误的事情。
具体的讲有那么几层意思:a》不要动不动就去读kernel代码;b》不要太高估自己的能力;c》千万要在有一定知识积累的时候才能去研究更深层次的东西;d》要带的问题去学习,而不是空洞地进行技术研究;研究技术本身是学院派的作风。
第三点:linux上面的开源的软件,和linux所包含的开放的精神,文化和内涵;它们是比linux内核更有价值的。
--------总结:选择了linux其实也是选择了一种文化,选择了一种信仰;既然把这个选择上升到那么高的层次,那么任何的比较(与其它系统)都是不明智的;至少是不会有很大价值的。
第四点:回到问题本身,如何去学习它
我个人认为应该遵循以下的顺序:接触(安装一个发行版本) =》 认识(至少了解它能做什么) =》 熟悉(用它来完成一些日常的工作)=》理解(在长时间的使用过程中了解为什么linux是这样解决问题的)=》创造(在前面几步的基础上做一些改进,创新)。
当然在这样一个过程中有很多的“功课”要做,操作系统方面的知识当然是很重要的;但是不是很急迫,所以可以在后来有基础了再去了解;至于象保护模式也是一样。
我个人做了这样一个学习的等级划分:1。
重要,紧急:熟悉目录结构,熟悉基本操作命令(注意是基本),文本编辑器的使用(使用vi或者emacs但是不建议都学,因为本人当初就是想都精通,后来惹了不必要的麻烦;现在专心用vi)。
2。
重要,不紧急:正则表达式,grep,sed,awk, perl,gcc,gdb(其实这些东西的学习是需要很长的过程,但是它的使用又是贯穿整个系统;之所以重要是因为它们很好地体现了linux的精神;之所以不紧急并不是真的不紧急,是因为它们本身就是一个很伟大很复杂的软件需要慢慢消化吸收而不是囫囵吞枣)。
3。
不重要,紧急:一个绚丽的桌面,一些幽雅的桌面小插件(linux的强大事实上并不在其桌面环境,虽然gnome和kde都非常的幽雅;之所以不重要是相对于其它更重要的东西而言的,而之所以紧急是因为这些东西会在很短的时间内catch住你的心,你的兴趣;而兴趣是支撑你接下去学习过程的最最重要的东西---这一点请相信)。
4。
不重要,不紧急:将windows上常用的东西移到linux上,比如要在wine上玩wow或者cs(原因是显而易见的,开航母去钓鱼肯定没有划着小船来的有情调)最后我个人的建议是:了解操作系统的组成,工作原理要从了解它上面运行的应用软件开始。
了解它上面的应用软件则要通过日复一日地使用它。
我不觉得哪一本书能达到你期望的那种效果;但是如果在你坚持使用linux的过程中总是不断地去总结和接受新的东西,那么不要过很久你会发现linux是你的一个很好的助手。
谁有linux的学习心得
针对某一方面,例如shell编程之类的
急....
带着目的去学习,要完成一定的任务。
慢慢来,首先学会基本的文件操作,用熟vi编辑器,能够游刃有余的配置自己的网络。
会安装各种linux上的软件包。
java学习心得
目前,Java已成全球编程语言的领头羊,它应用领域广泛、前景可观,升职加薪也是指日可待的事。
虽说它的前景可观,但回想下自己走过的路,那真是困难重重啊,接下来就给大家分享几点学习心得,希望能帮助到初学者。
一、学习要脚踏实地,不可超值过急对于初学者来说一定要奠定好基础,要脚踏实地的学习,为日后学习高深知识奠定好基础,要给自己定个学习计划,按照流程去学习,不要学了一半JVM后觉得没啥意思,又去学SWT,结果发现对这个程序也没多大兴趣,有转去学别的,这样浮躁的性格导致你什么也学不会,建议大家一定要将入门教程吃透,平时多看视频讲解,把“基础知识”打牢固是很重要的。
二、看书不是重点,重点是多实践有了良好的开端还要养成良好的学习习惯,平时不单单是多看书本知识,自己在看书的时候还要把书上的例子亲手敲到电脑上去实践,千万不要图省事,就照抄、复制,只有实践才知道自己是否真的会写代码。
虽然说理解编程语言是首要,但也要勤动手、多思考,多编一些例子,做到将理论和实践相结合,这样才能真正的掌握这门技能。
三、由浅入深,不断赶紧程序编写难度每个人都懂得学习是件漫长又枯燥的事情,所以每个想学Java的学者都要做好心理准备,在有准备后要给自己养成个好习惯,先从简单的程序入手,可以通过命令行的方式实现,功能可以有不足,但是随着学习的深入,你可以不断的完善这个程序,直到你把它做成一个完美、性能全的程序后,你才真的学透、学扎实了。
四、遇到难题要学会思考和总结每一个阶段都要对上一阶段做个反思和总结,不要丢了西瓜捡了芝麻,最后学一个丢一个,要经常把自己在学习过程遇到的难题和困惑记录下来,定时的去温习和反思,还要记下自己解决问题的经验和技巧,不断的浏览这些东西,将这些东西吃透,过一段时间,你会发现自己成长了不少。
五、定期研究一个技术,并将其学懂、学精根据市场出现的新奇玩应,不断的去学习和探索,所研究的技术一定要比目前技术水平高,只有不断的探索和专研才能提升个人能力,我相信这一点一般的程序员都没能做到,如果你是抢先做到这一点,你的能力肯定比他人都要强很多。
总而言之,要不断的从实践中学习,要脚踏实地的学好技术,勤奋联系,也要善于利用网上的资源,譬如蓝鸥Java视频教程,从他人身上吸取经验和教训,让提升个人能力不在成为纸上谈兵的事。



