Java
雨季的蘑菇
fight
展开
-
【Java并发机制】锁的升级和对比
为了减少获得锁和释放锁所带来的的消耗,Java SE1.6引入了“偏向锁”和“轻量级锁”。锁一共有四种状态,级别从低到高依次是:无锁状态、偏向锁状态、轻量级锁状态和重量级锁状态,这几个状态会随着竞争情况逐渐升级。锁可以升级却不能降级,意味着偏向锁在升级为轻量级锁后不能降级为偏向锁。这种锁可以升级却不能降级的状态,是为了提高获得锁和释放锁的效率。????偏向锁大多数情况下,锁不仅不存在多线程竞争,而且总是由同一线程多次获得,为了让线程获得锁的代价更低而引入了偏向锁。当一个线程访问同步块并获取锁时,会在原创 2020-07-14 00:56:02 · 168 阅读 · 0 评论 -
【JVM】自动内存管理机制(1)---自动内存管理机制
运行时数据区域JVM在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自不同的用途以及创建和销毁的时间。其结构如图所示:JVM运行时数据区程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。在JVM的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程回复等基础功能都需要依赖这个计数器来完成。各条线程之间计数器互不影响,独立存储。...原创 2020-06-23 23:52:54 · 200 阅读 · 0 评论 -
【JVM】虚拟机类加载机制(2)---类加载的过程
加载、验证、准备、解析、初始化是类加载的全过程。加载“加载”是“类加载”(Class Loading)过程的一个阶段,在加载阶段需要完成以下三件事情:1.通过一个类的全限定名来获取定义此类的二进制字节流2.将这个字节流代表的静态存储结构转化为方法区的运行时数据结构3.在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口二进制流的获取途径:1.从ZIP包中获取,称为JAR、EAR、WAR格式的基础2.从网络中获取,常见的有Appl原创 2020-06-05 01:55:26 · 164 阅读 · 0 评论 -
【JVM】虚拟机类加载机制(1)---类加载机制概述及类加载的时机
概述 Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会为Java应用程序提供高度的灵活性,Java天然可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的:例如编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类;用户可以通过Java预定义的和自定义类加载器,让一个本地的应用程序可以在运行时从网络或者其他地方加载一个二进制流作为程序代码的一部分,这种组装应用程序的方式已广泛应用于Java程序之中。...原创 2020-06-02 01:20:06 · 209 阅读 · 0 评论 -
Java线程生命周期
Java中的线程包括NEW、RUNNABLE、RUNNING、BLOCKED和TERMINATED五种阶段,它们的转换关系可以用下图来表示:在使用new关键字创建了一个Thread对象时,在调用start方法启动该线程前,线程的状态都为NEW状态,和普通的Java对象并没有什么区别。线程通过调用start方法从NEW状态进入RUNNABLE状态,此时JVM中真正创建了一个新的线程,线程...原创 2019-11-18 22:40:45 · 132 阅读 · 0 评论 -
【设计模式】建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示。 结构图如下: Builder是为创建一个Product对象的各个部件指定的接口,ConcreteBuilder是具体建造者,实现Builder接口,构造和装配各个部件。Product是具体的产品角色,Director是指挥者,使用Builder接口进行具体...原创 2018-09-03 22:55:19 · 189 阅读 · 0 评论 -
【设计模式】原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。 本设计模式通过创建简历的例子进行说明,并对对象的浅复制和深复制进行说明。 浅复制模式代码如下:package chapter9;public class Resume...原创 2018-08-22 00:32:08 · 149 阅读 · 0 评论 -
【设计模式】外观模式
迪米特法则(LoD):如果两个类不必须彼此直接通信,那么这两个类就不应该发生直接的相互作用,如果一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。 外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 外观模式的适用场景:在设计初期阶段,应该有意识的...原创 2018-08-28 23:18:45 · 164 阅读 · 0 评论 -
【设计模式】模板方法模式
模板方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势,即提供了一个很好的代码复用平台。 本模式通过不同学生答题来进行模拟,代码如下:package chapter10;pub...原创 2018-08-22 23:14:35 · 130 阅读 · 0 评论 -
【设计模式】工厂方法模式
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。但是在增加功能时,需要在原来的工厂类的方法里增加代码,修改原有的类,也就是说不但对扩展开放了,也对修改开放了,违背了开放-封闭原则。 工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个...原创 2018-08-13 23:12:27 · 159 阅读 · 0 评论 -
【设计模式】代理模式
代理模式(Proxy),为其它对象提供一种代理以控制对这个对象的访问。 代理模式适用的场合:远程代理,也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。 虚拟代理,是根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。例如浏览器优化下载。 安全代理,用来控制真实对象访问时的权限。一般用于对象应该有...原创 2018-08-01 21:34:12 · 117 阅读 · 0 评论 -
【设计模式】装饰模式
装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。 Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能...原创 2018-07-16 22:45:48 · 131 阅读 · 0 评论 -
【设计模式】策略模式
本篇文章的场景是模拟一个商场收银软件,营业员根据客户所购买商品的单价和数量向客户收费。使用简单工厂模式和策略模式分别进行实现。 简单工厂模式实现: 使用类对收费进行抽象:面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。 现金收费抽象类:...原创 2018-06-26 22:42:38 · 203 阅读 · 0 评论 -
【设计模式】简单工厂模式
简单工厂模式又称静态工厂方法模式,不属于GOF设计模式。是由一个工厂对象决定创建出哪一种产品类的实例。优点在于只需要特定的输入就可以利用工厂类的静态方法实例化出合适的对象,缺点在于容易违反高内聚责任分配原则。 以计算器实例为例进行实践,本篇代码简化为由Console输出进行模拟。 目标类:package chapter1;/** * ...原创 2018-05-22 01:00:08 · 177 阅读 · 0 评论 -
Java中的各种方法用法
见到新的就写进去,不定时更新charAt原创 2014-09-26 16:58:12 · 520 阅读 · 0 评论 -
Java中JOptionPane的用法
JOptionPane类1、属于javax.swing 包。2、功能:定制四种不同种类的标准对话框。ConfirmDialog 确认对话框。提出问题,然后由用户自己来确认(按"Yes"或"No"按钮)InputDialog 提示输入文本MessageDialog 显示信息OptionDialog 组合其它三转载 2014-09-21 16:02:03 · 1653 阅读 · 0 评论