一个java六年半实习生 level
获赞
474
粉丝
55
关注
3
看过 TA
154
门头沟学院
2017
Java
IP属地:浙江
暂未填写个人简介
私信
关注
凌晨夜深人静~,菜奕和大家稍微放松一下来聊聊“Java 核心技术”之外的内容,我也分享一下我对 Java 学习和面试的看法,希望对大家能有所帮助。从学习技巧的角度,每个人都有自己的习惯,我个人喜欢动手实践以及与人进行交流。动手实践是必要一步,如果连上手操作都不肯,你会发现自己的理解很难有深度。在交流的过程中你会发现,很多似是而非的理解,竟然在试图组织语言的时候,突然就想明白了,而且别人的观点也验证了自己的判断。技术领域尤其如此,把自己的理解整理成文字,输出、交流是个非常好的提高方法,甚至我认为这是技术工作者成长的必经之路。再来聊聊技术底层,我们是否有必要去阅读源代码?需要理解什么程度?阅读源代码当然是个好习惯,理解高质量的代码,对于提高我们自己的分析、设计等能力至关重要。在实际工作中,阅读代码的时间其实大大超过写代码的时间,这意味着阅读、总结能力,会直接影响我们的工作效率!这东西有没有捷径呢,也许吧,我的心得是:“无他,但手熟尔”。需求复杂而多变,越来越凸显出白盒方式的重要性。快速定位问题往往需要黑盒结合白盒能力,对内部一无所知,可能就没有思路。与此同时,通用平台、开源框架,不见得能够非常符合自己的业务需求,往往只有深入源代码层面进行定制或者自研,才能实现。我认为这也是软件工程师地位不断提高的原因之一。对于底层技术,这个确实是比较有争议的问题,我个人并不觉得什么东西都要理解底层,懂当然好,但不能代表一切,毕竟知识和能力是有区别的,当然我们也要尊重面试官的要求。我个人认为,不是所有做 Java 开发的人,都需要读 JVM 源代码,虽然我在专栏中提供了一些底层源代码解读,但也只是希望真的有兴趣、有需要的工程师跟进学习。对于大多数开发人员,了解一些源代码,至少不会在面试问到的时候完全没有准备。
0 点赞 评论 收藏
转发
Hello大家好,我是小奕,一个工作了五年的阿里程序员,欢迎评论底下留言加粉丝群,我会拉你们加入粉丝群,觉得看的不错想了解更多这样的短文,也请大家多多关注这个我主页动态其他帖子。如果你是第一次听到这个名词,那么不好意思,你是凭实力拿低薪的同学!为时不晚,赶紧卷起来。​之前面试包括工作几年同学面试这个问题,我有点惊讶,现在很多主流框架都用到这一个机制,竟然不知道。这个问题是什么是SPI,它有什么作用?下面我们来看看普通人和老司机对于这个问题的一个回答。普通人的回答:SPI我记得好像在那个Dubbo里面有用到。就说它可以去实现这种就是功能的扩展嘛,我记得因为在double里面就是说有一些什么负载均衡的策略嘛,我如果说我觉得他里面自带策略不够的话,或者他的策略没达到我的需求的话,我是可以用SPI这样的方式去扩展。老司机的回答:SPI的全称呢,是service provider interface,它是jdk里面内置的一种动态扩展的一个实现,简单来说我们可以定一个标准的接口,然后第三方库里面可以去实现这个接口。那么我们程序在运行的时候呢,会根据配置信息动态加载第三方的一个实现,从而去完成功能的一个动态扩展机制。我们知道在Java里面,SPI的机制非常典型的一个实现案例,就是数据库的一个驱动。java.jdbc.driver。jdk里面定义的数据库的一个驱动类叫Driver,它是一个接口,而JDK里面并没有提供这个Driver的一个实现,具体的实现是由第三方的数据库厂商来完成的。在程序运行的时候,会根据我们生命的驱动类型来动态去加载对应的一个扩展实现,从而去完成数据库的一个连接动作。除此以外,在很多开源扩展里面都有借鉴Java spi的一个思想,去提供自己的一个SPI的一个框架,比如说double里面定义了一个extension loader,它实现一个动态扩展的功能,在spring里面呢,提供了一个spring factory loader去实现外部功能的一个集成。SPI的思想确实很有价值,在实际业务开发里面我们可以利用这样的一个思想,在不修改核心代码的情况下去提供功能的增强和扩展。​
0 点赞 评论 收藏
转发
牛客网
牛客企业服务