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语言本身,把编程思想吃透足以,对语言剩下的就是查漏补缺。而思想基本功才是决定高度的,

Java都有什么进阶技术的更多相关文章

  1. 史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点

    史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点 1

  2. 2019 Java 全栈工程师进阶路线图,一定要收藏

    技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的. 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面 ...

  3. java基础篇---I/O技术

    java基础篇---I/O技术   对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...

  4. 【Java】Java网络编程菜鸟进阶:TCP和套接字入门

    Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...

  5. 反射那些事儿——Java动态装载和反射技术

    一直以来反射都是只闻其声,却无法将之使用,近日尽心下来学习下,发现了很多精妙之处. Java动态装载和反射技术 一.类的动态装载 1.Java代码编译和执行的整个过程包含了以下三个重要的机制: ● J ...

  6. 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。

    横瓜执导众程序员开展大讨论关于C.JAVA及其它主流IT技术使用情况和优点缺点. 遥执乾坤(44758121)  18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个 ...

  7. 第62节:探索Java中的网络编程技术

    前言 感谢! 承蒙关照~ 探索Java中的网络编程技术 网络编程就是io技术和网络技术的结合,网络模型的定义,只要共用网络模型就可以两者连接.网络模型参考. 一座塔有七层,我们需要闯关. 第一层物理层 ...

  8. “五年经验”年薪50W分享Java程序员掌握什么技术才不会被淘汰

    在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 . 一些独角兽公司以 ...

  9. java基础篇---I/O技术(三)

    接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...

随机推荐

  1. OAF messageChoice 关联问题

    最近有个需求,就是采购订单的供应商要按照一级和二级来选,一级关联二级,二级关联供应商.之前的一级和二级都是用LovInput做的,现在想要改为messageChoice.如下图: 改为: 下面给大家介 ...

  2. 在Cortex-M系列上如何准确地做us级延时?

    前几天刚好同事问起在Cortex-M上延时不准的问题,在网上也没找到比较满意的答案,干脆自己对这个问题做一个总结. 根据我们的经验,最容易想到的大概通过计算指令周期来解决.该思路在Cortex上并不是 ...

  3. python数据库操作对主机批量管理

    import paramiko import MySQLdb conn = MySQLdb.connect(host=',db='host') cur = conn.cursor(cursorclas ...

  4. Android APP 读取 AndroidManifest.xml 中的版本信息详解

    APP都会涉及到版本的问题,Android APP的版本信息保存在AndroidManifest.xml文件的顶部.如下图: 有2个属性表示,“android:versionCode”和“androi ...

  5. HTTP状态码302、303和307的故事

        今日读书,无法理解HTTP302.303.307状态码的来龙去脉,决定对其做深究并总结于本文.       <HTTP权威指南>第3章在讲解30X状态码时,完全没有讲清楚为什么要有 ...

  6. OpenStack 企业私有云的若干需求(6):大规模扩展性支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

  7. HOLOLENS不适合加天空盒

    加了就有点像VR了,但是视野太窄,所以还是去掉天空盒吧

  8. Log4J日志配置详解

    一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...

  9. B树、B-树、B+树、B*树

    B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right) 2.所有结点存储一个关键字 3.非叶子节点的左指针指向小于其关键字的字数,右指针指向大于其关键字的字数: 如: B树的 ...

  10. Autofac手动注入及自动注入示例

    参考:http://www.cnblogs.com/xinchuang/archive/2013/05/07/3065433.html#2911661 一.环境 vs2012.mvc4..Net Fr ...