源码

rest_framework之权限源码剖析

。_饼干妹妹 提交于 2019-12-20 07:58:26
权限问题 1.models.py 2.用户类型: 3.views.py: 假设订单相关业务(只有SVIP用户有权限) 假设用户信息相关业务(只有普通用户、VIP有权限) 4.运行结果: 基本使用 以上的权限代码封装到一个类中,以后各个视图的get请求直接调用即可。不用每个类都写一遍权限。 自定义权限类: 需要找到has_permission方法 0.看源码: 1. 2. 3.复制源码has_permission方法 4.继续定义权限类:has_permission方法返回True表示有权访问。 5.定义好了权限类,局部使用。 局部权限 6.运行结果 7.再定义一个权限,除SVIP以外,其他用户都能访问。 8.将全权都放到另一个单独的文件中。 然后视图文件需要则引入。 views.py应用即可 以上的单视图应用。全局使用怎么办呢? 全局权限 1.权限源码流程: 还是到复制源码has_permission方法这一步骤 局部配置 permission.py 全局配置 settings.py 继续看源码: 每一个权限都有该方法 has_permission 如果返回Fasle,则执行报错,抛出异常。 抛出异常 默认英文报错 运行结果 如何改成中文报错信息呢? 运行结果 内置权限 1.内置权限源码流程 2.为了让我们的权限更正规,必须继承该内置权限。 来源: https://www

[原]tornado源码分析系列(六)[HTTPServer详解]

强颜欢笑 提交于 2019-12-20 04:24:06
引言:上一章讲了关于HTTPServer的原理,这一次通过分析源码来了解更多的细节 看看HTTPServer类的组织结构: HTTPServer的主要工作 一.提供了一些基础的比如说listen,bind此类共有操作 二.完成了一个 _handle_events()的公有回调函数,此函数是 IOLoop的基础,此函数为每一个连接创建一个单独的 IOStream 对象 三.start函数,启动HTTPServer,并设置相应的参数(如根据CPU个数来设置进程数等) 从HTTPServer类的构造函数可以看出,最重要的参数是设置回调函数,此回调函数用于处理request对象 每次有HTTP的请求,都会通过HTTPConnection 封装一个HTTPRequest对象,这个对象包含了HTTP请求的所有信息 所以在HTTPServer层,需要对这个对象进行一番处理后调用 request.write将结果返回给客户端 此回调函数会先注册到HTTPServer,然后注册到HTTPConnection 里面,因为request这个对象是由HTTPConnection对象产生 def _handle_events(self, fd, events): while True: try: connection, address = self._socket.accept() except

[Vue全家桶]vuex、vue-router、 axios源码全解析

本小妞迷上赌 提交于 2019-12-20 03:27:56
今日推荐 源码系列 vuex源码全解析 https://mp.weixin.qq.com/s/hY2K35L11vLc0-OvUTTg0A vue-router源码全解析 https://mp.weixin.qq.com/s/5-tRCJTd3K65PZSLrwVCfw axios源码全解析 https://mp.weixin.qq.com/s/GNYpgHo97xml0NxT93dHxQ 来源: CSDN 作者: iChangebaobao 链接: https://blog.csdn.net/iChangebaobao/article/details/103617770

jenkins 配置子项目发版

谁说我不能喝 提交于 2019-12-20 02:49:33
刚接手公司的项目虽说也多模块、分布式部署,但是模块之间却没有被父项目管理,每个模块是一个小的父子项目,管理了两个子项目,单独维护着当前模块内使用的依赖,版本等,模块之间自然有很多重复引用的依赖,我不知道当初为什么这样创建,在我集成apollo配置中心的时候我改掉了这样依赖结构,所有的模块的依赖都和版本都统一由一个父pom管理,这也为后面埋下一个坑。 测试环境上线的时候,使用的jenkins自动部署,原以为更换了源码路径就可以了,但是发版错误提示没有定义版本号,×××的是要部署的模块代码,其他模块没有下载源码,可能这就是当初为什么人家单独在模块pom里维护当前项目的依赖,因为打包自身的配置就够用了,现在换成了父项目管理,版本信息是继承来的,而源码只现在了当前模块,没有父pom所以版本信息找不到,那就要把下载源码的路径向上一级 这里Repository URL的路径指向父项目,不再是部署的模块,虽然有了父pom文件,但是把其他所有的模块都下载了,后面再一打包很耗时间,好在maven有命令,可以指定子项目打包: clean install -T 1C -Dmaven.test.skip=true -Dmaven.compile.fork=true -U -pl 子项目名称 -am 主要是后面两个命令,pl指定要打包的子项目,am是当前项目依赖的模块项目也打包 这里可以把后面的

cocos 2dx单机斗地主源码分析

半城伤御伤魂 提交于 2019-12-20 01:32:03
1.玩家按下准备按钮 void SceneGame::menuReadyCallback(Ref* pSender) { faPai(); _menuReady->setVisible(false); } 2.faPai函数里先洗牌,然后调用callbackFaPai,callbackFaPai是一个递归链式调用函数,一次给每个成员发牌并且保留底牌,最后显示抢地主按钮 如果玩家抢到了地主,接着给他发底牌,并且设置他为地主,同时出牌按钮也会显示 void SceneGame::menuQiangCallback(Ref* pSender) { SimpleAudioEngine::getInstance()->playEffect("sound/Man/Order.ogg"); // 分发底牌 FaDiPai(_player1); // 切换菜单可见 _menuQiangDiZhu->setVisible(false); _menuChuPai->setVisible(true); } void SceneGame::callbackChuPai2(cocos2d::Node* node) void SceneGame::callbackChuPai3(cocos2d::Node* node) 以上分别是两个机器人的出牌算法,3号机器人出玩牌设置我的出牌按钮显示

【Spring源码解析】FactoryBean-工厂方法模式的实现及使用

廉价感情. 提交于 2019-12-20 01:29:47
一、工厂方法模式中的三种模式的特点 工厂模式中的三种模式,分别是:简单工厂模式、工厂方法模式、抽象工厂模式,三种分别是什么,以及适合场景是什么? (1)简单工厂模式:一个抽象接口对应一个产品接口,特定产品实现这个接口,针对不同产品都可以在同一个工厂中生产,同一个工厂生产产品可以通过多种方式,单生产方法(通过类型判定具体是要哪个产品,并进行new返回),多生产方法(工厂中有多个产品的不同生产方法,每一个生产方法对应一个new 产品的return),或者是静态方法简单工厂(将工厂中的返回某个产品的方法类设置为static,则直接通过类调用静态方法即可,不需要new工厂类的对象实例) 该方法的问题是:如果要新增一个产品,必须对工厂类进行修改,但是如果通过反射或者其他方式可以做统一处理,其实也不会涉及到这个问题,如果要新增一个产品必须要对工厂类修改的时候,此时针对简单工厂模式的修改觉得比较麻烦的话或者想要使扩展性更好的话,可以通过工厂方法模式(备注:简单工厂模式比较像一个集中厂,各种不同的东西都能产) Client端去调用的时候,需要知道:工厂的类名,及提供的生产方法从而可以获得具体产品的实例,以及产品的接口,可以通过实例调用接口得到需要的产品的信息 其实就是:一个工厂类名Fatory,从工厂的生产方法获取具体产品实例,getProduct()其中会返回new ProductA(

Spring源码分析之属性注入

你离开我真会死。 提交于 2019-12-20 01:27:27
一、自动装配 当Spring装配Bean属性时,有时候非常明确,就是需要将某个Bean的引用装配给指定属性。比如,如果我们的应用上下文中只有一个 org.mybatis.spring.SqlSessionFactoryBean 类型的Bean,那么任意一个依赖 SqlSessionFactoryBean 的其他Bean就是需要这个Bean。毕竟这里只有一个 SqlSessionFactoryBean 的Bean。 为了应对这种明确的装配场景,Spring提供了自动装配(autowiring)。与其显式的装配Bean属性,为何不让Spring识别出可以自动装配的场景。 当涉及到自动装配Bean的依赖关系时,Spring有多种处理方式。因此,Spring提供了4种自动装配策略。 public interface AutowireCapableBeanFactory{ //无需自动装配 int AUTOWIRE_NO = 0; //按名称自动装配bean属性 int AUTOWIRE_BY_NAME = 1; //按类型自动装配bean属性 int AUTOWIRE_BY_TYPE = 2; //按构造器自动装配 int AUTOWIRE_CONSTRUCTOR = 3; //过时方法,Spring3.0之后不再支持 @Deprecated int AUTOWIRE_AUTODETECT

Linux下源码编译MySQL 5.5 与安装过程全记录

[亡魂溺海] 提交于 2019-12-20 00:19:07
原文地址: http://www.linuxidc.com/Linux/2011-08/40087.htm 前言:从mysql 5.5版本开始,mysql源码安装开始使用cmake了,编译安装跟以前的版本有点不一样了。 一,安装步骤: 1.安装前准备工作 a.下载mysql源代码包,的mysql下载页面选择MYSQL Community Serve Source Code 版本 注意:不要选择Linux-Generic版本,此版本为已经编译好的二进制版本 b.检查本机Linux是否已安装好make,bison,cmake,gcc-c++,ncurses,如果尚未安装,先安装以上包,安装方法如下: 注意:一般系统都会默认安装有make,gcc-c++. 1.安装make编译器 下载地址: http://www.gnu.org/software/make/ # tar zxvf make-3.82.tar.gz # cd make-3.82 # ./configure # make # make install 也可用:yum install make.i686 安装此包 2.安装bison 下载地址: http://www.gnu.org/software/bison/ <span ># tar zxvf bison-2.5.tar.gz # cd bison-2.5 # .