随笔分类 - 架构设计/理论经验
摘要:行为模式涉及到算法和对象间职责的分配,行为模式不仅描述对象或类的模式,还描述它们之间的通信模式。这些模式刻划了在运行时难以跟踪的复杂的控制流,将程序员的注意力从控制流转移到对象间的联系方式上来。职责链(chain of responsibility)使多个对象都有机会处理请求,从而避免请求的发送者和...
阅读全文
摘要:结构型模式涉及到如何组合类和对象以获得更大的结构。适配器(Adapter)将一个类的接口转换成客户希望的另外一个接口。Target:定义client使用的与特定领域相关的接口Adaptee:定义一个已经存在的接口,这个接口需要适配Adapter:对Adaptee的接口与Target接口进行适配桥接(...
阅读全文
摘要:看到一篇关于系统可伸缩性(可扩展)的文章,eBay的架构师Randy Shoup写的,原文出处没找到,就不写转载的地址了。根据自己的理解对文章有修改剪切的地方。在eBay,可伸缩性是我们每天奋力抵抗的一大架构压力。我们所做的每一项架构及设计决策,身前身后都能看到它的踪影。当我们面对的是全世界数以亿计...
阅读全文
摘要:Dynamo是一个key-value数据存储系统,去中心化、高可扩展、高可用,使用一致性哈希来分区和备份数据,使用数据版本化来实现一致性。核心技术CAP:一致性、可用性、扩展性一致性哈希:切分数据,实现系统增量扩展最终一致性:永远可写,利用数据版本(vector clock)协调数据冲突(由读端自行...
阅读全文
摘要:几个月前学习了公司内部的网络编程框架,以为记住了,时间久了却忘了,所以在此记录下。架构的主体是生产-消费模式,生产者负责接收请求建立连接,消费者(也即工作线程)负责处理请求做出响应。POOL-1连接队列-保存已建立连接还未有数据到来的sockfd;待处理队列-保存有数据到来的sockfd。监听线程:...
阅读全文
摘要:设计模式是经过总结、优化的,对经常碰到的一些编程问题可重用的解决方案。创建型模式抽象了实例化过程,类创建型模式-使用继承改变被实例化的类,对象创建型模式-将实例化委托给另一个对象。抽象工厂(abstract factory)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。Abst...
阅读全文
摘要:在服务开发过程中,常常需要单例来保存全局资源,本文给出一个实用的实现方案。 使用:
阅读全文
摘要:多线程下,常常会使用互斥锁或者读写锁来确保临界区的正确使用。pthread_mutex_lock(&mutex);//using critical sectionpthread_mutex_unlock(&mutex);如果在使用临界区期间发生异常返回,导致锁没有释放。为了防止这种现象发生,我们通常...
阅读全文
摘要:先转载一位仁兄的看法,很好。关于多进程和多线程,教科书上最经典的一句话是“进程是资源分配的最小单位,线程是CPU调度的最小单位”,这句话应付考试基本上够了,但如果在工作中遇到类似的选择问题,那就没有这么简单了,选的不好,会让你深受其害。经常在网络上看到有的XDJM问“多进程好还是多线程好?”、“Li...
阅读全文
摘要:先上类图:1. Worker为处理任务的线程,不断获取新任务运行2.Task为任务实例,可以设计为一次性的或者循环运行3. ExecutorPool维护着线程池和任务池。 3.1 内部负责worker的生成和销毁,task的分发;对外提供task的增加。 3.2 mutex:为互斥变量,实现对tas...
阅读全文
摘要:IT,身为一个新兴行业,在其发展历程中向其他行业借鉴了一些先进的思想和理念,比如除了前面提到的从电力行业借鉴了公用事业这种商业模式和从丰田汽车流水线生产中总结出精益这套编程模式之外,还在软件设计方面引入了架构这个在建筑行业非常核心的概念。架构,对软件系统而言是极为重要的。因为它不仅定义了系统内部各个...
阅读全文
摘要:1.物联网定义:物联网是通信网和互联网的拓展应用和网络延伸,它利用感知技术与智能装臵对物理世界进行感知识别,通过网络传输互联,进行计算、处理和知识挖掘,实现人与物、物与物信息交互和无缝链接,达到对物理世界实时控制、精确管理和科学决策目的。2.物联网发展关键要素3.物联网网络架构感知层实现对物理世界的...
阅读全文
摘要:题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。动态规划变量:i为数组索引,max为i之前的最大值(不包括i),maxdiff为i之前的数减去i得到的最大差。解...
阅读全文
摘要:题目:把n个骰子扔在地上,所有骰子朝上一面的点数之和为S。输入n,打印出S的所有可能的值出现的概率。声明思想非原创!只因动态规划思想的使用很好,记下!分析:动态规划就是分阶段考虑问题,给出变量,找出相邻阶段间的关系。具体定义给忘了。1.现在变量有:骰子个数,点数和。当有k个骰子,点数和为n时,出现次...
阅读全文
摘要:排序算法很早就开始接触,但全部记住并瞬间写出来也是有点困难。排序算法更多的是给我们提供了一种思路。常见的有:归并排序、快速排序、堆排序,以及较为简单的冒泡排序、选择排序、插入排序、希尔排序等。近日回味,发现中国IT实验室的一个教程较为详细明了,现转载如下。但是其中的归并排序代码的合并部分有个小问题,...
阅读全文
浙公网安备 33010602011771号