java
java语言相关
亚热带小番茄
2022届毕业生。某大厂从事go后端开发工作。熟悉java后端开发,熟悉python爬虫
展开
-
通过反射来破解饿汉式单例
在通常情况下饿汉式,懒汉式,静态内部类方式,的方法保证了单例,但是别有用心的人可以通过反射 将 .class(字节码文件) load到内存,然后new出一个实例。 但是枚举类因为没有构造方法,所以反射无法new出对象,就避免了通过反射来创建对象。 通过反射来破解饿汉式单例 public class test { public static void main(String[] args) { Class<?> c = null; Person1 perso原创 2020-11-25 21:58:10 · 231 阅读 · 0 评论 -
Java注解-Annotation架构+JDK元注解+如何自定义注解
java注解 1. 概述 首先,注解(Annotation)是一个接口,程序可以通过反射来获取指定程序元素的java.lang.annotation.Annotation对象。然后通过这个 对象来取得注解里的元数据。 只有通过某种配套的工具对注解中的信息进行访问和处理,注解才会影响程序的运行(在程序运行时起到一定的作用),否则,注解不会影响程序 的运行。访问和处理注解的工具统称为 APT(Annotation Processing Tool). 2. Annotation 架构 2.1 概述 “每 1原创 2020-10-21 09:51:35 · 251 阅读 · 0 评论 -
Java泛型-泛型作用+泛型在各种数据结构中的使用+自定义泛型
文章目录1. 概念2. 为什么要使用泛型(Generic)2.1 在ArrayList中使用泛型2.2 在HashMap中使用泛型3. 自定义泛型结构3.1 泛型类与泛型接口3.2 泛型类的子类3.3 自定义泛型类/接口 仍需注意的点3.5 泛型方法 1. 概念 所谓泛型,就是允许在定义类、接口时通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。这个类型参数将在使用时〈例如,继承或实现这个接口,用这个类型声明变量、创建对象时) 确定〈即传入实际的类型参数,也称为类型实参) 。原创 2020-10-21 09:49:50 · 496 阅读 · 0 评论 -
Java反射机制-反射基础+对java.lang.Class类的理解+反射应用之动态代理+SpringAOP初体验
1. 反射概述 1.1 反射 Reflection〈反射) 是被视为动态语言的关键,反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。 加载完类之后,在堆内存的方法区中就产生了一个class类型的对象〈一个类只有一个class对象) ,这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为: 反射。 1.2 反射的作用 在运行时判断任意一原创 2020-10-21 09:41:07 · 393 阅读 · 0 评论 -
Java I/O流-Java I/O流体系+各种I/O流的使用+File类
1. File类 File类的一个对象,代表一个文件或一个文件目录 File类声明在java.io 包下 File类涉及到关于文件或目录的创建,删除,重命名,文件大小,修改时间,等方法,但是没有涉及到文件内容;如果需要修改,读取文件内容,必须使用io流 File类的对象常会作为参数传递到io流的构造器中,指明读取或写入的“终点”。 1.1 File构造器 File有四个构造器,当我们new一个File时,它只是单纯的在内存层面,不会管是否存在这个文件,但我们print的时候,即:调用原创 2020-10-21 09:37:31 · 488 阅读 · 4 评论 -
Java equals() 与 == 的区别
equals() 与 == 的区别 1. == 的用法: 1.1 比较对象是基本类型 使用 == 系统会自动进行类型强制转换,所以只需要两个变量的值相等即可。如果不能强制转换则直接报错。 1.2 比较对象是引用类型 当比较的两个变量是引用类型,他们必须要指向同一个实例才会返回true,也就是比较的是两个对象的内存地址。如果这两个变量没有继承关系,则会直接报错。 String a = "hello"; String b = "hello"; System.out.println(a==b); Strin原创 2020-10-21 09:36:31 · 269 阅读 · 0 评论 -
Java网络编程
1.InetAddress 进行网络通信必不可少的就是ip,在java中,万物皆对象,所以java使用InetAddress类来代表ip地址。用一个具体的InetAddress对象来代表一个ip. inetAddress 没有构造器, 一般通过静态方法:getByName 来获取它的一个实例。 通过构造器来创建类的实例是java中创建对象最常用的方法,还可以通过:反射 ;调用对象的clone;反序列化;来创建对象,这里inetAddress一个是通过clone来创建对象的。 InetAdd原创 2020-10-21 09:10:21 · 354 阅读 · 0 评论 -
异常的定义与体系结构
1. 异常的定义与体系结构 1.1 定义 语法错误,语意错误,不是异常。 1.2结构体系 异常分为两类: Error:是Java虚拟机无法解决的严重问题,比如内存溢出(OutOfMemory),StackOverflowError 等。这些都是我们无法处理的。 Exception:这一类就是我们要处理的。这一类包括读取不存在的文件,网络链接中断等等等等。 处理异常的时间就是在编译的时候,但是有些异常只有在运行的时候才会发生,所以我们又把异常分为运行时异常,和编译时异常。Error是属于运行时原创 2020-10-21 08:52:11 · 446 阅读 · 0 评论 -
浅谈JVM内存结构
JVM内存结构 1.概述 从大角度来看,JVM内存分为两部分,一部分为线程私有的,是我们所不能操作的,还有一部分是所有线程共享的,之后我们对JVM调优也就是调的这一部分。 2.线程私有区 2.1 概述 线程私有部分都是一段连续的内存,速度快,但容量小,用户不可操作。下面是线程私有区的详细图。(现在里面已经有了一个math类) 2.2 程序计数器 一块较小的内存空间,用于标记当前线程所执行字节码的行号。 这一张图片是使用javap -v 对.class文件反汇编出的,图中红色框内的就是程序计数器的标原创 2020-10-21 08:55:55 · 350 阅读 · 0 评论