控制反转的思考
我认为,控制反转和模版模式以及框架的概念是类似的,而控制正转类同于策略模式,库。
反转的是依赖关系,对框架代码来说,实现的就是模版模式。使用框架的代码,其实被反转调用了。而库则是主动去调用的,是一种策略模式。
因为控制反转是一种设计模式,因此所有语言都存在。
例如C,JS是以回调函数实现。而Python作为一种动态语言,这方面的支持更为强大。
对于OOP的静态语言(Cpp,Java,Golang等等)来说,通过继承的实现更为自然(Golang通过桥接模式变相实现)。
我认为,控制反转和模版模式以及框架的概念是类似的,而控制正转类同于策略模式,库。
反转的是依赖关系,对框架代码来说,实现的就是模版模式。使用框架的代码,其实被反转调用了。而库则是主动去调用的,是一种策略模式。
因为控制反转是一种设计模式,因此所有语言都存在。
例如C,JS是以回调函数实现。而Python作为一种动态语言,这方面的支持更为强大。
对于OOP的静态语言(Cpp,Java,Golang等等)来说,通过继承的实现更为自然(Golang通过桥接模式变相实现)。
最近在做的项目设计到一些金钱交易方面的事情。涉及到一些分布式事务的逻辑。
参考了一些资料,做一些总结。
一部分资源的数据更新以后,怎么保证另外一部分资源的数据也必须更新成功。
1 | Name 媒体广告名称 |
可以根据Channel和Cs分析属于哪一类节目
golang字符处理已经踩过好几个坑了,记录一下
用的mysql版本比较老,不支持emoji,所以需要golang来去除emoji表情
判断思路是普通汉字utf8下都是3字节内,而emoji表情是4字节,如果大于4字节就过滤掉即可
1 | import "unicode/utf8" |
之前用触发器做数据统计
然后还是一不小心踩坑了
触发器新建了一张fileinfo表,file表中增删查改的信息都会以触发器的形式去修改fileinfo表
后来发现由于mysql是行级锁,由于file表的操作QPS会很高,这个行级锁会造成很大的性能损失
所以需要把增删查改写入随机行。
双十一京东mac air 11寸(redis作者也是用的这个)促销,只要3999,于是买了一台试试水。
本意是通过上一篇博客的内网穿透,直连公司虚拟机用的。但是没想到双休日虚拟机居然连不上了,p2p和代理方式甚至teamview都不行,为了防止这种情况再发生,还是进行一下配置吧。
记录一下防止以后还要装0.0
最基础的应该是homebrew安装了,毕竟没有这个连wget之类的都没有
买了一台阿里云的VPS,有了公网IP就想着内网穿透的事情
一台内网服务器A,一台外网服务器B,我希望通过外网连接SSH来连接到A
也就是在家里连公司内网的办公虚拟机
中间踩了几波坑,记录一下
说来惭愧,codis是去年年初就开始调研的。因为想codis和k8s一起上,重心一直在k8s这边。
导致codis上线一拖再拖,我们DBA用着twemproxy那一套老旧的方案快奔溃了。
上个月调研的时候发现codis改了HA的方案,上了sentinel。
我们之前在codis-HA方案上确实是踩了坑,有一套环境丢了数据。希望sentinel能更好一些。但是很快就发现了数据丢失的情况。
golang的使用一直是野路子。在看了几个国外开源项目(nsq,skynetservices)以后,才发现管道的重要性。
其实在公司的大型项目开发过程中早就意识到了这个问题,那就是mutex的使用是可以完全被channel所替代的。
但是channel的一些场景用mutex去实现会非常复杂。
举一个资源池的例子