
软件架构
文章平均质量分 95
This is bill
这个作者很懒,什么都没留下…
展开
-
设计模式---读书笔记
按照惯例,来一个来由,这是《设计模式—可复用面向对象软件的基础》的读书笔记,整理给自己看的,整理的内容也会不断更新。大神轻喷~~如果不喜欢请留言说明原因再踩哦,谢谢,我也可以知道原因,不断进步原创 2015-07-26 09:03:49 · 1063 阅读 · 0 评论 -
IO设计模式:Reactor和Proactor对比
看到好文就是忍不住想转~~~平时接触的开源产品如Redis、ACE,事件模型都使用的Reactor模式;而同样做事件处理的Proactor,由于操作系统的原因,相关的开源产品也少;这里学习下其模型结构,重点对比下两者的异同点;反应器ReactorReactor模式结构Reactor包含如下角色:Handle 句柄;用来标识socket连接转载 2016-06-21 11:16:50 · 817 阅读 · 0 评论 -
JAVA设计模式之原型模式
定义:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象。类型:创建类模式类图:原型模式主要用于对象的复制,它的核心是就是类图中的原型类Prototype。Prototype类需要具备以下两个条件:实现Cloneable接口。在java语言有一个Cloneable接口,它的作用只有一个,就是在运行时通知虚拟机可以安全地在实现了此接口的类上使用clo转载 2016-07-08 15:13:10 · 947 阅读 · 0 评论 -
JAVA设计模式之单例模式
本文继续介绍23种设计模式系列之单例模式。概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以下特点: 1、单例类只能有一个实例。 2、单例类必须自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并转载 2016-07-08 15:06:53 · 788 阅读 · 0 评论 -
Nginx搭建反向代理服务器过程详解
一、反向代理:Web服务器的“经纪人”1.1 反向代理初印象反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。从上图可以看出:反向代理服务器位于网站机房,代理网站Web服务器接收Htt转载 2016-07-09 18:57:56 · 2570 阅读 · 0 评论 -
事件驱动VS消息驱动
事件:按下鼠标,按下键盘,按下游戏手柄,将U盘插入USB接口,都将产生事件。比如说按下鼠标左键,将产生鼠标左键被按下的事件。 消息:当鼠标被按下,产生了鼠标按下事件,windows侦测到这一事件的发生,随即发出鼠标被按下的消息到消息队列中,这消息附带了一系列相关的事件信息,比如鼠标哪个键被按了,在哪个窗口被按的,按下点的坐标是多少?如此等等。1.要理解事件驱动和程序,就需要与非事件驱动的程序进行转载 2017-03-10 22:20:15 · 3420 阅读 · 1 评论 -
Node.js事件驱动编程
Node.js现在非常活跃,相关生态社区已经超过Lua(基本上比较知名的功能都有nodejs模块实现)。 但是我们为何要使用Node.Js?相比传统的webserver服务模式,nodejs有什么优点优势? Node.Js是基于javascript语言,建构在google V8 engine以及Linux上的一个非阻塞事件驱动IO框架。nodejs是单进程单线程,但是基于V8的强大驱动力,以及事件转载 2017-03-11 09:10:03 · 664 阅读 · 0 评论 -
软件架构模式-事件驱动
没有进行架构设计的应用程序通常是紧耦合的、玻璃心,难以改变。没有头绪。如果不理解应用的各个组件的内部工作方式的话很难看清它的架构特征。关于部署和维护的问题都很难回答:架构的规模如何?程序的性能如何?程序容易修改么?程序的部署模型是怎么样?程序的响应如何?架构模式可以帮助你定义程序的基本特征和行为。例如一些架构模式很自然让程序成为大规模(scalable)的程序。有些模式让程序变得灵巧敏捷(agil转载 2017-03-11 22:22:20 · 7922 阅读 · 1 评论 -
C++多线程框架--------- 消息队列
首先,本文提到的代码的github地址为:https://github.com/wyh267/Cplusplus_Thread_Lib之前,多线程一些基本的东西,包括线程创建,互斥锁,信号量,我们都已经封装,下面来看看消息队列我们尽量少用系统自带的消息队列(比如Linux的sys/msgqueue),那样移植性不是很强,我们希望的消息队列,在消息打包和提取都是用的标准的C++数据结构,当然,你也可转载 2017-03-12 20:38:26 · 10407 阅读 · 0 评论 -
图的定义
概述图(Graph)是一种比线性表和树更为复杂的数据结构。线性结构:是研究数据元素之间的一对一关系。在这种结构中,除第一个和最后一个元素外,任何一个元素都有唯一的一个直接前驱和直接后继。 树结构:是研究数据元素之间的一对多的关系。在这种结构中,每个元素对下(层)可以有0个或多个元素相联系,对上(层)只有唯一的一个元素相关,数据元素之间有明显的层次关系。图结构:是研究数据元素之间的多对多的关系。在这转载 2017-03-29 16:23:12 · 836 阅读 · 0 评论 -
软件工程中的耦合类型
耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分模块的一个准则就是高内聚低耦合。一般模块之间可能的连接方式有七种,转载 2017-03-24 21:17:16 · 8634 阅读 · 0 评论 -
CAS原子操作实现无锁及性能分析
CAS原子操作实现无锁及性能分析 Author:Echo Chen(陈斌)Email:chenb19870707@gmail.comBlog:Blog.youkuaiyun.com/chen19870707Date:Nov 13th, 2014最近在研究nginx的自旋锁的时候,又见到了GCC CAS原子操作,于是决定动手分析下CAS实现的无转载 2016-06-20 22:08:25 · 913 阅读 · 0 评论 -
C++反射机制的实现
Java中有天然的反射机制,因为Java本身就是半编译语言,很多东西可以在运行时来做,但是c++就不同了。要建立c++的反射机制,就需要登记每个类名与对象的对应关系。1.前言在实际的项目中,听到师兄说C++中用到了反射,出于好奇,就查阅相关资料,发现强大的C++本身并不支持反射,反而Java支持反射机制。当我得知这个事实时,一直唯C++马首是瞻的我,心中暗自落泪,悲叹不已。但是,C转载 2016-06-20 10:03:26 · 20506 阅读 · 8 评论 -
抽象工厂模式
又碰到好文章了,忍不住就想转,这种风格幽默清新的文章很有借鉴意义。转自:http://www.cnblogs.com/cbf4life/archive/2009/12/23/1630612.html抽象工厂模式9.1 女娲的失误 我们在上一章节讲了女娲造人的故事。人是造出来了,世界也热闹了,可是低头一看,都是清一色的类型,缺少关爱、仇恨、喜怒哀乐等情绪,人类转载 2015-07-25 15:44:06 · 1426 阅读 · 0 评论 -
23种设计模式
目录创建型1. Factory Method(工厂方法)2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型6. Adapter Class/Object(适配器)7. Bridge(桥接)8. Composite(组合)9. Decorator(装饰)转载 2015-07-21 17:30:18 · 1472 阅读 · 0 评论 -
如何写软件设计文档
软件设计的不同模型:瀑布式、快速原型法以及迭代式自从1968年提出“软件工程”概念以来,软件开发领域对于借鉴传统工程的原则、方法,以提高质量、降低成本的探索就从未停止过。而在这个过程中,提出了许多不同的软件开发模型,典型的有:瀑布式,快速原型法,以及迭代式开发等。瀑布式模型是由W.W.Royce在1970年最初提出的软件开发模型,在瀑布模型中,开发被转载 2015-08-28 11:09:09 · 2264 阅读 · 0 评论 -
UML类图几种关系的总结
以前觉得毫无用处的UML图,现在居然感觉如此有用,可见知识是在需要的时候才会意思到其重要性,转一篇好文章~~在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛转载 2015-07-26 09:44:31 · 1173 阅读 · 0 评论 -
23种设计模式搞笑解释
本人很逗,也喜欢很逗的学习方式,看到这篇,毫不犹豫转了~~转自:http://blog.youkuaiyun.com/yuan22003/article/details/6709666工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这转载 2015-08-04 13:11:57 · 1499 阅读 · 0 评论 -
个人C++注释规范
好久没写博客了,最近都在做项目,在做项目的过程中遇到多种注释的问题,现在就理清一个注释规范,以后我就按照这个规范来注释~~养成好的注释习惯有助于提高代码的可读性 (注:每个人的习惯不同,可找到自己喜欢的注释风格)原创 2015-09-02 14:31:22 · 2401 阅读 · 0 评论 -
工厂模式与抽象工厂模式小览(二)
一、文章来由就等啦~~还记得工厂模式与抽象工厂模式小览(一)第一部吗?我们在第一部中,分别详细的描述了(1)简单工厂(2)工厂模式(3)抽象工厂模式,但是并没有描述他们之间的关系,也没有比较工厂模式和抽象工厂模式,这对难舍难分的好基友之间的异同点,这些工作我们在第二部中完成~二、工厂模式和简单工厂 话说十年前,有一个暴发户,他家有三辆汽车——Benz奔驰、Bmw宝马、Audi奥迪,还雇了司机为他原创 2015-09-19 19:37:58 · 1164 阅读 · 0 评论 -
http长连接和短连接
1. HTTP协议与TCP/IP协议的关系 HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上可靠的传递数据包,使在网络上的另一端收到发端发出的所有包,并且顺序与发出顺序一致。TCP有可靠,面向连接的特点。 2. 如何理解HTTP转载 2016-06-27 12:02:51 · 771 阅读 · 0 评论 -
工厂模式与抽象工厂模式小览(一)
一、文章来由一天看完 hf设计模式 中的工厂模式,略微还有点消化不了,于是打算好好探究一下。其实不仅仅是这两个模式之间容易混淆,他们各自的定义也是挺绕的,下面我就仔细回过头翻书+查阅资料,重新捋一捋,研究一下这两个“工厂”。同时还是保持一个开放的心态,设计模式博大精深,很难一文以蔽之,于是《xx小览》系列文章又添新作。Ps. 鉴于类容过长,我分成两部分来写,第一部分主要是自己对于看 hf设计模式 的原创 2015-08-06 10:24:42 · 2105 阅读 · 0 评论 -
无锁队列的实现
关于无锁队列的实现,网上有很多文章,虽然本文可能和那些文章有所重复,但是我还是想以我自己的方式把这些文章中的重要的知识点串起来和大家讲一讲这个技术。下面开始正文。关于CAS等原子操作在开始说无锁队列之前,我们需要知道一个很重要的技术就是CAS操作——Compare & Set,或是 Compare & Swap,现在几乎所有的CPU指令都支持CAS的原子操作,X86下对应的是转载 2016-07-14 16:54:55 · 1794 阅读 · 0 评论 -
软件设计之——“高内聚低耦合”
耦合度一、什么是耦合度软件设计中通常用耦合度和内聚度作为衡量模块独立程度的标准。划分摸块的一个准则就是高内聚低耦合。 耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。 模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。降低模块间的耦合度能减转载 2017-04-06 14:01:28 · 2489 阅读 · 0 评论