这是看了一篇大神说的java程序员应该会些什么的文章,这里只是把应该掌握的技能部分列了出来。

static、final、transient、volatile关键字,内部类,泛型等

static最需要记住的一点就是类属性中被static修饰的变量,会被作为GC的root根节点。作为根节点就意味着,这一类变量是基本上不会被回收的,因此static很容易引入内存泄露的风险。static会将所应用的属性,方法以及内部类直接产生引用关系,而并非与类的实例,这是为什么可以使用类名.方法名就能引用的原因。如果没用static修饰内部类,那么声明内部类的时候就需要先生命外部类实例,在由外部类生命一个内部类实例。

volatile关键字,重点就是 “可见性” 。要知道,可见性到底是什么意思,弄明白这个需要了解真么叫主存和工作内存。还有volatile并不保证同步。
重要的是知道原理,不是只是会用。

java运行时环境
java运行时环境就是jre,本质是JVM。首先知道JVM与Hotspot的关系。JVM更多指的是JVM规范,而Hotspot是JVM的一种实现。可把JVM规范当做接口,Hotspot当做一种实现。这样好理解一点。

JVM最重要的三个部分:内存划分、class加载机制、GC策略

这里所说的内存划分,其实指的是Hotspot的划分方式,并不是JVM规范划分方式。

Hotspot内存划分简单说分为三个部分:Young Generation(年轻代),Old Generation(年老代)、Perm Generation(永久代)。
其中年轻代又分为三个部分(Eden,From,To)其中From和To统称为Servivor Spaces(幸存区)

classloader加载机制,可以结合tomcat学习,了解清除tomcat的classloader机制,看tomcat如何保证各个APP之间的类隔离的。

GC自己找地方看

并发只是与concurrent包
关于并发,最重要的概念要搞清楚:原子性、可见性。
concurrent包中ConcurrentHashMap和普通的同步HashMap之间的区别。这个问题需要知道两个知识,一个是HashMap的数据结构,一个是锁分段的技术。
concurrent包中有一个AbstractQueuedSynchronizer几乎所有的concurrent包内的并发工具类都是基于这个类,把这个研究透。
ReentrantLock和synchronized关键字的区别,synchronized由于是底层JVM实现的互斥,因此效率更高一些,而ReentrantLock的功能更多。
并发是java程序员进阶的重要部分。。。。。。

设计模式和反射
设计模式:http://www.cnblogs.com/zuoxiaolong/category/509144.html
反射:reflect包

文件IO,NIO、网络IO以及网络协议
tomcat有多种协议的实现、其中包扩了BIO、NIO、和APR,这三者一定非常他们的 区别,这个可以在connector的protocol属性配置
网络IO就是net包里的东西
网络协议也要理解。TCP:重试机制,三次握手,TCP和UDP的区别

spring、mybatis框架

Linux服务器:文件系统、网络、IO

数据库优化

消息服务:rabbitMQ、activeMQ、rocketMQ。精通原理

缓存服务:memcached,redis

负载均衡

数据结构与算法

计算机操作系统

计算机网络

熟练使用一种脚本语言:如:Python

gitlub和博客

java程序员应该掌握的技能的更多相关文章

  1. 工作了3年的JAVA程序员应该具备什么技能?(zhuan)

    http://www.500d.me/article/5441.html **************************************** 来源:五百丁 作者:LZ2016-03-18 ...

  2. 工作了3年的JAVA程序员应该具备什么技能?(转)

    工作了3年的JAVA程序员应该具备什么技能? 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章.这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发 ...

  3. 一名3年工作经验的java程序员应该具备的技能

    一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容.我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价.拿到的薪水势必也越高 ...

  4. 4-6年经验左右、优秀的 Java 程序员应该具备的技能

    4-6年经验左右.优秀的 Java 程序员应该具备的技能有哪些,按“专业技能”和“项目”两块,包括但不限于以下内容. 专业节能方面 基础:JDK 常用类的原理.源码.使用场景. 设计模式:常用几种的原 ...

  5. java程序员必须会的技能

    1.语法:必须比较熟悉,在写代码的时候IDE的编辑器对某一行报错应该能够根据报错信息知道是什么样的语法错误并且知道任何修正. 2.命令:必须熟悉JDK带的一些常用命令及其常用选项,命令至少需要熟悉:a ...

  6. Java程序员需要掌握的技能

    转自:https://www.cnblogs.com/harry335/p/5924505.html

  7. Java程序员怎么不断进阶 必须要掌握哪些技能

    Java程序员怎么不断进阶?必须要掌握哪些技能?成为架构师是Java程序员职业规划中的重要一环,但如何才能快速实现进阶困扰了许多Java程序员.无论是从技能深度还是实战经验,架构师都远超于普通的Jav ...

  8. 正式工作的前奏——一个Java程序员的实习总结(1)

    不知不觉,到深圳实习已经三个礼拜了.跟在暑假的三个半月实习不一样,这次收获更多,感受更好,算是摆脱了那次实习给我带来的阴影(这个会放到以后才说). 在知乎上,有这么一个问题,你现在最想跟刚工作时的你说 ...

  9. 一名3年工作经验的java程序员应该具备的职业技能

    一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容.我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价.拿到的薪水势必也越高 ...

随机推荐

  1. protobuf安装

    Protocol Buffers - Google's data interchange format 一.简介 名字已经很好的说明它是什么,这里还是要简单的介绍一下,protobuf是protoco ...

  2. 浅谈MySQL索引背后的数据结构及算法(转载)

    转自:http://blogread.cn/it/article/4088?f=wb1 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储 ...

  3. exp函数

    第一种是tensor用exp函数 th> a [torch.DoubleTensor of size 1x3] [.0002s] th> a:exp() 2.7183 2.7183 1.0 ...

  4. Jquery 内容简介

    内容简介  内容简介 • 什么是Jquery • 万能的选择器 • 管理jQuery包装集 • 使用jQuery操作元素的属性与样式 • 事件与事件对象 • jQuery中的Ajax • jQuery ...

  5. UPDATE语句:将一个表里的字段更新到另一个表的字段里的语句

    update table2 b,(select b.area_id as arid,sum(a.user_amount) as bcount from table1 a,table2 b where ...

  6. 多态,虚拟方法,重写,接口,类库,委托,is,as运算符,泛型集合,万能变量

    多态:简而言之就是龙生九子,各有不同 有了继承,才有了多态 1.虚方法 virtual重写 override父类中的方法,在子类中并不适用,那么子类需要自主更改继承的方法或者是属性,那父类中加了vir ...

  7. linux rc.sysinit文件详解

    /etc/rc.d/rc.sysinit 系统初始化脚本的任务 .激活udev和selinux .根据/etc/sysctl.conf文件设定内核参数 .设定系统时钟 .装载键盘映射 .启用交换分区 ...

  8. white的配置使用

    初次使用White来自动化测试10个9相加1.新建Visual C#->测试->单元测试项目2.在资源视图->引用,右键,添加引用,添加White的两个.dll文件3.在工程中添加命 ...

  9. JavaBean基础转载

    JavaWeb:JavaBean基础 JavaBean基础 JavaBean简介: 1.JavaBean是一种可以重复使用的类,可以没有用户界面,主要负责业务数据或者处理事物(数据运算.操作数据库) ...

  10. 求解数组环中最大子数组和的问题(java)

    //石家庄铁道大学 信1405-1 班 唐炳辉 在上一次作业中,对于普通数组的最大子数组的求解问题的基础上,将普通的数组变成一个首尾相接的环,求这个环的最大子数组.类似的,只要改变普通数组的数组位置, ...