设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能.如查找.排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法:当然也可以将这些查找算法封装在一个统一的方法中,通过if-else-或者case等条件判断语句来进行选择.这…
设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕该功能.如查找.排序等,一种经常使用的方法是硬编码(Hard Coding)在一个类中,如须要提供多种查找算法,能够将这些算法写到一个类中,在该类中提供多个方法,每个方法相应一个详细的查找算法:当然也能够将这些查找算法封装在一个统一的方法中,通过if-else-或者case等条件推断语句来进行选择.…
JVM的内存分为堆.栈.方法区和程序计数器4个区域 存储内容:基本类型,对象引用,对象本身,class,常量,static变量 堆: 拥有者:所有线程 内容:对象本身,不存放基本类型和对象引用 垃圾回收:由gc控制,java的垃圾回收主要针对堆 ---------------------------------------------------------- 栈: 分为虚拟机栈和本地方法栈 虚拟机栈: java方法内存模型 拥有者:每个线程拥有一个 内容:基本数据,对象引用(最常用) 垃圾回收…
1. 基本类型占一块内存. 引用类型占两块. 2. 类是静态概念. 函数中定义的基本类型变量和对象的引用类型变量都在函数的栈内存. 局部变量存在栈内存. new创建的对象和数组,存在堆内存. java虚拟机自动垃圾回收器管理堆内存. 栈式存储分配即动态存储分配. 堆主要用来存放对象,栈主要用来执行程序. 栈的存储速度快,仅次于寄存器,栈数据可共享,但栈中数据大小与生存周期必须确定.主要存放基本类型变量和对象句柄. 运行时才能确定所占内存大小的,存在堆内存. 栈数据共享理解: int a = 3;…
    认识堆与栈 栈与堆都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆.Java的堆是一个运行时数据区,类的对象从中分配空间.这些对象通过new.newarray.anewarray和 multianewarray等指令建立,它们不需要程序代码来显式的释放. 堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据. 但缺点是…
JVM内存结构之堆.栈.方法区以及直接内存.堆和栈区别 一.  理解JVM中堆与栈以及方法区 堆(heap):FIFO(队列优先,先进先出):二级缓存:*JVM中只有一个堆区被所有线程所共享:对象和数组储存在里面:调用对象速度较慢:生命周期由虚拟机JVM的垃圾回收机制GC制定:由JVM动态分配空间:堆内存用来存放由new创建的对象和数组. 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理. 栈(stack):FILO 或者叫LIFO(线性表,后进先出):一级缓存:每个线程都会有一个独立的…
栈:存放局部变量 堆:存放new出来的对象 方法区:存放类的信息,static变量,常量池(字符串常量) 在堆中,可以说是堆的一部分   创建了一个student类,定义了name属性, id静态变量 和一个study()方法程序运行的时候 java虚拟机会通过类加载器 将类的信息加载到虚拟内存中 存放在方法区里相当于一个类的模板 我们通过这个类的模板来创建对象,这个其实很好理解 我们没有定义类 类加载器加载不到类的信息 不能将这个对象实例化更直白一点,如果凭空new一个对象 编译的时候就会报错…
转自: http://www.open-open.com/lib/view/open1432200119489.html 这两天看了一下深入浅出JVM这本书,推荐给高级的java程序员去看,对你了解JAVA的底层和运行机制有比较大的帮助.废话不想讲了.入主题:先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令)2.jvm只有一个堆…
一.引言 今天我们开始讲“行为型”设计模式的第六个模式,该模式是[状态模式],英文名称是:State Pattern.无论是现实世界,还是面向对象的OO世界,里面都有一个东西,那就是对象.有对象当然就有状态了.每个对象都有其对应的状态,而每个状态又有对应一些相应的行为,在不同状态下,行为的的方式也是不一样.如果某个对象有多个状态时,那么就会有很多对应的行为.那么对这些状态的判断和根据状态完成的行为,就会导致多重条件语句交织在一起,并且如果添加一种新的状态时,需要更改之前现有的代码.这样的设计显然…
多线程上的基本类型:https://blog.csdn.net/championhengyi/article/details/76857401…