Spring复杂对象的3中创建方法 复杂对象是相对于简单对象可以直接 new 出的对象。这种对象在 Spring 中不可以通过简单对象的创建方式来创建。下面我们将通过实现 FactoryBean 接口、实例工厂、静态工厂三种方法来创建。
Spring工厂模式,模拟ApplicationContext实现 Spring 是一个轻量级的 Java 企业开发解决方案。它集合了众多优秀的设计模式如:单例、代理、工厂模式等。在这其中最基础的也就是工厂模式。在 Spring 问世之前 JavaEE 开发主流使用(EJB)来进行。但是这个框架是重量级的,扩展性以及移植性都是很大的问题并且运行环境苛刻。EJB 的运行依靠 EJB 容器并且 Tomcat 不支持。
Spring Bean的生命周期及三级缓存流程 Spring Bean 的生命周期说起来其实就三个大块:实例化Bean -> 设置属性(注入和装配) -> 初始化 -> 使用Bean -> 销毁Bean这个很好理解,但是内部是怎么样注入,初始化以及销毁?经历怎么样的过程呢?追随这些问题来参考这篇文章。我们先从 三级缓存 -> 实例化... 顺序逐步理解。
Lock的公平锁与非公平锁 Lock是用于控制多线程访问共享资源的同步机制,Lock接口提供了对锁的操作,包括公平锁与非公平锁。ReentrantLock(可重入锁)是Lock的一个实现类,它提供了可重入的互斥锁。ReentrantLock 可以通过构造函数中传入参数来指定锁的实现类型,默认是非公平锁。。
哈希常见面试题(最全版本) 而hashCode()方法则需要确保相等的对象具有相等的哈希值,同时尽可能减少哈希冲突的概率,从而提高哈希表的效率。可以通过在对象的hashCode()方法中使用不同的算法,将对象的各个属性值映射为一个整数,从而计算出对象的哈希值。在重写hashCode()方法时,需要注意确保相等的对象具有相等的哈希值,同时不相等的对象尽可能分散在哈希表中。此外,需要确保哈希算法的高效性、正确性和可读性。为了避免哈希冲突,可以采用不同的哈希算法、增加哈希表的大小、调整哈希函数等方法来提高哈希值的唯一性和散列性。
重写equlas时为什么一定要重写hashcode方法? hashCode 和 equals 方法 结合一起使用来提高判断对象是否相等的效率因为 Set 集合通过 hashCode 和 equals 两个方法共同判断两个对象是否重复,所以要解决 Set 集合的异常,也需要重写这两种方法。
面试官问我为什么Integer a = (128) != Integer b (128) 装箱拆箱及IntegerCache问题 在面试的时候面试官给我了几行代码如下:面试官: 下面输出的结果是什么?我: 第一个 true , 第二个 false;面试官: 为什么?我:???????// true// false接下来我们看着源码刨析下这个问题以及该从哪些方面回答。java中有八大数据类型:byte、sort、char、int、long、float、double、boolean。
StringBuilder 和 StringBuffer 的初始容量及扩容机制 StringBuffer 和 StringBuilder 扩容机制相同,初始化容量机制相同。两者安全性不同,效率不同,更多可以参考String、StringBuilder、StringBuffer的四大区别解析_极品小學生的博客-CSDN博客。
面试官问我 String 为什么被 fianl 修饰 被 final 修饰的 char[]fianl 修饰变量表示改变量的值一旦被初始化后不可以修改。fianl 不论是修饰变量、参数、方法、类都表示其 是完美的不可以被修改,或者逻辑顺序不能改变是一个基本逻辑实现元素。
String源码深度刨析 String 实现了三个接口:Comparable: 说明 String 实现了比较功能,可以比较大小(按顺序比较单个字符的ASCII码)Serializable: 说明 String 可以实现序列化CharSequence: 表示是一个有序字符的序列,因为String的本质是一个char类型数组.
String、StringBuilder、StringBuffer的四大区别解析 StringBuilder是执行效率最高的,底层和StringBuffer一样通过char[]数组来实现,支持查询修改操作,效率高但是不安全不安全:在进行多线程处理的时候,多个线程对同一个变量进行修改查询操作的时候会出现数据的混乱,执行错误逻辑,它没有对线程安全进行考虑,是线程不安全的。
动态规划dp(三个案例详解) dp(Dynamic programming)即动态规划的简写。动态规划的思想是找出大问题对应的子问题,通过若干子问题寻找解决这个大问题的递推公式或者方法的思想即大化小,小化更小。例如求第n个斐波那契数就需要求出n-1与n-2的斐波那契数字往前一步一步推导出第n个数。