源码

[Android]Volley源码分析(三)

a 夏天 提交于 2020-03-28 05:10:17
上篇看了关于Request的源码,这篇接着来看下RequestQueue的源码。 RequestQueue类图: RequestQueue是一个请求调度队列,里面包含多个NetworkDispatcher调度器与一个CacheDispatcher调度器 主要属性: mSequenceGenerator: 请求序号生成器 mWaitingRequests: Staging area for requests that already have a duplicate request in flight. 相当于一个等待队列,根据请求url来将以前发起过的请求先加入这个队列中。避免同样的请求多次发送。 mCurrentRequests: 正在被请求队列处理的请求集合 mCacheQueue: 请求缓存队列,请求可以被缓存也可以不缓存,保存可以缓存的请求 mNetworkQueue: 需要进行网络访问的请求队列 mCache: 可以保存与获取请求响应的缓存,把请求响应保存在disk中 mNetwork: 真正执行Http请求的网络接口 mDelivery: 将请求响应进行解析并交付给请求发起者 mDispatchers: 网络请求调度器,每一个调度器都是一个线程 mCacheDispatcher: 缓存调度器 主要方法: start(),启动所有调度器线程 1 /** 2 *

identityserver4源码解析_3_认证接口

别等时光非礼了梦想. 提交于 2020-03-28 03:51:47
目录 identityserver4源码解析_1_项目结构 identityserver4源码解析_2_元数据接口 identityserver4源码解析_3_认证接口 identityserver4源码解析_4_令牌发放接口 identityserver4源码解析_5_查询用户信息接口 identityserver4源码解析_6_结束会话接口 identityserver4源码解析_7_查询令牌信息接口 identityserver4源码解析_8_撤销令牌接口 协议 五种认证方式 Authorization Code 授权码模式 :认证服务返回授权码,后端用clientid和密钥向认证服务证明身份,使用授权码换取id token 和/或 access token。本模式的好处是由后端请求token,不会将敏感信息暴露在浏览器。本模式允许使用refreshToken去维持长时间的登录状态。使用此模式的客户端必须有后端参与,能够保障客户端密钥的安全性。此模式从authorization接口获取授权码,从token接口获取令牌。 Implict 简化模式 :校验跳转URI验证客户端身份之后,直接发放token。通常用于纯客户端应用,如单页应用javascript客户端。因为没有后端参与,密钥存放在前端是不安全的。由于安全校验较宽松

【php】php源码编译扩展的安装

大兔子大兔子 提交于 2020-03-27 12:00:10
友情提醒,这个要对着我前面写的PHP源码编译文章一起看才爽!!! 安装mongodb扩展 cd /usr/local/src wget https://pecl.php.net/get/mongodb-1.7.4.tgz tar -xzvf mongodb-1.7.4.tgz cd mongodb-1.7.4 /usr/local/php72/bin/phpize ./configure --with-php-config=/usr/local/php72/bin/php-config make && make install vim /usr/local/php72/lib/php.ini 在Dynamic Extensions模块添加 extension=mongodb systemctl restart php72-fpm.service 安装redis扩展 cd /usr/local/src wget https://pecl.php.net/get/redis-5.2.1.tgz tar -xzvf redis-5.2.1.tgz cd redis-5.2.1 /usr/local/php72/bin/phpize ./configure --with-php-config=/usr/local/php72/bin/php-config make && make

Vue2.0源码阅读笔记(二):响应式原理

夙愿已清 提交于 2020-03-27 11:45:22
  Vue是数据驱动的框架,在修改数据时,视图会进行更新。数据响应式系统使得状态管理变的简单直接,在开发过程中减少与DOM元素的接触。而深入学习其中的原理十分有必要,能够回避一些常见的问题,使开发变的更为高效。 一、实现简单的数据响应式系统   Vue使用 观察者模式 (又称 发布-订阅模式 )加 数据劫持 的方式实现数据响应式系统,劫持数据时使用 Object.defineProperty 方法将 数据属性 变成 访问器属性 。Object.defineProperty 是 ES5 中一个无法 shim 的特性,因此Vue 不支持 IE8 以及更低版本浏览器。   Vue源码中对数据响应式系统的实现比较复杂,在深入学习这部分源码之前,先实现一个较为简单的版本更有助于后续的理解。代码如下所示: let uid = 0 // 容器构造函数 function Dep() { // 收集观察者的容器 this.subs = [] this.id = uid++ } Dep.prototype = { // 将当前观察者收集到容器中 addSub: function(sub) { this.subs.push(sub) }, // 收集依赖,调用观察者的addDep方法 depend: function() { if(Dep.target){ Dep.target.addDep(this)

Vue--$watch()源码分析

♀尐吖头ヾ 提交于 2020-03-27 11:44:27
  这一段时间工作上不是很忙,所以让我有足够的时间来研究一下VueJs还是比较开心的 (只要不加班怎么都开心),说到VueJs总是让人想到双向绑定,MVVM,模块化,等牛逼酷炫的名词,而通过近期的学习我也是发现了Vue一个很神奇的方法$watch,第一次尝试了下,让我十分好奇这是怎么实现的, 为什么变量赋值也会也会触发回调?这背后又有什么奇淫巧技?怀着各种问题,我看到了一位大牛,杨川宝的文章,但是我还是比较愚笨,看了三四遍,依然心存疑惑,最终在杨大牛的GitHub又看了许久,终于有了眉目,本篇末尾,我会给上链接   在正式介绍$watch方法之前,我有必要先介绍一下实现基本的$watch方法所需要的知识点,并简单介绍一下方便理解:     1) Object.defineProperty ( obj, key , option) 方法         这是一个非常神奇的方法,同样也是$watch以及实现双向绑定的关键         总共参数有三个,其中option中包括 set(fn), get(fn), enumerable(boolean), configurable(boolean)         set会在obj的属性被修改的时候触发,而get是在属性被获取的时候触发,( 其实属性的每次赋值,每次取值,都是调用了函数 )     2) Es6 知识,例如Class,()

maven deploy的时候把源码也上传

我是研究僧i 提交于 2020-03-27 08:43:27
3 月,跳不动了?>>> maven 插件不够的时候, mvn deploy -DskipTests 执行完以后,只能把jar包部署上去。这时候引入的人下载不带源码,看不到注释之类的信息。 增加 maven-source-plugin 插件就可以了。 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- 要将源码放上去,需要加入这个插件 --> <plugin> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals>

AspNetCore3.1_Secutiry源码解析_6_Authentication_OpenIdConnect

橙三吉。 提交于 2020-03-26 11:16:43
title: "AspNetCore3.1_Secutiry源码解析_6_Authentication_OpenIdConnect" date: 2020-03-25T21:33:12+08:00 draft: false 系列文章目录 AspNetCore3.1_Secutiry源码解析_1_目录 AspNetCore3.1_Secutiry源码解析_2_Authentication_核心流程 AspNetCore3.1_Secutiry源码解析_3_Authentication_Cookies AspNetCore3.1_Secutiry源码解析_4_Authentication_JwtBear AspNetCore3.1_Secutiry源码解析_5_Authentication_OAuth AspNetCore3.1_Secutiry源码解析_6_Authentication_OpenIdConnect AspNetCore3.1_Secutiry源码解析_7_Authentication_其他 AspNetCore3.1_Secutiry源码解析_8_Authorization_核心项目 AspNetCore3.1_Secutiry源码解析_9_Authorization_Policy oidc简介 oidc是基于oauth2.0的上层协议。 OAuth有点像卖电影票的

直播APP源码搭建简易直播平台及个人开发直播系统的难点

五迷三道 提交于 2020-03-26 09:42:36
如何用直播APP源码搭建一个简易的直播平台 一.前端推流 1.推流可以采用命令: ffmpeg -i input -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/cgstream0input 可以是实时流,也可以是文件,如果是文件 需要加上-re。运用中需要将127.0.0.1换成rtmp所在机器的ip地址。 用命令推流时间戳信息不能任意修改,想要达到一个满意的结果还是要用代码实现。 主要方法代码如下: 1.打开视频流,filename可以文件名称也可以是实时流url. 2.创建输出上下文以及输出流,输出流的格式需要设置成flv 3.从输入流中读取音视频包 二. 服务端 服务端可以选择crtmpserver,crtmpserver开源,在windows平台以及linux平台下都可以运行。 随着人们对视频质量要求的提高,基本上视频的分辨率都是高清(1080p),码率基本会在4M以上。试想如果服务器网卡选择千兆网卡,单个网卡最多也就支持两百多路。一般来讲,服务器的cpu配置会比普通电脑高很多,支持几百路并发是不会出现性能问题。 三. 播放端 如果在网页上播放(IE),可以选择JwPlayer,如果用插件的也是可以。Android端播放器如果底层基于ffmpeg,也可以播放CrtmpServer 转发的音视频流

如何阅读redis源码

混江龙づ霸主 提交于 2020-03-26 09:40:54
3 月,跳不动了?>>> 阅读redis源代码的一些体会 最近在学习redis及阅读redis等程序的源码时,有一些收获,特记录到下面。 1.第一步,阅读源代码借助最好可以跟踪的工具去读,如sourceinsight。 我使用的是windows7环境,又因为是c程序,故使用sourceinsight,当然还有其他的方式,比如阅读java代码可以导入到eclipse。 2. 第二步,搭建可以启动该源程序的环境,并能启动成功。 根据最简单的配置,使用源码编译的方式,启动该程序。逐渐参考用户使用手册,修改配置文件进行测试,进而熟悉redis的使用。 3.第三步,阅读代码前先理清楚源码的数据结构、基本概念、算法。 数据结构诸如字典、双向链表的实现; 概念诸如aof、rdb、主从复制等 4. 第四步,使用debug模式启动程序,跑完整个流程。 使用redis的debug模式,了解运行的流程,理清思路。 5. 第五步,使用单元测试对数据结构、算法、流程进行单元测试。 使用cunit先进行数据结构的单元测试,再进行算法,然后是流程的测试。 最后考虑根据模块进行测试。 以上内容出自:http://www.cnblogs.com/davidwang456/p/3552409.html 增加一条: 6、增加打印日志和画代码流程图。1)猜测你认为的代码流程走向,并在你认为走到的地方增加自己的打印信息

Linux内核裁剪移植学习分享

拈花ヽ惹草 提交于 2020-03-26 08:54:36
22.内核裁剪移植 内核源码是大量模块代码的集合! 每一个模块代码都是大量的.c 和 .h文件组成的! 内核是系统所有功能的集合! 内核镜像是一个二进制文件,是一个大型可执行程序! 内核移植步骤: 1)把内核源码包复制到linux系统下的 /work/目录下,并解压! 命令: cp /mnt/hgfs/xxxxx/linux-3.5.buildok.tar.gz /work/ cd /work tar xf linux-3.5.buildok.tar.gz 2)解压完成后,进入解压后目录。 命令: cd linux-3.5/ 3)内核源码裁剪,去掉不需要的模块,保留需要的模块! 命令: make clean make distclean cp tiny4412_linux_defconfig .config make menuconfig 进入配置菜单: system type --> Support TrustZone-enabled Trusted Execution Environment [去掉该选项] 保存退出! 4)编译内核源码,生成内核镜像zImage。路径:arch/arm/boot/zImage 命令: make -j8 5)进入内核镜像所在目录,编写烧录脚本,烧录zImage镜像! 命令: cd arch/arm/boot/ vim sd_fusing.sh