上下文

Spring的DI和AOP

☆樱花仙子☆ 提交于 2020-01-12 23:19:26
Spring 为了降低Java开发的复杂性,Spring采取了以下4种关键策略: * 基于POJO的轻量级和最小入侵性编程; * 通过依赖注入和面向接口实现松耦合; * 基于切面和惯例进行声明式编程; * 通过切面和模板减少样板式代码; 几乎Spring所做的任何事情都可以追溯到上面一条或者多条策略。 DI: 控制反转(Inversion of Control,英文缩写为IoC)是框架的重要特征,并非 面向对象编程 的专用术语。它与依赖注入(Dependency Injection,简称 DI )和依赖查找(Dependency Lookup)并没有关系。如设计模式中的模板方法模式就是控制反转的一种。 控制反转即IoC (Inversion of Control),它把传统上由程序代码直接操控的对象的调用权交给容器,通过容器来实现对象组件的装配和管理。所谓的"控制反转"概念就是对组件对象控制权的转移,从程序代码本身转移到了外部容器。 IoC是一个很大的概念,可以用不同的方式来实现。其主要实现方式有两种:<1>依赖查找(Dependency Lookup):容器提供回调接口和上下文环境给组件。EJB和Apache Avalon都使用这种方式。<2>依赖注入(Dependency Injection):组件不做定位查询,只提供普通的Java方法让容器去决定依赖关系

常规流之块级格式化上下文(Block Formatting Contexts)

∥☆過路亽.° 提交于 2020-01-12 18:50:17
  在css2.1中,常规流包括块框(block boxes)的块格式化(block formatting),行内框(inline boxes)的行内格式化(inline formatting),块级框(block-level-boxes)或行内级框(inline-level-boxes)的相对定位。常规流中的框属于一个格式化上下文, 可能是块或者是行内,但不能同时都是。 块级 框参与 块级格式化上下文, 行内级框 参与 行内级格式化 上下文。今天我们先来说说块级格式化上下文,也就是我们常说的BFC。 一.形成块级格式化上下文 绝对定位元素(fixed其实是absolute的一个子集) display为inline-block,table-cell,table-caption,flex,inline-flex(这里有一点要注意的,display-table本身不会形成BFC,但是它会产生匿名框,其中包含的dispaly:table-cell元素会形成BFC) overflow不为visible 根元素 float属性不为none   这里要说明的是这些是形成块格式化上下文,而不是说是参与块级格式化上下文,这两个概念很容易弄混,大家可以仔细体会下。块格式化上下文是一个独立的渲染区域,而且只会有块级框(block-level box)来参与,它规定内部的块级框如何布局

python 上下文管理协议

浪尽此生 提交于 2020-01-12 15:40:55
class Foo: def __init__(self,name): self.name = name def __enter__(self): print('执行enter') return self def __exit__(self, exc_type, exc_val, exc_tb): print('执行exit') print(exc_tb) #name print(exc_type) print(exc_val) #Traceback return True #返回TURE后,涵盖了前面三个 with Foo('a.txt') as f: print(f) print(abcdefg) print(f.name) print('00000000000000000000') =====>>> 执行enter <__main__.Foo object at 0x00BED4B0> 执行exit <traceback object at 0x00BF6AF8> <class 'NameError'> name 'abcdefg' is not defined 00000000000000000000 用途或者说好处: 1.使用with语句的目的就是把代码块放入with中执行,with结束后,自动完成清理工作,无须手动干预 2.在需要管理一些资源比如文件

javascript-apply-call-bind

自闭症网瘾萝莉.ら 提交于 2020-01-12 03:22:18
在 javascript 中,call 和 apply 都是为了改变某个函数运行时的上下文(context)而存在的,换句话说,就是为了改变函数体内部 this 的指向。 JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念。 但是如果我们有一个对象banana = {color : "yellow"} ,我们不想对它重新定义 say 方法,那么我们可以通过 call 或 apply 用 apple 的 say 方法: 一、apply和call区别? call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。 二、bind() 来源: https://www.cnblogs.com/babyfacer/p/4616828.html

SpringBootTest 测试工具

家住魔仙堡 提交于 2020-01-11 04:58:50
以下内容,翻译自官方文档,并结合了学习过程的demo。 Spring Boot提供了许多实用程序和注解,帮助测试应用程序。测试支持由两个模块提供: spring-boot-test 包含核心项, spring-boot-test-autoconfigure 支持测试的自动配置。 大多数开发人员使用 spring-boot-starter-test ,它同时导入 SpringBoot 测试模块以及JUnit Jupiter、AssertJ、Hamcrest和许多其他有用的库。 此文使用当前最新稳定版本: SpringBoot 2.2.2.RELEASE 此 starter 还带来了 vintage 引擎,因此可以同时运行JUnit 4和JUnit 5测试。如果已经将测试迁移到JUnit5,那么应该排除JUnit4支持,如下例所示: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <exclusions> <exclusion> <!-- 此模块兼容junit4 和 junit 5,此示例直接使用 junit5 --> <groupId>org.junit.vintage</groupId> <artifactId

spring 启动过程

扶醉桌前 提交于 2020-01-11 01:48:17
首先,对于一个web应用,其部署在web容器中,web容器提供其一个全局的上下文环境,这个上下文就是ServletContext,其为后面的spring IoC容器提供宿主环境; 其次,在web.xml中会提供有contextLoaderListener。在web容器启动时,会触发容器初始化事件,此时contextLoaderListener会监听到这个事件,其contextInitialized方法会被调用,在这个方法中,spring会初始化一个启动上下文,这个上下文被称为根上下文,即WebApplicationContext,这是一个接口类,确切的说,其实际的实现类是XmlWebApplicationContext。这个就是spring的IoC容器,其对应的Bean定义的配置由web.xml中的context-param标签指定。在这个IoC容器初始化完毕后,spring以WebApplicationContext.ROOT WEB APPLICATION CONTEXT ATTRIBUTE为属性Key,将其存储到ServletContext中,便于获取; 再次,contextLoaderListener监听器初始化完毕后,开始初始化web.xml中配置的Servlet,这个servlet可以配置多个,以最常见的DispatcherServlet为例

4.Nginx基础命令汇总

天涯浪子 提交于 2020-01-10 22:00:44
基本命令 要启动 nginx,只需输入: [sudo] nginx 当你的 nginx 实例运行时,你可以通过发送相应的信号来管理它: [sudo] nginx -s signal 可用的信号: stop – 快速关闭 quit – 优雅关闭 (等待 worker 线程完成处理) reload – 重载配置文件 reopen – 重新打开日志文件 指令和上下文 nginx 的配置文件,默认的位置包括: /etc/nginx/nginx.conf, /usr/local/etc/nginx/nginx.conf,或 /usr/local/nginx/conf/nginx.conf 配置文件的由下面的部分构成: 指令 – 可选项,包含名称和参数,以分号结尾 gzip on; 上下文 – 分块,你可以声明指令 – 类似于编程语言中的作用域 worker_processes 2; # 全局上下文指令 http { # http 上下文 gzip on; # http 上下文中的指令 server { # server 上下文 listen 80; # server 上下文中的指令 } } 指令类型 在多个上下文中使用相同的指令时,必须要小心,因为继承模型不同时有着不同的指令。有三种类型的指令,每种都有自己的继承模型。 普通指令 在每个上下文仅有唯一值。而且,它只能在当前上下文中定义一次

案例分析:设计模式与代码的结构特性

折月煮酒 提交于 2020-01-10 19:34:05
一、Cocoa设计模式   Cocoa环境的许多架构和机制都能够有效地使用设计模式:抽象设计可以解决特定环境中的重复问题。 本文描述了Cocoa中设计模式的主要实现,主要关注模型(Model) - 视图(View) - 控制器(Controller)和对象建模。 本章的主要目的是让您更深入地了解Cocoa的设计模式,并鼓励您在自己的软件项目中利用这些模式。 二、什么是设计模式?      设计模式是设计的模板,它可以在特定的上下文中解决一般的、重复出现的问题。它是一种抽象工具,在建筑、工程和软件开发等领域都很有用。下面的部分总结了设计模式是什么,解释了为什么它们对于面向对象设计很重要,并讨论了一个示例设计模式。 三、Cocoa如何改变设计模式      可以在OS X和iOS版本中找到适用于Cocoa的设计模式。 基于模式的机制和体系结构在Cocoa框架和Objective-C 的 runtime 和语言中很常见。Cocoa经常把自己独特的旋律放在一个模式上,因为它的设计受语言能力或现有体系结构等因素的影响。   本节包含大多数设计模式的摘要,这些设计模式是在“ 设计模式:可重用面向对象软件的元素”中编目的。 每个部分不仅总结了模式,还讨论了Cocoa的实现。 只列出Cocoa实现的模式,以下各节中的模式描述都与特定的Cocoa上下文有关。Cocoa设计模式的实现有多种形式。

python学习之面向对象高级特性和魔术方法

随声附和 提交于 2020-01-10 18:06:24
01_property商品应用.py 分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。 类属性应用需求: 对于京东商城中显示电脑主机的列表页面,每次请求不可能把数据库 中的所有内容都显示到页面上,而是通过分页的功能局部显示,所以在向数据库中请求 数据时就要显示的指定获取从第start条到第end条的所有数据 这个分页的功能包括: • 根据用户请求的当前页和总数据条数计算出 start 和 end • 根据start 和 end 去数据库中请求数据 • 是否有上一页has_prev、下一页has_next • 上一页prev、下一页next • 总页数pages, 数据总条数total、当前页信息items """ class Pagintor(object): """实现商品分页的类""" def __init__(self, objects_list, page=1, per_page=5): """ :param objects_list: 商品列表 :param page: 当前需要显示的页码信息 :param per_page: 每页显示的数据个数 """ self.objects_list = objects_list self.page = page self.per_page = per_page @property def

[草稿] Managed COM Apartment - ExecutionContext [1]

爷,独闯天下 提交于 2020-01-10 10:59:21
原文: http://www.blogcn.com/User8/flier_lu/blog/27498923.html .NET 2.0 在底层实现上的一个非常重要的改进,是在引入了 ExecutionContext 的概念。从而引入了一个类似 COM 中套间 (Apartment) 概念的一个逻辑上的执行环境。这在很大程度上改变了 .NET 1.x 中对线程以及其执行环境的管理机制,并进而可以实现非常灵活的控制机制。因为此概念涉及到的方面非常庞杂,且现阶段可参考的资料非常少,笔者希望能通过一个系列文章,对其进行一个较为全面的分析。 首先,ExecutionContext 是一个容器,MSDN 如是说: The ExecutionContext class provides a single container for all information relevant to a logical thread of execution. This includes security context, call context, synchronization context, localization context, and transaction context. 也就是说在 ExecutionContext 中,包括了一个逻辑线程执行代码所需要的各种上下文信息