DRP学习中的模型进化

以前做系统是按照三层的思想来做的,即U ,B ,D 。坐着坐着,开始不断加入设计模式,加入sqlhelper ,渐渐的知道了系统不只可以分三层,原来是可以分很多层的,随着学习的不断深入明白了“为什么会出现分层”。知道了是一回事,关键还是在“怎么用”,所以我们还在为“分层”而进行不懈的努力着……

现在学习到了DRP,又认识了一个分层:MVC(model-view-control)。

正式语言这么描述:用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。对于有系统经验的朋友们,对这些描述是深有感悟。下面我们来简单看一下这个模型的始末。

一、MVC 的前身

一个很简单的调用,从前端到JSP到业务逻辑。

图中可以看出它的优点:结构简单,容易操作。

再看第二眼:锁定JSP ,1、取得页面参数,

2、调用业务逻辑,

3、到返回数据

4、渲染页面

5、将渲染结果response 给前端页面

如果要给JSP职责分类的话,1~3,是一致的,那么4 (渲染页面)就显得格格不入,因为,我们有前端,这个JSP既有“业务逻辑处理”,又有“页面处理”,这在三层中,该属于U,B 混搭了。

所以他的缺点就是: 职责不单一,责任过重,不便于维护。但是这个适合小型项目的开发。

任何分层思想都是一样的,就是为了“职责单一,便于管理”,这里既然分层不彻底,那么就重新分呗,有了MVC。

二、MVC

这个图就解决了“混搭”的问题,相对于刚才那个,这个模型适合大型项目开发。

通过引入Servlet 来分担JSP中调用“业务逻辑”的功能,让JSP 只做“渲染页面”来实现页面和业务逻辑的排排站。

这里做到了前端和业务逻辑的分离,但是之前我们说了,一个系统不止有“x”层,我们所熟知的“层”,是通用的写好的一种规范,在实际中,我们可以根据业务需要在“已知层”上进行抽象,包装属于“系统”的层。接下来要说的只是在MVC的基础上加一个“数据访问”的层。当然,这个不属于某一个系统独有,基本所有的系统都会涉及到数据库的访问,和数据库连接的驱动分,方法等基本都是一致的,所以可以封装成一层,作为“持久层”。

一般持久层的使用都会和DAO配合,在DAO中使用了“工厂模式”,封装创建过程。

在持久层的设计中有几个重要的原则:细粒度————细粒度的目的是为了达到高复用性。

:要单纯————不涉及或者很少有过多的业务逻辑。

一步一步进化的模型,就是一种思想的演变。有一种思想很重要,行动上要懒惰,思想上要积极。为了自己可以在行动上懒惰,而发动思维运动,这就是“代码复用”。



DRP学习中的模型进化

时间: 2024-12-19 12:04:37

DRP学习中的模型进化的相关文章

zz深度学习中的注意力模型

中间表示: C -> C1.C2.C3 i:target -> IT j: source -> JS sim(Query, Key) -> Value Key:h_j,类似某种“basis”: 从图9可以引出另外一种理解,也可以将Attention机制看作一种软寻址(SoftAddressing):Source可以看作存储器内存储的内容,元素由地址Key和值Value组成,当前有个Key=Query的查询,目的是取出存储器中对应的Value值,即Attention数值.通过Quer

深度学习中的常见问题汇总(一)

深度学习中的常见问题汇总(一) 转自 卷积神经网络的复杂度分析 关于感受野的总结 1.CNN复杂度分析 在深度学习基础网络不断进化的过程中,可以发现新的模型不仅性能有极大地提升,网络的复杂度通常也会更低.深度学习网络模型的复杂度直接关系到其实际应用中的速度与可行性,因此这里总结一下 CNN 复杂度的含义与计算方式. 1.1时间复杂度 通常,我们假设计算机运行一行基础代码需要一次运算,那么模型的时间复杂度即为模型的运算次数,用浮点运算次数 FLOPs(FLoating-point OPeratio

Nio学习3——基础模型:Reactor模式和多路复用

Reactor模式和NIO 本文可看成是对Doug Lea Scalable IO in Java一文的翻译. 当前分布式计算 Web Services盛行天下,这些网络服务的底层都离不开对socket的操作.他们都有一个共同的结构: 1. Read request 2. Decode request 3. Process service 4. Encode reply 5. Send reply 经典的网络服务的设计如下图,在每个线程中完成对数据的处理: 但这种模式在用户负载增加时,性能将下降

深度学习 vs. 概率图模型 vs. 逻辑学

深度学习 vs. 概率图模型 vs. 逻辑学 摘要:本文回顾过去50年人工智能(AI)领域形成的三大范式:逻辑学.概率方法和深度学习.文章按时间顺序展开,先回顾逻辑学和概率图方法,然后就人工智能和机器学习的未来走向做些预测. [编者按]在上个月发表博客文章<深度学习 vs. 机器学习 vs. 模式识别>之后,CMU博士.MIT博士后及vision.ai联合创始人Tomasz Malisiewicz这一次带领我们回顾50年来人工智能领域三大范式(逻辑学.概率方法和深度学习)的演变历程.通过本文我

浅谈深度学习中潜藏的稀疏表达

浅谈深度学习中潜藏的稀疏表达 “王杨卢骆当时体,轻薄为文哂未休. 尔曹身与名俱灭,不废江河万古流.” — 唐 杜甫<戏为六绝句>(其二) [不要为我为啥放这首在开头,千人千面千理解吧] 深度学习:概述和一孔之见 深度学习(DL),或说深度神经网络(DNN), 作为传统机器学习中神经网络(NN).感知机(perceptron)模型的扩展延伸,正掀起铺天盖地的热潮.DNN火箭般的研究速度,在短短数年内带来了能“读懂”照片内容的图像识别系统,能和人对话到毫无PS痕迹的语音助手,能击败围棋世界冠军.引

[caffe]深度学习之图像分类模型VGG解读

一.简介 vgg和googlenet是2014年imagenet竞赛的双雄,这两类模型结构有一个共同特点是go deeper.跟googlenet不同的是,vgg继承了lenet以及alexnet的一些框架,尤其是跟alexnet框架非常像,vgg也是5个group的卷积.2层fc图像特征.一层fc分类特征,可以看做和alexnet一样总共8个part.根据前5个卷积group,每个group中的不同配置,vgg论文中给出了A~E这五种配置,卷积层数从8到16递增.从论文中可以看到从8到16随着

【转】[caffe]深度学习之图像分类模型AlexNet解读

[caffe]深度学习之图像分类模型AlexNet解读 原文地址:http://blog.csdn.net/sunbaigui/article/details/39938097 本文章已收录于:  深度学习知识库  分类: deep learning(28)  版权声明:本文为博主原创文章,未经博主允许不得转载. 在imagenet上的图像分类challenge上Alex提出的alexnet网络结构模型赢得了2012届的冠军.要研究CNN类型DL网络模型在图像分类上的应用,就逃不开研究alexn

【机器学习 第2章 学习笔记】模型评估与选择

1.训练误差:学习器在训练集上的误差,也称“经验误差” 2.泛化误差:学习器在新样本上的误差 显然,我们的目标是得到在新样本上表现更好的学习器,即泛化误差要小 3.过拟合:学习器把训练样本学的太好了,导致泛化性能下降(学过头了...让我联想到有些人死读书,读死书,僵化,不懂得变通和举一反三) 原因:学习能力过于强大,把一些不太一般的特性也学了进来 针对措施:不好解决,是机器学习面临的关键障碍 4.欠拟合:就是连训练集都没学好,更别说泛化了(有点管中窥豹,盲人摸象的意思). 原因: 学习能力低下

深度学习中的Data Augmentation方法(转)基于keras

在深度学习中,当数据量不够大时候,常常采用下面4中方法: 1. 人工增加训练集的大小. 通过平移, 翻转, 加噪声等方法从已有数据中创造出一批"新"的数据.也就是Data Augmentation 2. Regularization. 数据量比较小会导致模型过拟合, 使得训练误差很小而测试误差特别大. 通过在Loss Function 后面加上正则项可以抑制过拟合的产生. 缺点是引入了一个需要手动调整的hyper-parameter. 详见 https://www.wikiwand.c