设计模式:管道模式(Pipeline)

管道模式(Pipeline)不属于 GoF 提出的 23 种经典设计模式,但在工程中很常见。它与职责链模式相近,可看作其变体:数据/请求沿固定或可配置的处理阶段依次流动,每一阶段只做一类变换,再交给下一阶段。

阅读更多

一台服务器可创建多少个TCP连接

这是一个在面试时经常被问题的问题,实际隐含的是对服务器的优化和创建过多连接时的问题诊断。

生产环境部署应用服务的服务器操作系统基本上是 Linux 服务器,此问题所涉及到更深层的是 Linux 内核 TCP/IP 和 Socket 参数优化。

阅读更多

网络I/O模型详解

重要参考资料:W.Richard Stevens 的 UNIX Network Programming Volume 1:The Sockets Networking API,Third Edition(UNIX网络编程-卷1:套接字联网API 第3版),6.2 Chapter:I/O Models。

基于 Unix / Linux 的网络编程的 5 种 I/O 模型。

阅读更多

设计模式:代理模式(Proxy)

代理模式 给某一对象提供一个代理对象,并由代理对象控制对原对象的引用。属于结构型模式。

代理模式在生活中有具体的表现,例如找代理售票点(或黄牛)买票,网络代理。

阅读更多

设计模式:享元模式(Flyweight)

享元模式 尝试复用同类或相似的对象,以共享方式高效地支持大量的细粒度对象,减少面向对象的系统设计中可能创建大量类或对象,以减少内存占用和提高性能。

享元模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

面向对象设计可以很好地解决一些灵活性或可扩展性问题,但在大多数情况下需要在系统中增加类和对象的个数。当对象数量过多时,会占用较大内存,甚至导致内存溢出,运行代价过高,带来性能下降等问题。

阅读更多

设计模式:中介者模式(Mediator)

中介者模式是把多对象之间存在复杂的网状结构的交互关系,改为 星形结构,这样大大降低对之间的耦合,所有对象只通过 中介者 与目标对象联系。

中介者例子:人才交流中心,房产中介,WTO(世界贸易组织), MVC框架中的 C(控制器)就是 M(模型)和 V(视图)的中介者。

阅读更多

设计模式:桥接模式(Bridge)

桥接模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系替代继承关系,而从降低了抽象实现这两个可变维度的耦合度。

桥接模式不是一个使用频率很高的模式,但是熟悉这个模式对于理解面向对象的设计原则,包括 开-闭原则(OCP) 以及 组个/聚合原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。

阅读更多