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)和对象 ...
随机推荐
- 【转】Hive 基础之:分区、桶、Sort Merge Bucket Join
Hive 已是目前业界最为通用.廉价的构建大数据时代数据仓库的解决方案了,虽然也有 Impala 等后起之秀,但目前从功能.稳定性等方面来说,Hive 的地位尚不可撼动. 其实这篇博文主要是想聊聊 S ...
- 今天发现一些很有意思的ubuntu命令
跑火车的sl/LS 终端数字雨cmatrix 可能是名言警句也可能是逗你玩的笑话的fortune/fortune-zh 一只会说话的牛 一只会吟诗的牛 上真牛喽! 炫酷 炫酷到这里了!!!
- 今天主要推荐一下django学习的网址!
前言:每个月忙碌的头20天后,在上班时间投入到django理论学习的过程中,花了差不多3天时间简单的研究了一下django,着实废了我不少脑细胞. 采用虫师前辈的一张图和话: 如果你把这过程梳理清晰了 ...
- [WPF系列]-数据邦定之DataTemplate 对 ItemsControl 进行样式和模板处理
引言 即使 ItemsControl 不是 DataTemplate 所用于的唯一控件类型,将 ItemsControl 绑定到集合仍然很常见. 在 DataTemplate 中有哪些内容一节中, ...
- MIDI信息为什么不能通过FL Studio输出
讲解这个问题之前,小编先给大家科普一下什么是MIDI.所谓的MIDI其实只是数字信号,和我们熟知的乐谱有点像.它的作用就是能很好的传达什么时间演奏什么音,这个音要演奏多久等信息,就如同我们演唱会中指挥 ...
- BZOJ 3112: [Zjoi2013]防守战线 [单纯形法]
题目描述 战线可以看作一个长度为n 的序列,现在需要在这个序列上建塔来防守敌兵,在序列第i 号位置上建一座塔有Ci 的花费,且一个位置可以建任意多的塔,费用累加计算.有m 个区间[L1, R1], [ ...
- Java 线程同步
线程同步 1.线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏. 2.线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的 ...
- jQuery与Struts2综合应用[stream/json]
一.使用stream类型的Result实现Ajax 具体步骤: ① 定义InputStream类型的成员变量及getter和setter ②具体业务方法中将要发送到客户端的json字符串赋值给成员变量 ...
- PHP的魔法方法__set() __get()
php的魔法方法__set()与__get() Tags: PHP 我们先来看看官方的文档如何定义他们的: public void __set(string $name, mixed $value); ...
- SqlMetal生成的DBML文件信息
[Database(Name="AdventureWorks")] --> 映射数据库 [Table(Name="Customers")] --> ...