天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,增益其所不能
Java本身是一种设计的很easy,很静止的语言,所以Java背后的原理也很easy,归结起来就是两点:
1、JVM的内存管理
理解了这一点,全部和对象相关的问题统统都能解决
2、JVM Class Loader
理解了这一点,全部和Java相关的配置问题,包含各种App Server的配置,应用的公布问题统统都能解决
就像张无忌学太极剑,本质就是一圈一圈的画圆,你要是懂得了太极剑的本质,那么太极剑就那么一招而已,本身是非常easy学的,仅仅是难度在于你要可以举一反三,化一式剑意为无穷无尽的
剑招,这就须要一点悟性和不断的实践了;反过来说,假设学剑不学本质,光学剑招,你就是学会了1万招,碰到了第1万零1招,还是不会招架,败下阵来。
技术世界本来就是丰富多彩,企图统一标准,实际上也做不到,可是世界本质事实上并不复杂。学习技术,特别是某种详细的软件工具的时候,应该学会迅速把握事物的本质,不要过多搅缠细
节。软件工具应该为我所用,而不是我被工具所驾驭。当你具备了对整个J2EE架构的设计和实施的能力,你还会被详细的工具束缚吗?哪种工具适合你的架构,你就用什么,哪种不适合你,
你就抛弃它,软件皆臣服于你的脚下,而不是你被什么软件牵着鼻子走,到了这样的程度,你难道还害怕学习什么新的软件?
我自己也在一直朝着这个方向努力,在我心中,设计软件,架构是第一位的,採用什么技术要为架构服务。假设我发现什么技术对我的架构来说非常重要,那么我会花时间去学习,去钻研,就
像我花时间去钻研ORM一样,假设我认为什么技术对我的架构来说没实用,即使技术再火爆,我也不去碰它。
总之要学会抓住本质,驾驭技术,而不是被技术所驾驭。当你掌握了本质原理,事实上学什么都非常快,毕竟都是相通的,我先看JDO,后看Hibernate,事实上两者就非常相似,所以学得非常快,以后
假设有工作须要,要我学习别的ORM,那我也不会认为有什么困难的,一样手到拿来。
更有说服力的是Unix类的操作系统,那就更类似了,仅仅要抓住了Unix最本质的几点,比如shell命令和编程,文件系统结构和配置,系统启动原理和过程,全部的Unix都是无师自通的。我自
己会用Linux,FreeBSD,SCO Unix, Solaris,HP-UX 和 AIX等6种Unix,更体会到一通百通的道理。
拿刚出了光明顶密道的张无忌来说吧,(我非常喜欢张无忌这个角色),他也没有练过什么武功,可是他已经把天下武学之本质:九阳神功 +
乾坤大挪移学会了,所以无论什么功夫,他都是看一遍就会,立即为我所用,看了空性用了一遍龙爪手,就会用龙爪手来破对方;和昆仑派打了一架,就会用昆仑剑法和灭绝师太过招;七伤
拳更是无师自通;太极拳也是看一遍就会。
总之,学习方法还是非常重要,别被五花八门的技术给搞不清学习方向了。