1.通过通用语言达成共识 通用语言,已经强调过好多遍了,在DDD再怎么重视都不为过,后面可能还会讲. 知识提炼的输出以及共识的构建就是常见的通用语言(UL). 当与业务相关人员和主题专家进行建模时,每个人都应该有意识地始终应用富含领域专有术语的通用语言.这一语言必须现实制作,并在描述领域模型和问题域时使用.该语言还应该用于模型的代码实现,使用用作类名.属性和方法名称相同的术语和概念.正是这一语言使得业务和开发团队拥有了关于软件的有意义沟通. UL用于将模型的代码描述绑定到以业务能够理解的语言和图…
提炼问题域的意义 理解一个复杂问题域以便创建简单且有用的模型需要深入详尽的知识以及深刻的见解,这些只能通过与从内到外理解该领域的人协作得到.对模型的设计进行连续实验和探究正是DDD的能力所能实现的.只有通过协作以及共享对问题域的理解,你才能有效设计一个模型以应对业务的挑战,这样也才能具备足够的灵活性应对新出现的需求. 知识提炼与协作 复杂问题域会包含大量信息,其中一些将不适合于解决待处理的问题,并且只会分散你建模工作的实际重心. 知识提炼是从问题域中提炼出相关信息的技术,其目的是构建能满足业务用…
方式六:延迟对模型中概念的命名 对领域建模时命名很重要. 因为在不断的知识提炼过程中经常会发现已经被命名的概念与你最初理解的有出入,这时你当初的命名就会变成一个问题.其问题在于  最初选作名称的这个词所带来的“错误”联想  并且该联想还会限定你的思维方式. Gery Young(我也不认识是谁)建议,为你不确定的模型区域使用难以理解的词组成名称(例如可以用于问题域无关的 颜色 等).作为为模型区域或概念提供真实名称的替代方式,可以使用难以理解的词,直到你完全理解了一个关切问题所有的责任职责.行为…
DDD在存在许多DDD模式的同时,也有大量实践和指导原则,这些都是DDD思想体系成功的关键. 1.专注于核心领域 DDD强调的是在核心子域付出最多努力的需要.核心子域是你的产品会成功还是会失败的差异化因素所在.它是产品的独特卖的点,也是构建而非购买产品的原因. 核心领域是将为你的业务提供竞争优势并产生真实价值的产品内容. 至关重要的是,团队要理解核心领域是什么. 2.通过协作进行学习 DDD强调的是开发团队和业务专家之间协作,以生产出解决问题的有用模型的重要性. 没有业务专家的协作和投入,就不能…
可以将DDD看成一种开发思想体系:它促成了一种新的以领域为中心的思维方式. 它是一种学习过程,而非最终目标,这就是DDD的最大优势. 任何团队都可以编写一个软件来满足一组用例的需求,但那些将时间和精力花在其正在处理的问题域中的团队则能够持续演化产品以满足新的业务用例. DDD本身并非一种严格的方法论,而是必须与一些迭代式软件项目方法论结合使用以构建并演化一个有用的模型. 由此可见下面的这些理解,存在很大的误区: 1.战术模式是DDD的关键 这明显不对,DDD并不是一种面向对象的设计,也不是一种以…
前一篇,简单介绍了DDD战略模式的提炼问题域,这篇简单介绍它如何塑造应用程序的架构. 1.创建一个模型以解决领域问题 为每一个子域构建一个软件模型以处理领域问题并让软件与业务保持一致. 这个模型并非现实世界的模型,而更多的是构建来满足业务用例需求的一个抽象体,同时仍保持业务领域的规则和逻辑. 为了避免偶发性技术复杂性,模型要保持与基础架构代码的分离状态. 所有的模型都不是同等创建的,最合适的设计模式是基于每一个子域的复杂性需要来使用的,而非将总括设计应用到整个系统. 2.使用公共语言开启建模协作…
业务和开发团队之间的协作是DDD必不可少的部分,并且它是处于开发阶段的产品获得成功的关键. 领域专家指的是那些从业务领域的政策和工作流程到棘手处和特性都具有深刻理解的人.能够为你的问题区域提供深刻见解的人.他们可能是对于你当前工作领域具有很强的领悟和理解的产品所有者.用户或其他任何人. 1.领域专家与业务相关人员的对比 DDD寻找到在你当前工作的领域中是主题专家的人很重要.而要找到领域专家,我们就要区分领域专家与业务相关人员. 问题空间会给出一组需求.输入和预期输出——这通常是你的业务相关人员提…
DDD的战术模式 DDD的战术模式(也称为模型构造块)是一个帮助创建 用于复杂有界上下文的有效模型的 模式集合. 也就是我们常说的设计模式. 问题空间 问题空间将问题域提炼成更多可管理的子域,是真对于问题域而言的. DDD问题空间的影响在于揭示什么是重要的以及在何处付出努力. 解空间 DDD解方面的内容涵盖了可以影响应用程序架构发展并让其更易于管理的模式.…
第一篇:Matlab基础知识提炼: 这一篇主要用系统和提炼性的语言对Matlab基础知识进行总结,主要适用于有语言基础的学习者.尽量不讲废话. 第一部分:Matlab是什么? 1 Matlab是Matrix和Laboratory两个单词的组合,翻译为矩阵实验室.是美国的一家企业的软件产品,这就公司叫MathWorks公司. 2 Matlab软件是工程师和科学家们喜爱的一种高级语言和交互环境,是一种解释型的语言,支持特殊硬件(比如GPU等)的软件.主要应用领域包括信号和图像处理.通讯.控制系统和计…
转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要…
HTML+CSS学习笔记 (7) - CSS样式基本知识 内联式css样式,直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌入式和外部式三种. 内联式css样式表就是把css代码直接写在现有的HTML标签中,如下面代码: <p style="color:red">这里文字是红色.</p> 注意要写在元素的开始标签里,下面这种写法是错误的: <p>这里文字是红色.</p…
salesforce 零基础开发入门学习(二)变量基础知识,集合,表达式,流程控制语句 salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常用的基本变量Integer,String,Decimal,Double,Long,Boolean,ID. 集合常用的对象:List<T>,Set<T>,Map<T>. 时间日期常用对象:…
第三节:变量 正如其他编程软件一样. 都是通过变量来传递和交换数据的,这是基础.按照<MATLAB基础知识提炼>这篇文章先介绍变量比较合适.编程语言不外乎包括两部分:数据和结构.应该先把数据这块儿概况讲解一下,概况就是变量.从本质上来看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化. 3.1 变量的命名 和其他语言一样,这块儿略. 3.2 变量类型:局部变量.全局变量和永久变量 局部变量:MATLAB中的每一个函数都有自己的局部变量,这些变量存储在该函数的独立工作区内.一般在界面的…
salesforce如果简单的说可以大概分成两个部分:Apex,VisualForce Page. 其中Apex语言和java很多的语法类似,今天总结的是一些简单的Apex的变量等知识. 有如下几种常用的基本变量Integer,String,Decimal,Double,Long,Boolean,ID. 集合常用的对象:List<T>,Set<T>,Map<T>. 时间日期常用对象:Datetime,Time,Date. 其他:Object,sObject(与数据库相关…
要看懂设计模式,你需要懂类图(Class Diagram),也需要懂一点对象图(Object Diagram),下面介绍一些UML的必要知识,以便你学习设计模式. 属性.操作 下图简单介绍类的属性和操作. 类有属性(attributes).操作(operations),属性和操作统称特性(features). 下载 (40.26 KB) 7 分钟前 下图进一步详细介绍类图细节,包括:属性和操作的作用域.属性类型.参数类型.方法返回值类型等. 下载 (74.42 KB) 12 分钟前 接口.枚举…
去年 6 月份写的博文<Yusuke Sugomori 的 C 语言 Deep Learning 程序解读>是囫囵吞枣地读完一个关于 DBN 算法的开源代码后的笔记,当时对其中涉及的算法原理基本不懂.近日再次学习 RBM,觉得有必要将其整理成笔记,算是对那个代码的一个补充.    目录链接 (一)预备知识 (二)网络结构 (三)能量函数和概率分布 (四)对数似然函数 (五)梯度计算公式 (六)对比散度算法 (七)RBM 训练算法 (八)RBM 的评估 作者: peghoty 出处: http:…
参考:感谢博主的分享... http://www.cnblogs.com/netfocus/archive/2012/02/12/2347938.html DDD ==> 领域驱动设计(Domain-driven Design) 一种模型驱动的软件设计方式 驱动方式: 数据库驱动:(分析需求-->建库建表-->代码) 领域驱动:分析领域问题/需求-->领域模型-->实现软件代码 领域驱动的核心为领域模型,领域驱动模型,模型驱动代码实现. 领域——问题域 领域驱动应该由开发人员…
请注明转载地址:http://www.cnblogs.com/arhat 首先在这里我想声明一下,这个ASP.NET MVC3系列是我在授课过程中的一些经验,有什么不对的地方,请大家指出,我们共同的学习. 以前总是在课堂上讲解一些新技术,由于时间有限不可能全部都讲到位,所以我想在闲暇的时候能够把平时我的开发经验和学习的新知识传授给大家.那么这个Blog就诞生了,本来很早的时候就想把一些东西都写到Blog上,但是由于平时比较忙没有顾上,趁着年前有时间就弥补一下遗憾吧! 可能大家看到Blog上的随笔…
学习AJAX其实有个很重要的应用,就是为了执行另外几个站点的ASP,返回结果. 真正用起来,发现2个问题,>_> 不许笑,一向做DELPHI,接触ASP不多的我,的确问题大堆. 第一个问题: VBS的变量传递给JS...通过学习发现很简单的... 先看下我大体实现方法: <% dim sSrv1Link sSrv1Link = "http://www.XXX.org/test1.asp?U=TESTUSER&M=111&E=222" %> <…
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知识. 基于Token的安全验证体系 这个比较简单, 简单来说就是为了证明我们有访问权限, 我们首先需要获得一个token. 什么是token? 比如说: 可以访问某些大楼的门禁卡就是一种token, 回家开门的钥匙也是一种token. 为了获取到token, 首先你需要验证你的身份, 以证明你确实有…
想知道可视域分析是什么,就得知道可视域是什么 我们站在某个地方,原地不动转一圈能看到的所有事物就叫可视域.当然平地就没什么所谓的可视域. 如果在山区呢?可视范围就会被山体挡住了.这个分析对军事上有十分重要的意义. 在本例中,可视域是以GraphicLayer中的Graphics[]形式存在的. 这个例子用到了Geoprocessor这个类.这个类的对象是如何判别我要进行可视域分析呢?且听我慢慢道来. 看看结果 点击山谷的位置,出现一个红点,稍等10s左右,出现橙色的面块,橙色的面块就是红点位置所…
我要使用asp.net core 2.0 web api 搭建一个基础框架并立即应用于一个实际的项目中去. 这里需要使用identity server 4 做单点登陆. 下面就简单学习一下相关的预备知识. 基于Token的安全验证体系 这个比较简单, 简单来说就是为了证明我们有访问权限, 我们首先需要获得一个token. 什么是token? 比如说: 可以访问某些大楼的门禁卡就是一种token, 回家开门的钥匙也是一种token. 为了获取到token, 首先你需要验证你的身份, 以证明你确实有…
自己并不懂,在此先记录下来,留待以后学习... 正文 前言:上篇总结了下WebApi的接口测试工具的使用,这篇接着来看看WebAPI的另一个常见问题:跨域问题.本篇主要从实例的角度分享下CORS解决跨域问题一些细节. WebApi系列文章 C#进阶系列——WebApi接口测试工具:WebApiTestClient C#进阶系列——WebApi 跨域问题解决方案:CORS C#进阶系列——WebApi身份认证解决方案:Basic基础认证 C#进阶系列——WebApi接口传参不再困惑:传参详解 C#…
首先推荐一本书,<HTTP权威指南>我就是看这本书入门的,对http协议有了更好的理解,学习https的理论知识我认为需要了解以下几点,需要一步步的深入学习: 1.HTTPS的基本概念? 2.HTTPS和HTTP的差别?HTTP + 数据加密技术 =HTTPS ?HTTPS 所谓的安全是指哪里安全? 3.HTTPS 的详细交互过程? 4.基础的密码学知识学习:数字加密,对称密钥,非对称密钥,数字签名,数字证书的基本概念. 5.使用openssl怎么制造自签证书? 6.实现简单的https的客户…
基础班学习的这一个多月里的前三周讲解基础的语法,最后一周需要做坦克大战的项目巩固提高自己掌握的语法知识.这个系列博文主要是为了把学习过程中的知识点总结并记录下来: 开发语言与开发工具:C++,VS2015 运行环境:windows 10 x64 主要涉及知识: 一.基础化编程:条件语句.循环语句.数组.向量.指针 二.过程化编程:函数重载. 三.数据结构:A星算法.STL容器 四.程序架构:全局数据.静态数据 五.面向对象类:成员函数.运算符重载 解决问题的思路: 一.论坛.搜索引擎 二.参考开…
日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写shell脚本,那么你就不算一个合格的管理员.目前很多单位在招聘linux系统管理员时,shell脚本的编写是必考的项目.有的单位甚至用shell脚本的编写能力来衡量这个linux系统管理员的经验是否丰富.笔者讲这些的目的只有一个,那就是让你认真对待shell脚本,从一开始就要把基础知识掌握牢固,然后要不断的练习,只要你shell脚本写的好,相信你的linux求职路就会轻松的多.笔者在这一章中并不会多么详细的介绍shell脚本…
最近开始筹备一个电商项目. 其实是公司的老本行了. 但今年公司希望在做项目的同时, 沉淀出一套针对电商的基础产品. 这样可以提高新项目的开发效率, 减少重复劳动. 那现如今, DDD(领域驱动设计)应该是比较受推崇的. 所以在这个项目里, 大家决定用DDD来设计系统与抽象业务. 我是十分懵逼的. 只能抓紧时间恶补了. 一开始请教度娘, 看了很多播客, 然而看完之后还是懵逼, 并没有获取到什么有效的知识. 少有的两篇结合能结合实际例子, 上点代码. 然而代码的简易程度也是幼稚的可怜. 这条路看来不…
在 geoserver源码学习与扩展——restAPI访问 博客中提到了geoserver的跨域参数设置,本文详细讲一下geoserver的跨域访问配置. geoserver的跨域访问依赖java-property-utils-1.9.jar和cors-filter-1.7.jar两个jar包,在gs-web-app工程的pom.xml文件中,增加相应的依赖项,在maven编译时会自动下载打包到war包中,依赖项配置如下: <dependency> <groupId>com.the…
学习FPGA,先要有数电知识,最好有点C语言,,学好硬件描述语言,verilog或者vhdl.在有这些基础上,做一些小的模块不断积累.这里不再赘述. 下面介绍一下关于FPGA学习过程中的一些理论知识. 1.信号处理——信号与系统.数字信号处理.数字图像处理.现代数字信号处理.盲信号处理.自适应滤波器原理.雷达信号处理. 2.接口应用——如:UART.SPI.IIC.USB.CAN.PCIE.Rapid IO.DDR.TCP/IP.SPI4.2(10G以太网接口).SATA.光纤.DisplayP…