学习一个新的技术时, 其实不在于跟着某个教程敲出了几行, 几百行代码, 这样你最多只能知其然而不知其所以然, 进步缓慢且深度有限, 最重要的是一开始就对整个学习路线有宏观, 简洁的认识, 确定大的学习方向, 这样才能事半功倍.
我们经常会遇到这样的情况: 一开始学习一门新技术的时候, 面对着很多很多陌生的名词, 无从下手, 一度想要放弃. 本文首先会给出关于 java 后台开发的一些建议学习路线, 接着简单解释一些应用到的高频技术, 帮助大家理解和学习.
2.Java 后台开发知识一览
1, 后端
web 服务器: Weblogic,Tomcat,WebSphere,JBoss,Jetty
核心框架: Spring Framework
分布式服务框架 Dubbo
安全框架: Apache Shiro
视图框架: Spring MVC
服务端验证: Hibernate + Validator
布局框架: SiteMesh
工作流引擎: Activiti
任务调度: Spring Task + Quartz
持久层框架: MyBatis + MyBatis-Plus
数据库连接池: Alibaba Druid
缓存框架: Ehcache ,Redis
日志管理: SLF4J ,Log4j
会话管理: Spring-Session
工具类: Apache Commons,Jackson ,Xstream,Dozer ,POI
消息队列: ActiveMQ
云存储: 阿里云 OSS 腾讯云 COS 七牛云
版本管理: Git(推荐)SVN
2. 高频技术 (可大致浏览, 作为目录查看)
Spring
每个模块的功能如下:
核心容器: 核心容器提供 Spring 框架的基本功能. 核心容器的主要组件是 BeanFactory, 它是工厂模式的实现.
Spring 上下文: Spring 上下文是一个配置文件, 向 Spring 框架提供上下文信息.
Spring AOP: 通过配置管理特性, Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中.
Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构, 可用该结构来管理异常处理和不同数据库供应商抛出的错误消息. 异常层次结构简化了错误处理.
Spring ORM:Spring 框架插入了若干个 ORM 框架, 从而提供了 ORM 的对象关系工具, 其中包括 JDO,Hibernate 和 iBatis SQL Map. 所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构.
Spring Web 模块: Web 上下文模块建立在应用程序上下文模块之上, 为基于 Web 的应用程序提供了上下文. 所以, Spring 框架支持与 Jakarta Struts 的集成.
Spring MVC 框架: MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现. MVC 容纳了大量视图技术, 其中包括 JSP,Velocity,Tiles,iText 和 POI.
RESTful 风格
- ** Mybatis**
- MyBatis
是支持定制化 SQL, 存储过程以及高级映射的优秀的持久层框架. MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis 可以对配置和原生 Map 使用简单的 xml 或注解, 将接口和 Java 的 POJOs(Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录.
Hibernate
Redis
Redis
是完全开源免费的, 遵守 BSD 协议, 是一个高性能的 key-value 数据库. 特点:
1.Redis 支持数据的持久化, 可以将内存中的数据保存在磁盘中, 重启的时候可以再次加载进行使用.
2.Redis 不仅仅支持简单的 key-value 类型的数据, 同时还提供 list,set,zset,hash 等数据结构的存储.
3.Redis 支持数据的备份, 即 master-slave 模式的数据备份.
Zookeeper
Zookeeper 分布式服务框架是 Apache
Hadoop 的一个子项目, 它主要是用来解决分布式应用中经常遇到的一些数据管理问题, 如: 统一命名服务, 状态同步服务, 集群管理, 分布式应用配置项的管理等等.
DUBBO
DUBBO
是一个分布式服务框架, 致力于提供高性能和透明化的 RPC 远程服务调用方案, 是阿里巴巴 SOA 服务化治理方案的核心框架, 每天为 2,000 + 个服务提供 3,000,000,000 + 次访问量支持, 并被广泛应用于阿里巴巴集团的各成员站点.
一到五年经验, 应该怎么走, 学习方向路线是什么, 需要掌握什么技术呢? 请看下方:
阅读源码
程序员每天都和代码打交道. 经过数年的基础教育和职业培训, 大部分程序员都会「写」代码, 或者至少会抄代码和改代码. 但是, 会读代码的并不在多数, 会读代码又真正读懂一些大项目的源码的, 少之又少. 这也造成了很多错误看源码的方式.
那要如何正确的分析源码呢?
分布式架构
随着我们的业务量越来越大和越重要, 单体的架构模式已经无法对应大规模的应用场景, 而且系统中决不能存在单点故障导致整体不可用, 所以只有垂直或是水平拆分业务系统, 使其形成一个分布式的架构, 利用分布式架构来冗余系统消除单点的故障, 从而提高整个系统的可用性. 同时分布式系统的模块重用度更高, 速度更快, 扩展性更高是大型的项目必不可少的环节.
微服务
关于微服务架构的取舍
1, 在合适的项目, 合适的团队, 采用微服务架构收益会大于成本.
2, 微服务架构有很多吸引人的地方, 但在拥抱微服务之前, 也需要认清它所带来的挑战.
3, 需要避免为了 "微服务" 而 "微服务".
4, 微服务架构引入策略 - 对传统企业而言, 开始时可以考虑引入部分合适的微服务架构原则对已有系统进行改造或新建微服务应用, 逐步探索及积累微服务架构经验, 而非全盘实施微服务架构.
性能优化
我们不仅仅对项目要运筹帷幄, 还要能解决一切性能问题. 只有深入学习 JVM 底层原理, MySQL 底层优化以及 Tomcat 调优, 才能达到知其然, 知其所以然的效果. 除了性能优化之外, 也能提供通用的常见思路以及方案选型的考虑点, 帮助大家培养在方案选型时的意识, 思维以及做各种权衡的能力.
并发编程
主要培养编程者深入了解最底层的运作原理, 加强编程者逻辑思维, 这样才能写出高效, 安全, 可靠的多线程并发程序.
来源: http://www.jianshu.com/p/e9c87bd02d25