自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 JVM类加载器(ClassLoader)-精炼总结

文章目录1、什么是类加载机制2、什么时候加载3、加载过程4、加载器(双亲委派模型和破坏双亲委派模型)5、常见问题 1、什么是类加载机制 JVM将类数据(二进制字节码)加载到内存,并对数据进行校验、转换解析、初始化,形式可以被JVM直接执行使用的运行时类结构,这个过程叫做类加载机制 说明: 类数据:包括类、接口等。加载来源可以是.class文件、压缩文件、网络获取的流文件等 二进制字节码:符合Java类文件结构的字节码 运行时类结构:将类数据加载到方法区、常量池后的结构 2、什么时候加载 Java的类加载是在

2021-04-07 21:18:29 146

原创 Java设计模式——三种代理模式(静态代理、动态代理、CGLIB代理)

什么是代理模式 代理模式为另一个对象提供一个替身或占位符以控制对这个对象的访问。 代理模式可以在不改变源码的情况下,实现对目标对象的扩展。 Java的三种代理模式 1、静态代理 创建服务类接口和实现服务类接口 public interface Singer { void sing(); } public class MaleSinger implements Singer { ...

2019-12-03 13:58:38 240

原创 Java线程池Executor

线程池的好处 1,降低资源消耗。线程的生命周期开销很高,通过重复利用已创建的线程可以节省线程创建和销毁的资源消耗。 2,提高响应速度。 3,提高线程的可管理性。比如设置线程的创建上限。线程池可以对线程进行统一分配、调优和监控。 ...

2019-12-01 23:42:59 197

原创 Java常见的锁总结(可重入锁、乐观锁、悲观锁、公平锁、非公平锁、自旋锁、偏向锁、分段锁等)

Java常见的锁总结 Java常见的锁总结 我们常听到的关于锁的词有:排它锁、共享锁、乐观锁、悲观锁、分段锁、自旋锁、公平锁、非公平锁、可重入锁等。这些大多是对锁进行类型划分,彼此之间很多是兼容的,有的是对立的。 我们常用的Java中的锁有:CAS机制、synchronized、ReentrantLock、ReentrantReadWriteLock 根据锁的性质分类 根据重入和排它性分析:共享锁...

2019-11-27 22:58:22 1107

原创 Java并发编程的优点和缺点,什么是线程安全

并发编程的优点 1,从资源利用率的角度考虑,并发编程可以提高系统的资源利用率,最常见的是等待IO或等待HTTP返回与CPU资源浪费的矛盾。在并发的程序中CPU可以在等待这些低速设备时运行程序中的并发部分,这可以显著提高CPU资源的利用率。在多核计算机中并发也更容易发挥多核的优势 2,从公平性考虑,在一些设计场景中,比如多用户和程序对计算机资源具有同等的使用权。这用并发编程的时间片分配就可以很容

2019-04-16 01:34:12 550

原创 java字节码、类结构

1、字节码指令 Java虚拟机的指令长度为一个字节。指令用法一般是后面跟零个到多个操作参数。一个字节八位,所以指令的种类不超过256个。 常见的指令如: 加载和存储指令:iload、istore 算术指令:iadd、isub 类型转换指令:i2l、i2f 对象创建指令:new、newarray、anewarray 访问字段:getfield、putfield、getstatic、putstatic...

2019-04-15 00:17:40 222

原创 Java 虚拟机指令和jvm参数

1、jps:虚拟机进程状况工具。(JVM Process Status) 使用频率最高的JDK命令行工具,用于显示进程id。 命令格式:jps [options ] [ hostid ] [options]选项 : -q:仅输出VM标识符,不包括classname,jar name,arguments in main method -m:输出main method的参数 -l:输出完全的...

2019-04-12 02:15:37 442

原创 Java内存回收和gc收集器

Java运行时内存分配可知:寄存器、栈存储区是线程私有,它们存储的变量随着线程的创建而存有,随线程的结束而被清除。堆部分还有方法区部分存储的内容无法直接知道是否还被引用或者依赖。这也是GC主要的工作目标。尤其是堆存储区。 1、判断什么对象可以被回收 引用计数法。全部搜索,给对象添加一个引用计数器。如果检查到一个对其的引用,计数器就加1。所以计数器为0的对象是不可能再被使用的。这种方法实现简单,效...

2019-04-12 02:02:46 274

转载 Java程序运行时内存分配(非Java内存模型)

这里写自定义目录标题1.程序计数器2.Java虚拟机栈3.本地方法栈4.Java堆5.方法区6.运行时常量池7.直接内存 根据《Java 虚拟机规范(Java SE 7版)》规定,Java虚拟机所管理的内存将会包括一下几个运行时数据区域: 1.程序计数器 程序计数器(Program Counter Register) 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在虚拟机...

2019-03-23 20:29:10 193

原创 JMM(Java内存模型)

Java内存模型(Java Memory Model,简称JMM),是Java在并发模型中内存的工作模型。Java的并发采用的是共享内存模型。内存模型的抽象结构Java中所有的实例域、静态域和数组元素都存储在堆内存中,堆内存在线程之间共享。局部变量、方法定义参数和异常处理参数不会在线程之间共享。 Java线程之间的通信由Java内存模型控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。

2018-02-07 10:48:00 1359

原创 Java设计模式——命令模式、模板方法、迭代器和组合模式

什么是命令模式 将『请求』封装成对象,以便使用不同的请求、队列或者日志来参数化其它对象。命令模式也支持撤销。 命令模式举例说明 领命模式将所有的操作抽象出来一个执行接口如下 public interface Command { void execute(); void undo(); } 然后我们有一个灯来,并用它实现这个接口 class Light {

2017-12-10 20:42:13 307

原创 Java设计模式——装饰器模式、适配器模式、外观模式

什么是装饰器模式装饰器模式,动态的将责任附加到对象上,若要扩展功能,装饰器提供了比继承更有弹性的替代方案。举例说明我们定义一种饮料,它有描述信息,还有价格,如下public abstract class Drink { String desc = "nothing"; public String getDesc() { return desc; } publ

2017-12-07 21:31:52 1641

原创 Java设计模式——观察者模式

什么是观察者模式在对象之间定义一对多的依赖关系,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。举例说明比如有一个天气的数据源,和需要获取天气数据的观察者。比如天气数据不定时更新。而观察者也是随时订阅和取消订阅天气数据源。在订阅时,希望每次更新都可以获取信息。 天气数据源作为被观察的主题,需要对外提供订阅、取消订阅、发布天气数据给订阅者功能。此外还有一个更新自己的天气数据的功能

2017-12-07 10:24:49 279

原创 Java设计模式——策略模式

什么是策略模式策略模式定义了算法族,分别封装起来,让她们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式举例策略模式,是用类实现算法,以组合的形式组织到主题上。比如我们有一个抽象主题,具有一个方法A。如下:public interface AbstractMainObject { void actionA(); }考虑到方法A的实现可能有多种,这样我们可以通过用一个额外的类实

2017-12-06 10:25:54 328

原创 设计模式、设计原则、反模式

什么是设计模式 模式是在某种情境下,针对某种问题的某种解决方案。 设计模式算是一种经验复用。 模式分类 1,创建型:涉及到将对象实例化。 如:单例模式,工厂模式 2,结构型:把类或对象组合到更大的结构中。 如:装饰器,代理模式,适配器模式 3,行为型:涉及到类和对象如何交互及分配职责。 模板方法,观察者模式,策略模式 设计原则 1,封装变化。找出应用中可能需要变化之处

2017-12-05 09:58:09 2678

原创 Java设计模式——工厂模式

什么是工厂模式工厂模式:简单的工厂模式,就是把对象的创建提出来单独处理。而标准的工厂模式,定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。 抽象工厂模式:提供一个接口,用于创建相关或依赖对象的家族,而不需要明确确定具体类。工厂方法简单的工厂方法,常用于组织创建同一类对象的不同子类。 例如,抽象类Pizza有很多种具体的实现子类,将创建一个Pizza对象

2017-12-03 21:28:00 273

原创 Java设计模式——单例模式

什么是单例模式单例模式:确保一个类只有一个实例,并提供一个全局访问点。 有一些对象我们只需要一个,比如:线程池、缓存等。单例模式就是用于解决如何正确,低成本的创建和获取类的唯一对象问题的设计方法。最经典的两种单例模式实现方法1,双重检查法public class Singleton { private volatile static Singleton singleton; pri

2017-12-03 17:50:15 233

原创 spring与hibernate中常用注解总结

Java中注解可以用于生成文档,跟踪代码依赖,格式检查。 Documented注解用于生成文档。 @Target:注解的作用目标 @Target(ElementType.TYPE)   //接口、类、枚举、注解 @Target(ElementType.FIELD) //字段、枚举的常量 @Target(ElementType.METHOD) //方法 @Target(ElementTy

2016-02-29 21:14:57 574

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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