青云博客 记录、分享

JDK动态代理与CGLIB实现的区别

JDK动态代理和CGLIB是Java中常用的两种代理技术,它们在实现原理和使用方式上有一些区别。 JDK动态代理是基于接口的代理技术,要求目标类必须实现一个或多个接口。它使用java.lang.reflect.Proxy类和java.lang.reflect.InvocationHandler接口

詹学伟 Published on 2024-04-22

Strings 与new String有什么区别

Java中字符串可以通过两种方式创建:使用字符串字面量直接赋值给变量或使用关键字new创建一个新的String对象。它们之间有以下区别: 首先,使用字符串字面量赋值给变量时,Java会使用字符串常量池来管理字符串对象,可以提高性能和节省内存。而使用new String创建的字符串对象则在堆内存中独立

詹学伟 Published on 2024-04-22

什么是Java的序列化

Java的序列化是指将Java对象转换为字节流的过程,可以将这些字节流保存到文件中或通过网络传输。反序列化则是指将字节流恢复成对象的过程。 序列化的主要目的是实现对象的持久化存储和传输,让对象可以在不同的计算机或不同的时间点被重建和使用。通过序列化,可以将对象的状态以字节的形式保存下来,并且在需要的

詹学伟 Published on 2024-04-22

反射中,Class.forName和ClassLoader的区别

Class.forName和ClassLoader是Java反射中用于加载类的两种不同方式。 Class.forName是一个静态方法,通过提供类的完全限定名,在运行时加载类。此方法还会执行类的静态初始化块。如果类名不存在或无法访问,将抛出ClassNotFoundException异常。 Clas

詹学伟 Published on 2024-04-22

深拷贝和浅拷贝区别

深拷贝和浅拷贝是在进行对象的复制时常用的两种方式,它们有以下区别: 拷贝的程度: 浅拷贝只拷贝对象的引用,不创建新的对象实例。拷贝后的对象与原始对象共享同一份数据,对其中一个对象的修改会影响到另一个对象。 深拷贝创建一个全新的对象实例,并将原始对象的所有属性值复制到新对象中。拷贝后的对象与原始对象是

詹学伟 Published on 2024-04-22

谈谈自定义注解的场景及实现

自定义注解是Java语言的一个强大特性,可以为代码添加元数据信息,提供额外配置或标记。它适用于多种场景。 配置和扩展框架:通过自定义注解,可以为框架提供配置参数或进行扩展。例如,Spring框架中的@Autowired注解用于自动装配依赖项,@RequestMapping注解用于映射请求到控制器方法

詹学伟 Published on 2024-04-22

HashMap和Hashtable有什么区别

HashMap和Hashtable都是Java集合框架中Map接口的实现类,它们有以下几个区别: 线程安全性:Hashtable是线程安全的,而HashMap是非线程安全的。Hashtable通过在每个方法前加上synchronized关键字来保证线程安全性,而HashMap则没有实现这种机制。 n

詹学伟 Published on 2024-04-22

设计模式是如何分类的

根据应用目标,设计模式可以分为创建型、结构型和行为型。 创建型模式是关于对象创建过程的总结,包括单例、工厂、抽象工厂、建造者和原型模式。

詹学伟 Published on 2024-04-22

抽象工厂和工厂方法模式的区别

抽象工厂模式和工厂方法模式是两种创建型设计模式,都关注对象的创建,但有一些区别。 抽象工厂模式提供一个接口,用于创建一系列相关或相互依赖的对象,而无需指定具体的类。它适用于需要一次性创建多个相关对象,以形成一个产品族。抽象工厂模式通常由抽象工厂、具体工厂、抽象产品和具体产品组成。通过切换具体工厂实现

詹学伟 Published on 2024-04-22

说说你对设计模式的理解

设计模式是一套经过验证的、被广泛应用于软件开发中的解决特定问题的重复利用的方案集合。它们是在软件开发领域诸多经验的基础上总结出来的,是具有普适性、可重用性和可扩展性的解决方案。

詹学伟 Published on 2024-04-22
Previous Next