2019-02-05 14:40
⁄ 工业·编程
⁄ 共 4144字
1. 概述
在软件开发的过程中,当遇到一个“复杂的对象”的创建工作,该对象由一定各个部分的子对象用一定的算法构成,由于需求的变化,复杂对象的各个部分经常面临剧烈的变化,但将它们组合在一起的算法相对稳定。
例子1:买肯德基
典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程是相同的。
客户端:顾客,想去买一套套餐...
设计模式阅读全文
2019-02-03 14:02
⁄ 工业·编程
⁄ 共 6026字
在面向对象编程中, 最通常的方法是一个new操作符产生一个对象实例,new操作符就是用来构造对象实例的。但是在一些情况下, new操作符直接生成对象会带来一些问题。举例来说, 许多类型对象的创造需要一系列的步骤: 你可能需要计算或取得对象的初始设置; 选择生成哪个子对象实例; 或在生成你需要的对象之前必须先生成一些辅助功能的对象。 在这些情况,新对象的建立就是一个 “过程”,不仅是一个操作,像一部大机器中的...
设计模式阅读全文
2019-02-01 11:33
⁄ 工业·编程
⁄ 共 7171字
1. 设计模式
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。
模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方...
设计模式阅读全文
2019-01-31 11:20
⁄ 工业·编程
⁄ 共 2352字
一、顺序查找的基本思想
从表的一端开始,向另一端逐个按给定值kx 与关键码进行比较,若找到,查找成功,并给出数据元素在表中的位置;若整个表检测完,仍未找到与kx 相同的关键码,则查找失败,给出失败信息。
说白了就是,从头到尾,一个一个地比,找着相同的就成功,找不到就失败。很明显的缺点就是查找效率低。
【适用性】适用于线性表的顺序存储结构和链式存储结构。
平均查找长度=(n+1)/2.
【顺序查找优缺点】
缺点:是...
算法阅读全文
2019-01-28 06:41
⁄ 工业·编程
⁄ 共 733字
《设计模式》-> 《重构》-> 《重构与模式》。也就是设计->重构->重构出新设计。
《设计模式》主要详细说明20几种模式,为我们带来了常见设计问题的经典解决方案,从而改变了整个面向对象开发的面貌。为设计而著。
《重构》改善既有代码的设计,总结了我们会用到的各种重构手法,为我们带来了一种改进代码的高效过程,从而彻底改变了面向对象设计的方式。侧重去除坏代码的味道。
&...
架构师阅读全文
2019-01-25 06:02
⁄ 工业·编程
⁄ 共 3434字
直连式存储(简称DAS)
DAS存储是最为常见的存储形式之一,特别是其是在规模比较小的企业中。由于企业本身数据量不大,且光纤交换机等设备价格昂贵,因此基本都采用高密度的存储服务器或者服务器后接JBOD等形式,这种形式的存储属于DAS架构。
对于DAS存储,其实可以是在服务器内部直接连接磁盘组,或者通过外接线连接磁盘阵列两种方式。对于外联的方式通常是通过SAS线进行连接,其实通过FC进行服务器与磁盘阵列的连接也可以理...
分布式, 存储阅读全文
2019-01-22 22:47
⁄ 工业·编程
⁄ 共 1293字
今天分享一个网络库选择的文章,当时我负责公司服务器的改造工作,需要选择一个适合的开源网络库。
欲使用开源网络库libevent、libev、libuv、IOCP、asio、muduo中的一个,经过对比分析,因本服务器系统目前于windows下运行,考虑到未来跨平台的支持,最终选定libevent开源网络库。
技术对比:
1.libevent
C语言跨平台,应用最广泛,历史悠久的跨平台事件库。这是一个用纯C写的开源库,属于一个轻量级的网络中间件。其中用到的...
libev, libevent, libuv, 网络编程阅读全文
2019-01-20 22:42
⁄ 工业·编程
⁄ 共 1457字
libuv 和 libev ,两个名字相当相近的 I/O Library,最近有幸用两个 Library 都写了一些东西,下面就来说一说我本人对两者共同与不同点的主观表述。
高性能网络编程这个话题已经被讨论烂了。异步,异步,还是异步。不管是 epoll 也好,kqueue 也罢,总是免不了异步这个话题。
libev 是系统异步模型的简单封装,基本上来说,它解决了 epoll ,kqueuq 与 select 之间 API 不同的问题。保证使用 livev 的 API 编写出的程序可以在大...
libev, libuv, 网络编程阅读全文
2019-01-18 22:39
⁄ 工业·编程
⁄ 共 1140字
[问]两个库都是为异步io调度而设计,在Linux上都是使用epoll机制,在FreeBSD上则都是kqueue,还有诸如此类的很多相通之处。
除了这些表面上的差别外,其实这两者根本的区别在哪里呢?比如架构上,或者设计哲学上。
[答]就设计哲学来说,libev的诞生,是为了修复libevent设计上的一些错误决策。例如,全局变量的使用,让libevent很难在多线程环境中使用。watcher结构体很大,因为它们包含了I/O,定时器和信号处理器。额外的组件...
libev, libevent, 网络编程阅读全文
2019-01-16 22:37
⁄ 工业·编程
⁄ 共 634字
Libevent、libev、libuv三个网络库,都是c语言实现的异步事件库Asynchronousevent library)。
异步事件库本质上是提供异步事件通知(Asynchronous Event Notification,AEN)的。异步事件通知机制就是根据发生的事件,调用相应的回调函数进行处理。
事件(Event):事件是异步事件通知机制的核心,比如fd事件、超时事件、信号事件、定时器事件。有时候也称事件为事件处理器(EventHandler),这个名称更形象,因为Handler本身...
libev, libevent, 网络编程阅读全文