自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 手写简单SpringIOC容器及DI依赖注入

通过反射+类名获取类 ,在判断是否包含注解@Bean,并放入beanFactory 中,后续便可以通过beanFactory 获取 bean。DI 就是通过遍历已经放入beanFactory 中的 bean,通过判断是否包含@Di注解,来判断是否需要给类的属性设置属性值。通过传入的包路径,去解析遍历下边所有的文件(其中要区分文件夹和文件),直到遍历到文件。对文件进行处理获取他们的绝对路径,通过截取等操作获得文件得绝对路径以变相获取到这个文件的类名。其次我们需要实现applicationContext接口。

2024-05-30 17:51:31 186

原创 JDK8和JDK19 arraylist源码区别

然后去执行ensureExplicitCapacity(),这个方法的参数需要先执行calculateCapacity() 并且传入 两个参数 其中minCapacity就是size+1的值也就是1,但同时由于是刚初始化的数组,此时elementData 这个数组是一个空数组并进行判断,返回传入的最小容量和默认容量取大值,那么第一次就会返回10 即默认的容量。获取新数组容量 = 旧数组容量+旧数组容量带符号右移一位 = 旧数组容量+旧数组容量除以2 =1.5旧数组容量 第一次也是0。

2024-05-07 22:18:31 1483

原创 Java基础知识

成员变量是对象的一部分,跟随对象的创建而存在,对象的销毁而销毁,局部变量随着方法调用而存在,方法的结束而销毁。static 修饰的变量它不属于对象,而是属于类,随着类的加载而加载,且只加载一次,并且同一个类的多个对象共享同一个静态变量。其中基本类型的局部变量存放在栈的局部变量表中,基本类型的成员变量放在堆中,包装类型放在堆中。包装类型所占空间大于基本类型,基本类型有自己的默认值,包装类型默认值是 null。包装类型可以用于 泛型,方法参数,对象属性,基本类型用于局部变量,常量。布尔型 boolean。

2024-05-06 13:34:49 1182 2

原创 HashMap(1)

因为找工作八股文还是要背,那今天就说说刚刚看的HashMapHashMap 是非线程安全,其次他是存储<key,value> 其中key可以为 null,但是只能有一个,value没有限制1.HashMap结构在JDK1.8之前,底层是使用数组+链表组成JDK1.8之后,底层使用数组+链表+红黑树,但是一开始并不是红黑树,只有满足一定条件下,链表才会转化成红黑树2.HashMap链表转红黑树条件。

2024-05-06 01:41:42 1118 2

原创 线程池(1)

ThreadPoolExecutor.CallerRunsPolicy:调用执行自己的线程运行任务,如果执行程序已关闭,则会丢弃该任务。BlockingQueue<Runnable> workQueue 阻塞队列 当核心线程和都在处理任务,此时新来任务那么就会将这个任务放入阻塞队列中。管理多个线程的资源池,当有任务过来时,从线程池中拿出一个线程来处理,处理完之后该线程放回线程池,等待下次任务到来。SingleThreadExecutor 只有一个线程的线程池。

2024-05-05 23:19:35 287 2

原创 什么是AQS

这个机制AQS是基于CLH锁,CLH是一个虚拟的双向队列,每一个获取不到所得线程进入该队列,AQS将每个线程封装成一个node节点,节点存放线程引用 当前节点在队列等待的状态,前一个结点,后一个节点。如果资源空闲,线程请求的时候加锁,设置资源为锁定状态,如果资源被占用,那么需要一套线程阻塞等待和唤醒时锁的分配机制。int state 表示同步状态。

2024-05-05 16:07:04 97

原创 Java中的锁的类型

可重入锁:当前线程获取到锁,当需要再次获取相同锁的时候是可以直接获取的,内部有个计数器,每获取一次计数器+1,释放一次计数器-1,当计数器为0的时候表示当前锁没有人获取不可重入锁:当前线程获取到锁,当需要再次获取相同锁的时候是不可以获取到的,必须要先释放锁,然后在获取锁。

2024-05-05 15:45:31 264

原创 Java中的四种引用

强引用是不会被Java的垃圾回收机制回收的,哪怕是不使用,也不会被回收,所以很容易造成内存泄漏(内存泄漏和内存溢出是两种概念)Java中 threadlocal 里面底层entry<k,v> 里面的 k 就是用了弱引用,注意 v 还是强引用。内存溢出:简单理解就是在程序运行期间需要申请内存的时候,没有足够空间给其使用,就会发生内存溢出。把一个对象A赋给一个引用变量a,此时这个a就是强引用,此时对象是始终可达的。软引用对象,内存足够不会被gc回收,内存不够时会被回收。gc只要一运行,弱引用的对象必定被回收。

2024-05-05 14:47:09 112

原创 什么是CAS

ABA问题,使用cas进行更新的时候获取的值可能是A,期望值也是A,但是不能保证此时的A就是一开始的A,有可能这个A在中间被某一个线程更新成了B,然后又被其他线程更新成了A。在JAVA中,有一个Unsafe类,里面就是用cas原理 分别有compareAndSwapObject,compareAndSwapInt,compareAndSwapLong这三个。他是一个cpu底层原语,当我们替换内存中某个地址的某个值的时候,他先将要替换的值和预期值进行比较,如果一致,那么进行更新替换。

2024-05-05 14:13:26 316

原创 Java中sleep()和wait()区别

2.唤醒方式不一样,sleep()可以自动被唤醒 ,wait()需要手动唤醒,一般配合notify()4.执行时机,sleep()可以在持有锁或者不持有锁的时候执行,但是wait()必须持有锁才能执行。3.是否释放资源,sleep()在持有锁的时候不会释放资源,wait()执行的时候会主动释放资源。1.所属类不同,sleep()是属于thread类的方法,wait()属于object类的方法。

2024-05-05 13:48:10 177

原创 数据库事务四大特性

A->Atomicity 原子性,事务操作是一个原子操作,要么全部执行,要么全部不执行。I->Isolation 隔离性,事务之间互不影响,事务处理过程中的中间状态是不可见的。C->Consistent 一致性,事务在开始和完成时,数据状态要保持一致。D->Durable 持久化,事务完成之后,他对于数据的修改是永久性的。数据库事务的四大特性(ACID)

2024-05-05 12:58:47 107

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除