有人私信我说,除了要掌握的20%以外还要掌握些什么知识才能游刃有余。下面说说我接触(使用)过、的东西吧。
- java以分布式应用丰富的生态闻名,在分布式系统中逃不过CAP的抉择。早早了解一些分布式一致性协议paxos、raft等。学习zookeeper的原理和使用场景(metadata、分布式锁、leaderEletion... etc)
- RPC框架在SOA架构中起着重要的作用,好好探究终是有好处的,在这里推荐阿里巴巴的dubbo框架,同时会netty、mina等网络库
- Hadoop系列 Storm Spark 等离线\实时计算框架
- ElasticSearch\SolrCloud 分布式搜索 ELK 日志相关的东西对这些比较敏感,当然在更多的场景使用ES也是有很多
- 消息队列 kafka\MetaQ RabbitMQ 缓存 Redis/memcached .容器tomcat/jetty web服务器NGINX/OpenResty
- 然后就是各种基础知识,编程语言、网络方面、数据库、数据结构和算法。不要觉得任何一项都精通了,敢说精通的能有几个。
- 掌握技能也就是需要时间成本和学习成本,要成为一个好的程序员不要怕学习,有学历能力需要新技术才能跟得上,想当年才学的时候struts2比springmvc高出一截,不过现在也基本没人用啦。
Java程序员一定要学好重点的技术,如下面这些
- 并发包:理解 ConcurrentHashMap原理,线程池,异步并发,锁。
- 集合类,线程类。
- http请求
- json,xml读写。
- 常用api。
- 前端模块javascript、css,熟悉一个前端框架。</