java基础
文章平均质量分 57
weixin_45849726
这个作者很懒,什么都没留下…
展开
-
Sping @Autowired @Value @Resourece依赖注入原理
AnnotationUtils.isCandidateClass(clazz, this.autowiredAnnotationTypes)) {//判断bean的类型是否需要注入,如String类型,则不会进行依赖注入。然后调用AutowiredAnnotationBeanPostProcessor.AutowiredFieldElement.inject对属性进行依赖注入,在resolveFieldValue方法获取值后,通过反射进行赋值。//从缓存中拿到metadata。原创 2024-05-12 22:52:07 · 848 阅读 · 2 评论 -
@PostConstruct
initializeBean方法–> PostProcessor.postProcessMergedBeanDefinition --> InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction。所以到bean初始化时,会调用到InitDestroyAnnotationBeanPostProcessor.postProcessBeforeDestruction方法。原创 2024-05-12 18:03:23 · 243 阅读 · 0 评论 -
spring 创建bean的过程
object.class – > 调用无参构造方法 --> 对象 --> 依赖注入(属性赋值) --> 初始化前(@PostConstruct)–>初始化(InitializingBean)–>初始化后(AOP)–>bean。原创 2024-05-10 00:51:27 · 847 阅读 · 0 评论 -
Stream流常用方法
filter(Predicate p) 过滤流limit(int) 截取流,使元素不超过指定数量slip(int n) 跳过元素,返回一个扔掉前n个元素的流,假设长度不足n,就返回空流distinct() 根据equals方法去重map(Function f) 转换类型...原创 2021-12-17 17:29:12 · 208 阅读 · 0 评论 -
强引用、软引用、
强引用:直接new出来的对象就是强引用。 Object o = new Object(); 当设置o=null后,o才会等待gc回收。软引用:public void quote(){ SoftReference<byte[]> s = new SoftReference<>(new byte[1024*1024*10]); System.out.println(s.get());//[B@5c8da962 try {原创 2021-12-16 16:45:36 · 122 阅读 · 0 评论 -
volatile
volatile效果:1.保证线程可见性。以cache line为单位(64字节)2.禁止指令重排序volatile实现1.java代码 加volatile关键字2.字节码 加ACC_volatile3.内存屏障 4.hospot实现 底层实现是锁总线,因为内存屏障不支持可移植性...原创 2021-12-16 15:42:11 · 342 阅读 · 0 评论 -
synchronized底层实现和原理
ABA问题:当内存中值E被改为B,然后又改为E,怎么判断。答:加版本号CAS 最终java底层本地方法c++实现其中lock对cmpxcjg加锁,在比较E和V时,写回V时,操作不能被其他cpu打断。锁的级别new - 偏向锁 - 轻量锁(无锁,自旋锁,自适应自旋(cas就是轻量锁)) - 重量级锁查看 object 占用字节即内存模型 文章链接https://editor.csdn.net/md?articleId=121969237锁信息和GC信息记录在markword中。偏向锁:.原创 2021-12-16 14:05:22 · 390 阅读 · 0 评论 -
new Object() 占多少字节
java Object Layout <dependency> <groupId>org.openjdk.jol</groupId> <artifactId>jol-core</artifactId> <version>0.9</version> </dependency>在这里插入代码片public static原创 2021-12-16 10:37:35 · 308 阅读 · 0 评论 -
Collections
Collections是一个可以操作List,Map,set集合的工具类reverse(List) 集合反转shuffle(List) 随机排序sort(List) 自然排序sort(Comparator) 自定义排序swap(List int int) 将List集合i和j处元素互换max(Collection) 根据自然排序返回最大值max(Collection Comparator) 根据自定义排序返回最大值min(Collection)min(Co原创 2021-12-14 15:05:06 · 168 阅读 · 0 评论 -
map集合
Hashtable 1.0 map的古老实现类,线程安全,效率低,不可以存null的key和valueHashMap 1.2实现,线程不安全,效率高,可以存null的key和value,1.7之前使用数组+链表,1.8使用数组+链表+红黑树LinkedHashMap 添加两个引用,类似双向链表,可以遍历时按添加元素遍历TreeMap 可以按照key排序,实现排序遍历。底层使用红黑树Propertier k-v都是String类型,常用来处理配置文件Mapmap中key是无序的、不可重复的,.原创 2021-12-14 13:48:19 · 60 阅读 · 0 评论 -
List集合
集合结构如图1.集合主要是两组(单列集合,双列集合)2.Collection接口又两个重要的子接口List、Set,他们实现的子类都是单列集合3.Map 接口的实现子类 是双列集合 存放的是K-VCollection接口add 添加单个元素,添加基本数据类型会有一个自动装箱的过程remove 删除指定元素(指定索引或者元素,删除索引返回元素,删除元素返回Boolean值)contains 查找元素是否存在size 获取元素个数isEmpty 判断元原创 2021-12-13 15:53:08 · 751 阅读 · 0 评论 -
String
StringString 相等 == 问题string 拼接时,如果拼接的是变量,则使用 == 返回falseString a = "a"String b = "b"final String a1 = "a"final String b1 = "b"String s1 = "ab"String s2 = a+"b"String s3 = a+bString s4 = a1+a2s1 == s2 值 false s1 == s3 值 falses1 == s4 值 tr原创 2021-12-13 11:40:55 · 154 阅读 · 0 评论