A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 cn_iweiwei 于 2017-8-31 20:20 编辑

      来济南黑马半年多时间了,把自己的经验总结下来,感觉学了好多东西!!
Java 基础很重要 JavaEE 基础很重要 框架学习 说说 SSH Spring Spring MVC Spring Boot MyBatis Shiro WebService Lucene 数据源组件 Druid C3P0DBCP JSON 格式处理组件 Json-libJackSonfastjsonGSON Apache Commons 常用库 POI处理 WordExcel 文档 HttpClient MySQL Redis Markdown 开发工具 构建工具 1Ant 2Maven 3Gradle 版本管理工具 1SVN 2Git 前端介绍待添加 JavaScript基础 jQuery 库 BootStrap EasyUI AnjularJS 程序员必杀技设计模式数据结构和算法 其他 我经常用的一些网站和工具软件。


Java 基础很重要
说 Java 基础很重要可能是一句废话,面向对象、代码块、静态、final、重写、重载、继承和接口,这些概念值得反复看,反复推敲。而后就是一些很重要的基础模块的学习,IO 流(理解装饰器设计模式)、多线程(程序不止一条执行流、线程的创建、线程的几种状态、线程的控制、多线程如何通信)、网络编程(TCP、UDP、网络通过 IO 进行数据传送)、集合(List、Set、Map,理解 Hash 这种结构的特殊性和好处)、泛型(编译器安全检查、参数化类型)、注解(现在很多第三方框架都使用注解进行配置)、JDBC(使用 Java 代码操作数据库,是理解 MyBatis、Hibernate的基础)、反射(通过字符串分析出类的各个元素,是理解 Spring 等框架原理的核心)。


Java 基础部分写出来的代码基本上通过 Main 方法或者 Junit 测试方法运行的,不需要通过服务器来执行。


JavaEE 基础很重要
说白了就是 Servlet 和 Jsp,Servlet 就是 Jsp,因为 Jsp 被 Tomcat 等 Java 服务器解释以后底层还是 Servlet 代码。Servlet 是编写 Web 的核心,通过 Servlet 的学习要理解一般的 Web 应用的请求响应模式(客户端请求网络资源,服务端程序解析请求,并且做出响应给客户端)。
Servlet 有一些知识点是很重要的:重定向和转发,监听器和过滤器,web.xml 文件的使用配置。Servlet 3.0 规范以后的 Servlet 程序是可以不用写 web.xml 文件,通过注解达到相同目的。
当然学习 Servlet 之前,还须要知道一些 Html 基础,因为编写 Jsp 代码的时候,要渲染页面。要对页面实现的逻辑进行一些控制(判断、循环),就要用到标签库,标签库也有很好的现成的可以用,就是 jstl。
曾经有一个哥们跟我说 Servlet 规范很重要,是一切网络程序的核心,所有的 Web 框架在底层都是遵循 Servlet 框架进行开发的。




框架学习 说说 SSH
SSH 个人觉得不再是主流,现在的主流是 SSM。
这里想多废话几句:
   SSH 即 Struts + Spring + Hibernate ,很多早的项目是使用 Struts 开发的,如果维护老的项目可能会遇到 Struts,但是越来越多新的项目已经使用了 Spring MVC,我个人也感觉 Spring MVC 真的太好用了,入门非常快。最近又爆出了 Struts 有比较严重的安全漏洞,这样 Struts 的使用就更难推广开来了。
     Hibernate 我在为数不多的工作经历里面确实也没有遇到使用 Hibernate 的公司,我个人的理解是要想用好 Hibernate ,必须对 Hibernate 非常熟悉,理解 Hibernate 高度封装以后底层 SQL 的执行,一级缓存、二级缓存的使用,什么时候懒加载,什么时候又级联操作,还有就是一些比较复杂,具有一定技巧的 SQL 语句,不一定能使用 Hibernate 这种面向对象的框架编写出来。所以使用 Hibernate 操作数据库的难度就无形中增加了,因为原先我们只须要编写 SQL,但是我们现在还要考虑 SQL 和对象实体之间的转换。以上种种,对于 Hibernate 的学习成本就很高了。总结出一句话,对于很多新手来说(当然也包括在下),Hibernate 太难用了。
为什么 Hibernate 慢慢就不用了呢,那是因为有更好用的框架 MyBatis 问世了。MyBatis 前身叫 iBatis。是通过将 SQL 语句编写在 XML 文件中通过框架来调用的。
    JDBC 、 MyBatis 、 Hibernate 之间的关系是这样的:
性能:JDBC 最好,MyBatis 其次,Hibernate 再次,这是因为 JDBC 是其它两个框架的基础,封装越彻底,就会损失性能。
开发效率:Hibernate 最好,MyBatis 其次,JDBC 开发效率最低。原因和上面是一样的,封装得越彻底,开发效率就越高。
所以基于 Hibernate 学习成本很高,JDBC 开发效率太低这样两点考虑,很多公司选择了使用 MyBatis 这种框架。

    Spring 我想永远都是主流,应该没有哪一家公司,只要是用 Java 的项目,一定会用到 Spring (如果是自己的框架也会借鉴 Spring 的思想),应该会长时间占据 Web 开发的市场,因为 Spring 的设计思想,它作为一个 Ioc 容器,实现了依赖注入、控制反转。Spring 之所以流行,经久不衰,我想是因为 Spring 这个框架大大地简化了企业级项目的开发,使得会用 Spring 已经成为了 Java 程序员的必备技能,Spring 框架也成为了 JavaEE 事实上的标准。Spring 还扩展出了很多产品,例如 Spring Data、Spring Session、Spring Cache、Spring Boot、Spring Security。


    Spring 最最重要的两个概念 IOC 和 AOP。IOC 最最重要,一定要理解什么是依赖注入(控制反转):我需要一个对象不是我 new 出来,而是声明在配置文件中,Spring 容器启动以后,由 Spring 容器提供给我。最典型的 Controller 调用 Service ,Service 调用 Dao,我们通过 @Autowire 注解或者 @Resource 注解以后(而不是 new 一个对象),就可以直接使用,就是 Spring IOC 的功劳,虽然这是一个很简单的事实,我使用了很久以后才明白。
     AOP 实现的面向切面编程的思想是非常先进的,它有一种润物细无声的感觉,通过定义切面和切入点表达式,通过动态代理的方式,就可以实现增强逻辑,AOP 应用于日志记录、事务控制、权限控制等方面。


     Spring JDBC 我认为有个了解就可以了,如果公司用到的话可以去查询官方文档。Spring 对事务的控制有声明式事务和编程式事务,编程式事务太繁琐,所以不用,声明式事务通过 AOP 实现,太绝对化,一般化,不好控制。我比较认同使用 @Transactional 注解实现事务控制。因为事务控制是一个非常精细的操作,数据库的操作通常是一个软件性能的瓶颈,事务如果控制不好,会影响性能和安全,所以我们说事务的控制很重要,所以我们不能很草率地通过配置切入点表达式一刀切,虽然我们有约定大于配置,但是我们不能保证团队里的其它成员也能很好地遵循我们的约定。所以对于 Spring 事务控制的最佳实践就是使用事物注解方式 @Transactiona 进行精细的事务控制。学习 Spring 的事务的时候还要学习的就是数据的传播行为和隔离级别,这些都可以在 Spring 里面配置。


Spring MVC
     Spring MVC 通过一个前端控制器 DispatchServlet ,来实现请求的分发。Spring MVC 里面有一些类是非常重要的,还有一些注解也是非常常用的,用多了我们自然就理解了。
学习 Spring MVC 的时候我们会遇到一个问题,Spring MVC 有提供一个上下文、Spring 也有提供一个上下文,要了解他们之间的关系。而且我们还要避免这两个上下文之间重复扫描了 Bean ,因为重复扫描 Bean 不但会造成资源浪费,还会造成 AOP 失效.
     还有好多好多东西没来的及总结 ,期待大家一起分享。

1 个回复

倒序浏览
写的知识点很全面,定位较准确。非常不错,赞
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马