上下文

领域驱动设计(DDD)实践之路(一)

无人久伴 提交于 2020-02-26 02:12:45
本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/gk-Hb84Dt7JqBRVkMqM7Eg 作者:张文博 领域驱动设计(Domain Driven Design,DDD)其实并非新理论,大家可以看看 Eric Evans 编著的《领域驱动设计》原稿首版是2003年,距今已十余年时间。与现在的分布式、微服务相比,绝对是即将步入中年的“老家伙”了。 直到近些年微服务理论被提出、被互联网行业广泛使用,人们似乎又重新发现了领域驱动设计的价值。所以看起来也确实是因为微服务,领域驱动设计才迎来了第二春。 不过我发现大家对DDD也存有一些误区,使其渐渐成了一门“高深的玄学”,随之又被大家束之高阁。我本人在过去两年多的时间里,研读过多本DDD相关的经典论著、也请教过一些资深DDDer,并在项目中实践过。 不过在初步学习、实践之后我又带着疑问与自己的思考重新读了一遍相关的著述理论。逐渐领悟到DDD作为一种思想,其实离我们很近。 我把自己的学习过程、思考编写成系列文章,与大家一起探讨学习,希望大家能够有所收获,当然其中不正确的地方也欢迎大家批评指正。 同时,在文章中我也会引用相关的论著或者一些我认为不错的案例素材,权当是我们对这些知识的详细诠释,在这里一并对这些DDD前辈的不倦探索表示感谢。 (DDD相关的经典论著) 一、关于DDD的误区

SpringMVC之ContextLoaderListener

怎甘沉沦 提交于 2020-02-24 15:46:20
Spring MVC 是建立在 IOC 容器基础上的,那么该容器是如何在 Web 环境中被载入并起作用的 ?通常我们需要配置一个监听器(ContextLoaderListener)。 所谓ContextLoaderListener,就是在web部署描述符即web.xml里面经常配置的一个监听器,如下 < listener > < listener - class > org . springframework . web . context . ContextLoaderListener < / listener - class > < / listener > 那么配合它一起使用的,经常是context-param,用来指定Spring要加载的配置文件,比如 < context - param > < param - name > contextConfigLocation < / param - name > < param - value > / WEB - INF / teach - servlet . xml < / param - value > < / context - param > < ! -- Spring MVC -- > < servlet > < servlet - name > teach < / servlet - name > < servlet

自己封装了一个EF的上下文类.,分享一下,顺便求大神指点

江枫思渺然 提交于 2020-02-22 13:54:12
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Entity; using System.Data.Entity.Core.Objects; using System.Data.Entity.Infrastructure; using System.Data.Entity.Migrations; using System.Data.Entity.Validation; using System.Linq; using System.Linq.Expressions; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using EntityFramework.Extensions; using System.Threading.Tasks; //using log4net; //using log4net.Core; namespace _6._0Test { /// <summary> /// 上下文静态实体类 /// </summary> public static class

web.xml可以配置哪些内容

微笑、不失礼 提交于 2020-02-22 11:01:35
web.xm用于配置Web应用的相关信息 如: 监听器(listener)[ @WebListener ] 、过滤器(filter)[ @WebFilter ]、Servlet [ @WebServlet ]、相关参数、会话超时时间、安全验证方式、错误页面等 配置Spring上下文加载监听器加载Spring配置文件并创建IoC容器 < context-param > < param-name > contextConfigLocation </ param-name > < param-value > classpath:applicationContext.xml </ param-value > </ context-param > < listener > < listener-class > org.springframework.web.context.ContextLoaderListener </ listener-class > </ listener > 配置Spring的OpenSessionInView过滤器来解决延迟加载和Hibernate会话关闭的矛盾 < filter > < filter-name > openSessonInView </ filter-name > < filter-class > org.springframework.orm

spring

我怕爱的太早我们不能终老 提交于 2020-02-21 23:53:07
什么是spring? 简单来说 ,spring就是一个轻量级的java开发框架,用来开发企业级应用,让开发者专注于业务,而不是底层的框架。 为什么要用spring? spring的核心概念有两个IOC和AOP。IOC(Inversion of Control)也就是常说的控制反转,它和我们平时编程有啥不一样呢?我们平时编程都是使用new来实例化类或者其他的一些方法。这样有一个坏处,那就是你的应用程序和你使用的类紧紧耦合在了一起,复用起来很不方便。因为要使用你的程序必须要有你实例化的类,而且一旦你使用的类发生了改变,你的整个程序都需要改变。IOC就是为了解决这个问题,使用@Autowired注解像这样: @Autowired SomeObject object; 你就可以使用这个类的实例了,这里的SomeObject一般是一个接口,这样你的应用程序就和实际的类解耦合了,当类发生改变时应用程序不需要做任何改变。那么重点来了spring怎么实现控制反转这一编程思想的? spring容器的实现 spring中IOC的实现是通过BeanFactory这一接口,这个接口代表了一个IOC容器,IOC容器包含了你配置的需要使用的类的实例,你可以使用@Autowired注解或者直接通过getBean方法获取你配置的类的实例。接口的详细代码如下: public interface

C 语言中 setjmp 和 longjmp

柔情痞子 提交于 2020-02-21 08:21:24
在 C 语言中,我们不能使用 goto 语句来跳转到另一个函数中的某个 label 处;但提供了两个函数—— setjmp 和 longjmp 来完成这种类型的分支跳转。后面我们会看到这两个函数在处理异常上面的非常有用。 setjmp 和 longjmp 使用方法 我们都知道要想在一个函数内进行跳转,可以使用 goto 语句(不知怎么该语句在中国学生眼中就是臭名昭著,几乎所有国内教材都一刀切地教大家尽量不要使用它,但在我看来,这根本不是语言的问题,而是使用该语言的人,看看 Linux 内核中遍地是 goto 语句的应用吧!),但如果从一个函数内跳转到另一个函数的某处,goto 是不能完成的,那该如何实现呢? 函数间跳转原理 我们要实现的一个 GOTO 语句(我自己定义的),能实现在函数间进行任意跳转,如下例,在函数 g() 中有条语句 GOTO Label; 可以跳转到 f() 函数的 Label: 标签所指向的位置,那么我们该如何实现呢? void f() { //... Label: //... } void g() { //... GOTO Label; //... } 首先我们要知道,实现这种类型的跳转,和操作系统中任务切换的上下文切换有点类似,我们只需要恢复 Label 标签处函数上下文即可。函数的上下文包括以下内容: 函数栈帧 ,主要是栈帧指针BP和栈顶指针SP

【jQuery】smartMenu右键自定义上下文菜单插件(似web QQ)

喜夏-厌秋 提交于 2020-02-20 05:51:43
一、这是什么样的一个插件 浏览器默认的右键选项有时候并不是我们所需要的,我们希望浏览器的右键选项菜单更智能,可以灵活自定义。比较有代表性的就是web QQ,例如下面截图: QQ邮箱中也是有此功能。 显然这种东西貌似还是蛮强大与实用的,于是我就抽空写了个可以右键自定义上下文菜单的jQuery插件 – smartMenu,直接一行代码绑定,就可以让我们轻松实现页面元素的自定义上下文功能。至于具体如何实用与绑定,就是本文的的主要内容,也即是下文即将介绍的内容。 如果你看到这段文字,说明您正使用RSS阅读或转自《一棵树-博客园》,原文地址: http://www.cnblogs.com/atree/archive/2011/06/30/jQuery-smartMenu-javascript.html 二、插件效果、大小、使用等简介 效果 首先,肯定的,自定义的上下文菜单是右键右键某元素(或直接空白处)出现的,其UI风格我沿用了web QQ的相关样式(企鹅的视觉设计还是很赞的),支持分组以及多级菜单,如下效果截图: 为了使实现原理简单,代码精简,其二级菜单的一些交互细节与我们平时使用的软件的多级菜单是有差异的:例如dreamweaver软件,鼠标从二级菜单上移出的时候,只要不经过一级菜单,整个二级菜单还是显示的;但是,这里的右键菜单,如果鼠标移出二级菜单,无论你是从哪个方向哪个位置移出

性能优化-CPU上下文

泄露秘密 提交于 2020-02-17 19:10:27
CPU上下文:CPU中的寄存器和程序计数器。切换出的CPU上下文,会保存到linux系统内核中。 分为3种:1、进程上下文,2、线程上下文,3、中断上下文(硬件通过触发信号,导致中断处理程序运行)。 进程的运行空间:内核空间、用户空间。 内核空间:具有最高权限,可以直接访问所以资源,包括硬件。 用户空间:只有有限资源,不能访问包括内存在内的硬件只有,必须通过系统调用嵌入到内核中,才可以调用这些资源。 从用户态到内核态,是通过系统调用实现的。比如我们要查看一个文件的内容,需要 1、调用系统调用open打开一个磁盘文件, 2、read读取一个文件内容, 3、write输入到标准输入, 4、close关闭文件。 一、 执行系统调用,也是需要切换CPU上下文的。需要先保存CPU上下文的当前状态,然后加载系统调用的上下文,再然后跳转到内核态,执行内核任务。 系统调用完成,需要保存CPU现在的上下文状态,加载上次新的上下文状态,进入用户态,执行。 一次系统调用,发生了2次CPU上下文切换。 系统调用,一直是在同一个进程中运行的。 二、 进程上下文切换 进程切换只能在内核态中运行。进程切换不只切换虚拟内存、栈、全局变量等用户空间资源,也包括内核堆栈、等内核态资源。 保存上下文和恢复上下文,也不是免费操作,需要内核占用CPU运行,进行切换。 如果进程切换太频繁

ExecutionContext(执行上下文)综述

三世轮回 提交于 2020-02-16 15:50:47
>>返回《C# 并发编程》 1. 简介 2. 同步异步对比 3. 上下文的捕获和恢复 4. Flowing ExecutionContext vs Using SynchronizationContext 5. 如何适用于 async/await 5.1. 实现方式 5.1.1. ExecutionContext 5.1.2. SynchronizationContext 5.2. 执行过程 5.2.1. SynchronizationContext 使用和控制 5.2.2. ExecutionContext 的流动无法控制 6. 两者的关系 7. 说明 7.1. 示例 7.1.1. 运行过程解析 7.1.2. 带来的思考 1. 简介 注意 : 本篇文章讲述的是在 .Net Framework 环境下的分析, 但是我相信这与 .Net Core 设计思想是一致,但在实现上一定优化了很多。 下面开始本次讲述: ExecutionContext 实际上只是线程相关其他上下文的容器。 有些上下文起 辅助 作用 有些上下文对 .Net 执行模型 至关重要 ExecutionContext 与 周围环境 的信息有关,这意味着,代码正在运行时,它存储了与 当前环境 或 “ context ” 有关的数据。 周围环境 : 代码执行处, 可以访问到 的变量、方法、属性等等。 2. 同步异步对比 在