koa对象
1 http服务创建
2 中间件的添加
3 为中间件传入请求,响应参数
4 中间件的执行
例子
|
|
最终输出log
koa-dispatch 中间件执行发起
everyday is new day
1 http服务创建
2 中间件的添加
3 为中间件传入请求,响应参数
4 中间件的执行
|
|
koa-dispatch 中间件执行发起
由文氏图得
P(A∣B)=P(B)P(A⋂B)
又
P(B∣A)=P(B)P(A⋂B)
故
P(A⋂B)=P(A∣B)∗P(B)=P(B∣A)∗P(A)
最终
P(A∣B)=P(B)P(B∣A)∗P(A)
由文氏图得
P(B)=P(B⋂A)+P(B⋂A′)
由条件概率公式得
P(B⋂A)=P(B∣A)∗P(A)
代入得全概率公式
P(B)=P(B∣A)∗P(A)+P(B∣A′)∗P(A′)
代入条件概率公式得到条件概率另一种写法
条件概率
P(A∣B)=P(A)∗P(B)P(B∣A)
P(A):先验概率,在事件B发生之前,事件A发生的概率,与事件B无关。
P(A|B):后验概率,在事件B发生之后,事件A发生的概率。
P(B|A)/P(B):可能性函数,用于调整先验概率,使之接近后验概率。若大于1,先验概率被增强,后验概率变大,反之,先验概率被削弱,后验概率变小。
假定先验概率,垃圾邮件的概率P(S)=50%,正常邮件的概率P(H)=50%
根据条件概率公式,某个词语存在的条件下,垃圾邮件的概率:
P(S∣W)=P(W∣S)∗P(S)+P(W∣H)∗P(H)P(W∣S)∗P(S)
需要求出P(W|S)垃圾邮件中W单词的概率和P(W|H)正常邮件中W单词的概率
一般情况下我们需要根据多个单词的出现判断垃圾邮件
P1 = P(S|W1)
P2 = P(S|W2)
事件 | 单词W1 | 单词W2 | 是否是垃圾邮件 |
---|---|---|---|
垃圾邮件E1 | P1 | P2 | P(S) |
正常邮件E2 | 1-P1 | 1-P2 | 1-P(S) |
假设事件独立
P(E1) = P(S|W1)P(S|W2)P(S)
P(E2) = (1-P(S|W1))(1-P(S|W2))(1-P(S))
P=P(E1)+P(E2)P(E1)=P(S∣W1)P(S∣W2)P(S)+(1−P(S∣W1)(1−P(S∣W2)(1−P(S))))P(S∣W1)P(S∣W2)P(S)
代入P(S)=0.5
P=P(S∣W1)P(S∣W2)+(1−P(S∣W1)(1−P(S∣W2)))P(S∣W1)P(S∣W2)
P=P1P2+(1−P1)(1−P2)P1P2
扩展到所有单词
P=P1P2...Pn+(1−P1)(1−P2)...(1−Pn)P1P2...Pn
高斯Gaussian:特征值分布符合高斯分布
多项式Multinomial:适合文本分类
伯努利Bernoulli:特征取值是布尔型的
名称 | 介绍 | 链接 |
---|---|---|
logojoy | 使用遗传算法生成logo | https://www.logojoy.com/ |
PaintsChainer | 漫画线稿自动上色 | https://github.com/pfnet/PaintsChainer |
arkie | 生成设计海报 | http://www.arkie.cn/ |
本文koa-router版本是7.2.0
路由定义:根据请求url路径,通过判断或正则匹配返回对应的页面。
|
|
|
|
|
|
|
|
|
|
Router构造函数
Layer构造函数
可以看出layer存储匹配规则等
分两层,Router遍历所有layer,返回匹配的matched对象
Layer层通过正则匹配路径
Router通过use()将methods方法与Router联系起来app.use(router.routes()).use(router.allowedMethods());
router.routes()返回一个中间件,用于对请求发起路由匹配,把一些router参数加入ctx对象,执行router.routes(),返回的是一个dispatch(ctx, next)方法
执行router.allowedMethods(),返回allowedMethods(ctx, next)方法,判断请求的method是否被允许
app.use(router.routes()).use(router.allowedMethods());
本文koa版本是2.2.0
下面是一个简单的示例:
当请求http://localhost:3000/时,页面返回'Hello World’
命令行里面顺序打印日志:’x-response-time start’ –> ‘logger start’ –> ‘hello world’ –> ‘logger end’ –> ‘x-response-time end’
从请求到响应类似下图
创建Koa的app对象,Application继承Emitter对象,代码结构如下
koa的中间件是很重要,使用app.use()添加中间件
app.listen()监听端口,listen是createServer()的封装
当服务接收到http请求时,触发callback函数,
compose返回一个用于执行中间件的函数,在callback()函数执行fn(ctx),从dispatch(0)开始,执行第一个中间件函数,然后递归执行dispatch(i),执行中间件函数,直到执行完所有中间件函数
context上下文用于管理请求,响应
|
|
分三种情况string,buffer,stream