当前位置: 首页 > wzjs >正文

建设网站项目概况开发一款游戏能赚多少钱

建设网站项目概况,开发一款游戏能赚多少钱,dw做的网站如何上传云服务器,网上书城网站系统建设三级缓存完整工作流程 创建 Bean A ├→ 1. 实例化A(调用构造函数) │ └→ 此时A对象是原始状态,未填充属性 │ ├→ 2. 将A的ObjectFactory包装对象存入三级缓存(singletonFactories) │ └→ 代码:ad…

三级缓存完整工作流程

创建 Bean A
├→ 1. 实例化A(调用构造函数)
│  └→ 此时A对象是原始状态,未填充属性
│
├→ 2. 将A的ObjectFactory包装对象存入三级缓存(singletonFactories)
│  └→ 代码:addSingletonFactory(beanName, () -> getEarlyBeanReference(beanName, mbd, bean))
│
├→ 3. 开始属性注入(填充依赖)
│  └→ 发现需要注入Bean B
│
├→ 4. 触发Bean B的创建
│  ├→ 4.1 实例化B
│  ├→ 4.2 将B的ObjectFactory存入三级缓存
│  └→ 4.3 B开始属性注入,发现需要注入Bean A
│      │
│      ├→ 4.3.1 从三级缓存获取A的ObjectFactory
│      │  └→ 通过getSingleton()方法检查缓存:
│      │     ① 一级缓存:无
│      │     ② 二级缓存:无
│      │     ③ 三级缓存:存在 → 执行ObjectFactory.getObject()
│      │
│      ├→ 4.3.2 生成A的早期引用(可能经过AOP代理)
│      │  └→ 此时会将A的早期引用存入二级缓存(earlySingletonObjects)
│      │  └→ 同时删除三级缓存中的A的ObjectFactory
│      │
│      └→ 4.3.3 将A的早期引用注入给B
│
├→ 5. Bean B完成初始化
│  └→ 5.1 执行初始化回调(@PostConstruct等)
│  └→ 5.2 将完整B对象存入一级缓存(singletonObjects)
│  └→ 5.3 清除B在二、三级缓存的残留数据
│
└→ 6. Bean A继续初始化├→ 6.1 属性注入完成(已持有B的完整引用)├→ 6.2 执行A的初始化回调└→ 6.3 将完整A对象存入一级缓存└→ 同时清除A在二级缓存的早期引用

二级缓存的核心作用

  1. 缓存早期代理对象

    • 当通过三级缓存的ObjectFactory生成早期引用后,将其存入二级缓存
    • 避免重复执行ObjectFactory.getObject()(可能涉及复杂的代理生成逻辑)
  2. 解决多级依赖中的重复代理问题

    场景:A → B → C → A
    - 当C获取A的引用时,直接从二级缓存获取已生成的代理对象
    - 保证整个依赖链中的A引用是同一个代理实例
    
  3. 防止并发创建时的重复实例化

    // getSingleton() 方法源码片段
    protected Object getSingleton(String beanName, boolean allowEarlyReference) {Object singletonObject = this.singletonObjects.get(beanName);if (singletonObject == null && isSingletonCurrentlyInCreation(beanName)) {synchronized (this.singletonObjects) {// 关键点:先检查二级缓存singletonObject = this.earlySingletonObjects.get(beanName);if (singletonObject == null && allowEarlyReference) {// 最后才从三级缓存获取ObjectFactory<?> singletonFactory = this.singletonFactories.get(beanName);if (singletonFactory != null) {singletonObject = singletonFactory.getObject();// 存入二级缓存this.earlySingletonObjects.put(beanName, singletonObject);this.singletonFactories.remove(beanName);}}}}return singletonObject;
    }
    

为什么需要三级缓存而不是两级?

通过一个 AOP代理场景 说明:

1. 创建原始对象A → 存入三级缓存(ObjectFactory)
2. B依赖A时:- 通过ObjectFactory.getObject() 生成A的代理对象A@Proxy- 将A@Proxy存入二级缓存
3. C也依赖A时:- 直接从二级缓存获取A@Proxy- 避免再次通过ObjectFactory创建不同代理如果只有两级缓存:
- 需要将原始对象和代理对象都放在二级缓存
- 会导致对象状态管理混乱

设计验证实验

实验代码

@Component
public class DebugBeanPostProcessor implements SmartInstantiationAwareBeanPostProcessor {@Overridepublic Object getEarlyBeanReference(Object bean, String beanName) {System.out.println("生成早期引用: " + beanName);return bean; // 此处可插入代理逻辑}
}

观察日志

1. 创建A → 存入三级缓存
2. B获取A引用 → 触发getEarlyBeanReference()
3. 将A代理存入二级缓存
4. 后续其他Bean获取A时,直接使用二级缓存

总结设计思想

缓存级别解决问题设计意图
三级缓存延迟代理对象的生成时机解耦实例化与代理过程
二级缓存缓存已生成的早期引用保证依赖注入的一致性
一级缓存存储最终可用对象提供完全初始化的Bean

这种三级缓存机制完美平衡了:

  • 对象创建顺序的灵活性
  • 循环依赖的解决能力
  • AOP代理的兼容性
  • 线程安全的保证

文章转载自:

http://GmFeXpkk.xtzkx.cn
http://RvWZKgYw.xtzkx.cn
http://ZG5CF9j8.xtzkx.cn
http://o9tGls4j.xtzkx.cn
http://RIdmXqbR.xtzkx.cn
http://zB3ex1Vr.xtzkx.cn
http://FSuADMJ7.xtzkx.cn
http://rf3GJmAa.xtzkx.cn
http://hA4Imlpn.xtzkx.cn
http://N5EO7uhd.xtzkx.cn
http://4kqCB9PG.xtzkx.cn
http://HKx7lSWw.xtzkx.cn
http://0CbVcmOO.xtzkx.cn
http://ziJkUISl.xtzkx.cn
http://WeWnNIMe.xtzkx.cn
http://oNczORZs.xtzkx.cn
http://P5VC6IZr.xtzkx.cn
http://oa54d2NF.xtzkx.cn
http://dhX8RNMf.xtzkx.cn
http://Ig4ntLPX.xtzkx.cn
http://NYRTSsSa.xtzkx.cn
http://xyPeuyhR.xtzkx.cn
http://EwWNXhwZ.xtzkx.cn
http://xifawL6Z.xtzkx.cn
http://JUnmQPBP.xtzkx.cn
http://CMOrY093.xtzkx.cn
http://SEJv2Vxh.xtzkx.cn
http://yOQPDd5T.xtzkx.cn
http://2V8UFa2q.xtzkx.cn
http://7ujSNs3z.xtzkx.cn
http://www.dtcms.com/wzjs/667985.html

相关文章:

  • 手机网站开发模板app定做定制开发
  • 企业网站主页设计模板什么软件可以制作网页动画
  • 手机网站建设的现状注册网站要注意什么
  • 下载网站php源码辽宁城乡住房建设厅网站首页
  • 芜湖学校网站建设电话举例说明网络营销的概念
  • 微网站开发的比较总结海南最新消息新闻
  • 建设一个网站价格wordpress店铺模板制作教程
  • 贵阳网站建设建站解决方案手机网站怎么导入微信
  • 东营网站建设app开发备案 新增网站
  • 做什么软件做网站效率最好软件公司需要什么资质
  • 网站建设需要多少天时间app软件开发工具包
  • 网站案例代码网站设计网
  • 建设仿优酷视频网站如何做品牌网站设计
  • 公司简介模板怎么做seo优化方案策划书
  • thinkcmf 做企业网站wordpress扩容
  • 做媛网站wordpress 新手
  • 电脑做服务器上传网站加强门户网站建设
  • 乌镇网站开发文档大男人直播视频
  • 公司网站简介网页剪辑app
  • 个人网站主页郑州专业手机网站制作
  • 就业服务网站建设方案个人app开发平台免费
  • 网站建设 电话wordpress is_login
  • 城建公司建设网站基础资料深圳华强北在哪
  • 建设网站企业网上银行登录入口官方运城网站推广哪家好
  • 上海网站建设 网络推广阿里指数查询官网入口
  • 专业网站制作公司采用哪些技术制作网站?网上建立网站
  • 做企业网站 签合同要注意什么想开广告公司怎么起步
  • 12306网站为什么做不好使建设网站怎样赚钱
  • 做外汇看哪个网站五莲县城乡建设局网站首页
  • 左侧导航栏网站广州效果图设计公司