Task 的实现在 Celery 中你会发现有两处,一处位于 celery/app/task.py,这是第一个:第二个位于 celery/task/base.py 中,这是第二个.他们之间是有关系的,你可以认为第一个是对外暴露的接口,而第二个是具体的实现!所以,我们由简入繁,先来看看对外的接口: 其实这就是个我们声明 Task 的对象,例如我们使用这么一段代码:  我们可以看看 add 对象是啥: In [1]: add Out[1]: <@task: worker.add of tasks:…
Mybatis源码解析(三) -- Mapper代理类的生成   在本系列第一篇文章已经讲述过在Mybatis-Spring项目中,是通过 MapperFactoryBean 的 getObject()方法来获取到Mapper的代理类并注入到Spring容器中的.在学习本章之前我们先提出以下几点问题: 1. Mapper接口是如何被加载 到 Configuration 中的? 2. Mapper代理类是如何生成的? 3. Mapper代理类是如何实现接口方法的?    本章内容就是围绕着上面三个…
晚上躺在床上,继续完成对Backbone.Collection的源码解析. 首先讲讲它用来干嘛? Backbone.Collection的实例表示一个集合,是很多model组成的,如果用model比喻成数据表中的row,那么collection就是那张数据表. 在mvc单页面程序里面,我们不可能只用一条一条的数据,我们更需要多条数据的处理,并且能够统一的管理这多条数据,无论是网络请求还是前端交互. 就好比前端有一个datagrid,很多row的数据,可以抽象成一个collection,row和c…
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状态以及Signal的基本实现.当然本篇博客所解析的源码会用到上篇博客介绍的Bag容器.本篇博客我们先通过一个示例来看一下Signal是如何工作的,具体说来就是Signal是如何与Observer关联的,来聊一下Observer是如何观察和Signal发出的信号的. 之前我们也详细的聊过Observer和Eve…
上篇博客我们详细的聊了ReactiveSwift源码中的Bag容器,详情请参见<ReactiveSwift源码解析之Bag容器>.本篇博客我们就来聊一下信号量,也就是Signal的的几种状态以及Signal的基本实现.当然本篇博客所解析的源码会用到上篇博客介绍的Bag容器.本篇博客我们先通过一个示例来看一下Signal是如何工作的,具体说来就是Signal是如何与Observer关联的,来聊一下Observer是如何观察和Signal发出的信号的. 之前我们也详细的聊过Observer和Eve…
1.refs三种使用用法 1.字符串 1.1 dom节点上使用 获取真实的dom节点 //使用步骤: 1. <input ref="stringRef" /> 2. this.refs.stringRef //值:<input /> 1.2 类组件上使用 获取引用类组件的实例 //使用步骤 1. <Child ref="compStringRef" /> 2.this.refs.compStringRef //值:{props:{…
Collection模块式是对分散在项目中model的收集,他可以存储所有的model,构成一个集合,并且通过自身的方法统一操作model.Collection模块包装着若干对象,对象本身不具有一些方法,而它可以应用集合自身方法进行管理.它自身定义了一些方法,同时继承依赖库的一些方法,使得它能够对自身存储的model进行统一操作管理.这篇文章将对collection进行分析,源码写在下面: //构造函数 e.Collection = function(a, b) { b || (b = {});…
Model(模型)模块在bk框架中的作用主要是存储处理数据,它对外和对内都有很多操作数据的接口和方法.它与视图(Views)模块精密联系着,通过set函数改变数据结构从而改变视图界面的变化.下面我们来看一下它的构造函数: //传入两个参数,a需要保存的数据,b是该模型所属的colltion,如果没有可以为空 e.Model = function(a, b) { var c; a || (a = {}); //defaults 是默认的属性,在extend该模型的时候可以设置一些默认必选的属性.…
Backbone是一个当下比较流行的MVC框架.它主要分为以下几个模块: Events, View, Model, Collection, History, Router等几大模块.它强制依赖underscore,jq或者zepto库.通过它,我们可以轻松地来创建单页面应用或者响应式布局界面.它将数据层和界面层抽离,并且使每个View都在自己内部维护自己的业务逻辑,我们更多地去关注单个界面的自身逻辑.以每个模块为例子我们接下来对backbone的设计模式和源代码进行简单的分析. Events事件…
View视图故名思义,它控制的是界面.我们可以把一个大的网页分成很多部分的视图,按照backbone的架构,每一个视图对应都是一个对象,我们可以通过元素的钩子(id或者class或者其他选择器)把它们封装到View对象中集中操作.由于传统项目中界面视图和数据不分层,使得各种操作数据逻辑和视图逻辑的代码混杂在一起,提高了代码的耦合度.backbone就是将这种情况作了很好的处理.下面我们通过一个简单的例子一步步地讲明白它的具体设计思路: 首先我们编写基础的html: <div id="m&q…