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都有什么进阶技术的更多相关文章
- 史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点
史上最全的Java高级技术点,全是Java高级进阶技术,几乎包含了Java后端的所有知识点 1
- 2019 Java 全栈工程师进阶路线图,一定要收藏
技术更新日新月异,对于初入职场的同学来说,经常会困惑该往那个方向发展,这一点松哥是深有体会的. 我刚开始学习 Java 那会,最大的问题就是不知道该学什么,以及学习的顺序,我相信这也是很多初学者经常面 ...
- java基础篇---I/O技术
java基础篇---I/O技术 对于任何程序设计语言而言,输入输出(I/O)系统都是比较复杂的而且还是比较核心的.在java.io.包中提供了相关的API. java中流的概念划分 流的方向: 输 ...
- 【Java】Java网络编程菜鸟进阶:TCP和套接字入门
Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...
- 反射那些事儿——Java动态装载和反射技术
一直以来反射都是只闻其声,却无法将之使用,近日尽心下来学习下,发现了很多精妙之处. Java动态装载和反射技术 一.类的动态装载 1.Java代码编译和执行的整个过程包含了以下三个重要的机制: ● J ...
- 横瓜执导众程序员开展大讨论关于C、JAVA及其它主流IT技术使用情况和优点缺点。
横瓜执导众程序员开展大讨论关于C.JAVA及其它主流IT技术使用情况和优点缺点. 遥执乾坤(44758121) 18:21:23 mysql据说只能使用一个索引,我这里几乎所有字段都有索引. 但每个 ...
- 第62节:探索Java中的网络编程技术
前言 感谢! 承蒙关照~ 探索Java中的网络编程技术 网络编程就是io技术和网络技术的结合,网络模型的定义,只要共用网络模型就可以两者连接.网络模型参考. 一座塔有七层,我们需要闯关. 第一层物理层 ...
- “五年经验”年薪50W分享Java程序员掌握什么技术才不会被淘汰
在这个IT系统动辄就是上亿流量的时代,Java作为大数据时代应用最广泛的语言,诞生了一批又一批的新技术,包括HBase.Hadoop.MQ.Netty.SpringCloud等等 . 一些独角兽公司以 ...
- java基础篇---I/O技术(三)
接上一篇java基础篇---I/O技术(二) Java对象的序列化和反序列化 什么叫对象的序列化和反序列化 要想完成对象的输入或输出,还必须依靠对象输出流(ObjectOutputStream)和对象 ...
随机推荐
- 深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接(转)
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 stude ...
- 从零自学Hadoop(12):Hadoop命令中
阅读目录 序 HDFS Commands User Commands Administration Commands Debug Commands 引用 系列索引 本文版权归mephisto和博客园共 ...
- 关于Thinkcmf中热门文章的使用
今天在做一个首页新闻列表页面的功能时候,因为要读取大量的新闻内容列表.如果每条数据都要从数据按照文章id和term_id来对应取值,无疑是很痛苦的. 然而机智如我,发现cmf框架中热门文章的用法: 在 ...
- CentOS 7 恢复 Windows 启动项
安装Linux时一般会自动识别windows系统并添加引导项,而 CentOS 默认不支持 NTFS 分区,CentOS7采用了Grub2,与CentOS6有区别.手动引导windows分区修改配置稍 ...
- 去掉Actionbar下的shadow
<item name="android:windowContentOverlay">@null</item> http://www.cnblogs.com/ ...
- WIN32下使用DirectSound接口的简单音频播放器(支持wav和mp3)
刚好最近接触了一些DirectSound,就写了一个小程序练练手,可以用来添加播放基本的wav和mp3音频文件的播放器.界面只是简单的GDI,dxsdk只使用了DirectSound8相关的接口. D ...
- [普通平衡树splay]【学习笔记】
参考: http://blog.csdn.net/clove_unique/article/details/50630280 gty课件 找一个好的风格太难了,自己习惯用struct,就强行用stru ...
- POJ2406Power Strings[KMP 失配函数]
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 45005 Accepted: 18792 D ...
- Log4J日志配置详解
一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders (输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使 ...
- MVC4 自定义错误页面(转)
一.概述 MVC4框架自带了定义错误页,该页面位于Shared/Error,该页面能够显示系统未能捕获的异常,如何才能使用该页面: 二.使用步骤: 1.配置WebConfig文件,在System.We ...