酒管集团采用单例模式对性能有何长期影响及潜在优化策略?

2026-03-30 22:300阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4213个文字,预计阅读时间需要17分钟。

摘要:+ 大概一年前开始,在考虑和构造函数中依赖注入较多,这对系统的性能和硬件资源消耗产生了一些优化想法。+ 许多公司项目都使用Autofac进行依赖注入(Scoped作用域),但发现存在过度依赖的问题。+

摘要: 大概一年前开始在思考 构造函数中 依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。 一般较多公司的项目都使用Autofac 依赖注入(Scoped 作用域),但是发现过多的对象产生 会消耗 CPU , 内存 并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用 单例 (Singleton)来解决这些问题呢? 带着这些想法开始ReView整个项目的代码,排查是否存在 单例 会造成 线程安全 或 方法内修改全局变量的代码(结果是乐观的....)。于是开始了性能测试....论证.. 试运行... ,结果是超预期的(CPU 从 60%-降低到--》10%, 内存 从 33%-降低到--》20%, 接口平均响应时间 从 120毫秒--降低到--》50毫秒 . 1500/QPS (不含内部服务相互调用)) 和@InCerry 沟通结果,说可以写个 案例 和大家分享分享... 于是乎 有了这一片文章。

基础概念介绍

1.依赖注入(Dependency Injection , DI)

依赖注入(Dependency Injection,DI)是一种实现控制反转(IoC)的技术。它是指通过外部的方式将一个对象的依赖关系注入到该对象中,而不是由该对象自己创建或查找依赖的对象。依赖注入可以通过构造函数、属性或方法参数等方式实现。

依赖注入的好处是可以降低对象之间的耦合性,提高代码的可测试性和可维护性。通过将依赖关系从对象内部移动到外部,我们可以更容易地替换依赖的对象,以及更容易地进行单元测试。同时,依赖注入也可以使代码更加灵活和可扩展,因为我们可以通过注入不同的依赖来改变对象的行为。

日常编码的时候大家追求的都是高内聚低耦合这种就是良性的依赖,避免 牵一发动全身的则是恶性依赖重则推到重构、轻则维护困难。

阅读全文
标签:影响

本文共计4213个文字,预计阅读时间需要17分钟。

摘要:+ 大概一年前开始,在考虑和构造函数中依赖注入较多,这对系统的性能和硬件资源消耗产生了一些优化想法。+ 许多公司项目都使用Autofac进行依赖注入(Scoped作用域),但发现存在过度依赖的问题。+

摘要: 大概一年前开始在思考 构造函数中 依赖注入较多,这对系统性能及硬件资源消耗产生一些优化想法。 一般较多公司的项目都使用Autofac 依赖注入(Scoped 作用域),但是发现过多的对象产生 会消耗 CPU , 内存 并给GC(垃圾回收)造成一定的压力。那么开始思考是否能够使用 单例 (Singleton)来解决这些问题呢? 带着这些想法开始ReView整个项目的代码,排查是否存在 单例 会造成 线程安全 或 方法内修改全局变量的代码(结果是乐观的....)。于是开始了性能测试....论证.. 试运行... ,结果是超预期的(CPU 从 60%-降低到--》10%, 内存 从 33%-降低到--》20%, 接口平均响应时间 从 120毫秒--降低到--》50毫秒 . 1500/QPS (不含内部服务相互调用)) 和@InCerry 沟通结果,说可以写个 案例 和大家分享分享... 于是乎 有了这一片文章。

基础概念介绍

1.依赖注入(Dependency Injection , DI)

依赖注入(Dependency Injection,DI)是一种实现控制反转(IoC)的技术。它是指通过外部的方式将一个对象的依赖关系注入到该对象中,而不是由该对象自己创建或查找依赖的对象。依赖注入可以通过构造函数、属性或方法参数等方式实现。

依赖注入的好处是可以降低对象之间的耦合性,提高代码的可测试性和可维护性。通过将依赖关系从对象内部移动到外部,我们可以更容易地替换依赖的对象,以及更容易地进行单元测试。同时,依赖注入也可以使代码更加灵活和可扩展,因为我们可以通过注入不同的依赖来改变对象的行为。

日常编码的时候大家追求的都是高内聚低耦合这种就是良性的依赖,避免 牵一发动全身的则是恶性依赖重则推到重构、轻则维护困难。

阅读全文
标签:影响