![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
基础
南城小叙
这个作者很懒,什么都没留下…
展开
-
JVM2-类加载机制
本文参考的《深入理解Java虚拟机》一书第七章,属于个人对这一章节的总结笔记。《深入理解Java虚拟机》有更多的代码解释。什么是java虚拟机的类加载机制?就是java虚拟机讲描述类的数据从class文件中读取到内存中,对数据进行验证,转换解析和初始化,最终转换成能够被java虚拟机直接使用的java类型。生命周期?一个类从加载到卸载,经过7个步骤加载–>验证–>准备–>解析–>初始化–>使用–>卸载何时加载类?何时初始化类?对于何时加载类,《JAVA虚拟机原创 2020-08-10 23:56:38 · 114 阅读 · 0 评论 -
JVM1--oop-klass模型
Metadata–>元数据,用于描述数据的数据。或者说是用于提供某种资源有关信息的数据结构。简单的理解,元数据和java中的实体类类似,抽象出一类东西所具有的的特征,利用这些特征区分同一类东西的不同属性。类加载器将.class文件加载进系统,将.class文件解析,生成的是什么?类的元信息在JVM中是如何存储的?也就是说oop-klass模型,就是jvm用于存储类加载器加载、解析.class文件的“实体类”。InstanceKlass–>表示的是java类(非数组,数组的),表示java原创 2020-08-07 17:29:52 · 313 阅读 · 0 评论 -
简单了解BeanFactory和FactoryBean
BeanFactory是spring bean容器的根接口,BeanFactory提供了,获取bean,判断是否包含bean,判断单例或者原型,获取bean类型,获取bean别名的api。我们常见的AnnotationConfigApplicationContext、FileSestemXmlApplicationContext、ClassPathXmlAplicationContext都继承了BeanFactoryFactoryBeanFactoryBean是spring提供创建bean的一个接口原创 2020-07-31 14:35:51 · 147 阅读 · 0 评论 -
动态代理
一、什么是代理学动态代理,就得知道为啥出现有动态代理。那就是静态代理不能满足日常开发的使用了。学动态代理和静态代理,那就得知道为啥要有代理这个东西。就比如,A类中有一个去菜市场买菜的方法。那么我去菜市场要骑车,买完菜要付钱,回来还得骑车回来。那么我就可以创建一个B类,调用B类,就能够完成上面的所有操作。这就要扯到代理模式了。代理模式:有两个类,分别是代理类和委托类。代理类为委托类进行预处理消息,过滤消息,接着把消息转发给委托类,最后处理一下事后消息。那按照上面的意思就是,B类是代理类,A类是委托类原创 2020-07-31 01:12:11 · 80 阅读 · 0 评论 -
浅谈自己理解的深拷贝和浅拷贝
在自己之前的文章中写过原型模式的笔记,原型模式中稍微理解了一下深克隆和浅克隆。今天在复习中用具体的方法进行一下深克隆。一、为什么用到克隆我们对一个对象进行一番操作后,这个对象就有着很多属性。这个时候我们如果去新建一个对象,又得进行刚才操作的一溜串的操作,就略显麻烦。这个时候克隆就出现了。二、深克隆和浅克隆的区别讲讲区别前,来讲讲要克隆的对象的一些属性。比如 一个person对象,中包涵了另一个对象phonejava中只有两种变量类型,一个基本数据类型,一个是引用数据类型。除了那8个基本数据类型,原创 2020-07-29 23:33:55 · 126 阅读 · 0 评论 -
偏向锁、轻量级锁、重量锁运行时间
由于JVM启动的时候,前4秒带synchronized的方法,上的是轻量级锁。原因是应为在JVM启动时,本身就运行了很多带synchronized关键字的方法,但是这些大多都是轻量级锁。如果直接设置成偏向锁,在锁升级的过程中,偏向锁清除锁的过程比较复杂,导致在升级锁过程中消耗太多的资源和时间。所以延迟偏向锁。public class A { int i=0; public sy...原创 2020-04-09 19:50:36 · 664 阅读 · 2 评论 -
Java注解
元注解java.lang.annotation提供了四中元注解@Target 表示作用的位置,比如类,方法,变量等等@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.ANNOTATION_TYPE)public @interface Target { ElementType[] value();...原创 2019-12-26 13:49:56 · 67 阅读 · 0 评论 -
代码块和代码块的执行顺序
构造方法构造方法是类的一种特殊方法,用来初始化类的一个新的对象。没个类都有构造方法,构造方法和类名相同,而且没有返回类型,构造方法的默认返回类型就是对象本身,并且狗杂方法不能被static、final、synchronized、abstract、native修饰。同时一个类可以有多个构造方法,只要参数不同子类构造方法调用父类构造方法构造方法是不能被继承的,子类构造方法都是要调用父类的构造方...原创 2019-12-23 19:30:26 · 652 阅读 · 0 评论 -
分析ClassLoader工作机制
ClassLoader顾名思义就是叫作类加载器,负责把Class文件加载到虚拟机中。ClassLoader除了上面提到的功能,还有一个重要的作用,那就是审查每个类由谁来加载,是一种父优先的等级加载机制。还有一个任务将字节码重新解析成虚拟机统一要求的对象格式。加载class文件的过程常见的加载类错误分析ClassNotFoundException类找不到问题,虚拟机要加载指定的文件的字节码...原创 2019-12-23 11:26:22 · 87 阅读 · 0 评论 -
Javac编译原理
Javac是什么Javac就是一种编译器,能将一种语言规范转化成另一种语言贵方。Javac的任务就是将Java源文件编译成Java字节码,也就是JVM能够识别的二进制码。Javac编译器的基本结构首先先读取源代码,一个一个读进来,找出这些字节中有哪些是我们定义的语法关键词,比如if,else,while等关键词。这一个步骤就是词法分析器的作用了。语法分析器把源码变成了token流。接下来...原创 2019-12-23 10:00:58 · 128 阅读 · 0 评论 -
抽象类与接口
抽象类:给出了方法的定义,自己却没有实现的类。抽象类就是为了让别的类继承的,没有别的类来继承抽象类的话,那这个抽象类就没有存在的意义了,由于抽象类是为了被继承的,所以就不能用final修饰了。abstract使用abstract修饰符类表示抽象类以及抽象方法public abstract class MyTest { public abstract void t1();//抽象方法没有...原创 2019-12-22 18:38:34 · 89 阅读 · 0 评论 -
深入了解Java I/O的工作机制
Java I/O操作类在i/o类中有将近80个类,大致分为四组1.基于字节操作的I/O接口:InputStream和OutStream2.基于字符操作的I/O接口:Writer和Reader3.基于磁盘操作的I/O接口:File4.基于网络操作的I/O接口:Socket其实不管是磁盘操作还是网络传输,最小的存储单元还是字节,而不是字符。所以I/O操作的还是字节。那为什么还设有I/O的字...原创 2019-12-22 13:00:49 · 105 阅读 · 0 评论 -
final使用
final变量final变量有成员变量和局部变量,在类成员中final经常和static一起使用,作为类常量使用。其中类常量必须在声明是初始化,final成员常量可以在构造函数初始化。public class test { public static final int a;//报错 public static final int b=1;}由static和final修饰的常量...原创 2019-12-20 19:26:14 · 178 阅读 · 0 评论 -
String详解
String基础原创 2019-12-20 16:06:36 · 168 阅读 · 0 评论 -
Java数据类型
Java数据类型Java数据类型分为两个大类:基本数据类型和引用数据类型基本数据类型Java语言提供了八种基本类型基本类型中的,数字类型默认值为0,布尔类型默认值为falsebyte*byte数据类型是8位*最大值为127(2^7-1)*最小值为-128(-2^7)short*short数据类型是16位*最小值为-2^15*最大值为2^15-1int*int数据类型有3...原创 2019-12-19 21:15:22 · 119 阅读 · 0 评论 -
面向对象基础
面向对象(Object Oriented),面向对象分析(OOA)、面向对象设计(OOD)、面向对象设计(OOP)一、对象的概念对象 就是java类产生的实体二、面向对象和面向过程的区别面向过程:最小的程序单元是函数,每个函数负责完成一个功能,用于接收输入数据,函数对输入数据进行处理,然后输出结果数据,整合软件由一个一个的函数组成,主函数依次调用其他函数,普通函数之间可以相互调用,从而实现...原创 2019-12-19 00:33:33 · 804 阅读 · 0 评论