自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 AOP切面

AOPAOPJDK动态代理三级目录 AOP 底层使用到动态代理 有两种情况的动态代理 第一种,有接口情况,使用JDK动态代理 —创建接口实现类代理对象,通过代理对象增强类的方法 第二种,无接口情况,使用CGLIB动态代理 —创建当前类子类的代理对象,通过代理对象增强类的方法 JDK动态代理 使用Proxy类里面的方法创建代理对象 调用newProxyInstance方法 (第一个参数)类加载器 (第二个参数)增强方法所在的类,这个类实现的接口,支持多个接口 (第三个参数)实现InvocationHandl

2021-05-30 15:09:45 143

转载 IOC容器

IOC容器底层原理接口(BearFactory、ApplicationContext)操作Bean管理xml注解 控制反转,把对象创建和对象之间的调用过程都交给Spring进行管理,降低代码之间的耦合。 底层原理 xml解析、对象工厂、反射 xml配置文件,配置创建的对象 创建工厂类,通过xml解析获得类的class属性 通过forName获取Class对象 通过Class的newInstance进而创建xml配置的对象 接口(BearFactory、ApplicationContext) 二者功能相似

2021-05-29 20:50:39 153

转载 Spring JdbcTemplate

Spring JdbcTemplateJdbcTemplate基本使用 JdbcTemplate基本使用

2021-05-22 10:33:02 117

原创 Vector中remove方法的注意事项

如果是在for循环中调用remove方法,则会报数组越界错误,可以将for循环改为迭代器使用

2021-05-17 16:07:23 364

原创 线程同步机制

线程同步机制线程同步Synchronized同步原理三级目录 线程同步 在多线程编程,一些敏感数据不允许被多个线程同事访问,此时就使用同步访问技术,保证数据在任何同一时刻,最多有一个线程访问,以保证数据的完整性。 线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对 该内存地址进行操作 Synchronized 同步代码块 Synchronized(对象){//得到对象的锁,才能操作同步代码 //需要被同步代码; } Synch

2021-05-15 19:19:59 209

原创 类加载过程

类加载类加载过程加载(JVM运行)链接(JVM运行)初始化类加载后内存布局情况 类加载过程 Java源码经过javac编译成字节码文件,Java运行然后类加载 类加载的三个阶段 加载(Loading) 链接(Linking):①验证(Verification)②准备(Preparation)③解析(Resolution) 初始化(Initialization) 加载(JVM运行) 将类的class文件读入内存,并为之创建一个java.lang.Class对象。 JVM在该阶段的主要目的是将字节码从不同的

2021-05-15 15:51:46 95

原创 线程基础

线程线程的创建方法Thread机制Runnable 线程的创建方法 继承Thread类,重写run方法 实现Runnable接口,重写run方法 Thread 当一个类继承了Thread类,该类就可以当做线程使用 我们会重写run方法,写上自己的业务代码 run Thread 类重写了 Runnable 接口的run方法 @Override public void run(){ if(target!=null){ target.run(); } } 机制 进程启动后会创建一个main线程。

2021-05-15 10:49:58 141

原创 Class类

ClassClass常用方法获取Class对象类加载器类加载类加载时机: Class也是类,因此也继承Object类 Class类对象并不是new出来的,而是系统创建的 对于某个类的Class类对象,在内存中只有一份,因为类只加载一次 每个类的实例都会记得自己是由哪个Class实力所生成 通过Class可以完整地得到一个类的完整结构,通过一系列API Class对象是存放在堆中的 类的字节码二进制数据,是存放在方法区的,有的地方成为类的元数据(包括方法代码,变量名,方法名,访问权限等) 2:(一)传统n

2021-05-12 09:31:08 263

原创 反射

反射介绍反射机制三级目录 介绍 加载类:返回Class类型的对象cls Class csl=Class.forName(classfullpath)//classfullpath是路径全包名 通过cls得到加载类classfullpath的对象实例。 Object o=cls.newInstance();//运行类型为对象类型 通过cls得到你的加载的类classfullpathd的methodName都方法对象。即:在反射中,可以把方法视为对象 Method method=cls.getM

2021-05-12 08:43:18 88

原创 Collections 工具类

Collections 工具类Collections介绍排序操作(均为static方法)查找替换(均为static方法) Collections 介绍 Collections是一个操作Set、List和Map等集合的工具类 提供了一系列静态方法对集合元素进行排序、查询和修改等操作 排序操作(均为static方法) reverse(List):反转List中元素 shuffile(List):对List元素进行随机排序 sort(List):根据元素的自然排序对指定的List集合元素按升序排序 sort

2021-05-10 15:25:04 92

原创 TreeSet

TreeSet、TreeMapTreeSet底层TreeMap底层 TreeSet 底层 构造器把传入的比较器对象赋给了TreeSet的底层的TreeMap都属性this.comprator public TreeMap(Comparator<? super K> comparator){ this.comparator=comparator; } 在调用treeSet.add(“Tom”)时,底层会执行 if(cpr!=null){//cpr就是匿名内部类(对象) do{ p

2021-05-10 15:13:17 76

原创 HashMap、HashTable、Properties

HashMap、HashTable、PropertiesHashMap介绍底层HashTable介绍底层Properties HashMap 介绍 (k,v)是一个Ndoe实现了Map.Entry<K,V> JDK7.0:HashMap底层为[数组+链表] JDK8.0:HashMap底层为[数组+链表+红黑树] 底层源码与HashSet基本相同 底层 创建table核心 Node<K,V>[] newTab=(Node<K,V>[])new Node[n

2021-05-10 15:06:11 136

原创 Map

MapMap家族Map简介源码MapFor(遍历)通过entrySet获取k-v增强for迭代器 Map家族 #mermaid-svg-xn5Si2mNOSYRzu3t .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-xn5Si2mNOSYRzu3t .label text{fill:#333}#mermaid-

2021-05-09 20:38:45 282

原创 Set

Set介绍HashSet基本介绍add()底层源码LinkedHashSet基本介绍底层源码 介绍 1、无序、无索引 2、不允许重复,因此最多只能有一个null HashSet 基本介绍 1、实现Set接口 2、本质上是HashMap: public HashSet(){ map=new HashMap<>(); } 3、可存null值,但最多只能有一个 4、无序,取决于hash之后,再确定索引的结果 5、不允许重复 add()底层 1、第一次添加时,table数组扩容到16,临界值(thr

2021-05-09 16:53:45 91

原创 List

List介绍ArrayList介绍add()方法源码ArrayList底层 介绍 1、元素有序(添加与取出顺序一致)、且可以重复 2、支持索引 ArrayList 介绍 1、可以加入一个或多个null 2、由数据实现数据存储 3、基本等同于Vector,但是ArrayList是县城不安全的(执行效率高),在多线程情况下,不建议使用ArrayList add()方法源码 public boolean add(E e){ ensureCapacityInternal(size+1); elementData[s

2021-05-09 15:05:38 514 6

原创 Collection遍历

Collection遍历Iterator(迭代器)性质执行原理注意增强for Iterator(迭代器) 性质 1、所有实现Collection接口的集合类都有一个iterator()方法,用以返回一个实现Iterator接口的对象,即可以返回一个迭代器 2、Iterator仅用于遍历集合,Iterator本身并不存放对象 执行原理 ArrayList coll=new ArrayList(); Iterator iterator=coll.iterator//得到迭代器 //hasNext();判断是否还

2021-05-09 13:36:36 122

原创 集合

集合集合性质单列集合双列集合 集合性质 1、动态保存 2、多个操作对象的方法:add,remove,set,get 3、简洁 单列集合 #mermaid-svg-8uZxB7Vpb7OoofKc .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-8uZxB7Vpb7OoofKc .label text{fill:#

2021-05-09 12:59:35 82

原创 数组

数组数组性质数组的扩容 数组性质 1、长度必须指定,不能更改。 2、保存的必须为同一类型的元素 3、增加/删除的代码比较麻烦。 数组的扩容 Person[] pers=new Person[1]; pers[0]=new Person(); //增加Person对象 Person[] pers2=new Person[pers.length+1]//新建数组 for(){}//拷贝pers数据的元素到pers2中 pers2[pers2.length-1]=new Person(); ...

2021-05-09 12:50:27 92

空空如也

空空如也

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

TA关注的人

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