首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

webpy 源码分析概览

今天花了点时间把看了web.py的代码分析了一遍,稍稍的总结成一个图片,供有兴趣的人参考。...源码分析开始 不管目的是什么,反正最后还是把关键代码通读了下,整理成下面这个,不是很详细,但对于想分析的人来说应该会有些帮助: .. image:: http://the5fireblog.b0.upaiyun.com...顺着再往下看 CherryPyWSGIServer 是继承自HTTPServer的。...然后是把上面的 wsgi 赋给属性 wsgi_app ,还有就是声明网关 gateway 这个用来把应用生成的数据最终返回给客户端的组件。...在这个方法中会生成一个HTTPRequest对象,做完一些验证和数据转换之后(根据HTTP协议,把数据放到对象中),会调用这个HTTPRequest实例的respond方法,这个respond方法中,关键的一句是

73330
您找到你想要的搜索结果了吗?
是的
没有找到

AutoLine源码分析之前端js代码分析

源码地址 github地址: https://github.com/small99/AutoLine 码 云 地 址:https://gitee.com/lym51/AutoLine 先看下AutoLine...开源平台所有前端代码的目录结构,如下图所示: 下面我们重点看看HTML模板和前端业务逻辑js集各文件的功能说明,直接上图了: 下面我们看看前端页面逻辑js集说明,上图说话: 下面我们以产品管理来看看js...代码的编程逻辑 一个js对应一个html模板和一个python api模块 即: html模板负责UI显示 - js负责前端逻辑 -python api负责后端逻辑 小结,通过上面产品的js代码你会发现其他功能模块...编辑XX 删除XX 四个部分构成,每2-4部分在后端api对应模块中对应着__create, __edit, __delete函数处理(如果忘记这里了,请看前面的文章),是不是发现autoline的源码很简单

75310

express的router.js源码分析(routerindex.js

router.js的代码其实是router/index.js,里面的代码是express的路由的核心和入口。下面我们看一下重要的代码。...this.stack.push(layer); return route;//返回该路由对象,让用户配置相关的路径和回调 }; 1.从use和route函数的代码中我们知道,这两个函数存储路由数据的方式是不一样的...2.handle函数是处理路由的入口,也是核心的代码,其中的逻辑比较多,我们主要关注一下next函数和里面的while逻辑,while的逻辑主要是在路由的二维数组中(见route分析那章)逐行查找匹配的路由...3.通过1的分析,我们知道,转到layer层的时候,可能只是执行一个fn,也可能是执行route对象的dispatch,不过对于router对象来说,这些都是透明的,执行完layer层后,layer层的函数会通过

1.1K20

leveldb源码分析--写数据

原理 回想一下LSM数据写入的流程: 写磁盘的WAL日志文件; 更新内存中的MemTable数据; 写数据调用 // 写数据对外接口 Status DB::Put(const WriteOptions&...考虑到写WAL涉及磁盘的写入操作,耗时较久,会影响数据写入的并发性能。...leveldb针对此问题,做了一个批量写入的优化: 把数据的写入操作拆分成两个阶段,来缩短锁等待的时间; 在准备阶段,写入时获取到锁后,把更改的数据加入到待写入的队列中;再检查自己是不是排在待写入队列的头部...= writers_.front()) { w.cv.Wait(); } // 如数据写入完成,则退出(其他线程已帮忙完成数据写入) if (w.done) { return...,则唤醒其他线程继续写入数据 if (!

81310

leveldb源码分析--读数据

原理 回想一下LSM数据存储的机制: 1. 热数据保存在内存中MemTable中; 2....受限于内存存储空间大小的限制,当热数据超过一定大小时,需刷写到磁盘文件中;为了避免刷新过程中与写入操作的互斥锁操作,引入Immutable MemTable来保存待刷盘的、且不可修改的内存热数据; 3...数据刷写到磁盘中,保存到SSTable文件中; 从数据存储的机制中,我们可以推演出数据读取的流程: 1....从内存中的MemTable中查找数据,如查找成功则立即返回,如查找不到则到下一层中去查找数据; - MemTable底层采用skiplist数据结构保存,其查找过程就是skiplist的数据查找过程...从level0层中SSTable文件中查找数据; - level0中SSTable文件保存的数据范围存在重叠,故查找过程中,如新修改的SSTable文件中找不到数据,需查询这一层所有的SSTable

56750

Vue.js源码分析:计算属性如何工作

这篇文章我们我会用很简单的方法来实现类似计算属性的效果,以此学习Vue.js的计算属性的运行机制。...这个例子只说明运行机制,不支持对象、数组、watching/unwatching等Vue.js已实现的一大堆优化 看完源代码带着我有限的理解写的这篇文章,可能会有一些错误,如发现错误,请联系我 JS的属性...JS有Object.defineProperty方法,它能做的事情很多,但我们先关注这一点: var person = {};Object.defineProperty (person, 'age',...基础的Vue.js Observable Vue.js有一个基础结构,它可以帮你把一个常规的对象转换成一个“被观察”的值,这个值就叫做“observable”。...---- 某译者的胡说八道 如作者所说这个例子只是简化版,像官网说计算属性是基于它们的依赖进行缓存的这点没有表现出来,所以更多细节请研究Vue的源码 但是读了这篇文章我们可以知道计算属性更新是依赖data

1.6K30

Python数据分析--雷达

最近阅读学习了林骥老师的《数据分析 Python 实战》,书中讲好的技能应该刻意的练习,而不是简单的重复。...学习林骥老师的数据可视化的每种图表时,原来代码略微修改,使其适用于自己工作业务中的数据可视化。...林骥老师将数据可视化分析源代码分享在他的GitHub空间https://github.com/linjiwx/mp 引用林骥老师关于雷达的使用场景: 雷达的背景一圈一圈地像雷达,用多边形来展现数据的大小...endpoint=False) # 增加第一个 angle 到所有 angle 里,以实现闭合 angles = np.concatenate((angle, [angle[0]])) # 倒转顺序,以让雷达顺时针显示...set_thetagrids(angles*180/np.pi, labels=label) ax2.set_thetagrids(angles*180/np.pi, labels=label) # 画雷达

1.3K10

Python数据分析--斜率

最近阅读学习了林骥老师的《数据分析 Python 实战》,书中讲好的技能应该刻意的练习,而不是简单的重复。...学习林骥老师的数据可视化的每种图表时,原来代码略微修改,使其适用于自己工作业务中的数据可视化。...林骥老师将数据可视化分析源代码分享在他的GitHub空间https://github.com/linjiwx/mp 斜率,可以快速展现两组数据之间各维度的变化,特别适合用于对比两个时间点的数据。...斜率的优势,是能快速看到每个类别前后发生的变化,并能根据线条的陡峭程度,直观地感受到变化的幅度。...df.values fig, axes=plt.subplots(2,3,figsize=(4, 6)) fig.set_facecolor('w') axes=axes.flatten() # 画斜率

99830

Python数据分析--子弹

最近阅读学习了林骥老师的《数据分析 Python 实战》,书中讲好的技能应该刻意的练习,而不是简单的重复。...学习林骥老师的数据可视化的每种图表时,原来代码略微修改,使其适用于自己工作业务中的数据可视化。...林骥老师将数据可视化分析源代码分享在他的GitHub空间https://github.com/linjiwx/mp 子弹,它的样子有点像子弹,能够表达比较丰富的信息,例如表现好、中、差的取值范围,并突出显示实际值与目标值的差异情况...image.png 林老师GitHub子弹代码如下: # 导入所需的库 import numpy as np import matplotlib as mpl import matplotlib.pyplot...family':'SimHei', 'color':'#00589F', 'size':15} # 标示制图的作者信息 ax2.text(1, 0.2, ' 制图:林骥\n' + r'$@$' + '数据分析

47630

Python数据分析--哑铃

最近阅读学习了林骥老师的《数据分析 Python 实战》,书中讲好的技能应该刻意的练习,而不是简单的重复。...学习林骥老师的数据可视化的每种图表时,原来代码略微修改,使其适用于自己工作业务中的数据可视化。...林骥老师将数据可视化分析源代码分享在他的GitHub空间https://github.com/linjiwx/mp 首先介绍哑铃: 哑铃,是指用一条横线连接两个点、看起来有点像哑铃的,主要是用来强调从一个点到另一个点的变化...image.png 数据如下: 城市 2017 2018 郑州 109.05 103.47 洛阳 108.39 95.86 安阳 119.99 110.99 开封 102.13 103.24 焦作 110.68...< 0].iloc[:, 1], ymax=df[df['变化']< 0].iloc[:, 2], color=c['浅蓝色'], zorder=1, lw=5,label='下降') # 绘制哑铃两头的圆点

1.9K51

Vue 2.0源码分析-数据驱动

Vue.js 一个核心思想是数据驱动。所谓数据驱动,是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作 DOM,而是通过修改数据。...特别是当交互复杂的时候,只关心数据的修改会让代码的逻辑变的非常清晰,因为 DOM 变成了数据的映射,我们所有的逻辑都是对数据的修改,而不用碰触 DOM,这样的代码非常利于维护。...在 Vue.js 中我们可以采用简洁的模板语法来声明式的将数据渲染为 DOM: {{ message }} var app = new Vue({...接下来,我们会从源码角度来分析 Vue 是如何实现的,分析过程会以主线代码为主,重要的分支逻辑会放在之后单独分析。...数据驱动还有一部分是数据更新驱动视图变化,这一块内容我们也会在之后的章节分析,这一章我们的目标是弄清楚模板和数据如何渲染成最终的 DOM。

7910

Vue 3.0 源码分析-数据侦测

本文主要会介绍讲述二块内容,分别是Vue 3.0 的简要介绍,Vue 3.0 数据侦测源码分析。小伙伴们可以根据自己的需求,查看对应的内容,也欢迎各位一起探讨,一起学习。...对象,故而可以运行在所有的 JS 环境中。...Vue 3.0 数据侦测源码分析与手动实现 前置知识 在了解 Vue 3.0 的数据侦测之前,我们最好先了解一下 Vue 2 的数据侦测和有关的前置知识。...源码分析 Vue 3 的数据响应式 API 都是在 reactivity 里实现并暴露出来的,所以我们这次主要看的是这个 package 的代码。 ?...creativeReactiveObject 方法首先会对传入的目标对象进行分析:如果传入的值并非对象,或传入的对象本身已经是一个响应式的对象,又或该值的数据类型并不在支持数据侦测的白名单上时,会直接返回该值

67640
领券