一点记忆—— Java框架知识的学习有感
 
      说一下自己学习的框架知识的历程吧:好久了,应该是一年前,也就是大三上的时候,我对于基本的 Java编程就已经达到所谓的“熟练”,认为自己可以在 Java的世界里可以华山论剑了,到现在想一下,确实真的很好笑,如果真的想在 Java的世界里华山论剑的话,没有时间的积累简直就是痴人说梦。
即使有时间的积累,不断扩宽自己掌握的知识的范围,同时有不断的深入,这些还是不够的。因为我们知识不断的学习,没有什么新的框架或者是技术变革,不会给程序界带来什么变化。什么时候,我们可以编写自己的框架技术,并且在一个领域做到相当优秀,这个时候,勉强算是略有小成。
同时还有很多其他的领域,在纵向上分为向上的框架技术和向下的底层技术。
往上面走的话,就是开发技术中的框架。如果我们想要真正开发自己的框架的话,那就是首先把别人的框架学习使用好,这样还是差的很远,要深入到框架的源代码级别,阅读框架的源代码,这又是一个很大的任务了,望而却步了吧,不过想要在这个圈儿混的话,那是迟早的事。
开发工程师和研发工程师的区别是什么?开发在编写代码领域十分擅长,但限定的是他自己对于这整体的代码掌握的非常好,一种极端的情况就是这些代码完全是他自己写的,退一步的话,就是现在开发行业中,模块化的思想,每一个人只需完成自己的模块,对于其他的模块,可以不用掌握,只要别人写好,按照一定的规范,调用即可,用一个比较专业的名字就是低耦合。但是如果我们一直停留在这个地步的话,那么在往上面走的话,缺乏研读别人代码的能力,比如框架的源代码、系统代码(比如 Android的系统代码),在开发的这一条路上不会走很远。
研发工程师,不仅需要卓越的编程能力,更加重要的是研读代码的能力。程序界中不乏优秀的代码,而这一个行业最忌讳的就是 Repeat:重复自己说明自己对于整个系统的设计太差了,也就是所谓的没有大局观,只是关注眼前,而没有从整体的去考虑。或者是不停地忙碌,却忘记了思考; 重复别人,说明你的知识面太窄了,这一个行业是一个不断学习的行业,每天都会有很多新的东西出现,虽说良莠不齐,但是至少有很多是优秀的,甚至可以说是解决这一类问题的相对优秀的方案,那么我们就没有必要重复的制造轮子了。这个时候,阅读别人的优秀的源代码的能力是多么的重要。
          我的一位前辈告诉我:学习 Spring不仅要学习如何使用,更要学习如何在底层实现这些框架的,最好是深入源代码级别,去学习。从短期的角度上来看,都会使用 Spring的两个人是没有什么差别,但是如果一个工程师了解甚至是可以从源代码级别上掌握一种框架的原理,选择哪一个就已经十分明显了。
月份,去面试粤电实习生的时候,就被面试官狂叼 SSH,不评价面试官了,确实是自己不掌握 SSH框架,虽然最后给还是凭借自己的对于 Java Web编程(非框架)通过了,但是说自己“精通 Java”,不会SSH 框架确实说不过去了。但是自己真的没有时间去学习了。之后虽然比较专业的技术官不会问你 SSH,但是几乎所有的国企(这里就不比如了)都会问你或不会 SSH。
 年的本科生抢饭碗。所以如果你没有什么真材实料的话,就不要每天的找虐了,回家洗洗睡吧!不过研究生也并不可怕,其实一路走过来的话,会发现,有些研究生确实是很厉害,比如我在博客上看到的一个华工的去年毕业的,看他读的书,都和他差不多高了,而且全都是Linux,包括内核源码等等。但这样的人毕竟是少数,研究生中很大一部分也就是多吃了几年的米。总结来说,如果你的大学不是太缩水,是可以小虐一下部分研究生;如果没有什么真才实学的话,那还是别到处找虐了。
          回到框架技术上来, S2SH是框架领域的翘楚,在实践的基础之上,学习其中的思想对于提升自己的专业素养是十分有帮助的。同时在找工作面试的时候,面试官如何得知你的能力:就是通过和你聊聊你曾经的开发经验:比如遇到那些问题、如何解决、如何使用等等。这些东西只要是用过的人都会遇到类似的问题和采用几乎相同的办法去解决这些问题。如果你没有经验的话,那就没有办法聊了,即使你掌握原理,也不可以,因为面试过程中,你会发现你和面试官不在同一个频道上。我面试 YY的时候,在多线程和同步上就是因为和面试官不在同一个频道,他在 C++,而我是Java ,就被刷了。
 次学习SSH 的念头,最初是在大二下,但都是因为这样和那样的原因放弃了。现在总结一下原因: Java素养不够,连添加包都不知道; IDE使用不会,甚至在Web项目中还必须要 WebRoot去访问;配置出错,没有办法实践下去。现在看来这些都不是问题,而且在几天的时间里就会初步使用了 Spring和Hibernate 了,凡事都是入门比较困难,一旦入门,学习起来就十分的顺风顺水。虽然之后很难再进一步提高,这是因为缺乏实际项目的练手,所以学习知识是为了使用在实际的生活的中。
往下面走的话,就是Java底层的实现。其实 Java语言也只是一种规范,他又很多实现版本,最通用的是 Sun公司的JDK ,还有Open-JDK等等。 JVM的内部是如何运行的,内存如何分配的, JVM调优的知识。同时Java现在的发展路线不仅仅是一种语言,他想做成一个平台。比如 Python有对应运行在JVM上的 JPython,Ruby 有对应的 JRuby等等。因为自己没有过的接触这些领域的知识,就不乱说了!
 
Java的世界,学的越多,越是发现自己需要学的知识越多!
 
今天是感恩节,又翻到了去年感恩节的时候写的一点记忆,诸多感慨,今年就不写了,有一篇记忆就让自己一塌糊涂,不过该感谢的人还是要感谢的,因为一路上有你!
 
YangTengfei
2013.11.28
  

一点记忆—— Java框架知识的学习有感的更多相关文章

  1. Java框架spring Boot学习笔记(六):Spring Boot事务管理

    SpringBoot和Java框架spring 学习笔记(十九):事务管理(注解管理)所讲的类似,使用@Transactional注解便可以轻松实现事务管理.

  2. java基础知识再学习--集合框架-对象的强、软、弱和虚引用

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://zhangjunhd.blog.51cto.com/113473/53092 本文 ...

  3. java基础知识再学习--HashMap与ConcurrentHashMap的区别

    引用:http://blog.csdn.net/xuefeng0707/article/details/40834595 从JDK1.2起,就有了HashMap,正如前一篇文章所说,HashMap不是 ...

  4. Java框架spring Boot学习笔记(十):传递数据到html页面的例子

    新建一个templates文件夹和index.html <!DOCTYPE html> <html> <head lang="en"> < ...

  5. Java框架spring Boot学习笔记(九):一个简单的RESTful API

    RESTful API设计需求如下: User.java package com.springboot.test; public class User { private Long id; priva ...

  6. Java框架spring Boot学习笔记(七):@Configuration,@bean注解

    @Configuration作用在类上,相当于一个xml文件 @bean作用于方法上,相当于xml配置中的<bean>标签 一个例子: 新建一个Springboot工程 新建一个User类 ...

  7. Java框架spring Boot学习笔记(五):Spring Boot操作MySQL数据库增、删、改、查

    在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...

  8. Java框架spring Boot学习笔记(四):Spring Boot操作MySQL数据库

    在pom.xml添加一下代码,添加操作MySQL的依赖jar包. <dependency> <groupId>org.springframework.boot</grou ...

  9. Java框架spring Boot学习笔记(三):Controller的使用

    Controller注解介绍 @Controller:处理http请求 @RestController: Spirng4之后新加的注解,其实是一个组合注解等同于@ResponseBody和@Contr ...

随机推荐

  1. Silly Java-Final 关键字

    Final 关键字 adj. 最终的:最后的:决定性的:不可改变的 1.修饰变量 final variable 意味 [最后的变量,不可改变的变量即常量] Java中该关键字即代表常量 修饰基本类型的 ...

  2. 手写ArrayList、LinkedList

    ArrayList package com.hjp.labs; import org.omg.CORBA.PRIVATE_MEMBER; /* 一.ArrayList的底层是Object类的数组,默认 ...

  3. HDU - 4871 Shortest-path tree (最短路径树+ 树分治)

    题意:给你一张带权无向图,先求出这张图从点1出发的最短路树,再求在树上经过k个节点最长的路径值,以及个数. 分析:首先求最短路树,跑一遍最短路之后dfs一遍即可建出最短路树. 第二个问题,树分治解决. ...

  4. Ubuntu16.04安装Jenkins

    Jenkins基于JAVA,所以需要先安装jdk 安装java 在官网上下载jdk,http://www.oracle.com/technetwork/java/javase/downloads/jd ...

  5. oracle安装完成后目录中不论有没有tnsnames.ora和listener.ora文件 PLSQL都能连上的问题解决方法

    今天遇到这个问题了,发现listener.ora文件和tnsnames.ora文件在Net Work文件夹下没有,正常情况下安装完oracle或者是oracle Client是会有的,但是在Net M ...

  6. Python3.x:常用基础语法

    Python3.x:常用基础语法 1,if else语句: 不执行if内的语句,需要用:pass if i>2: #跳过不执行 pass else: print("i= %s" ...

  7. linux 用户态和内核态以及进程上下文、中断上下文 内核空间用户空间理解

    1.特权级         Intel x86架构的cpu一共有0-4四个特权级,0级最高,3级最低,ARM架构也有不同的特权级,硬件上在执行每条指令时都会对指令所具有的特权级做相应的检查.硬件已经提 ...

  8. VirtualBox安装RedHat7

    软件准备 VirtualBox-5.2.8-121009-Win.exe rhel-server-7.4-x86_64-dvd.iso 安装环境 win10 安装步骤: 1.先在win10系统中安装V ...

  9. .Net Core Linux部署之进程守护 Supervisor 安装配置

    1.Supervisor 安装 //安装easy_install yum install python-setuptools //安装Supervisor easy_install superviso ...

  10. 同余定理简单应用 - poj2769 - hdu 1021 - hdu 2035

    同余问题 基本定理: 若a,b,c,d是整数,m是正整数, a = b(mod m), c = d(mod m) a+c = b+c(mod m) ac = bc(mod m) ax+cy = bx+ ...