结构型——享元模式

什么是享元模式

享元模式的定义

享元模式定义为:通过共享技术来实现细粒度对象的复用。“享”即共享,“元”即对象,通过复用一些共享对象,避免创建大量重复对象,减小内存开销。 享元模式的本质是缓存共享对象降低内存消耗

享元模式尝试重用现有的同类对象,如果未找到匹配的对象,则创建新对象。 比如对于Circle对象,有5种不同的颜色,如果需要50个Circle实例。如果不使用享元模式,我们需要创建50个对象。但是如果使用享元模式,可以创建一个Map,key为颜色,value为Circle实例,需要什么颜色的circle就去map里面取,这样最多只需要创建5个对象即可。

阅读更多...

结构型——适配器、装饰、外观

适配器、装饰、外观这三种设计模式本质都是在原有类的基础上进行“外观”上的改动,让原来的类看起来不一样。不过它们的意图是不同的:

  • 装饰器模式:不改变原有接口,添加新的功能;
  • 适配器模式:将一个接口转变成另一个接口,解决客户和功能组件之间接口不兼容的问题;
  • 外观模式:让接口更简单,将复杂系统的各种方法进行封装,让系统看起来更简单,方便客户使用。

下面,我们一起看看这三种模式是如何实现各自的意图的。

阅读更多...

结构型——桥接模式

桥接模式概述

为什么需要桥接模式

在现实生活中,某些类具有两个或多个维度的变化,如图形既可按形状分,又可按颜色分。如何设计类似于 Photoshop 这样的软件,能画不同形状和不同颜色的图形呢?如果用继承方式,m 种形状和 n 种颜色的图形就有 m×n 种,不但对应的子类很多,而且扩展困难。

阅读更多...

bitmap详解

什么是bitmap

bitmap即位图,一种用bit存储数据的数据结构,主要用于数据的快速排序、去重和查询等操作,其优势在于可以在一个非常高的空间利用率下保存大量0-1状态。

比如Java中1个int类型数据就需要占用4Byte,但是4Byte(32bit)大小的位图可以存储32个数据。

阅读更多...

Redis数据类型

Redis所有key都是字符串,存储值有5种基本数据结构:string,list,hash,set和zset(有序集合),3种特殊数据结构:HyperLogLogs(基数统计),Bitmaps(位图)和Geospatial(地理位置),Redis 5.0中还增加了Stream类型,借鉴了kafka的设计,是一个强大的支持多播的可持久化消息队列。

阅读更多...

创建型——工厂模式

本文介绍一下设计模式中的工厂模式。工厂,在现实生活中是用来生产产品的,在OO编程中,对象就是产品,也就是用来生产对象的。和工厂相关的设计模式主要有三种:简单工厂模式、工厂方法模式和抽象工厂模式。下面,我们分别叫啥下这三种模式。

阅读更多...

创建型——单例模式

概述

这里我们通过几个问题,来简单了解下单例模式。

  1. 什么是单例模式?

    所谓单例模式,顾名思义就是:一个类只有一个实例,且这个实例是有该类自己创建的一种模式。

  2. 为什么要有单例模式?

    在实际应用中,很多对象其实我们只需要一个,比如:线程池、缓存、对话框、注册表对象、日志对象等等。往往这些类对象只能有一个实例,否则可能出现很多问题,例如:程序的行为异常、资源浪费或者不一致的结果等。

    阅读更多...

Java中的Unsafe类

本文转自:Java魔法类:Unsafe应用解析

Unsafe概述

什么是Unsafe

Unsafe是位于sun.misc包下的一个类,主要提供一些用于执行低级别、不安全操作的方法,如直接访问系统内存资源、自主管理内存资源等,这些方法在提升Java运行效率、增强Java语言底层资源操作能力方面起到了很大的作用。但由于Unsafe类使Java语言拥有了类似C语言指针一样操作内存空间的能力,这无疑也增加了程序发生相关指针问题的风险。在程序中过度、不正确使用Unsafe类会使得程序出错的概率变大,使得Java这种安全的语言变得不再“安全”,因此对Unsafe的使用一定要慎重。

阅读更多...

Java中的Atomic类

概述

Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。

阅读更多...
  • Copyrights © 2021-2022 Yin Peng
  • 引擎: Hexo   |  主题:修改自 Ayer
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信