段誉给神仙姐姐磕头
1335 2022-05-23 14:04
身份、岗位、职能、原子操作、原子记录。又到了老村长讲故事的时间。上回书说道,最好的教育就是让受教者不知道教育的意图。所以最好的学习永远都是故事。每个故事都有意义。但是很多讲故事的人本身没有水平,也没有教育意向。那么口口相传就会造成故事七零八碎或者添油加醋或者本末倒置。所以,有时候同济大学的教案很好,好的像真经、好的像目录,但是吃起来真的很噎人。言归正传,今天我们讲一个你永远都会碰到的问题。或者说是两个。那就是管理协调问题。总有那么一种情况,让你记个数。比如段誉给神仙姐姐磕头,磕够1000个,就能得到北冥神功和凌波微步。那么这个计数器怎么记呢?如果只有一个山洞,只有一个段誉。那么最后也就只有一份传承。如果神仙姐姐量比较大,希望广收门徒帮她杀光逍遥派弟子。于是开了很多窗口接受叩拜。总会有很多人磕不够1000下。如果仅有一个神像,大家都在磕头。那么怎么计数呢?同样的,银行窗口会有叫号机。网票预定会有剩余张数。所有这些稀缺资源都会离不开一个全局唯一的计数器。那么记录的如果不仅仅是一个头等舱座位。而是很多个头等座位可以抢呢?是不是觉得有些复杂了?今天就来教你们解决这些高并发强实时的系统设计。首先,我们设计一个接口类。接口类统一了我们要保证的操作。注意,这里保证的是操作而不是记录。因为记录可以算作是原子存储的。擦写分别对应两个原子操作。存储是属性、擦写是方法。而一个数字改变的意义,一定是先读取再写入。于是有两个原子操作。我们定义这样的一套操作为保护方法。那么执行这个保护方法的人就必须有全局唯一的身份。你可以指定一个人。但是人肯定就得休息,所以最好还是指定一个袖标,用身份来保护这个方法,那么该方法可以说是一项职能,完成这独一份职能的就是一个岗位,拥有袖标身份在岗的人,时空性下只能是唯一的。这里面蕴含着人这个类,只有人能干这种活。人类里面具体出一个来就是一个实例,而限定方法static调用属性的时候又不能使用this这个指针。因为this代表诸多对象当中的一个,是具体到类蓝图当下构造之后的那个的实例。所以限定方法如果接受外来数据,就需要打破java部分支持闭包这个藩篱。具体方法就是在实现类private一个static属性,然后构造函数每次都要调用该属性的类set方法。而getInstance上类锁之后获取类实例为空则创建默认,否则就传入设置这个static的属性。好了,一把高并发单例模式锁就很好的起作用了。那么一开始为什么设置接口呢。就是为了分类解决诸多优先权的并列问题。你看,为每一个特殊位置设立专人计数,也就解决了每一个蒲团都能磕出北冥神功的问题。我可真是个大聪明啊。这回我也知道为什么不能让受教者知道意图了。要不是故事,谁听这些烂七八糟的东西。
全部评论