Flask框架(五) —— session源码分析 目录 session源码分析 1.请求来了,执行__call__方法 2.__call__方法 3.调用__call__方法 3.1.ctx = self.request_context(environ) --- 得到空的session 3.2.ctx.push() --- 调用open_session方法 3.3.self.full_dispatch_request() --- 路由分发,执行函数,写入session session源码分析…
Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_request 3.before_first_request 4.teardown_request 5.errorhandler 6.template_global 7.template_filter 二.中间件 三.蓝图(blueprint) 1.不使用蓝图,自己分文件 2.使用蓝图之中小型系统 3.使用…
DotNetty网络通信框架学习之源码分析 有关DotNetty框架,网上的详细资料不是很多,有不多的几个博友做了简单的介绍,也没有做深入的探究,我也根据源码中提供的demo做一下记录,方便后期查阅. github地址:https://github.com/Azure/DotNetty 源码的src文件夹中是框架的dll项目,包含以下的内容: 1.DotNetty.Buffers 缓冲区:传输数据时一般都会使用一个缓冲区包装数据,DotNetty衍生于Java的Netty,定义了自己的Buffe…
1 智能生活项目需求 看一个具体的需求 1) 我们买了一套智能家电,有照明灯.风扇.冰箱.洗衣机,我们只要在手机上安装 app 就可以控制对这些家电工作. 2) 这些智能家电来自不同的厂家,我们不想针对每一种家电都安装一个 App,分别控制,我们希望只要一个 app 就可以控制全部智能家电. 3) 要实现一个 app 控制所有智能家电的需要,则每个智能家电厂家都要提供一个统一的接口给 app 调用,这时 就可以考虑使用命令模式. 4) 命令模式可将"动作的请求者"从"动作的执…
1 CBV的源码分析 #视图 class login (View): pass #路由 url(r'^books/$', views.login.as_view()) #阅读源码: #左侧工程栏--->设置图标-->点击--->show members(能看到py文件,pu下的类,类下的方法) -Class Base View(基于类的视图) -Function Base View(基于函数的视图) -def as_view 类方法 :返回view -def view:as_view的内…
简介 由于最近工作比较忙,前前后后花了两个月的时间把TBSchedule的源码翻了个底朝天.关于TBSchedule的使用,网上也有很多参考资料,这里不做过多的阐述.本文着重介绍TBSchedule的运行机制,架构设计以及优化建议.通过学习别人的经验,来提高自己的技术能力,感受阿里人的智慧,也向阿里空玄,阿里玄难为开源贡献致敬. zookeeper依赖 TBSchedule依赖于ZK存储调度数据,在使用中充当着nosql的角色,zk的watch机制只用于zk重连,提高可靠性.下图是zk与tbsc…
首先我们导入django.contrib.sessions.middleware这个中间件,查看里面的Session源码 from django.contrib.sessions.middleware import SessionMiddleware 我们可以看到一个类,可以把他分为3部分: class SessionMiddleware(MiddlewareMixin): def __init__(self, get_response=None): ... def process_reques…
1 四则运算问题 通过解释器模式来实现四则运算,如计算 a+b-c 的值,具体要求 1) 先输入表达式的形式,比如 a+b+c-d+e,  要求表达式的字母不能重复 2) 在分别输入 a ,b, c, d, e 的值 3) 最后求出结果:如图 2 传统方案解决四则运算问题分析 1) 编写一个方法,接收表达式的形式,然后根据用户输入的数值进行解析,得到结果 2) 问题分析:如果加入新的运算符,比如 * / ( 等等,不利于扩展,另外让一个方法来解析会造成程序结构混乱, 不够清晰. 3) 解决方案:…
Nginx源码分析&内存模块 今天总结了下C语言的内存分配问题,那么就看看Nginx的内存分配相关模型的具体实现.还有内存对齐的内容~~不懂的可以看看~~ src/os/unix/Ngx_alloc.h&Ngx_alloc.c 先上源码: /* * Copyright (C) Igor Sysoev * Copyright (C) Nginx, Inc. */ #ifndef _NGX_ALLOC_H_INCLUDED_ #define _NGX_ALLOC_H_INCLUDED_ #in…
[时间:2017-01] [状态:Open] [关键词:android,nuplayer,开源播放器,播放框架,GenericSource] 0 导读 GenericSource是NuPlayer::Source的一个子类,主要功能是负责本地多媒体文件的读取解析,功能类似FFmpeg的libavformt. 通常GenericSource有以下功能: 多媒体文件格式探测 多媒体文件解析 本文是我的NuPlayer播放框架的第五篇. 1 GenericSource对外接口及主要成员 NuPlaye…
[时间:2016-11] [状态:Open] [关键词:android,nuplayer,开源播放器,播放框架,渲染器,render] 0 导读 之前我们分析了NuPlayer的实现代码,本文将重点聚焦于其中的一部分--渲染器(Renderer). 从功能安排来说,Renderer的主要功能有: 音视频原始数据缓存操作 音频播放(到声卡) 视频显示(到显卡) 音视频同步 其他辅助播放器控制的操作 其他获取渲染状态/属性的接口 接下来主要从Renderer的对外接口和实现说明下其中的处理逻辑. 本…
[时间:2016-10] [状态:Open] [关键词:android,nuplayer,开源播放器,播放框架] 0 引言 差不多一个月了,继续分析AOSP的播放框架的源码.这次我们需要深入分析的是NuPlayer类,相比于NuPlayerDriver的接口功能,NuPlayer继承自AHandler类,是AOSP播放框架中连接Source.Decoder.Render的纽带. 我希望读完本文大家可以对NuPlayer的源码结构有一定了解. 本文是我的NuPlayer播放框架的第三篇. 1 主要…
概述   Android 在应用框架层为开发者提供了 SQLite 相关操作接口,其归属于android.database.sqlite包底下,主要包含SQLiteProgram, SQLiteDatabase, SQLiteSession, SQLiteConnectionPool和SQLiteConnection等一些类.相比较 SQLite 提供的轻量级接口,应用框架层为开发者封装的 SQLite 抽象层显得更为复杂,但也为开发者屏蔽了更多细节,减小 SQLite 使用难度.   在设计上…
磨刀不误砍柴工,咱先把react-redux里的工具函数分析一下: 源码点这里  shallowEqual.js export default function shallowEqual(objA, objB) { if (objA === objB) { return true } const keysA = Object.keys(objA) const keysB = Object.keys(objB) if (keysA.length !== keysB.length) { return…
前言 这篇文章我们开始讲 laravel 框架中的门面 Facade,什么是门面呢?官方文档: Facades(读音:/fəˈsäd/ )为应用程序的服务容器中可用的类提供了一个「静态」接口.Laravel 自带了很多 facades ,几乎可以用来访问到 Laravel 中所有的服务.Laravel facades 实际上是服务容器中那些底层类的「静态代理」,相比于传统的静态方法, facades 在提供了简洁且丰富的语法同时,还带来了更好的可测试性和扩展性. 什么意思呢?首先,我们要知道 l…
目录 示例代码 底层代码 第1步(初始化集合) 第2步(往集合中添加一个元素) 第3步(往集合中添加第二个元素) 第4步(往集合中添加第三个元素) LinkedList添加元素流程示意图 第5步(删除集合中第一个元素) 第6步(根据索引来删除集合中的元素) 第7步(根据对象内容来删除集合中的元素) 第8步(根据索引位置往集合中添加元素) 总结: LinkedList继承自List,具备有序性 LinkedList继承自Deque,具备链表关联性 LinkedList集合进行增删改查操作底层实际是…
C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Threading.Tasks; namespace…
ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg提供的解码器和SDL库进行视频播放.本文基于FFmpeg工程4.1版本进行分析,其中ffplay源码清单如下: https://github.com/FFmpeg/FFmpeg/blob/n4.1/fftools/ffplay.c 在尝试分析源码前,可先阅读如下参考文章作为铺垫: [1]. 雷霄骅,视音频编解码技术零基础学习方法 [2]. 视频编解码基础概念 [3]. 色彩空间与像素格式 [4]. 音频参数解析 [5]. FFmpe…
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10311376.html ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg提供的解码器和SDL库进行视频播放.本文基于FFmpeg工程4.1版本进行分析,其中ffplay源码清单如下: https://github.com/FFmpeg/FFmpeg/blob/n4.1/fftools/ffplay.c 在尝试分析源码前,可先阅读如下参考文章作为铺垫: [1]. 雷霄骅,…
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10312713.html ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg提供的解码器和SDL库进行视频播放.本文基于FFmpeg工程4.1版本进行分析,其中ffplay源码清单如下: https://github.com/FFmpeg/FFmpeg/blob/n4.1/fftools/ffplay.c 在尝试分析源码前,可先阅读如下参考文章作为铺垫: [1]. 雷霄骅,…
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10316225.html ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg提供的解码器和SDL库进行视频播放.本文基于FFmpeg工程4.1版本进行分析,其中ffplay源码清单如下: https://github.com/FFmpeg/FFmpeg/blob/n4.1/fftools/ffplay.c 在尝试分析源码前,可先阅读如下参考文章作为铺垫: [1]. 雷霄骅,…
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10307089.html ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg提供的解码器和SDL库进行视频播放.本文基于FFmpeg工程4.1版本进行分析,其中ffplay源码清单如下: https://github.com/FFmpeg/FFmpeg/blob/n4.1/fftools/ffplay.c 在尝试分析源码前,可先阅读如下参考文章作为铺垫: [1]. 雷霄骅,…
ffplay是FFmpeg工程自带的简单播放器,使用FFmpeg提供的解码器和SDL库进行视频播放.本文基于FFmpeg工程4.1版本进行分析,其中ffplay源码清单如下: https://github.com/FFmpeg/FFmpeg/blob/n4.1/fftools/ffplay.c 在尝试分析源码前,可先阅读如下参考文章作为铺垫: [1]. 雷霄骅,视音频编解码技术零基础学习方法 [2]. 视频编解码基础概念 [3]. 色彩空间与像素格式 [4]. 音频参数解析 [5]. FFmpe…
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10301215.html ffplay是一个很简单的播放器,但是初次接触仍会感到概念和细节相当繁多,分析并不容易.深入理解一项技术需要足够的时间和大量的实践,由浅入深逐步迭代,没有时间就成了最大难题.本次分析过程断断续续持续了挺久,先是边读代码边加注释,后面才整理了笔记,再加上理解浅薄很难精简语言,因此行文比较啰嗦.笔记记录仓促,错误难免,欢迎指正交流.后续若有时间继续研究,将持续修正错…
AbstractQueuedSynchronizer源码分析 前提 AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)是并发编程大师Doug Lea创作的用来构建锁或者其他同步组件(信号量.事件等)的基础框架类.在J2SE 1.5的java.util.concurrent包(下称JUC包)中,大部分的同步器(例如锁,屏障等等)都是基于AbstractQueuedSynchronizer类(下称AQS类)这个简单的框架(说实话,作为…
1 豆浆制作问题 编写制作豆浆的程序,说明如下: 1) 制作豆浆的流程 选材--->添加配料--->浸泡--->放到豆浆机打碎 2) 通过添加不同的配料,可以制作出不同口味的豆浆 3) 选材.浸泡和放到豆浆机打碎这几个步骤对于制作每种口味的豆浆都是一样的 4) 请使用  模板方法模式  完成 (说明:因为模板方法模式,比较简单,很容易就想到这个方案,因此就直接使用, 不再使用传统的方案来引出模板方法模式 ) 2 模板方法模式基本介绍 基本介绍 1) 模板方法模式(Template Met…
1 学校 OA 系统的采购审批项目:需求是 采购员采购教学器材 1) 如果金额 小于等于 5000,  由教学主任审批 (0<=x<=5000) 2) 如果金额 小于等于 10000,  由院长审批 (5000<x<=10000) 3) 如果金额 小于等于 30000,  由副校长审批 (10000<x<=30000) 4) 如果金额 超过 30000 以上,有校长审批 ( 30000<x) 请设计程序完成采购审批项目 2 传统方案解决 OA 系统审批,传统的设计…
Flask框架 (四)—— 请求上下文源码分析.g对象.第三方插件(flask_session.flask_script.wtforms).信号 目录 请求上下文源码分析.g对象.第三方插件(flask_session.flask_script.wtforms).信号 一.请求上下文源码分析 二.g对象 1.什么是g对象 2.g对象和session的区别 三.flask-session 1.作用 2.安装 3.使用 四.flask-script 1.什么是flask_script 2.安装 3.…
一.前言 当我们需要把插入的元素进行排序的时候,就是时候考虑TreeMap了,从名字上来看,TreeMap肯定是和树是脱不了干系的,它是一个排序了的Map,下面我们来着重分析其源码,理解其底层如何实现排序功能.下面,开始分析. 二.TreeMap示例 import java.util.TreeMap; import java.util.Map; public class TreeMapTest { public static void main(String[] args) { Map<Stri…
HashMap源码分析 HashMap的底层实现是面试中问到最多的,其原理也更加复杂,涉及的知识也越多,在项目中的使用也最多.因此清晰分析出其底层源码对于深刻理解其实现有重要的意义,jdk1.8之后其设计与实现也有所改变. 在Java集合类中最常用的除了ArrayList外,就是HashMap了.Java最基本的数据结构有数组和链表.数组的特点是空间连续(大小固定).寻址迅速,但是插入和删除时需要移动元素,所以查询快,增加删除慢.链表恰好相反,可动态增加或减少空间以适应新增和删除元素,但查找时只…