共享 -- 2




200x200


概述想象一下如果我们要制作一个文本编辑器,如果将各个字符和嵌入的表格图形都作为单独的对象,这样的运行开销是非常巨大而难以承受的,但是如果不这样做,又无法实现很多灵活性的要求 如上图所示,对于

#读书笔记    #技术帖    #龙潭书斋    #设计模式   
开头讲一个故事很久以前,公司的老一代程序员(现在都已经离职)在古老的 restlet 框架的基础上创造了一个 Java MVC 框架,一段框架在程序员的手中代代相传,一个传说流传在程序员之间“所有的 controller 都必须打上 scope=prototype 的烙印”,当这个项目流转到我的手上,当时尚不知道 prototype 意味着什么的我在这个项目上种下了一个小小的 bean,打开了上线系统这个魔盒,等待着项目中的这个种子生根发芽,项目早已是饱经线下测试,我自然是胸有成竹,然而,说时迟那时快,客服电话已是纷至沓来,魔盒中的种子释放出的是混乱与灾难,虽是急急回滚,依然造成了一个多小时的线上故障 -- 所有的用户打开我的订单列表,看到的都是别人的订单记一次重大事故 -- 非线程安全框架引发的意外数据共享 如上面的博文中所述,这个真实的案例发生在 2015 年秋季,日志中也介绍了什么是 prototype,虽然项目饱经测试,但是问题依然没能避免,这就是一场线程安全所引发的灾难,也足见并发环境中的问题难以测试和复现那么,难道真的所有的 Controller 都必须加上 sc
#技术帖    #龙潭书斋    #线程    #thread   



京ICP备15018585号