Java
不会游泳的鱼z
人生有梦,各自精彩
展开
-
Java中的反射机制
动态语言动态语言,是指程序在运行时可以改变其结构:新的函数可以引进,已有的函数可以被删除等结构上的变化。比如常见的JavaScript就是动态语言,除此之外Ruby,Python等也属于动态语言,而C、C++则不属于动态语言。从反射角度说JAVA属于半动态语言。反射机制概念 (运行状态中知道类所有的属性和方法)在Java中的反射机制是指在运行状态中,对于任意一个类都能够知道这个类所有的属性...原创 2019-08-19 22:37:03 · 92 阅读 · 0 评论 -
关于JMM的一些自我理解
JMM(Java 内存模型)基本概念JMM 本身是一种抽象的概念并不是真实存在,它描述的是一组规定或则规范,通过这组规范定义了程序中的访问方式。JMM 同步规定线程解锁前,必须把共享变量的值刷新回主内存线程加锁前,必须读取主内存的最新值到自己的工作内存加锁解锁是同一把锁由于 JVM 运行程序的实体是线程,而每个线程创建时 JVM 都会为其创建一个工作内存,工作内存是每个线程的...原创 2019-08-27 23:57:23 · 245 阅读 · 1 评论 -
JVM中的类加载机制
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这五个过程。加载加载是类加载过程中的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从ZIP包中读取(比如从jar包和war包中读取),也可以在运行时计算生成(动态代理),也可以由...原创 2019-08-27 23:43:47 · 93 阅读 · 0 评论 -
Java中的内部类详解
JAVA内部类Java类中不仅可以定义变量和方法,还可以定义类,这样定义在类内部的类就被称为内部类。根据定义的方式不同,内部类分为静态内部类,成员内部类,局部内部类,匿名内部类四种。静态内部类定义在类内部的静态类,就是静态内部类。public class Out { private static int a; private int b; public static class...原创 2019-08-17 23:48:49 · 112 阅读 · 0 评论 -
Java异常分类及处理
概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法。在这种情况下会抛出一个封装了错误信息的对象。此时,这个方法会立刻退出同时不返回任何值。另外,调用这个方法的其他代码也无法继续执行,异常处理机制会将代码执行交给异常处理器。异常分类Throwable是 Java 语言中所有错误或异常的超类。下一层分为Error和ExceptionErrorError类是指jav...原创 2019-08-16 23:47:21 · 141 阅读 · 0 评论 -
Java中synchronized和ReentrantLock的区别
两者的共同点:都是用来协调多线程对共享对象、变量的访问。都是可重入锁,同一线程可以多次获得同一个锁。都保证了可见性和互斥性。两者的不同点:ReentrantLock显示的获得、释放锁,synchronized隐式获得释放锁 。ReentrantLock可响应中断、可轮回,synchronized是不可以响应中断的,为处理锁的不可用性提供了更高的灵活性。ReentrantLock...原创 2019-08-16 23:38:06 · 250 阅读 · 0 评论 -
JVM垃圾回收与算法
JVM GC如何确定垃圾引用计数法在Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,即一个对象如果没有任何与之关联的引用,即他们的引用计数都不为0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。可达性分析为了解决引用计数法的循环引用问题,Java使用了可达性分析的方法。通过一...原创 2019-08-16 12:03:56 · 83 阅读 · 0 评论 -
关于JVM内存划分,你想知道的都在这里
基本概念:JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收,堆 和 一个存储方法域。 JVM 是运行在操作系统之上的,它与硬件没有直接的交互。运行过程我们都知道 Java 源文件,通过编译器,能 够生产相应的 .Class 文件,也就是字节码文件,而字节码文件又通过 Java 虚拟机中的解释器,编译成特定机器上的机器码 。也就是...原创 2019-08-15 22:40:05 · 96 阅读 · 0 评论 -
Java String类中的replace()方法与replaceAll()的联系与区别
在之前刷题的过程中,发现貌似无论调用replace()还是replaceAll()都可以运行成功,那么它们之间有什么区别呢?我们先来先来看看文档replace的参数是char和CharSequence,即可以支持字符的替换,也支持字符串的替换replaceAll的参数是regex,即基于规则表达式的替换。相同点:都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串...原创 2019-08-15 21:15:03 · 909 阅读 · 0 评论 -
Java 中ThreadLocal作用
ThreadLocal,很多地方叫做线程本地变量,也有些地方叫做线程本地存储,ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。ThreadLocalMap(线程的一个属性)每个线程中都有一个自己的ThreadLocalMap类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问...原创 2019-08-19 22:59:56 · 707 阅读 · 0 评论 -
Java多线程sleep与wait 区别
sleep与wait 区别对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu该其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃...原创 2019-09-02 23:56:17 · 265 阅读 · 0 评论