首页
学习
活动
专区
工具
TVP
发布

阿杜的世界

专栏作者
197
文章
174052
阅读量
34
订阅数
类加载器中的双亲委派模型详解
在上一篇文章中,我们梳理了类加载器的基本概念:类的生命周期、类加载器的作用、类的加载和卸载的时机等等,这篇文章我们接着前文继续复习类加载器的知识,主要包括:JVM中有哪些类加载器?它们之间是什么关系?什么是双亲委派机制?
阿杜
2019-10-14
6100
彻底搞懂JVM类加载器:基本概念
在Java面试中,在考察完项目经验、基础技术后,我会根据候选人的特点进行知识深度的考察,如果候选人简历上有写JVM(Java虚拟机)相关的东西,那么我常常会问一些JVM的问题。JVM的类加载机制是一个很经典的知识点,围绕这个知识点可以有下面这些难度不同的问题。
阿杜
2019-10-08
6110
JVM调优实战:G1中的to-space exhausted问题
最近刚刚将自己的一个应用从CMS升级到G1,在一天早上,刚刚到办公室坐下,就收到手机一阵报警,去查看了监控,发现机器的内存出现了一个90度的涨幅,如下图所示:
阿杜
2019-08-25
3.1K0
Java 8原生API也可以开发响应式代码?
asphalt-automobile-automotive-1172105.jpg
阿杜
2019-08-12
7770
使用Optional摆脱NPE的折磨
architectural-architectural-design-architecture
阿杜
2019-07-15
5050
函数式编程让你忘记设计模式
有点标题党,但是这确实是我最近使用Lambda表达式的感受。设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式。面向对象常见的设计模式有策略模式、模板方法、观察者模式、责任链模式以及工厂模式,使用Lambda表达式(函数式编程思维)有助于避免面向对象开发中的那些固定代码。下面我们挑选了策略模式和职责链模式两个案例进行分析。
阿杜
2019-07-08
9580
vavr:让你像写Scala一样写Java
Hystrix是Netflix开源的限流、熔断降级组件,去年发现Hystrix已经不再更新了,而在github主页上将我引导到了另一个替代项目——resilience4j,这个项目是基于Java 8开发的,并且只使用了vavr库,也就是我们今天要介绍的主角。
阿杜
2019-07-01
8830
025:为什么需要将Logger对象声明为private static final类型的
有时候我会使用protected而不是private,只有一种情况下我会这么用:当我的设计中有继承体系,并且我希望继承体系里的对象都使用同一个日志对象时,就会在基类里定义一个protected的日志对象。
阿杜
2019-06-16
1.5K0
024:用Java实现shell命令cat 1.log | grep a | sort | uniq -c | sort -rn的功能
artificial-intelligence-codes-coding-247791.jpg
阿杜
2019-06-13
1.3K0
022:如果要将对象用作Map中的key,需要注意什么
如果将对象作为Map中的key,需要是实现该对象的equals方法和hashCode方法;现在一般通过lombok可以简单得实现,并且可以选择具体需要哪些字段参与equals和hashCode方法的计算。
阿杜
2019-05-15
1.4K0
021:谈谈面向对象的三大特性
封装: 常见的编程范式有:过程式编程、面向对象编程、函数式编程,现在函数式编程很火,但是面向对象编程依然是主流。
阿杜
2019-03-15
3100
020:举几个String的API以及案例
这道题比较开放,主要考察面试者的基础和知识面,首先可以尽量列举自己用过的API,并给出应用场景和注意事项(展现自己的知识面),然后再挑一个比较经典的案例详细说明(展现自己的基础)。
阿杜
2019-03-15
4720
017:为什么不建议在循环中使用“+”拼接字符串
由于字符串对象是不可变的,所以每次循环都会对操作符左右两边的字符串进行拷贝,并生成一个新的字符串对象。如果循环n次,则这个过程需要n的平方级的时间;并且在这个过程中还创建了很多短命的中间对象。
阿杜
2019-03-12
1.2K0
002-如何理解Java的平台独立性
Java有句非常有名的口号——“一次编写,到处运行”,依靠的就是JVM提供的平台独立性,本质上来讲,就是通过虚拟机技术,通过限制一些功能,达到屏蔽底层细节的目的。更具体得说,Java的平台独立性体现在两个方面:体系结构无关、可移植。
阿杜
2019-03-12
6410
018:String、StringBuilder和StringBuffer的区别
Java中的String对象是不可变对象,针对字符串对象的操作(例如subString、contact、replace)都会生成一个新的String对象,如果应用中有大量这样的操作,就会产生大量的临时String对象,会影响Java应用运行的性能。
阿杜
2019-03-12
5200
003-005:Java平台相关的面试题
字节码之于Java,类似于汇编语言之于C/C++。对于C/C++语言来说,不同的平台需要不同的编译器,以应对不同的操作系统和机器指令集;对于Java来说,只需要一个编译器(javac),编译形成的字节码是一种通用的代码,可以运行在任何安装了JVM的机器上,也就实现了所谓的“一次编写、到处运行”。
阿杜
2019-03-12
3470
016:字符串对象在JVM中是如何存放的
String提供了一个API——java.lang.String.intern(),这个API可以手动将一个字符串对象的值转移到字符串常量池中。
阿杜
2019-03-12
2.1K0
015:为什么Java中的字符串对象是不可变的
所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象。这意味着当我们将一个不可变对象的引用赋值给某个变量后,我们就不能改变该对象的内部状态。 James Gosling也说过——Java开发者应该尽量使用不可变对象。
阿杜
2019-03-12
6080
007-014:关于包装类的面试题
Java的类型系统由两部分组成:基本类型(primitive)和引用类型(reference type)。包装类指的是Java基础类型对应的引用类型。每个基本类型都有一个对应的包装类:
阿杜
2019-03-12
6700
利用MAT玩转JVM内存分析(一)
尽管JVM提供了自动内存管理的机制,试图降低程序员的开发门槛,确实也实现了这一目标,在日常开发中,我们一般都不需要关心对象的内存释放。JVM大部分都是使用trace算法来判断一个对象是否该被回收,那么JVM只能回收那些从gc roots不可达的对象。
阿杜
2019-03-05
2.7K0
点击加载更多
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档