自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 设计模式——Abstract Factory(抽象工厂)模式

抽象的零件:Item类Item类是Link和Tray类的父类,这样Link和Tray类就具有可替换性了。caption字段表示项目的“标题”makeHTML方法是抽象,需要子类来实现这个方法。该方法会返回HTML文件的内容(需要子类去实现)package factory;public abstract class Item { protected String caption; public Item(String caption) { this.caption

2021-03-26 15:22:13 227

原创 设计模式——Factory Method(工厂方法)模式

在Factory Method模式中,父类决定实例的生成方式,并不决定所要生成的具体的类,具体的处理全部交给子类负责。这样就可以将生成实例的框架和实际负责生成实例的类解耦。Product类public abstract class Product { public abstract void use();}Product类是用来表示“产品”的类。在该类中仅声明了use抽象方法。use方法的实现则被交给了Product类的子类负责。在这个框架中,定义了产品是“任意的可以use的”的东西。F

2021-03-25 22:18:42 132

原创 设计模式——Singleton(单例)模式

意图保证系统中一个类只有一个实例并且提供对外访问。优点由于在内存中只存在一个对象,故可以节约系统资源,对于一些需要频繁创建和销毁的的对象,单例模式无疑可以提高系统的性能。缺点由于单例模式中没有抽象层,因此单例类的扩展有很大的困难。多用于web应用设计以及各种池的设计。实现要点构造函数私有化。类定义中含有一个该类的静态私有对象,以及一个暴露单例的静态方法。饿汉模式//饿汉模式public class Singleton1 { //类一加载,就创建对象,故称为饿汉模式 privat

2021-03-25 16:51:24 187

原创 Java多线程并发4: 锁

锁乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写操作。java中的乐观锁基本都是通过CAS操作实现的,CAS是一种更新的原子操作,比较当前值跟传入值是否一样,一样则更新,否则失败。悲观锁悲观锁就是悲观思想,即认为读少写多,遇到并发写的可能性高,每次去拿数据的时候

2021-03-24 15:09:26 135

原创 JVM类加载机制

Java类加载机制JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化,下面我们就分别来看一下这个过程。加载加载是类加载过程的一个阶段,这个阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的入口。注意这里不一定非得要从一个Class文件获取,这里既可以从zip包中读取(比如jar包和war包),也可以在运行时计算机生成的(动态代理),也可以由其它文件生成(比如将JSP文件转换成对应的Class类)。验证这一阶段的主要目的是为了确保Class

2021-03-24 11:48:16 71 1

原创 Java多线程并发3: 线程生命周期

线程生命周期(状态)当线程被创建并启动后,它既不是一启动就进入了执行状态,也不是一直处于执行状态。在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)5种状态。尤其是当线程启动以后,它不可能一直“霸占”着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行,阻塞之间切换。新建状态(New)当程序使用new关键字创建一个线程之后,该线程就处于新建状态,此时仅由JVM为其分配内存,并初始化其成员变量的

2021-03-24 10:06:35 94

原创 Java多线程并发2: 4种线程池

Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。newCachedThreadPool创建一个可根据需要创建新线程的线程池,但是在以前构造的线程可用时将重用它们。对于执行很多短期异步的程序而言,这些线程池通常可提高程序性能。调用execute将重用以前构造的线程(如果线程可用)。如果现有线程没有可用的,则创建一个新线程并添加到池中。终止并从缓存中移除那些已有60秒未被使用的线

2021-03-23 20:14:32 72

原创 Java多线程并发1: 并发知识库、线程创建方式

Java并发知识库Java线程实现/创建方式继承Thread类Thread类本质上是实现了Runnable接口的一个实例,代表一个线程的实例。启动线程的唯一方法就是通过Thread类的start()实例方法。start()是一个native方法,它将启动一个新线程,并执行run()方法。public class MyThread extends Thread{ public void run(){ System.out.println("MyThread is running"); }}

2021-03-23 19:32:31 57

空空如也

空空如也

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

TA关注的人

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