Java Level 2 学习的八大名著

前段时间有几天难得的假期,于是把自己认为Java技术栈中的精华总结了一下,但是一直没有时间写下来,今天终于得空希望本文可以对大家有所启发。通过多个实际项目的沉淀和一些Java开源项目的源代码研究,个人认为Java语言中的精华技术主要包括如下三个方面,其实严格来说只有第一点说的是纯Java中的东西,提到二,三两点是因为这两种技术在Java技术栈中应用的比较广泛,而且对于Java技术栈的意义比较大。

1. 内存模型,并发基础设施,IOs

2. 开源MQ

3. 开源内存数据库

笔者之前在C++技术栈中写了多年的多线程代码,对比Java技术栈给我印象最为深刻的就是JVM的内存模型,并发基础设施,IOs,JVM的内存模型从根本上保证了多线程程序的简单性和一致性,在C++技术栈中很多的东西需要依赖操作系统本身或者线程库提供的基础设施来完成,如果需要完成一个复杂项目的设计,其实施难度是难以想象的,老鸟凭借多年的沉淀,对OS和线程库的熟悉程度也许可以完成,但是新手来写这样的东西基本就是不能用的。Java技术栈中关于JVM内存模型,并发基础设施,IOs的名著主要有如下几本。

名著1 <<Java Concurrency In Practice>>  -- 推荐理由,如果只能选一本书来学习Java多线程和并发,那么选这本吧,因为目前业内普遍认同的只有这一本,这本书是Cover的是JDK1.5以后的技术,再早的书籍也没什么价值了。

名著2 <<Effective Java>> --  推荐理由,书中有一章专门讲并发编程,难得的赞,其他章节也都值得学习,这本书笔者读了3遍+,每次都有新收获。

名著3 <<Java 8 In Action>> --  推荐理由,前面两本书相对比较老,这本书算是对前面两本名著的补充

名著4 <<Java IOs>> --  推荐理由,这是Java技术栈中IO技术的血泪史,俗话说知道历史才能进步,这本书的价值就在这里

名著5 <<Netty In Action>> --  推荐理由,Netty 这个框架是Java技术栈对Reactor模式的一个实现,Netty 这个框架的源代码可以说把Java技术栈中的多线程和IO用到了极致,所以对这个框架源代码的学习也是对以上所有相关技术学习的一次升华。

开源MQ和开源NoSQL内存数据库在现代的大型Java项目中已经基本成了标配,MQ技术主要解决的问题是耗时处理的异步化和异构系统的通信协作,Redis解决的是数据读写性能问题,下面这三本书可以说是这方面的经典。

名著6 <<Active MQ In Action>>

名著7 <<Rabbit MQ In Action>>

名著8 <<Redis In Action>>

总结

本文对Java技术栈进阶的主要技术进行了简单的总结,并总结出了8本相关的名著有针对性的对这些技术的学习提出了建议,希望对大家有所帮助。

Java Level 2 学习的八大名著的更多相关文章

  1. Java基础语法学习

    Java基础语法学习 1. 注释 单行注释: //单行注释 多行注释: /*多行注释 多行注释 多行注释 多行注释 */ 2. 关键字与标识符 关键字: Java所有的组成部分都需要名字.类名.变量名 ...

  2. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  3. 一位资深程序员大牛给予Java初学者的学习路线建议

    java学习这一部分其实也算是今天的重点,这一部分用来回答很多群里的朋友所问过的问题,那就是我你是如何学习Java的,能不能给点建议?今天我是打算来点干货,因此咱们就不说一些学习方法和技巧了,直接来谈 ...

  4. java并发编程学习: ThreadLocal使用及原理

    多线程应用中,如果希望一个变量隔离在某个线程内,即:该变量只能由某个线程本身可见,其它线程无法访问,那么ThreadLocal可以很方便的帮你做到这一点. 先来看一下示例: package yjmyz ...

  5. 回答阿里社招面试如何准备,顺便谈谈对于Java程序猿学习当中各个阶段的建议

    引言 其实本来真的没打算写这篇文章,主要是LZ得记忆力不是很好,不像一些记忆力强的人,面试完以后,几乎能把自己和面试官的对话都给记下来.LZ自己当初面试完以后,除了记住一些聊过的知识点以外,具体的内容 ...

  6. Java程序员学习之路

    1. Java语言基础 谈到Java语 言基础学习的书籍,大家肯定会推荐Bruce Eckel的<Thinking in Java>.它是一本写的相当深刻的技术书籍,Java语言基础部分基 ...

  7. 老鸟谈谈JAVA EE的学习

    老鸟谈谈JAVA EE的学习 因为出差和项目的原因,有将近一个月的时间没有更新博客了,今天终于得闲,和兄弟们分享一下JAVA EE的学习心得.书中带过,直入主题,下面我们首先看看什么是JAVA EE. ...

  8. Java虚拟机JVM学习07 类的卸载机制

    Java虚拟机JVM学习07 类的卸载机制 类的生命周期 当Sample类被加载.连接和初始化后,它的生命周期就开始了. 当代表Sample类的Class对象不再被引用,即不可触及时,Class对象就 ...

  9. Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论

    Java虚拟机JVM学习06 自定义类加载器 父委托机制和命名空间的再讨论 创建用户自定义的类加载器 要创建用户自定义的类加载器,只需要扩展java.lang.ClassLoader类,然后覆盖它的f ...

随机推荐

  1. 学习笔记——Java内部类练习题

    1.尝试在方法中编写一个匿名内部类. package com.lzw; public class AnonymityInnerClass { } class OuterClass4{ public O ...

  2. JSP中三种弹出对话框的用法《转》

    对话框有三种 1:只是提醒,不能对脚本产生任何改变: 2:一般用于确认,返回 true 或者 false ,所以可以轻松用于 if...else...判断 3: 一个带输入的对话框,可以返回用户填入的 ...

  3. golang中的reflect包用法

    最近在写一个自动生成api文档的功能,用到了reflect包来给结构体赋值,给空数组新增一个元素,这样只要定义一个input结构体和一个output的结构体,并填写一些相关tag信息,就能使用程序来生 ...

  4. Android布局管理详解(1)—— LinearLayout 线性布局

    Android的布局方式共有6种,分别是LinearLayout(线性布局).TableLayout(表格布局).FrameLayout(帧布局).RelativeLayout(相对布局).GridL ...

  5. 本地化 NSLocal

    本地化封装了关于语言,文化以及技术约定和规范的信息.用于提供于用户所处地域相关的定制化信息和首选项信息的设置.通过获取用户的本地化信息设置,我们可以为用户提供更加友好人性化的界面设置,包括更改更改应用 ...

  6. 如何快速部署国人开源的 Java 博客系统 Tale

    除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...

  7. Solr DateRangeField

    Solr DateRangeField 是solr5.0 实现的一个feature. 关于 DateRangeField 支持日期查询如  date_field:[2016-03-23 TO 2017 ...

  8. android开发之多线程实现方法概述

    一.单线程模型 当一个程序第一次启动时,Android会同时启动一个对应的主线程(Main Thread),主线程主要负责处理与UI相关的事件,如:用户的按键事件,用户接触屏幕的事件以及屏幕绘图事件, ...

  9. protected private public 的区别

    1.public,protected,private是Java里用来定义成员的访问权限的,另外还有一种是"default",也就是在成员前不加任何权限修饰符.如:    publi ...

  10. babel入门基础

    背景 babel的官网说babel是下一代的js语法编译器,现在自己也在很多项目中使用了babel,可是自己对babel的认识呢,只停留在从google和别人项目中copy的配置代码上,内心感到很不安 ...