逻辑模型

MVC架构风格

匿名 (未验证) 提交于 2019-12-02 23:49:02
一、MVC架构风格定义 以下定义是《试题》中给出的答案。 是一种用业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。 模型 负责维护并保存具有持久性的业务数据,实现业务处理功能,并将业务数据的变化情况及时通知视图。 视图 负责呈现模型中包含的业务数据,响应模型变化通知,更新呈现形式,并向控制器传递用户的界面动作。 控制器 负责将用户的界面动作映射为模型中的业务处理功能并实际调用之,然后根据模型返回的业务处理结果选择新的视图。 文章来源: https://blog.csdn.net/devillyd2018/article/details/96849862

DDD领域驱动设计基本理论知识总结

南楼画角 提交于 2019-12-02 11:22:59
原文地址: https://www.cnblogs.com/netfocus/archive/2011/10/10/2204949.html 领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见 这篇 文章。 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Software (领域驱动设计),简称Evans DDD。领域驱动设计分为两个阶段: 以一种领域专家、设计人员、开发人员都能理解的通用语言作为相互交流的工具,在交流的过程中发现领域概念,然后将这些概念设计成一个领域模型; 由领域模型驱动软件设计,用代码来实现该领域模型; 由此可见,领域驱动设计的核心是建立正确的领域模型。 为什么建立一个领域模型是重要的 领域驱动设计告诉我们,在通过软件实现一个业务系统时,建立一个领域模型是非常重要和必要的,因为领域模型具有以下特点: 领域模型是对具有某个边界的领域的一个抽象,反映了领域内用户业务需求的本质;领域模型是有边界的,只反应了我们在领域内所关注的部分; 领域模型只反映业务,和任何技术实现无关;领域模型不仅能反映领域中的一些实体概念,如货物,书本,应聘记录,地址,等;还能反映领域中的一些过程概念,如资金转账,等; 领域模型确保了我们的软件的业务逻辑都在一个模型中

Spring MVC入门

守給你的承諾、 提交于 2019-12-01 09:08:00
2.1、Spring Web MVC是什么 Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。 另外还有一种基于组件的、事件驱动的Web框架在此就不介绍了,如Tapestry、JSF等。 Spring Web MVC也是服务到工作者模式的实现,但进行可优化。前端控制器是DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/处理器为Controller接口(仅包含ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的POJO类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。 2.2、Spring Web MVC能帮我们做什么 √让我们能非常简单的设计出干净的Web层和薄薄的Web层; √进行更简洁的Web层的开发;

[开源] gnet: 一个轻量级且高性能的 Golang 网络库

戏子无情 提交于 2019-11-30 14:58:37
Github 主页 https://github.com/panjf2000/gnet 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦。 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库。这个库直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包: net 来构建网络应用,它的工作原理类似于两个开源的网络库: libuv 和 libevent 。 这个项目存在的价值是提供一个在网络包处理方面能和 Redis 、 Haproxy 这两个项目具有相近性能的Go 语言网络服务器框架。 gnet 的亮点在于它是一个高性能、轻量级、非阻塞的纯 Go 实现的传输层(TCP/UDP/Unix-Socket)网络库,开发者可以使用 gnet 来实现自己的应用层网络协议,从而构建出自己的应用层网络应用:比如在 gnet 上实现 HTTP 协议就可以创建出一个 HTTP 服务器 或者 Web 开发框架,实现 Redis 协议就可以创建出自己的 Redis 服务器等等。 gnet 衍生自另一个项目: evio ,但是性能更好。 功能 高性能 的基于多线程模型的 Event-Loop 事件驱动 内置 Round-Robin 轮询负载均衡算法 简洁的 APIs 基于 Ring-Buffer 的高效内存利用

.NET Core采用的全新配置系统[2]: 配置模型设计详解

萝らか妹 提交于 2019-11-30 12:57:31
在《 .NET Core采用的全新配置系统[1]: 读取配置数据 》中,我们通过实例的方式演示了几种典型的配置读取方式,其主要目的在于使读者朋友们从编程的角度对.NET Core的这个全新的配置系统具有一个大体上的认识,接下来我们从设计的维度来重写认识它。通过上面演示的实例我们知道,配置的编程模型涉及到三个核心对象,它们分别是 Configuration 、 ConfigurationSource 和 ConfigurationBuilder 。如果从设计层面来审视这个配置系统,还缺少另一个名为 ConfigurationProvider 的核心对象,总得来说,.NET Core的这个配置模型由这四个核心对象组成。要彻底了解这四个核心对象之间的关系,我们先得来聊聊配置的几种数据结构。 [ 本文已经同步到《 ASP.NET Core框架揭秘 》之中] 目录 一、配置数据结构及其转换 二、Configuration 三、ConfigurationProvider 四、ConfigurationSource 五、ConfigurationBuilder 一、配置数据结构及其转换 相同的数据具有不同的表现和承载方式,同时体现出不同的数据结构。对于配置来说,它在被消费过程中是以Configuration对象的形式来体现的,该对象在逻辑上具有一个树形化层次结构,所以我们可以称之为配置树

从零开始构建逻辑回归模型

自闭症网瘾萝莉.ら 提交于 2019-11-30 04:32:10
逻辑回归模型是针对线性可分问题的一种易于实现而且性能优异的分类模型。我们将分别使用Numpy和TensorFlow实现逻辑回归模型训练和预测过程。 从零构建 首先,我们通过Numpy构建一个逻辑回归模型。 我们定义shape如下: \(X\) :(n,m) \(Y\) :(1,m) \(w\) :(n,1) \(b\) :(1) 其中 \(n\) 代表特征维数, \(m\) 代表样本个数。 对于逻辑回归二分类模型,其损失函数如下: \[ J(\theta)=-\frac{1}{m}\sum_{i=1}^N{[y_i\log{h_\theta(x_i)}+(1-y_i)\log{(1-h_\theta(x_i))}]} \] 对 \(\theta\) 求导得 \(\theta\) 的更新方式是: \[ \theta_j:= \theta_j-\alpha \frac{1}{m}\sum_{i=1}^m (h_\theta(x_i)-y_i)x_i^j \] 所以,在代码中, \(\theta\) 的更新方式为: dw = np.dot(X,(A-Y).T)/m 各个函数作用如下: sigmoid(x):激活函数实现 initialization(dim):零值初始化w以及b propagate(w,b,X,Y):前向传播得到梯度以及代价函数值 optimize(w,b,X,Y

ASP.NET开发实战——(五)ASP.NET MVC & 分层

不问归期 提交于 2019-11-30 01:46:42
上一篇文章简要说明了MVC所代表的含义并提供了详细的项目及其控制器、视图等内容的创建步骤,最终完成了一个简单ASP.NET MVC程序。   注:MVC与ASP.NET MVC不相等,MVC是一种开发模式,而ASP.NET MVC是MVC这种模式的其中一种实现方式,本文中提到的MVC如果没有特指,那么均表示ASP.NET MVC。   本文将从ASP.NET的M-V-C到底代表什么?如何编写对应的代码?来讨论如何使用ASP.NET MVC开发应用程序。   ○ ASP.NET MVC与分层   ○ ASP.NET MVC中的M代表什么   ○ ASP.NET MVC的V和C是如何交互的   ○ ASP.NET MVC中的C应该如何处理业务逻辑   ○ 如何使用ASP.NET MVC ASP.NET MVC与分层   什么是分层?   在了解分层之前,先了解一下层次的概念,层次是指系统在结构或功能方面的等级秩序。具有多样性,可按物质的质量、能量、运动状态、空间尺度、时间顺序、组织化程度等多种标准划分。不同层次具有不同的性质和特征,既有共同的规律,又各有特殊规律。(来自百度百科)   所以分层实际上是根据一定的标准和规律,将一个整体划分为多个层次,保证每一个层次中的内容都有共同的性质和特征,便于针对每一个层次进行维护管理。   代码分层:  

从概率模型到逻辑分类

这一生的挚爱 提交于 2019-11-29 19:10:57
我今天来推导一下根据 概率模型 来推导一下分类的问题。 题目的大概就是,我们抽取一个样本,然后去判断这个样本应该属于哪个分类。 首先大概的复习一下跟概率论相关的知识 概率论的一些基础知识 我们把问题限定为两个类别的分类。即我们有一个 \(C_1\) 和 \(C_2\) 分类。然后抽取一个样本 \(X_i\) ,去判断 \(X_i\) 应该属于哪个分类。用概率的公式来描述我们的问题 \(P(C_?|X_i)\) 换言之 \(P(C_1|X_i)=1-P(C_2|X_i)\) 那么我们只要求出其中一个概率即可。 根据贝叶斯公式,我们可知 \(P(C_1|X_i) = \frac{P(X_i|C_1)*P(C_1)}{P(X_i|C_1) * P(C_1) + P(X_i|C_2)*P(C_2)}\) 我们对公式进行一些简单的变换:分子和分母同除以分子可以得到 \(P(C_1|X_i)=\frac{1}{1+\frac{P(X_i|C_2)*P(C_2)}{P(X_i|C_1)*P(C_1)}}\) 我们设: \(Z=ln(\frac{P(X_i|C_1)P(C_1)}{P(X_i|C_2)P(C_2)})\) 得到了 \(P(C_1|X_i)=\frac{1}{1+exp(-Z)}\) 我们进一步对Z进行变换: \(Z=ln\frac{P(X_i|C_1)}{P(X_i|C_2)} +

电商课题:RBAC权限控制

左心房为你撑大大i 提交于 2019-11-29 09:50:57
@郑昀汇总 名词解释: RBAC:Role-Based Access Control,基于角色的访问控制 关键词: RBAC,Java Shiro,Spring Security, 一. RBAC 要解决的 常见问题 问题一: 对某一个用户只授予一些特殊的权限 描述:既不希望扩大某一个角色的权限,也不希望因此创建出很多零碎的、只为一个用户而存在的角色。 问题二: 性能问题 描述:B/S 下,菜单、页面、页面元素、dataset的列,这些层层权限判断过于复杂,容易造成系统访问非常缓慢。 问题三: 如何减少 HardCode(硬编码) 描述: 问题四:系统上线后,某个页面增加一个新HTML控件或数据集,这种细粒度权限控制如何以最快速度添加? 描述:对一个 Resource 的 Privilege ,如何快速增加定义?如何快速分配权限?页面如何控制? 问题五:系统上线后,增加一个新细粒度权限控制,运营部门如何最快速度将其应用到已存在角色和帐号上? 描述:对于系统中已存在的成百上千角色、成千上万帐号甚至于无数用户组,一个运营部门的管理人员,如何能以最小代价,通过界面,将此权限分配出去。 二. 一个在权限逻辑和业务逻辑之间做切割的设计原则 2.1.细粒度是否算权限系统的范畴 先解释两个概念: 粗粒度 :表示类别级。即仅考虑对象的类别,不考虑对象的某个特定实例。譬如,用户管理中,增删改查

从分而治之的思想到架构的设计

江枫思渺然 提交于 2019-11-29 05:44:28
辛巴当上了国王,他究竟要怎样才能管理好它的王国? 分治与总量控制 在上一篇文章里,我们得到两个信息: 人类大脑的信息实时处理能力存在上限 软件系统的复杂度远超人类大脑的复杂度处理上限 从而引出了人类解决大规模复杂问题的根本方法 分而治之 然而分而治之的需要基于一个前提进行 复杂度总量控制 因为绝大多数人类参与的问题中,分而治之都会引入额外的汇总求解成本。要尽量减少复杂度,有两个方面的思想层次的指导: 子问题在人类可控范围内尽量的大 每个子问题要高内聚,问题间要低耦合 子问题在人类可控范围内尽量大,则有助于减少子问题数量,因而减少合并处理子问题的成本。同时子问题不超过一个人处理能力的上限是因为,一旦超过一个人的能力范围,要多人合作解决同一个平面上问题的不同部分时,必然会因合作之间沟通等原因降低整体开发效率(1 + 1 < 2) 高内聚、低耦合是一体,但从不同角度描述的理念。高内聚,即所需完成的事情所需的资源在内部通过较少的代价即可取得,低耦合则是指代 输出给外部、或者从外部输入的资源尽可能的小。 在存在关联的子问题中,耦合并不可能消除。耦合这个词可能大多数程序员听起来有有点不好的意味,但耦合存在另外一个中性的名字——接口。所以,产生了一个接口就产生了一个耦合,接口参数越多,耦合就越强。 以上是对之前文章的回顾,本文后续将基于个人理解,讲述 分治的隔离级别,如何识别要拆分的点