对于Java程序猿学习的建议

第一阶段——Java基础

第二阶段——Web开发

  这些内容主要是Web开发相关的内容,包括HTML/CSS/JS(前端页面)、Servlet/JSP(J2EE)以及MySql(数据库)相关的知识。

第三阶段——开发框架

    目前比较主流的是SSM框架,即spring、springmvc、mybatis。

工作年限匹配的技能

1年以内

  《Java编程思想》 3月以内

1年-2年

  《大话设计模式》 http://www.cnblogs.com/zuoxiaolong/p/pattern26.html

  《重构 改善既有代码的设计》

  《effective java》

   总而言之,这个阶段,你的核心任务就是提高你的代码能力,要能写出一手优雅的代码。

2年到3年

  《深入理解Java虚拟机》。这本书绝对是Java开发者最重要的书,没有之一

   JVM系列的知识  http://www.cnblogs.com/zuoxiaolong/category/508918.html

  《Java并发编程实战》

  《Java多线程编程核心技术》

  《Java并发编程的艺术》

  需要去看一些JDK中的类的源码,也包括你所使用的框架的源码

  这个阶段,除了上面提到的了解JVM、JDK和框架源码以外,也请你根据别人优秀的源码,去造一个任何你能够想象出来的轮子。

3年到4年

  在这个阶段,你就不能再简单的去学习前3年的内容了,虽然前面的学习如果还不够深入的话依旧要继续,但这个时候你应该更多的考虑建立你的优势,

也可以称为差异性。

  比较推崇的基础书籍有三本,分别是《深入理解计算机系统》,《tcp/ip详解 卷一、二、三》,《数据结构与算法》。

其中TCP/IP有三本书,但我们这里把这三本看成是一本大书。

  这三本分别适合三种人,《深入理解计算机系统》比较适合一直从事Java Web开发和APP后端开发工作的人群。

  《tcp/ip详解 卷一、二、三》比较适合做网络编程的人群,比如你使用netty去开发的话,那么就要对TCP/IP有更深入的了解。

  而《数据结构与算法》这本书,则比较适合做计算研究工作的人,比如刚才提到的分布式计算。

4年到5年

  在这个阶段,你最大的任务是提高自己的影响力,为自己未来的十年工作生涯那一天做准备。  

  如果你能够靠你的影响力和以前积累的技术,参与到一个伟大的项目当中,那么你后面的五年也就有着落了。

5年以上

  《深入理解计算机系统》

书籍

  《Java编程思想》【5星】:这本书就不说了吧,Java的经典,经典中的经典,LZ从去年10月份开始读,大约花了三个月读完。

  《深入理解Java虚拟机》【5星】:这本书也是经典中的经典,LZ读的时间好像并不长,但是收获巨大!

  《重构:改善既有的代码设计》【4星】:这本书将LZ带进了重构的世界,LZ看的也非常快,但说实话,里面的技巧目前还真没什么施展的余地。

  《大话设计模式》【电子版】【5星】:大话这本书是LZ进入设计模式世界的引导者,也正因为它,有了LZ的设计模式博文系列,也因此有人找LZ写书。

不过LZ最近的生活和工作都有些改变(这点后面再说),所以写书一事暂且放下了,不知是好是坏,个人觉得多沉淀一下其实也好,但不得不说,写书真的是一件

绝对靠毅力的事,这与写博客完全是两码事。

  《编译原理》【5星】:这本书就不需要LZ评价了,不过LZ目前还没看完,当时看了大约两章暂且放下了。这本书是LZ以后必读之书。

  《设计模式:可复用面向对象软件的基础》【4星】:GOF的名著,之所以给4星,是因为难度太高。LZ现在看起来还有难度,原因是因为里面的smalltalk,

实在是骨灰级语言。

入手这本书的原因,原本是为了写书而准备的,不过由于写书的进度被拉下来了,所以这本书就没有急于攻破。

  《Java并发编程实战》【5星】:好书中的好书,它也算当时解了LZ的燃眉之急。通过它,LZ才算进入了并发的世界,而且并发系列也将因它而出现,

目前LZ其实正在写并发系列的第二篇文章,还未发表。

  《Effective Java》【4星】:这本书LZ已经读了一半多,这类书给LZ的感觉是,看的时候会产生极强的共鸣,但是看过之后却记不住什么。不知道这是否是在潜在的影响LZ的编程手法。

  《代码整洁之道》【5星】:这一本书与《重构:改善既有的代码设计》、《Effective Java》十分类似,都是在讲如何编写优秀的代码,只是这本书给LZ的感觉更实用。

  《深入理解计算机系统》【5星】:这本书实在是难啃,但是LZ看的过程中收获巨大。这种书的价值体现,并不是最直观的收获,而是潜意识的影响。

  《算法导论》:经典之作,不过LZ一直没有时间去啃下这本巨大的著作。里面的内容相信一定是非常精彩的,LZ期待着开启的那一天。

  《数据结构与算法分析》:这本书是LZ为Java准备的算法书,之前看了一些,没有继续观摩,之后也是要补上的。

  《代码大全》:又是一本巨厚的著作,这本书号称也是经典之作,同样是LZ十分期待的一本书,期待着开启。

  《Maven实战》:当初买这本是因为项目当中用到了maven,所以准备大致了解一下,结果翻了几页发现兴趣不大。悲哀,僵尸书了。

  《linux私房菜》:这本书是给自己准备的linux工具书,买的时候就没打算仔细看,结果买过来以后发现真没仔细看。

  《分布式系统原理与范型》:买它是为了了解一下分布式系统的原理,这本书LZ还是有兴趣的,只是一直没机会开启。

  《云计算》:这本书是当时LZ要回家一趟,所以买了一本带在火车上看,当时也看了不少,属于一本消遣的书,算是开阔下视野吧。

  《云计算与SOA》:这本书与《云计算》是一起买的,因为还是想与工作联系起来,所以看到SOA就拿过来了,后续有时间可以拿来消遣,不打算细看。

基本要求

1.语言的基础部分:

  基础部分的重点,其实主要就是static、final、transient、volatile这一类的关键字,以及内部类、泛型这一类的高阶语法。

 2.Java运行时环境

 

3.并发知识与concurrent包

 

4.设计模式和反射

 

5.文件IO、NIO、网络IO以及网络协议

中等要求

 1.Spring、Mybatis框架

 2.Linux服务器

 3.数据库优化

 4.消息服务

 5.缓存服务

 6.负载均衡器

加分要求

1.数据结构与算法

2.计算机操作系统

3.计算机网络

4.熟练使用一种脚本语言

5.你的github和博客

————

并发、JVM、分布式、TCP/IP协议这些

Java的数据结构相关的类实现原理,比如LinkedList,ArrayList,HashMap,TreeMap这一类的

HashMap是不是有序的?

接下来就可能会问你,TreeMap和LinkedHashMap是如何保证它的顺序的?

你觉得它们两个哪个的有序实现比较好?

Java并发包当中的类,它们都有哪些作用,以及它们的实现原理,这些类就是java.concurrent包下面的。与上面一样,咱们也简单的模拟一个并发包的连环炮。

栅栏(Java的并发包中的CyclicBarrier)

IO包和NIO包中的内容。这部分里面NIO会是重点,IO包大部分都会比较熟悉,因此可能会直接略过,直接问你NIO的内容。

Java的虚拟机的内容。这部分主要包括三部分,GC、类加载机制,以及内存。

下面是关于类加载机制的简单连环炮。

再来一个关于内存的连环炮。

假如时光能够倒流, 我会这么学习Java

码农翻身

java学习路线

https://www.cnblogs.com/xll1025/p/10016353.html

https://blog.csdn.net/MinggeQingchun/article/details/81166827

https://www.cnblogs.com/zuoxiaolong/p/life82.html

https://www.cnblogs.com/zuoxiaolong/p/life51.html

Java序员的成长之路的更多相关文章

  1. Java程序员的成长之路

    阅读本文大概需要 8.2 分钟. tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用. 本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要, ...

  2. .NET序员的成长之路

  3. 0~5年一个Java程序员的晋升之路

    在程序界流行着一种默认的说法叫“黄金5年”,也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向,如何走好这5年,彻底从一个刚入行的菜鸟蜕变成可以以不变应万变 ...

  4. java序员必备的十大技能

    想成为一名出色的Java程序员么?本文将为大家重点介绍程序员必备的十大技能,成就您的梦想.       1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样 ...

  5. php程序员的成长之路

    第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护:能够做基本的简单系统的php开发:能够在PHP中型系统中支 ...

  6. 映射篇:request-String-Object-Map之间相互转化(程序员的成长之路---第5篇)

    为什么写这一篇 问题一:jdbc连接数据库返回的对象是ResultSet,如何把ResultSet对象中的值转换为我们自建的各种实体类? 我估计,80%的程序员会写jdbc数据库连接,但开发项目依然用 ...

  7. Java程序员的C++回归路(一)

    前言:工作后吃饭的语言是java,同时写一些python和js,在学习机器学习的时候发现有必要再熟悉一下c++,同时工作也有c++的使用需求.于是开始对照c++ primer自学,希望能够对同样是其他 ...

  8. Java程序员的C++回归路(二)

    接前: 之前记录的笔记,终于想起来上传完整. 第7章: 类 定义抽象数据类型 任何对成员对象的访问都可以解释为使用this来访问,即this->member. =default :默认构造函数. ...

  9. 高级Java程序员的技术进阶之路

      据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万.而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大.那么,作为 ...

随机推荐

  1. 利用CNN进行多分类的文档分类

    # coding: utf-8 import tensorflow as tf class TCNNConfig(object): """CNN配置参数"&qu ...

  2. IDE调研之二

    Eclipse和Jetbrains的IntelliJ IDEA对比: Eclipse工具 在Eclipse中,可以最大化控制台.通过双击标签或者Ctrl+M快捷键就可以实现,但是在IntelliJ I ...

  3. 软工网络15团队作业8——Beta阶段敏捷冲刺(Day6)

    提供当天站立式会议照片一张 每个人的工作 1.讨论项目每个成员的昨天进展 赵铭: 数据库整理. 吴慧婷:我的世界界面完成部分. 陈敏: 我的世界功能--学习情况功能完成. 吴雅娟:我的世界功能--学习 ...

  4. 第九周(11.11-11.17)----Beta版本视频发布

    beta阶段视频发布地址: http://v.youku.com/v_show/id_XMTgxNjE2NzY3Mg==.html

  5. scrapy-下载器中间件

    from faker import Faker class MySpiderMiddleware(object): def __init__(self): self.fake = Faker() de ...

  6. git工具的使用总结

    Git的使用 进入一个新的公司或者参入一个新的项目后,可能的第一步就是获取代码仓库的代码.公司内部一般放到代码仓库(下面主要以gitHub.Windows平台为例)的代码都经过加密认证的. 如何将Gi ...

  7. 深入理解JAVA虚拟机阅读笔记1——JAVA内存区域

    一.Java内存区域 1.程序计数器 线程私有. 当前线程所执行的字节码的行号指示器.由于JAVA是多线程的,因此每个线程都独立的程序计数器. 异常:没有规定任何OutOfMemeryError情况的 ...

  8. JAVA Junit4

                                   JAVA     Junit4   测试框架 序言 刚学Java的时候就听说过JUnit了,单元测试框架,很好用的测试框架,JUnit测试 ...

  9. BZOJ 4454: C Language Practice

    4454: C Language Practice Time Limit: 20 Sec  Memory Limit: 24 MBSubmit: 501  Solved: 112[Submit][St ...

  10. 【bzoj3570】 Cqoi2014—通配符匹配

    http://www.lydsy.com/JudgeOnline/problem.php?id=3507 (题目链接) 题意 给出一个主串,里面有些通配符,'*'可以代替任意字符串或者消失,'?'可以 ...