泛型缓存原理

简介: 泛型缓存原理

泛型方法的根本目的就是一个方法代替多个方法,满足不同类型的需求

例如,差不多的方法体需要传入不同参数

public class GenericMenthod
    {
        public static void GetName(string name)
        {
            Console.WriteLine("" + name);
        }
        public static void Getid(int id)
        {
            Console.WriteLine("" + id);
        }
        public static void Get(object Datetime)
        {
            Console.WriteLine("" + Datetime);
        }
    }


有人说为什么不用object来代替呢

当然可以,但是object是引用类型,当传入值类型的参数,会执行装箱拆箱操作,损耗系统性能,没有约束程序不严谨。

public static void Get<T>(T t)
        {
            Console.WriteLine("" + t);
        }

延迟加载,在调用时才指定类型

Console.WriteLine(typeof(List<>));

a16279ef14a3beae4c9f0aa040a49fd2_2088.png

泛型.NET Framework2.0 编译器升级-支持占位符 JIT升级-运行时将占位符替换

第一次编译会带占位符,第二次编译会把占位符替换成真实类型

JIT会为不同的类型产生不同的副本


public class Generic<T>
    {
        private static string GenericCache = null;
        static Generic()
        {
            GenericCache = $"{typeof(T).FullName}";
        }
        public static string  GetData()
        {
            return GenericCache;
        }
    }
static void Main(string[] args)
        {
            for (int i = 0; i < 5; i++)
            {
                Console.WriteLine("**********************");
                Generic<int>.GetData();
                Generic<string>.GetData();
                Generic<DateTime>.GetData();
                Generic<object>.GetData();
            }
            Console.ReadLine();
        }


在循环第一次时,已经为每种类型生成了副本,当第二次循环时,直接使用之前的对象,返回GenericCache

相关文章
|
6月前
|
XML 存储 缓存
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache管理器的实战开发指南(修正篇)
【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache管理器的实战开发指南(修正篇)
113 0
|
3月前
|
缓存 安全 Android开发
Android经典实战之用Kotlin泛型实现键值对缓存
本文介绍了Kotlin中泛型的基础知识与实际应用。泛型能提升代码的重用性、类型安全及可读性。文中详细解释了泛型的基本语法、泛型函数、泛型约束以及协变和逆变的概念,并通过一个数据缓存系统的实例展示了泛型的强大功能。
41 2
|
3月前
|
存储 缓存 算法
缓存优化利器:5分钟实现 LRU Cache,从原理到代码!
嗨,大家好!我是你们的技术小伙伴——小米。今天带大家深入了解并手写一个实用的LRU Cache(最近最少使用缓存)。LRU Cache是一种高效的数据淘汰策略,在内存有限的情况下特别有用。本文将从原理讲起,带你一步步用Java实现一个简单的LRU Cache,并探讨其在真实场景中的应用与优化方案,如线程安全、缓存持久化等。无论你是初学者还是有一定经验的开发者,都能从中受益。让我们一起动手,探索LRU Cache的魅力吧!别忘了点赞、转发和收藏哦~
79 2
|
3月前
|
缓存 监控 网络协议
DNS缓存中毒原理
【8月更文挑战第17天】
99 1
|
3月前
|
存储 缓存 NoSQL
微服务缓存原理与最佳实践
微服务缓存原理与最佳实践
|
3月前
|
存储 缓存 Java
|
4月前
|
存储 算法 缓存
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法的原理是什么
高并发架构设计三大利器:缓存、限流和降级问题之滑动窗口算法的原理是什么
|
4月前
|
算法 API 缓存
高并发架构设计三大利器:缓存、限流和降级问题之固定窗口限流算法的原理是什么
高并发架构设计三大利器:缓存、限流和降级问题之固定窗口限流算法的原理是什么
|
5月前
|
存储 缓存 JavaScript
【前端 - Vue】之 Keep-Alive缓存组件使用语法及原理解析,超详细!
【前端 - Vue】之 Keep-Alive缓存组件使用语法及原理解析,超详细!