首页 > 其他分享 >重要思想之《享元模式》

重要思想之《享元模式》

时间:2024-12-17 22:31:55浏览次数:7  
标签:享元 思想 int cache 模式 high static Integer IntegerCache

实际就是缓冲思想,池化思想。
比如线程池、数据库连接池、还有JDK里面也有。

Integer里面toString使用享元数据
final static char[] digits = {
        '0' , '1' , '2' , '3' , '4' , '5' ,
        '6' , '7' , '8' , '9' , 'a' , 'b' ,
        'c' , 'd' , 'e' , 'f' , 'g' , 'h' ,
        'i' , 'j' , 'k' , 'l' , 'm' , 'n' ,
        'o' , 'p' , 'q' , 'r' , 's' , 't' ,
        'u' , 'v' , 'w' , 'x' , 'y' , 'z'
    };

image

还有 IntegerCache
    private static class IntegerCache {
        static final int low = -128;
        static final int high;
        static final Integer cache[];

        static {
            // high value may be configured by property
            int h = 127;
            String integerCacheHighPropValue =
                sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
            if (integerCacheHighPropValue != null) {
                try {
                    int i = parseInt(integerCacheHighPropValue);
                    i = Math.max(i, 127);
                    // Maximum array size is Integer.MAX_VALUE
                    h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
                } catch( NumberFormatException nfe) {
                    // If the property cannot be parsed into an int, ignore it.
                }
            }
            high = h;

            cache = new Integer[(high - low) + 1];
            int j = low;
            for(int k = 0; k < cache.length; k++)
                cache[k] = new Integer(j++);

            // range [-128, 127] must be interned (JLS7 5.1.7)
            assert IntegerCache.high >= 127;
        }

        private IntegerCache() {}
    }

image

都是案例

标签:享元,思想,int,cache,模式,high,static,Integer,IntegerCache
From: https://www.cnblogs.com/euler-blog/p/18613531

相关文章

  • 设计模式应该遵循的原则(软件思想)
    单一职责原则(SingleResponsibilityPrinciple,SRP)定义:一个类应该只有一个引起它变化的原因。也就是说,一个类只负责一项职责。示例与解释:例如,有一个UserService类,它的职责如果包括用户的注册、登录以及用户信息的修改。这就不符合单一职责原则,因为用户注册和登录主要涉及认证......
  • 项目中的《访问者模式》
    这个模式核心思想是将基本的数据对象和对应的操作相互分离。数据对象就只是数据对象,如果想要扩展操作,就扩展对应的visitor。这种模式下的两次分派第一次分派,是将对数据对象本身进行分派,可以有不同的实现。第二次分派,是visitor接收不同的数据对象。结果就是数据对象接受了visit......
  • 《装饰器模式》VS《代理模式》
    装饰器强调的是动态功能增强,而这种增强是比单继承更加的灵活的方式,可以动态的给基类扩展不同的功能。继承实现增强有不同结构如果是按照最小原则,是这样的⬇︎⬇︎⬇︎如果不想那么多类文件,是这样的⬇︎⬇︎⬇︎虽然这样都能实现让子类拥有base/A/B三个操作,但如果现在只需要base/B操作怎......
  • 分布式链路追踪简介-01-dapper 论文思想介绍
    开源项目auto-log自动日志输出分布式链路追踪简介随着业务系统的不断发展、微服务架构的演进,从原来的单体应用架构、垂直应用架构、分布式SOA架构到现在的微服务架构,系统逐步走向微服务化以适应用户高并发请求等需求。在微服务架构中,一个业务操作往往需要多个服务间协同操......
  • 《单例模式》我只用这一种
    双重检查是我用的最多的一种。因为它是一种线程安全的写法,而这种写法可以应用到各种场景中。比如:涉及到多线程共享的数据,在更新时候的使用。比如这种:其他的方式也有,比如内部类的实现方式。点击查看代码publicclassSingletonEagerInnerClass{privateSingletonEage......
  • Redis篇之Redis高可用模式参数调优,提高Redis性能
    1.Redis高可用模式核心Redis高可用模式的核心是使用主从复制和自动故障转移机制来确保系统在某些节点发生故障时仍然可以正常工作。常用的高可用架构包括RedisSentinel模式和RedisCluster模式,其中Sentinel模式是为了提供高可用性而专门设计的解决方案。在RedisSent......
  • 都在使用的《模版模式》
    模版符合开闭原则,到处用于钩子方法。有的钩子方法不会改变行为,有的钩子会改变运行轨迹。框架中到处使用。Channel中定义了需要的操作,AbstractChannel实现了核心功能,然后不同的Channel实现只需要告知具体channel的描述信息即可。Channel接口⬇︎⬇︎⬇︎点击查看代码packagecom.x......
  • 【YashanDB知识库】如何处理yasql输入交互模式下单行字符总量超过限制4000字节
    现象在yasql执行sql语句后报错:YASQL-00021inputlineoverflow(>4000byteatline4)原因yasql在交互模式模式下单行字符总量限制4000字节,超出该限制即报错。交互式模式下,yasql会显示一个提示符,通常是SQL>,等待用户输入命令,用户执行的每个命令都会立即执行,并显示结果。......
  • 【YashanDB知识库】用yasldr配置Bulkload模式作单线程迁移300G的业务数据到分布式数据
    问题描述详细版本:YashanDBServerEnterpriseEditionRelease23.2.4.100x86_646db1237影响范围:离线数据迁移场景,影响业务数据入库。外场将部分NewCIS的报表业务放到分布式数据库,验证SQL性能水平。操作系统环境配置:125G内存32CCPU2T的HDD磁盘问题出现的步骤/操作:1、......
  • 大家都一样的《策略模式》
    不同类型的消息处理这里抽象层用的是接口MessageProcess⬇︎⬇︎⬇︎点击查看代码/***消息处理**@authorhaiyang*/publicinterfaceMessageProcess<K,V>{/***处理消息**@parammessageInfo消息相关信息*@return{@linkV}......