现在互联网上资源丰富,Java 学习并不难。贴个 Java 服务端入门和进阶指南,是给新人入门用的,包括了学习目标、需要掌握的技能和参考资料,并规划了学习阶段和时间,希望帮助到大家。
前言
关于如何获取学习资料,个人建议:
尽量用 google 查找技术资料。
有问题在 stackoverflow 找找,大部分都已经有人回答。
多看官方的技术文档。
ibm developerworkers 的文章质量整体上有保障。
平时花一些时间在 github 上阅读优秀项目源码。
入门(1-2 个月)
目标:自己尝试开发一个简单的项目。
技能:
熟练使用一种 IDE。Intellij IDEA或者 Eclipse 都可以,推荐使用前者。至少熟悉常用的快捷键,会 debug(包括远程 debug)项目。
熟悉一种编辑器。比如 Vim/Emacs/Sublime Text/VS Code,至少学会搜索/替换/代码补全。
掌握Java基础。经典的《Java 核心技术:卷1 基础知识》(或者《Java 编程思想》)必看,跳过其中的图形和 applet 章节。习惯查阅 Java API Doc。为了保证代码的质量,《Effective Java》、《Clean Code》和《重构》也需要至少通读一遍。
熟悉 Linux 开发环境和 bash shell。Linux 是我们的开发和部署环境,你最好尽快熟练它。Linux 的基本使用可以通过《鸟哥的Linux私房菜:基础学习篇(第三版)》学习,开发 bash shell 脚本可以参考《Linux Shell脚本攻略》。
掌握开发工具
掌握 JDK 以外的常用类库和工具包。JDK 原生 API 在很多场景下使用并不方便。你需要掌握社区贡献的优秀类库和工具包,比如 apache commons、google guava 等,具体可以翻阅 服务端技术选型 的Utility 篇。
掌握 Web 开发框架。我们使用 Spring(或Rose) + Ibatis(或Jade) 开发 web 服务,你需要熟练掌握它们。
学习代码规范。我们大致上遵循 oracle 的 Java 语言编码规范,你可以先阅读并熟悉它。Code Formatting 文件在 git@xxx/coding-standard.git,在编写代码之前,请把它导入到 IDE 中。另外,确认 IDE 已经安装 Findbugs 和 CheckStyle 插件。
熟悉开发流程。我们的开发流程大致如下:功能开发->单元测试->功能测试->Code Review->集成测试->发布。确保你熟悉其中的每个环节。
其他。需要熟练使用版本控制工具 Git(阅读:《Git 权威指南》),以及项目构建工具 Maven(阅读:《Maven 实战》)。另外,在这个阶段可以尝试 TDD 开发。
进阶(3-6 个月)
目标:独立开发一个服务端项目。
技能:
掌握 web 开发最佳实践,掌握 Restful API 设计,理解 Spring 原理。推荐阅读《Spring揭秘》。掌握项目分层、子模块划分。推荐阅读:《J2EE 核心模式》。
掌握 web 架构设计。包括 Http 反向代理,数据缓存,负载均衡,水平扩展和垂直扩展。推荐阅读:《分布式 Java 应用:基础与实践》。
掌握关系型数据库。包括设计 MySQL 表结构,根据业务特点分表分库,基于执行计划的 SQL 分析优化,以及数据库容量规划。推荐阅读:《MySQL 必知必会》、《高性能 MySQL》。
了解 NoSQL。我们大规模使用 Hadoop、HBase、Hive,同时部分项目使用 Redis、Storm。你需要学会这些工具最基本的使用。
学习 web 安全知识。了解 web 前端安全问题。设计安全 web 服务,包括加解密、防伪造、防重放攻击等。
掌握 Http (推荐阅读:《图解Http》、《http权威指南》)、Thrift 等协议。
掌握服务容量规划,性能调优,可靠性保证,以及故障处理。学习容量规划和性能调优知识,梳理业务监控点,熟练使用我们的监控报警系统。推荐阅读:《深入理解 Java 虚拟机》。
其他。设计模式:从项目中学习,有时间可以看看《深入浅出设计模式》、《JDK 里的设计模式》。学习Java Socket 编程与多线程知识,可以看看《Java 并发编程实战》,并翻翻并发编程网的文章。
深入(6 个月-)
目标:分布式系统和中间件开发。
构建知识体系:《大型网站系统与 Java 中间件实践》、《大型网站技术架构:核心原理与案例分析》。
原理与设计:《大规模存储式系统》、《UNIX 网络编程 卷1:套接字联网 API》、《How Tomcat Works》。
学习开源项目:Apache Thrift、Zipkin、Netty、Rose、Jade、淘宝 RPC 系统 Dubbo 等。分析项目中的设计思路。比如,同样是RPC框架,Finagle 和 Dubbo 有什么异同。
其他。根据参与的项目加深学习吧。比如,如果需要写 DSL,可以读一下《领域特定语言》,对 Redis 感兴趣推荐读一下:《Redis 设计与实现》。有两本书,无论做什么项目,都推荐读:《Unix 编程艺术》、《UNIX 环境高级编程(第3版)》。
其实需要学习的东西很多很多,这里只简单列出几点,大多是个人经验,有错误的地方望轻拍 ?

西安尚学堂Java 服务端入门(资料推荐)相关推荐

  1. 西安尚学堂Java软件开发基础学习内容

    一.软件开发 软件是一系列按照特定顺序组织的计算机数据和指令的集合. 1.数据就是指现实生活中的年龄.姓名等信息. 2.指令就是告诉计算机如何对数据进行处理. 常见的软件 系统软件(操作系统) 如:D ...

  2. 西安尚学堂Java编程笔试面试练习题

    隐含对象是什么意思?有哪些隐含对象? JSP隐含对象是页面中的一些Java对象,JSP容器让这些Java对象可以为开发者所使用.开发者不用明确的声明就可以直接使用他们.JSP隐含对象也叫做预定义变量. ...

  3. MacPro Java服务端研发 新手入门指导

    文章目录 一.导读 二.认识系统 1.启动台(Launchpad) 2.访达(Finder) 3.终端(Terminal) 4.办公软件(Office) 5.应用商店(App Store) 三.开发软 ...

  4. 西安尚学堂练习09.17|Java编程笔试面试题

    下列哪些类型能被throw语句抛出? A. Error B. Exception C. Throwable D. Object [解]注意Error也是可以被throw的,只是通常Error出现程序就 ...

  5. java 服务端渲染_基于vue-ssr服务端渲染入门详解

    第一部分 基本介绍 1.前言 服务端渲染实现原理机制:在服务端拿数据进行解析渲染,直接生成html片段返回给前端.然后前端可以通过解析后端返回的html片段到前端页面,大致有以下两种形式: 1.服务器 ...

  6. JAVA服务端实现页面截屏(附代码)

    JAVA服务端实现页面截屏 适配需求 方案一.使用JxBrowser 使用步骤: 方案二.JavaFX WebView 使用步骤: 方案三.Headless Chrome 使用步骤: 综上方案对比 记 ...

  7. 聊一聊 Java 服务端中的乱象

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:阿里巴巴中间件 查尔斯·狄更斯在<双城记>中写道 ...

  8. 谷歌支付(Java服务端)

    Google Pay主要支付流程 1.手机端向Java服务端发起支付,生成预订单,给手机端返回生成的订单号 2.手机端向Google发起支付(传入本地服务器生成的订单号) 3.Google服务器将支付 ...

  9. Android端+Java服务端+servlet+MySQL二手商城设计

    项目地址: Android端+Java服务端+servlet+MySQL二手商城设计.zip-Android文档类资源-CSDN下载 项目简介及内容截图如下: 本系统适用于计算机专业作为期末课程设计. ...

最新文章

  1. Python 学习博客
  2. 抖音计算机音乐你要我,抖音上很火的我要你快乐我要你快乐是什么歌?
  3. mysql进度查看_MySQL长查询进度监控
  4. 计算机科学研究生规划,2019计算机考研备考:计算机科学与技术研究方向及复习规划...
  5. [Linux][Ubuntu]Linux实习常用操作/Debug总结
  6. php文件上传后没有打开权限_记墨者靶机文件上传(二)
  7. (转)高盛将“穷人”理财交给机器人,那智能投顾在中国怎么玩?
  8. firefox 邮箱分类过滤
  9. 开源机器学习项目的简单介绍
  10. OpenID实现多系统整合的用户同步解决方案
  11. 《一》注册订阅号并完成基本配置
  12. 零基础学习Java编程培训需要了解哪些知识
  13. python数据收集整理教案_《数据收集整理》教学设计
  14. zookeeper和kafka的SASL认证以及生产实践
  15. 工作中要怎样与同事相处呢?
  16. chapter-2数据库基本知识
  17. vue-有初始化动画的节点进度条的实现
  18. 微信小程序-从零开始制作一个跑步微信小程序
  19. CPU四芯转接头不良引起的无法开机故障
  20. 36氪WISE 2017:融云斩获年度最具影响力奖

热门文章

  1. Spire.PDF for.NET 去水印方法 及用法示例
  2. nodejs基于RabbitMq的RPC调用
  3. centos7删除文件夹命令_centos彻底删除文件夹、文件命令
  4. 腾讯架构师理解的并发编程基石——Thread类的工作原理
  5. 【观察】戴尔科技+英特尔傲腾技术:以“纳秒之速”领跑存储创新
  6. win7怎么关闭3D加速的方法
  7. [渝粤教育] 西北农林科技大学 理论力学 参考 资料
  8. kubernete编排技术六:RBAC权限控制
  9. diskimage-builder之制作镜像
  10. 两个有序数组的中位数