转载

Java学习的技能点有哪些?
上次聊了程序员Java学习的成长过程,接着就有同学问了,着重应该学哪些技能?我作为Java老架构师今天就不废话了,直接开讲!首先刚开始学习Java除了语法之外就是数据结构了,一定要深刻理解和会用Java.util.collection框架,这是Java教父Joshua Bloch的传世之作,对于高频使用的List,Map脉系源代码建议通读,看看大师鬼斧神工的手法。其次就是要记住Doug Lea这位大师,他是Java并发包的作者,要把学习Java多线程和并发控制作为Java学习的基础任务,因为这个复杂的互联网云平台时代,懂得多线程就是程序员的标配。再次谈框架,很多新人一上来就是Springboot,殊不知它是一个技术栈的微型集成者。我们不要让它把所有技术封装屏蔽掉,而要从servlet/jsp规范,Tomcat容器的经典学起才能明白web底层逻辑,再配上Springframework的bean管理、orm、aop这才学到了根子上,当你明白了核心,看似高级的内容其实都是这些基本组件的集成!Spring全家桶+Mybatis依然是主流,我至今依然认为这是一种程序员被码农化(开发简易自动)的趋势,但没办法,学习它们是必须的。不同于Hibernate的侵入性,MyBatis用起来更简易且更易于自定义,这是符合互联网发展需求的,但我更喜欢前者,充分的面向对象。另外Java的学习离不开一些外部资源的高频结合:第一就是数据库了,而数据库的学习重点在于设计范式和事务例如隔离级别,mvcc这些;第二就是Redis,纯内存的k/v字典,主要为高并发查询缓存数据防止数据库穿透,这就是互联网发展的必然需求;第三就是http协议、ssl加密协议、操作json和restful架构风格的深刻理解,与前端主要的交互方式。第四更高级别需要理解消息MQ的异步通讯机制和应用,Api网关对于微服务的调度,核心是Nginx,以及微服务的注册发现、RPC调用的技术实现。第五目前物联网技术愈来愈普及,对于netty,socketio这种网络通讯技术的掌握。第六大数据技术方面,对于ES、kafka、MongoDB、Cassandra这些适合与上层Java应用结合的框架会被大量应用。最后就是容器技术,docker必学,那么Linux shell编程就要掌握了,容器太多要考虑k8s编排!

你可能感兴趣的:(转载)