观察者模式,在MVC和TCP/IP+NIO中的应用(未完成)
1.观察者模式主要是为了解耦,注意并不是立刻通知。
2.在MVC的教科书定义中,Model采用的是观察者模式,也就是Model是被观察者,View是观察者,Model有任何改变的情况下,View都会接受到通知。
换句话说,只有当我们需要生成一个页面作为响应返回给客户端的时候,创建一个View并使用Model有意义。
因此其他时候Model的改变对于View来说都是没有意义的,也就没必要通知View
所以View就不再直接观察Model,而是通过Controller来作为中间人。因此Controller是一次Request就调用一次。
3.从"一连接一线程"到"一请求一线程"
为了满足服务器端能同时接受多个连接发送的请求,通常采用的方法是在accept获取socket后,将此socket放入一个线程中处理,通常将此做法称为“一连接一线程”。这样服务器端就可以接受多个连接发送请求了。这种方式的缺点是无论连接上是否有真实的请求,都要耗费一个线程。为了避免创建过多的线程导致服务端资源耗尽,需要限制创建的线程数。从这里可以看出,线程和连接耦合在了一起。
线程是分配cpu的单位,如果没有线程是无法调用cpu资源处理请求的。但是上述的做法由于把线程和连接耦合在了一起,导致了就算没有真实的请求,一个连接也会占用线程。我们这时很自然地就会想到,那么直到有真实的请求到来我们再处理才是最经济的方式。
这种情况特别符合订阅者模式
一.网络协议
4.TCP和流
7.用TCP/IP实现自己简单的应用程序协议:其余部分(包括完整代码)
8.用TCP/IP实现自己简单的应用程序协议:最后再返回来看HTTP协议
二.多线程之旅
3.多线程之旅之三——内核对象同步机制
4.多线程之旅之四——用户态同步机制
5.多线程之旅之五——线程池
6.多线程之旅六——异步编程模式
7.多线程之旅七——内存模型
8.多线程之旅八——多线程下的数据结构
三.数据库漫谈
2.SQL SERVER中的聚集索引和非聚集索引
3.SQL SERVER对索引的利用分析
模式
摘要: 1.可以转移到方法名,字符串,xml中。2.并没有使编程变得更简单,只是把一部分变得更抽象,显得更强壮了而已。3.IOC容器管理了对象的依赖关系,因此要在程序运行前启动。因为没有具体依赖的程序什么都不是。阅读全文
摘要: 1.观察者模式主要是为了解耦,注意并不是立刻通知。2.在MVC的教科书定义中,Model采用的是观察者模式,也就是Model是被观察者,View是观察者,Model有任何改变的情况下,View都会接受到通知。但是在WEB环境中,View不需要实时的改变,只有客户端发送request时,View才可能需要改变。换句话说,只有当我们需要生成一个页面作为响应返回给客户端的时候,创建一个View并使用Model有意义。因此其他时候Model的改变对于View来说都是没有意义的,也就没必要通知View所以View就不再直接观察Model,而是通过Controller来作为中间人。因此Controller阅读全文
摘要: 原来因为技术限制等原因,一直采用的是把所有逻辑都单独放在Service层的方式,这种方式最容易让人理解。不过随着开发的进展,service越来越大,也成为了一个问题,逻辑变得难以管理。我一直想解决这种问题,在学习设计模式的过程中,好像看到了点能解决问题的端倪,可在实战中,我的能力又不足以充分的使用各种设计模式。后来看到了POEAA这本书提到的领域模型,才明白了自己这种方式被叫做“贫血”模型,相对应的还有早就听说,但是不知道如何实现的“领域模型”。接下来我就打算把自己以前用贫血模型做的项目用领域模型重新做一遍,估计问题会不少,比如说是用数据库驱动还是用领域驱动呢?现实中大多数都是先设计好数据库在阅读全文