本帖最后由 刘蕴学 于 2012-10-11 20:30 编辑
首先就是基础重要不重要,这个不好做定论,因为看你需要掌握的程度,黑马这边的课程需要基础在视频里都有,老毕的25天和张老师的高新技术,这些全部会用到,把这些全看熟了,并掌握原理才是关键,你去看什么字符串有操作创建几个对象这种的,自己提高可以,但对听课无帮助,除非你已经进入内存管理或者告诉缓存等方面的应用才会逐渐考虑对象的多少,占用内存,以及字符串常量池引起的浅溢出等等。
关于基础,比较典型的例子是,就拿动态代理来说,你可以研究下他的实现原理,这种模式在很多编程方面将会用到,并非仅是工具的使用,使用工具的仅仅是码农而已,掌握原理并应用在自己的代码中才最终是你的知识。
其次,关于其他视频应该掌握多少,有些人把jdbc,web, ssh等等全看了,以为当是预习,我想说的是,这本来没有错,但是你真正应该去看的是数据库,jdbc,mysql,web基础这些,ssh在web基础课里应用不多,并且都会有老师专门进行精讲,2天你就会用了,而在web基础课这里,你要下功夫,因为ssh实现原理老师都会以小框架的模式给你们将的很透彻,如果你基础太烂,听不懂,最后可能整个web这一块你都会学不懂,毕竟里边还有jsp,js等等很多知识,js你也需要重点去看,后面会有jquery等经典异步框架之类的技术。
像我们经常用的多线程,io之类的这些非常基本的,你每天都会用,多线程的同步很重要,无论web还是android,或者说是java相关的都会频繁应用,io这一块,你要着重研究字节流和字符流的区别,这是解决乱码的重中之重。
范型在这里你可以看或者不看,会用是最基本的,老师会讲很多框架的实现原理,如果你想自己写框架,那么范型、反射你都需要掌握到一定程度,这不是用的问题,而是理解,还有一些实际应用的经验。
反射这个是必须要重点去掌握的,web方面,经常会用反射来处理一些东西,比如说javabean方面的应用等等,至于android,在很多自定义组件中,你经常会需要用反射去访问那些你无法访问的字段来达到你的目的。
至于有些人说他仅是想学android,所以不去学web,这本身就是个错误,和兴趣无关,因为android里边,基本上凡是公司开发的,80%的应用都需要联网的服务器,所以你自己最后做项目的时候肯定需要写个服务器去做测试等等一系列事情,这时候你web不行,你代码就没法写了。在一个就是,有一些应用本身就是一个类似浏览器的实现,你不懂web真心写不了。
关于android,我想很多人都会去看视频,做预习,但我觉得大部分人应该去重点掌握awt/swing,以及java2图形操作,这对于android学习的帮助是很大的,如果你还有flex基础,那真心更有帮助。
另外就是,说实话,黑马4个月所讲的东西涵盖了基本上行业内的绝大分通用技术,还有一些是老师自己的东西,你每天所需要的时间很紧迫,如果基础太烂,我保证你每天后半夜睡觉都搞不定当天的内容,然后1个月下来,你堆积的东西越来越多,可能最后2个月自己就放弃学习了。。。
最后就是,千万别让基础拖你后腿
说了半天给大家讲个实际点例子,就说动态代理,掌握原理之后能做什么,我之前研究过一个东西,在以前我们定义一个对象,这个对象的行为就固定了,如果需要进行限制这个对象的某些行为,我们可能需要定义一堆的字段或者其他手段来控制,这是很不方便的,代码也显得更复杂,至少我自己写了之后发现很混乱,并且如果是运行时需要动态给某些对象删除或者增加功能(函数/方法)的话,写死的代码是实现不了的。
假设一个对象person,他有吃饭,有睡觉,有上厕所的功能,但是植物人不会吃饭吧?加班的可能几天不睡觉吧?便秘的可能不上厕所吧?就还仅是3个功能,如果多了呢?几十个,如果这些功能都可以随便组合,都不是必须具备的功能,那么你的逻辑代码需要多少,具体的功能组合形成的子类需要多少?我估计很多人到这就崩溃了。。。
如果拿代理来做,我们需要的是什么?接口,每个功能一个接口,这些接口被人的代理类实现(或者是适配器产生的具体实现类组合形成的策略模式),并会返回一个具备这些功能的person对象,我们仅需检查他具备不具备这些功能就可以,而不是还要检查一些额外的条件,而在某些功能失效,或者某些功能被加入的情况下,我们仅需要更换一下代理就行。这个可能不太好理解点,通俗来说就是,一个人没有胳膊,和有胳膊瘫痪的区别是不一样的。
这里频繁生成的各种功能组合的代理类的字节码是会存在于内存中,可能所有组合你都试过之后,一些不常用的组合会有内存溢出的风险,这时候就需要用到类加载机制和字节码技术,来把这些类的字节码文件像对象重用一样的进行重复利用,以避免大量的代理类造成内存溢出。
这个例子本身有一些局限性,适用性不是太广,其实技术方面没啥新东西,主要还是你想怎么做,以及在什么场景下用什么模式或者技术。
|