Java JVM——9.方法区

前言 方法区是运行时数据区的最后一个部分: 从线程共享与否的角度来看: 大家可能在这里有些疑惑,方法区和元空间的关系到底是怎样的?请往下看,下面会为大家解惑。 栈、堆、方法区的交互关系 下面就涉及了对象的访问定位: Person:存放在元空间,也可以说方法区; person:存放在Java栈的局部变 ... »

Java JVM——8.堆

堆的核心概念 堆针对一个 JVM 进程来说是唯一的,也就是一个进程只有一个JVM,但是进程包含多个线程,他们是共享同一堆空间的。 一个JVM实例只存在一个堆内存,堆也是Java内存管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。它是 JVM 管理的最大一块内存空间。 ... »

Java JVM——5.Java虚拟机栈

虚拟机栈概述 由于跨平台性的设计,Java 的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。 栈实现的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。 有不少Java开发人员一提到Java内存结构,就会非常粗略度地将JVM中的内存区 ... »

MyBatis——MyBatis开发流程

创建项目(IDEA中) 在IDEA中创建 MyBatis项目,详细流程如下: 这里有一点需要注意,我们创建的是Maven项目,如果大家以前没有配置过Maven环境的话,在创建完项目之后,需要配置一下Maven环境,否则就无法成功导入相关的依赖包。 创建完成后的项目是这个样子的: 项目概述: ★ sr ... »

浅谈设计模式——工厂模式

基本概念 工厂顾名思义就是创建产品,根据产品是具体产品还是具体工厂可分为简单工厂模式和工厂方法模式,根据工厂的抽象程度可分为工厂方法模式和抽象工厂模式。 该模式用于封装和管理对象的创建,是一种创建型模式。 工厂模式一般分为3类: ① 简单工厂模式(Simple Factory) ② 工厂方法模式(F ... »

Java 中的 反射机制

概念明确 什么是类的对象? 类的对象就是:基于某个类 new 出来的对象,也称为实例对象。这个很容易理解,就不过多阐述了。 什么是类对象? 类对象就是:类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法)。 包含类信息的.class文件被JVM加载到内存后,一个个的类就变成 ... »

浅谈设计模式——单例模式

单例模式 单例模式(Singleton)是一种常用的设计模式,它是创建型模式的一种,适用于一个类有且只有一个实例的情况,也就是说,单例模式确保了某个类只有一个实例(对象)存在。 单例模式定义的三个要素 ① 定义私有的静态成员。 ② 构造函数私有化。 ③ 提供一个公有的静态方法以构造实例。 单例模式的 ... »

Java 中的 Lambda 表达式

Lambda表达式 Lambda 表达式是 JDK1.8 的一个新特性,又称特殊的匿名内部类,可以取代大部分的匿名内部类,语法更简洁,可以写出更优雅的 Java 代码,可以极大地优化代码结构。 Lambda 表达式不会生成单独的内部类文件,但匿名内部类会。 Lambda表达式特性 ★ Lambda ... »

动态规划算法——装最多水的容器

动态规划概述 动态规划(Dynamic Programming,DP)是运筹学的一个分支,是求解决策过程最优化的过程。 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解,每一个解都对应于一个值,我们希望找到具有最优值的解。 动态规划算法与分治法类似,其基本思想也是将待 ... »

约瑟夫问题(丢手绢问题)

Josephu(约瑟夫)问题 约瑟夫问题,有时也称为约瑟夫斯置换,是一个计算机科学和数学中的问题。在计算机编程的算法中,类似问题又称为约瑟夫环。又称“丢手绢问题”。 Josephu问题起源 据说著名犹太历史学家 Josephus 有过以下的故事:在罗马人占领乔塔帕特后,39 个犹太人与Josephu ... »

LRU缓存机制

题目来源: 力扣(LeetCode) 题目名称: LRU缓存机制 题目描述: 运用你所掌握的数据结构,设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作: 获取数据 get 和 写入数据 put 。 获取数据 get(key)——如果关键字 (key) 存在于缓存中,则获取关键字 ... »

浅谈 Java集合

Java 集合 集合是对象的容器,定义了多个对象进行操作的常用方法,可实现数组的功能。 Java集合类库所处位置:java.util.*。 与现代的数据结构类库的常见做法一样,Java集合类库也将接口与实现分离开。 集合和数组的区别: 1.数组长度固定,集合长度不固定。 2.数组可以存储基本类型和引 ... »

浅谈 Java线程状态转换及控制

线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期。在线程的生命周期中,共包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)这五种状态。当线程启动以后,CPU需要在多个线程之间切换,所以线程也会随之在运行、阻塞、就绪这几种状态之 ... »

浅谈Java多线程

线程与进程 什么是进程? 当一个程序进入内存中运行起来它就变为一个进程。因此,进程就是一个处于运行状态的程序。同时进程具有独立功能,进程是操作系统进行资源分配和调度的独立单位。 什么是线程? 线程是进程的组成部分。通常情况下,一个进程可拥有多个线程,而一个线程只能拥有一个父进程。 线程可以拥有自己的 ... »