一.概述     发布:发布者将MSG post到某一特定通道上,channel将信息缓存 在说明发布流程之前有必要说明下channel和msg的数据结构. 二.数据结构 2.1 MSG     发布时,模块先将消息转化为ngx_http_push_stream_msg_t的数据结构进行存储. // message queue typedef struct { ngx_queue_t                     queue; // this MUST be first time_t …
一.概述 push stream模块允许三种模式的订阅者: longpolling:每收到服务端响应数据即断开连接然后迅速重连,连接耗时可以忽略 stream:与服务端保持长连接,持续不断的请求->响应 polling:以轮询的方式向等待服务端响应(只接受一次数据)——(个人理解) 本文重点说明前两种. 二.流程 上一篇博文中捎带提到了订阅者的销毁时间——发送完MSG后(ngx_http_push_stream_send_response_finalize),本文将详细说明其讲解其诞生过程. 从…
本文重点介绍push stream模块的构成,至于nginx如何启动.维护该模块不会详细阐述,以后有时间会做详细阐述. 一.模块定义 1.1.  模块配置 通用nginx模块的配置struct有三种,分别是main,server和location.本模块会涉及到main和location两个域的配置.名称分别为:ngx_http_push_stream_main_conf_t和ngx_http_push_stream_loc_conf_t. 具体模块配置请参考nginx官网:http://wik…
nginx健康检查模块 本文所说的nginx健康检查模块是指nginx_upstream_check_module模块.nginx_upstream_check_module模块是Taobao定制的用于健康检查的模块. 其主要作用是根据配置,对upstream中的每个server进行定期健康检查,在其超时或连续多次失败后,将其置为down状态. 其基本用法如下: upstream cluster { # simple round-robin server 192.168.0.1:80; serv…
本文主要是个人学习mybatis缓存的学习笔记,主要有以下几个知识点 1.一级缓存配置信息 2.一级缓存源码学习笔记 3.二级缓存配置信息 4.二级缓存源码 5.一级缓存.二级缓存总结 1.一级缓存配置: 一级缓存是SqlSession级别的,同一个sqlSession执行多次相同的查询语句时,第二次会从缓存中获取数据,不查询数据库:一级缓存是无法关闭的,默认是SESSION级别 mybatis一级缓存默认是开启的,一级缓存有两个配置值,SESSION级别和STATEMENT级别,这两个级别的区…
Vue源码学习二 是对Vue的原型对象的包装,最后从Vue的出生文件导出了 Vue这个构造函数 来到 src/core/index.js 代码是: import Vue from './instance/index' import { initGlobalAPI } from './global-api/index' import { isServerRendering } from 'core/shared/env' import { FunctionalRenderContext } fro…
0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便直接在项目中安装使用. 0x01.Github Pages发布 进入项目的 Github repo,点击右上角的 Settings 选项. 点击左侧菜单的 Pages 选项,右侧显示项目 Github Pages 初始配置.source 配置项值为 None 说明此功能尚未开启. 点击 source…
1.定时器         采用nginx自身的定时器管理机制,具体细节待学习过nginx源码后加以补充 2.channel的生成周期 (0).初始(诞生)         发布.订阅均有可能产生channel 发布:向channel以post的形式发布消息时,如果不存在channel则产生 订阅:模块配置允许订阅产生channel的情况下,如果向一个不存在的channel上订阅时则产生 channel自诞生之日期就是在无奈的等死...只要channel被使用一次(发布.订阅)则其寿命被延长一次…
在spring中,是支持单实例bean的循环引用(循环依赖)的,循环依赖,简单而言,就是A类中注入了B类,B类中注入了A类,首先贴出我的代码示例 @Component public class AddressVO { @Autowired private UserVO userVO; } @Component public class UserVO { @Autowired private AddressVO addressVO; public void test(){ System.out.p…
一.环境准备 在文件读取的时候,第9步我们发现spring会根据标签的namespace来选择读取方式,联想spring里提供的各种标签,比如<aop:xxx>等应该会有不同的读取和解析方式,这一章我们来找一个其他文件,了解下spring自定义标签和配置的读取流程. 手边正好有一套dubbo的源码,因此为了区别与spring的原生读取,就使用它来进行分析. 首先spring的配置文件中我们需要加上标签的namespace <?xml version="1.0" enc…