
软件框架设计
文章平均质量分 58
昨夜的秋天
这个作者很懒,什么都没留下…
展开
-
缓存与数据库双写不一致解决方案
前提保证最终一致性的解决方案是缓存设置过期时间。一下方案讨论的是不依赖于给缓存设置过期时间的情况。方案一:先更新缓存,再更新数据库不推荐。先更新缓存若更新数据库失败,还需再更新缓存。方案二:先更新数据库,再更新缓存不推荐。同时有请求A和请求B进行更新操作,请求A与B在不同线程,可能会出现:请求A更新了数据库 请求B更新了数据库 请求B更新了缓存 请求A更新了缓存这就出现请求A更新缓存应该比请求B更新缓存早才对,但是因为网络等原因,B却比A更早更新了缓存。这就导致了脏数原创 2020-09-24 22:24:29 · 1223 阅读 · 0 评论 -
(面试)关于简单工厂、工厂、抽象工厂模式学习心得
前言所谓简单工厂,工厂,抽象工厂。当我一开始看到并学习这个这三个概念的时候就感觉这三个感念很相似,有点混乱,事实证明,确实让我变得很混乱。即使当初学的时候勉强看懂,但是事后便抛诸脑后,统统忘记到九霄云外了。因此当我回过头从新理解概念时,总结了以下心得,加深理解,并且做一个备忘录。工厂类模式设计的核心是:让“生产”和“产品”解耦。简单工厂所谓的简单工厂,我的理解是不用管是什么产品,我们将所有产品的生...原创 2018-03-14 21:29:32 · 3182 阅读 · 1 评论 -
线程池思路
自己的写的看法:有一个Pool类,内部管理任务(job)的分发。维护任务队列和线程队列(忙碌和空闲),并创建一个分发线程(专门用于任务的分发)。这个分发线程会调用分发函数,分发任务队列中的任务。 当添加一个新任务的时候(CThreadManage->Run()方法添加任务),Pool会将这个新任务添加到任务队列中。添加后任务不一定立即执行,而是等待线程池中的分发线程进行分发。 分发线...原创 2018-08-01 21:57:50 · 313 阅读 · 0 评论