王子越-Silvia

默然 相爱 寂静 欢喜

小仙女讲JVM(1)—综述

大家好,自从上次讲了软考课程之后,本仙女受到了社会各界的一致好评。本仙女怀着用毕生所学回报社会的热忱,打算花大手笔进行JVM的讲解。 1、首先,对以上的四部分进行解释。 (1)自动内存管理讲的是java运行时数据区里的部分,分为内存划分和垃圾收集器。 (2)执行子系统讲的是画红圈的三部分:类文件...

2019-06-18 16:04:03

阅读数 7902

评论数 47

docker是啥?是干什么的?

what? 定义 我们知道,软件依赖的环境大致包括: • 配置文件 • 代码 • tomcat • JDK • 操作系统 Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中。 思想: 集装箱 标准化 隔离...

2019-01-31 20:40:18

阅读数 3619

评论数 4

【java反射】反射是啥?是干啥用的?

反射是啥 反射既然有“反”,就说明它是一个逆向的过程。那我们先来看看正向过程是怎样的。 设计一个类,类实例化成对象,对象调方法或属性去实现一些功能。 那反射是什么呢? 不知道大家是否还记得上图,这是刚接触java时学到的知识。我自己的理解是现在是知道1,反推到2,然后再通过2得到一些别的信息。...

2019-01-04 21:45:24

阅读数 1685

评论数 7

简单说说消息中间件RabbitMQ(上)

准备工作

2018-10-05 21:30:20

阅读数 825

评论数 19

小仙女趣谈算法

【本文又名:小仙女讲软考之算法设计和分析】 小仙女课堂开课啦,算法设计总学不好?多半是没理解透基本概念,看小仙女牌博客就好啦。 分治法——分而治之,各个突破 现实导入: 想想秦始皇是怎么统一六国的?“远交近攻,各个击破”。 对喽,先集中兵力打一个国家,成功后再攻击另一个。这便体现...

2017-09-02 12:24:50

阅读数 1622

评论数 13

趣谈java单例模式

什么是单例模式 确保一个类最多只有一个实例,并提供一个全局访问点。就像你是你们家的独生子,一旦邻居跟你爸告状说“你家孩子打架了”,说的只可能是你。 单例模式有两种创建方式:懒汉式和饿汉式。在下文会对其进行详细解说。 使用场景和优缺点 使用场景 (1)网站计数器。当需要统计当前在线人数,只能用一个...

2019-06-23 10:39:23

阅读数 264

评论数 2

小仙女讲JVM(8)—高效并发

内存模型 内存模式是在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。其主要目标是定义程序中各个变量的访问规则。 主内存和工作内存 所有的变量都存储在主内存中,每条线程还有自己的工作内存,其工作内存中是被线程使用到的变量的主内存副本拷贝,线程对变量的读取、赋值等操作都必须在工作内...

2019-06-22 11:23:51

阅读数 456

评论数 31

小仙女讲JVM(7)—JVM优化

还以这个图为例,从.java到.class是编译过程,从.class到机器码是解释过程。下面对其进行分别优化。在优化过程中,对编译阶段的优化主要是对前端编译器的优化,在运行阶段的优化,主要是对即时编译器的优化。 编译器优化 编译过程 以上为javac的编译过程图,以下为javac编译过程的主体...

2019-06-21 20:31:21

阅读数 377

评论数 14

小仙女讲JVM(6)—字节码执行引擎

看到下图的java代码的执行过程,你是不是对其流程脱口而出?.java源码被javac编译成.class文件,.class文件被jvm解释成不同的机器码。那本仙女问你一个问题:JVM只有解释的功能吗? 如果你回答是,那就太天真了。JVM不仅有解释的功能,还有编译的功能。 JVM中的执行引擎在执行...

2019-06-21 16:34:42

阅读数 315

评论数 8

小仙女讲JVM(5)—类加载机制

上篇中我们讲解了Class文件,这篇我们说说虚拟机是如何加载这些Class文件的?Class文件中的信息进入到虚拟机后会发生什么变化?这就涉及到了类加载机制。 类加载机制是把类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。这一系列...

2019-06-19 16:36:56

阅读数 2260

评论数 13

小仙女讲JVM(4)—类文件结构

讲完了自动内存管理,我们来说说执行子系统。执行子系统讲解的是JVM如何执行程序。 Class文件概述 这篇我们只讲讲Class文件。Class文件又名类文件或字节码文件。javac将.java文件(源代码)编译成.class文件(字节码),jvm再将.class文件解释成机器码。 Class文...

2019-06-19 14:55:45

阅读数 810

评论数 7

小仙女讲JVM(3)—垃圾收集机制

在上一篇中我们说过,自动内存管理分为两部分:给对象分配内存和回收分配给对象的内存。这篇我们说说后者,即回收分配给对象的内存。回收内存要用到垃圾收集机制,英文名儿是GC(Garbage Collection)。 在本部分我们要解决如下几个问题: 哪些内存需要回收? 什么时候回收? 如何回收? ...

2019-06-19 11:49:16

阅读数 667

评论数 16

小仙女讲JVM(2)—内存的划分

我们知道,在C++语言里,如果想使用一个对象,需要对其进行new操作;如果不用这个对象了,需要对其进行delete操作。一旦开发人员忘记写delete语句了,就会造成内存泄露。【内存被对象占用着不还,就叫内存泄露。】 而java就聪明了,它从“手动”进化成了“自动”,把内存的控制权力交给了虚拟机...

2019-06-18 20:30:50

阅读数 1903

评论数 19

多线程是啥?有啥用?(下)

通信 线程是独立运行的,它并不知道进程中是否还有其它线程存在。为了协调线程之间的运行,可以使用线程通信。 (1)在Synchronized中 wait()——等待 导致当前线程等待,直到其它线程调用该同步监视器的nofity()/nofityAll()方法。调用当前线程会释放对改同步监视器的锁...

2019-06-11 21:48:45

阅读数 182

评论数 1

多线程是啥?有啥用?(上)

以前对多线程已经总结过: 【java高级】简说多线程(上) 【java高级】简说多线程(下) 现在又翻看多线程,对其理解的更系统了,现总结如下。 线程的操作 (1)线程的生命周期 新建 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态。此时它和其它的java对象一样,仅仅由j...

2019-06-11 21:26:42

阅读数 908

评论数 0

细解==和equals的区别

两个的区别是什么呢?

2019-06-09 09:18:06

阅读数 151

评论数 2

说说几个关键字的作用(this、super、final、static、abstract)

this 代表对当前所在类的引用。 super 代表对父类对象的引用,用于子类虽然重写了父类的某个方法,但是依旧想调用父类的这个方法。 final 类,变量,方法等加上它,就代表了“终止”。 static 方便在没有创建对象的情况下,对属性和方法进行调用。 abstract 类和成员方法被abs...

2019-06-08 16:37:05

阅读数 93

评论数 1

【java基础】构造器是啥?有啥用?

概念 构造器是一个特殊的方法,其用于创建对象时执行初始化。什么叫做初始化?就是给对象赋值。 java类必须包含一个及以上的构造器。 构造器的名字必须与类名相同 默认构造器 不过即使在创建对象时没有写构造器也不用担心,因为系统会默认提供一个无参数的构造器。此构造器能对各种数据类型进行赋初值。 ...

2019-06-08 16:08:57

阅读数 105

评论数 1

【java基础】基础类库是啥?有啥用?

基础类库就是JDK提供了一个类库,从库里选出类来,调用其方法实现一些功能。 思导 用户交互 (1)Scanner (2)System (3)Runtime 常用类 (1)Object和Objects (2)String (3)Math (4)Random (5)BigDecimal 时间/日期类 ...

2019-06-08 12:06:32

阅读数 65

评论数 0

【java基础】细解常用类

基础类库就是java提供了一个类库,我们开发时可以从库里选出类来,调用其方法去实现一些功能。 思导 系统相关 (1)Scanner Scanner可以读取用户的键盘输入,也可以读取文件输入。 //System.in代表键盘输入 Scanner sc=new Scanner(System.in); ...

2019-06-08 10:54:36

阅读数 64

评论数 0

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