Java序员的成长之路
对于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
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序员的成长之路的更多相关文章
- Java程序员的成长之路
阅读本文大概需要 8.2 分钟. tips:虽然题目是写的Java程序员,但对其他语言的开发来说也会有借鉴作用. 本篇介绍的是大体思路,以及每个节点所需要学习的书籍内容,如果大家对详细的技术点有需要, ...
- .NET序员的成长之路
- 0~5年一个Java程序员的晋升之路
在程序界流行着一种默认的说法叫“黄金5年”,也就是一个程序员从入职的时候算起,前五年的选择直接影响着整个职业生涯中的职业发展方向和薪资走向,如何走好这5年,彻底从一个刚入行的菜鸟蜕变成可以以不变应万变 ...
- java序员必备的十大技能
想成为一名出色的Java程序员么?本文将为大家重点介绍程序员必备的十大技能,成就您的梦想. 1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样 ...
- php程序员的成长之路
第一阶段:基础阶段(基础PHP程序员) 重点:把LNMP搞熟练(核心是安装配置基本操作) 目标:能够完成基本的LNMP系统安装,简单配置维护:能够做基本的简单系统的php开发:能够在PHP中型系统中支 ...
- 映射篇:request-String-Object-Map之间相互转化(程序员的成长之路---第5篇)
为什么写这一篇 问题一:jdbc连接数据库返回的对象是ResultSet,如何把ResultSet对象中的值转换为我们自建的各种实体类? 我估计,80%的程序员会写jdbc数据库连接,但开发项目依然用 ...
- Java程序员的C++回归路(一)
前言:工作后吃饭的语言是java,同时写一些python和js,在学习机器学习的时候发现有必要再熟悉一下c++,同时工作也有c++的使用需求.于是开始对照c++ primer自学,希望能够对同样是其他 ...
- Java程序员的C++回归路(二)
接前: 之前记录的笔记,终于想起来上传完整. 第7章: 类 定义抽象数据类型 任何对成员对象的访问都可以解释为使用this来访问,即this->member. =default :默认构造函数. ...
- 高级Java程序员的技术进阶之路
据不完全统计,截至目前(2017.07)为止,中国Java程序员的数量已经超过了100万.而且,随着IT培训业的持续发展和大量的应届毕业生进入社会,Java程序员面临的竞争压力越来越大.那么,作为 ...
随机推荐
- 07_Java基础语法_第7天(练习)_讲义
今日内容介绍 1.循环练习 2.数组方法练习 01奇数求和练习 * A: 奇数求和练习 * a: 题目分析 * 为了记录累加和的值,我们需要定义一个存储累加和的变量 * 我们要获取到1-100范围内的 ...
- python杂谈:Python中\r的用法示例
\r 默认表示将输出的内容返回到第一个指针,这样的话,后面的内容会覆盖前面的内容 import sys import time def view_bar(num,total): rate = floa ...
- BeanCopier
cglib是一款比较底层的操作java字节码的框架. 下面通过拷贝bean对象来测试BeanCopier的特性: public class OrderEntity { private int id; ...
- js小功能记录
个人日常中遇到的js小功能记录,方便查看. /** * 判断是否包含字符串某字符串 * @param {[type]} str [被检测的字符串] * @param {[type]} substr [ ...
- LeetCode 717. 1-bit and 2-bit Characters
We have two special characters. The first character can be represented by one bit 0. The second char ...
- BZOJ5099 POI2018Pionek
假设确定了最终所得向量的方向,则应该选择所有在该方向上投影为正的向量.按极角序排序后这显然是一段连续区间.最终向量方向很难枚举,但对于某个向量,在其上投影为正的向量与其夹角范围是(-π/2,π/2), ...
- 题解 CF762A 【k-th divisor】
emmm...不能说是水题吧...小金羊以为考的是STL(手动滑稽)... 行,这个题说让分解因数(不一定非得质因数). 我们考虑到有第k个数有可能有\(x\cdot x=n\)的毒瘤情况, 并且题目 ...
- HotSpot垃圾收集器GC的种类
堆内存的结构:
- MT【148】凸数列
(2018浙江省赛13题) 设实数$x_1,x_2,\cdots,x_{2018}$满足$x_{n+1}^2\le x_nx_{n+2},(n=1,2,\cdots,2016)$和$\prod\lim ...
- 【BZOJ1499】【NOI2005】瑰丽华尔兹(动态规划)
[BZOJ1499]瑰丽华尔兹(动态规划) 题面 BZOJ 题解 先写部分分 设\(f[t][i][j]\)表示当前在\(t\)时刻,位置在\(i,j\)时走的最多的步数 这样子每一步要么停要么走 时 ...