源码

01 flask源码剖析之werkzurg 了解wsgi

岁酱吖の 提交于 2019-12-05 15:11:22
目录 01 werkzurg了解wsgi 1. wsgi 2. flask之werkzurg源码流程 3. 总结 01 werkzurg了解wsgi 1. wsgi django和flask内部都没有实现socket,而是wsgi实现。 wsgi是web服务网关接口,他是一个协议,实现它的协议的有:wsgiref/werkzurg/uwsgi django之前 from wsgiref.simple_server import make_server def run(environ, start_response): start_response('200 OK', [('Content-Type', 'text/html')]) return [bytes('<h1>Hello, web!</h1>', encoding='utf-8'), ] if __name__ == '__main__': httpd = make_server('127.0.0.1', 8000, run) httpd.serve_forever() flask之前 from werkzeug.serving import run_simple from werkzeug.wrappers import BaseResponse def func(environ, start_response):

Spring MVC 源码 分析

邮差的信 提交于 2019-12-05 14:43:54
spring web 源码 @HandlesTypes(WebApplicationInitializer.class) public class SpringServletContainerInitializer implements ServletContainerInitializer { /** * Delegate the {@code ServletContext} to any {@link WebApplicationInitializer} * implementations present on the application classpath. * <p>Because this class declares @{@code HandlesTypes(WebApplicationInitializer.class)}, * Servlet 3.0+ containers will automatically scan the classpath for implementations * of Spring's {@code WebApplicationInitializer} interface and provide the set of all * such types to the {@code webAppInitializerClasses}

ubuntu16.04源码编译安装最新版eos

Deadly 提交于 2019-12-05 14:42:18
前提:ubuntu 16.04 时间:2019年11月25日 备注:eos版本此时为v1.8.6 参考博客: https://www.jubi.com/forum/forum.php?mod=viewthread&tid=74620 下载代码 从EOSIO官方github克隆代码到本地,获取代码,需要用到git命令,如果没有安装git,请自行安装 git clone https://github.com/EOSIO/eos --recursive 执行构建脚本 下载完成后,进入 eos 目录下,执行构建脚本如下,持续输入y就好 ./scripts/eosio_build.sh 构建完成如下图所示: 执行安装脚本 进入 eos/build/programs/ 目录,执行以下命令 sudo make install 输入密码,然后就安装完成了,安装如下图所示 启动节点 进入 eos/build/programs/nodeos 目录,执行以下命令: sudo ./nodeos -e -p eosio \ --plugin eosio::producer_plugin \ --plugin eosio::chain_api_plugin \ --plugin eosio::http_plugin \ -d ./eosData \ --config-dir ./eosData/config

自己动手写一个服务网关-java

安稳与你 提交于 2019-12-05 14:33:54
自己动手写一个服务网关 原文链接:https://www.cnblogs.com/bigben0123/p/9252444.html 引言 什么是网关?为什么需要使用网关? 如图所示,在不使用网关的情况下,我们的服务是直接暴露给服务调用方。当调用方增多,势必需要添加定制化访问权限、校验等逻辑。当添加API网关后,再第三方调用端和服务提供方之间就创建了一面墙,这面墙直接与调用方通信进行权限控制。 本文所实现的网关源码抄袭了---Oh,不对,是借鉴。借鉴了Zuul网关的源码,提炼出其核心思路,实现了一套简单的网关源码,博主将其改名为Eatuul。 题外话 本文是业内能搜到的第一篇自己动手实现网关的文章。博主写的手把手系列的文章,目的是在以最简单的方式,揭露出中间件的核心原理,让读者能够迅速了解实现的核心。需要说明的是,这不是源码分析系列的文章,因此写出来的代码,省去了一些复杂的内容,毕竟大家能理解到该中间件的核心原理即可。如果想看源码分析系列的,请关注博主,后期会将spring、spring boot、dubbo、mybatis等开源框架一一揭示。 正文 设计思路 先大致说一下,就是定义一个Servlet接收请求。然后经过preFilter(封装请求参数),routeFilter(转发请求),postFilter(输出内容)。三个过滤器之间,共享request

你的文章里为什么不放源码Github链接了

强颜欢笑 提交于 2019-12-05 14:17:12
“你的文章里为什么不放源码Github链接了?”,一个读者这么问我 我把这张图发给了他,这是我之前放文章中Demo源码的Github仓库 他一脸疑惑,问我怎么了 经常使用Github的小伙伴都知道, star 的含义就像社交媒体中的点赞,表示对项目的鼓励,衡量一款开源项目是否受欢迎的一个重要指标就是star的数量,很多优秀开源作者在介绍自己的项目时也都会说我的项目获得了多少的star,而 fork 相当于复制一份源代码到自己的仓库中,其主要作用是给参与项目的开发使用,当你新增内容时可以提 pull request 把你的修改合并到原来的仓库中 fork数大于star数,说明很多的人只想白嫖,连个几乎不需要什么成本的star支持都不会给,或许有很多小伙伴不知道star和fork的含义吧,我这么安慰自己 同样的情况还有我们开源的 一站式的运维平台CODO ,曾经在群里有小伙伴跟我说你们的CODO很棒,我把里边的运维工具给扒下来放在了我开发的系统里,我就问这么棒的开源系统,也帮助了你,有没有给个star,结果是没有,开发组的小伙伴利用下班、周末你们休息的时间来开发新功能,修复各种Bug,同时也在用户群里帮忙解决各种各样的问题,然而一个star都不愿意给,付出得不到回报,他们心里是该有多难受啊 更惨的事情发生在我身上,刚学习Django的时候怀着对开源的无限向往

读Dubbo源码,学习SPI

醉酒当歌 提交于 2019-12-05 14:12:24
核心类 ExtensionLoader 使用方法 定义接口,使用@SPI标记 @SPI("impl1") public interface SimpleExt { // @Adaptive example, do not specify a explicit key. @Adaptive String echo(URL url, String s); @Adaptive({"key1", "key2"}) String yell(URL url, String s); // no @Adaptive String bang(URL url, int i); } @SPI("impl1") public interface UseProtocolKeyExt { // protocol key is the second @Adaptive({"key1", "protocol"}) String echo(URL url, String s); // protocol key is the first @Adaptive({"protocol", "key2"}) String yell(URL url, String s); } 扩展类 SimpleExt.java public class SimpleExtImpl1 implements SimpleExt { public

7. SOFAJRaft源码分析—如何实现一个轻量级的对象池?

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-05 13:37:37
摘自: https://www.cnblogs.com/luozhiyun/p/11924850.html 7. SOFAJRaft源码分析—如何实现一个轻量级的对象池? 分类: SOFAJRaft 标签: SOFAJRaft 前言 # 我在看SOFAJRaft的源码的时候看到了使用了对象池的技术,看了一下感觉要吃透的话还是要新开一篇文章来讲,内容也比较充实,大家也可以学到之后运用到实际的项目中去。 这里我使用RecyclableByteBufferList来作为讲解的例子: RecyclableByteBufferList Copy public final class RecyclableByteBufferList extends ArrayList<ByteBuffer> implements Recyclable { private transient final Recyclers.Handle handle; private static final Recyclers<RecyclableByteBufferList> recyclers = new Recyclers<RecyclableByteBufferList>(512) { @Override protected RecyclableByteBufferList newObject(final

drf 认证 权限 节流 源码流程

早过忘川 提交于 2019-12-05 13:32:12
调用dispatch方法,从IndexView视图开始寻找,自身不存在则寻找APIview,APIview中存在则停止,即调用APIview中的dispatch方法 APIview中的dispatch def dispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args = args self.kwargs = kwargs request = self.initialize_request(request, *args, **kwargs) self.request = request self.headers = self.default_response_headers # deprecate? try: self.initial(request, *args, **kwargs) # Get the appropriate handler method if request.method.lower() in self.http_method

ESA2GJK1DH1K基础篇: 移植源码中SmartConfig程序到自己的项目

徘徊边缘 提交于 2019-12-05 12:54:41
前言:   说明两个地方   1.点击按钮启动SmartConfig的地方        2.最终跳转的地方      说明   这节说明一下,如何把本人源码里面的SmartConfig程序移植到自己的工程   我要把所有的全部拿出来讲,让大家可以方便的把每一个功能移植到自己的工程. 新建一个项目   主页面只放一个按钮和一个文本框   按钮是负责跳转到配网绑定页面,文本框显示配网绑定完成以后获取的Wi-Fi的MAC信息      新建一个新页面,配网绑定用的 名字随意 换个布局 里面放一个EditText 用来显示咱连接的路由器名称 一个EditText 用来输入密码 一个按钮用来启动SmartConfig 打开教程的APP源码 注意:不支持中文目录,把源码拷贝到英文目录下,然后用软件打开 自己新建的工程选择导入模块 选择源码里面的esptouch 添加依赖 implementation project(':esptouch') 拷贝源码里面的 ActivityBindDevices 到咱的新工程   这种错误是因为SDK版本不一致可能报错,自己可以重新敲   我是用的28,大家如果用29,就会报错,29的包开始用 Androidx.XXXXX 修改布局的名字,根据控件的ID修改下 在AndroidManifest里面加上Activity <activity android

Android style,theme介绍及其源码解析

好久不见. 提交于 2019-12-05 12:41:50
1.style介绍 style是android资源之一,放在res\values目录下的后缀名为.xml的文件中。Sylte的作用的是可以批量对控件属性进行设置,包括android预定义的属性和自定义属性。话不多说,我们先来看看代码 <!--style.xml--> <?xml version="1.0" encoding="utf-8"?> <resources> <style name="myTextViewStyle" > <item name="android:textColor" >#ffffff</item> <item name="android:textSize">50dp</item> <item name="android:background">#0000ff</item> </style> <style name="myTextViewStyle1" parent="myTextViewStyle"> <item name="android:textSize">30dp</item> </style> </resources> 以上是我在values文件夹下新建的的一个style.xml文件,其中根标签必须为resources,表明他的子标签是资源类型。style标签定可以一个sytle资源,有连个属性name和parent