技术文章

面试:Java的代理模式动态代理和静态代理区别,aop用的什么代理

代理模式Proxy Pattern.:指为对象提供一种代理,用以控制对这个对象的访问. 是一种结构型模式。简单的说就是我们本来是想访问对象A,但是想在访问A之前做一些其他的事情,这时候我们可以使用代理模式生成一个新的对象B,B可以做一些我们想做的事情。也就是代理模式,通过访问B来代替对A的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目 …

Java 反射以及动态代理,来看就懂了

各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题反射反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect)的能力。简单来说就是通过反射,可以在运行期间获取、检测和调用对象的属性 …

java中线程同步的几种方法

方法一:使用synchronized关键字由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。注:同步是一种高开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个方法,使 …

长篇图解java反射机制及其应用场景

一、什么是java反射?在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new 类名()方式来获取该类的对象。也就是说我们需要在写代码的时候(编译期或者编译期之前)就知道我们要实例化哪一个类,运行哪一个方法,这种通常被称为「静态的类加载」。但是在有些场景下,我们事先是不知道我们的代码的具体行为的。比如,我们定义一个服务任务工作流,每一 …

Java新特性(1):Java 9和Java10

您好,我是湘王,这是我的头条号「湘王说」,欢迎您来,欢迎您再来~自从Java在2009年被Oracle收购之后,就不再开源,除了Oracle官方发布的版本之外,还有OpenJDK版本,这两者的区别可以自行找某度去搞明白。对于没有几千万用户的应用来说,OpenJDK已经足够了,即使是一些大厂,内部系统用OpenJDK也足够了。从Java 8开始,整个JDK就一 …

2021Java最新学习路线图新鲜出炉

深知广大爱好Java的人学习是多么困难,专门整理了新版的学习路线图,不管你是不懂电脑的小白,还是已经步入开发的大牛,这套路线路绝对不容错过!传智教育旗下黑马程序员分享免费视频教程长达12余万小时,受益人数达千万。2021年我们不忘初心,继续前行。 路线图的宗旨就是分享,专业,便利,让喜爱Java的人,都能平等的学习。从今天起不要再找借口,不要再说想学Java …

一文搞懂JAVA 中的引用

介绍JAVA 中有 4 种类型的引用:-强引用-软引用-弱引用-虚引用这些引用仅在垃圾收集器管理它们的方式上有所不同。如果您从未听说过它们,则意味着您只使用过强的。了解其中的区别会对您有所帮助,尤其是当您需要存储临时对象并且不能 使用像 eHcache 或 Guava 这样的真正的缓存库时。由于这些类型与 JVM 垃圾收集器密切相关,因此我将简要回顾一些有关 …

面试官:为什么java中静态方法不能调用非静态方法和变量?

这个可能很多人之前学习jvm的时候都会遇到,属于一个小问题,写这篇文章的原因是我在看java相关的面试题目中遇到的,因此顺手总结一下:一、例子我们先看效果:我们在静态方法main中调用非静态变量或者是方法都会报错。我们反过来看看:反过来没有一点问题,接下来我们解释一下原因:二、原因解释我们需要首先知道的是静态方法和静态变量是属于某一个类,而不属于类的对象。我 …

你真的了解JAVA中对象和类、this、super和static关键字吗

Java对象究竟是什么?对象:对象是类的一个实例,有状态和行为。类:类是一个模板,它描述一类对象的行为和状态。例如人 是一个类其状态有:姓名、性别、身高、体重等其行为:吃饭、睡觉、聊天、运动等public class Person {** * 状态 or 属性 *String name;姓名String sex;性别int height;身高int weig …

图解java反射机制及常用应用场景

一、什么是java反射?在java的面向对象编程过程中,通常我们需要先知道一个Class类,然后new 类名()的方式来获取该类的对象。也就是说我们需要在写代码的时候(编译期或者类加载之前)就知道我们要实例化哪一个类,运行哪一个方法,这种通常被称为静态的类加载。但是在有些场景下,我们事先是不知道我们的代码的具体行为的。比如,我们定义一个服务任务工作流,每一个 …