获得徽章 0
一个很不错的案例来了解1.8HashMap源码!!!void test3(){
HashMap<String, Integer> hashMap = new HashMap();
System.out.println("通话".hashCode()); // 1179395
System.out.println("重地".hashCode()); // 1179395
System.out.println(hashMap.put("通话", 10)); // null
System.out.println(hashMap.put("随便", 20)); // null
System.out.println(hashMap.put("通话", 30)); // 10
System.out.println(hashMap.put("重地", 40)); // null
System.out.println("集合中键值对数量: " + hashMap.size()); // 集合中键值对数量: 3
System.out.println("集合内容: " + hashMap); // 集合内容: {通话=30, 随便=20, 重地=40}
}
展开
2
spring ioc底层实现?
1.先通过createBeanFactory创建出一个Bean工厂(DefaultListableBeanFactory)
2.开始循环创建,因为容器中的bean默认是单例的,所以优先通过getBean,doGetBean从容器中查找。
3.找不到的话,通过createBean,docreateBean方法,以反射的方式创建对象,一般情况下使用的是无参构造方法(getDeclaredConstructor,newInstance)
4.进行对象的属性填充populateBean
5.进行其他的初始化操作(initializingBean)
展开
评论
spring ioc理解?
它有两层含义:
第一层:控制反转,理论思想,原来的对象是由使用者进行控制,有了spring后,可以把整个对象交给spring来帮助我们管理。DI:依赖注入,把对应的属性的值注入到具体的对象中,像@Autowired,populateBean完成属性值的注入
第二层代表容器,存储对象,使用map结构存储,在spring中一般存在三级缓存,singletonObject存放完整的bean对象。整个bean对象从创建到使用到销毁的过程全部是由容器来管理。
细分来说的话:
1.ioc容器涉及到容器的创建过程(beanFactory,DefaultListableBeanFactory),向bean工厂中设置一些参数(BeanPostProcessor,Aware接口的子类)等等属性。
2.加载解析bean对象,准备要创建的bean对象的定义对象beanDefinition(包含xml或者注解解析的过程)
3.beanfactorypostprocessor的处理,该处是扩展点,PlaceHolderConfigursupport,ConfigurationClassPostProcesser
4.BeanPostProcessor的注册功能,方便后续对bean对象完成具体的扩展功能
5.通过反射的方式将BeanDefinition对象实例化成具体的bean对象
6.bean对象的初始化过程(填充属性,调用aware子类方法,调用beanpostprocessor前置处理方法,调用init-method方法,调用beanpostprocessor的后置处理方法)
7.生成完整的bean对象,通过getbean方法可以直接获取
8.销毁过程
展开
评论
equals和==区别?为什么重写equals要重写hashcode?
1)来源上:==是运算符,equals是Object类定义的一个方法;
使用上:==可用于比较基本数据类型和引用类型,equals只能用于引用类型;
==两端如果是基本数据类型,就是判断值是否相同。equals如果不重写,其实就是==,重写的话可以根据属性值来判断对象是否相同。
2)重写equals可以让我们自己定义判断两个对象是否相同的条件。Object类中定义的hashcode方法生成的hash码使得同一个类的对象的哈希码是不同的。当equals返回为true,逻辑上认为是同一个对象,查看hash码是不同的,和equals返回的结果相违背。
Object中定义的hashcode方法生成的hash码跟对象的本身属性值是无关的,重写hashcode之后,可以自定义hash码的生成规则,可以通过对象的属性值计算出hash码。
hashmap中,借助equals和hashcode方法来完成数据的存储。将根据对象的内容查询转换成根据索引的查询。
展开
4
#新人报道#
自我介绍

mq选型

既然有了map,为什么用redis做缓存

hashcode | hash算法的理解,为啥比较两个对象有equals了 还要hashcode

ioc含义

mybatis二级缓存,什么场景使用二级缓存

为啥选用mybatis而不是hibernate或者原生jdbc

数组、ArrayList、LinkedList、树的时间复杂度
展开
1
下一页
个人成就
文章被点赞 35
文章被阅读 10,619
掘力值 792
收藏集
0
关注标签
10
加入于