前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java有哪些进阶技术?

Java有哪些进阶技术?

作者头像
三哥
发布2018-06-15 13:46:32
1K0
发布2018-06-15 13:46:32
举报
文章被收录于专栏:java工会java工会

一些人对JAVA进阶的理解片面了,JAVA不过也是一门语言,提升和进阶还是内功的体现。就像那位答主所说,进阶的第一步就是编码风格和规范。我深表同意。 只是会用,这还远远不够~当然这也和题主的提问观点是一致的。

那么我想说的是,可能会用也是分层次的!就拿一般意义的编码来说,思想上可以分四个层次

第一层次是代码的长相,也就是编码的规范化,比如为什么不提倡用tab键缩进,而是用四个空格代替?类似的问题……

第二层次是代码的封装,也就是模块化,也许有现成的框架,但是有人也就是真的是日复一日的重复,脑子里从来没有这方面的意识,也从来没有去主动看过那些框架的源代码,就比如Spring框架的源码,那里面可是各种设计模式和JAVA反射,注解啊等的综合应用,非常有学习的必要,看看别人是怎么设计的架构……自己能不能也写一个轮子~要知道造轮子不是目的,关键是过程中得到升华!而且很多大公司都是自己二次封装或者重写的框架,比如阿里……

第三层次是代码的可重用性,所谓的设计模式,什么代码复用,高内聚,低耦合那一套……知道JAVA的哪些api用了哪些设计模式么?思想很重要。

第四层次是代码的可重入性,也就是涉及到并发环境。针对JAVA就是JAVA的多线程,比如JAVA常用的集合,有没有了解过集合这些算法的内部源码?一些线程的集合都是如何实现线程安全的?别的公司不知道,稍微大点的互联网公司,多线程是必考的,也是常用的,比如网易,阿里,等等等等,因为这些公司我面过或者有朋友在里面。他们的东西不是说简单搭个框架,写个网站的事情,后台也不是仅仅就JAVA。

这四个层次都有,或者都一直在注意和学习,那么针对JAVA,有没有对JAVA虚拟机做过调优?JAVA的内存模型,类加载机制了解么?对JAVA虚拟机的垃圾回收算法有过研究么?JAVA会发生内存泄露么?举例子什么情况会发生?如何避免?这些是我曾经被面试问过的……

再针对框架进一步了解,对Spring框架或者ibatis框架的源码研究过么?用过如今流行的restful么?如果让你设计,你有什么想法?为什么要用框架?为什么用依赖注入……spring的事务机制的原理是什么?hibernate的缓存机制……还有osgi,太多了……

再进一步,对JAVA虚拟机的架构,JAVA字节码文件格式,编译原理,计算机操作系统,c++的掌握?读一读《深入理解计算机系统》?最后试着自己写一个教学用的JAVA虚拟机。

再想进阶,用了那么久的tomcat,读过《深入剖析tomcat》么?tomcat的整体设计方案?一次请求tomcat的处理,servlet在tomcat中的加载,编译过程?tomcat自定义的ClassLoader有什么作用? 知道用户点击链接到网页出现内容的内部过程么?http协议了解多少? 这些都是我曾经被考过的……

继续进阶,用过JAVA的netty框架么?对它研究研究?绝对是学习JAVA并发,nio,和网络的好东西!

github?对linux了解多少?会脚本语言么?

再进阶,针对JAVA web离不开数据库~那么对sql调优了解过么?是否能熟练的写出存储过程?游标?数据库的索引是如何实现的?也就是b树和hash……对NOSQL了解么?对常见数据库引擎的差异性了解么?知道他们内部原理么?数据库的设计,范式……

太多了,学无止境,关键还是基本功扎实!语言都是次要的。针对JAVA语言本身,把编程思想吃透足以,对语言剩下的就是查漏补缺。而思想基本功才是决定高度的,也不会和一些程序员网友那样担心35岁以后被淘汰!!!

不清楚你做了两年,是在做什么

若是 WEB 的话, java 可以做, C# 可以做, js 可以,此外 python, ruby, go, 等都可以。有考虑过么?之间什么不同?

跳出了以语言定发民方向的思维之后,你会发现:全栈工程师 才是 IT人的正确方向。

更客观上说,作为一个职业,只是解决问题,创造价值。

你若考虑如何创造更多价值。就知道应该学什么了。

技术层面,工程层面,科研层面。海量去了。都可以同 Java 扯上关系。但是,也可以同其它编程语言扯上关系。

你提到的框架的话,如果是web开发框架,那么你就可以学习web方面的开发知识。

Java提供了网络开发的工具,所以你也可以往网络编程方面学习,学习下netty等。

如果是说语法特性的话,就可以学习下函数式语言比如Scala,Clojure等了解不同的编程思想

大数据方面的,Hadoop,Spark这些大数据处理工具也是不错的学习方向

数据库类的,HBase、H2等Java写的数据库,也可以去了解下数据库系统的实现

还有一些基础性的,比如性能调优之类的,那么你可以能要了解JVM的原理构造,学习并发编程方法的知识。

作者:重走Java 链接:https://www.jianshu.com/p/b9e5d9d603c0 來源:简书

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java工会 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档