源码

JMeter源码集成到Eclipse

独自空忆成欢 提交于 2020-01-13 07:31:29
  新的一年即将到来,不知不觉2015年自己在Jmeter方面总结的文章有十几篇,在此汇总一下,顺便也算是个总结吧。2016年,继续学习技术,总结,写文章。 一、基础部分: 使用Jmeter进行http接口测试 Jmeter之Http Cookie Manager Jmeter之HTTP Request Defaults Jmeter之逻辑控制器(Logic Controller) Jmeter属性和变量 Jmeter组件执行顺序与作用域 Jmeter参数化 Jmeter关联 Jmeter分布式测试 Jmeter代理录制脚本 Jmeter调试工具---Debug Sampler Jmeter调试工具---HTTP Mirror Server 二、扩展部分: Jmeter之JDBC Request使用方法(oracle) Jmeter之Bean shell使用(一) Jmeter之Bean shell使用(二) 三 、持续集成: ANT批量执行Jmeter脚本 搭建持续集成接口测试平台(Jenkins+Ant+Jmeter) Jmeter默认报告优化 Jmeter报告优化之New XSL stylesheet 四、其他:   1、 基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示   2、 JMeter源码集成到Eclipse 来源: https:/

Spring 源码解析之DispatcherServlet源码解析(五)

放肆的年华 提交于 2020-01-13 06:23:14
spring 的 整个请求流程都是围绕着 DispatcherServlet 进行的 类结构图 根据类的结构来说 DispatcherServlet本身也是继承了HttpServlet的,所有的请求都是根据这一个Servlet来进行转发的 , 同时解释了为什么需要在web.xml进行如下配置 ,因为Spring是基于一个Servlet来展开的,当然不需要Servlet也能够使用Spring <servlet> <servlet-name>appServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring/spring-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>appServlet</servlet-name> <url-pattern>/</url-pattern>

Django-rest-framework源码分析(三)

非 Y 不嫁゛ 提交于 2020-01-13 04:40:15
APIView(二)   在APIView执行dispatch()方法的时候,它不仅做了分发函数的功能,还进行了一系列的校验。   Django的全局校验一般写在中间件中,但是rest_framework于Django原生框架而言只是一个应用(Application),它实现全局校验的方法比较特殊,首先规定所有的视图都要以CBV的形式写在类当中,这个类要继承rest_framework的APIView或者继承了APIView的子类。在CBV中我们知道,有一个分发函数dispatch,APIView重写了dispatch,使得dispatch在把请求分配给不同的方法执行之前,先进行了一些校验,虽然这层校验仅仅近似于中间件的process_view,但也达到了全局校验的效果,为我们写全局校验提供了思路,而且这种校验的好处在于,它比较灵活,想进行校验的时候就重写一个dispatch方法,只对某些视图函数进行校验。   rest_framework/views/class APIView/def dispatch()      dispatch在执行视图函数之前先执行了initial方法   rest_framework/views/class APIView/def initial()      依次执行了三层校验。分别来看   rest_framework/views/class

ArrayList源码分析

浪子不回头ぞ 提交于 2020-01-13 02:53:55
目录 ArrayList底层是采用数组 ArrayList构造函数 ArrayList add分析 ArrayList Get分析 ArrayList Remove分析 LinkedList底层是链表 LinkedList构造函数 LinkedList add分析 LinkedList Remove分析 LinkedList Get分析 ArrayList底层是采用数组 ArrayList构造函数 并未开辟空间,将elementData设置为空{ } public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } ArrayList add分析 初次add 会将开辟一个长度为10的数组,之后每次添加,size+1为需要的容量,如果需要的容量>数组现在的长度 则数组需要再次扩容,按1.5倍扩容 比如:从add 1到add15中,add 1时候数组开辟,之后add 2到10时候 需要的容量<=数组长度10,此期间都不需要扩容,当add 11时,需要的容量11>数组长度10,此时数组扩容到15, 当add 12..15时,均不需扩容,add 16是再次按照1.5倍扩容........... public boolean add(E e) { ensureCapacityInternal(size +

android--新闻阅读器实现源码

北慕城南 提交于 2020-01-13 02:35:39
先看布局文件 MainActivity: < ? xml version = "1.0" encoding = "utf-8" ? > < android . support . constraint . ConstraintLayout xmlns : android = "http://schemas.android.com/apk/res/android" xmlns : app = "http://schemas.android.com/apk/res-auto" xmlns : tools = "http://schemas.android.com/tools" android : layout_width = "match_parent" android : layout_height = "match_parent" tools : context = ".MainActivity" > < Button android : id = "@+id/btnzg" android : layout_width = "0dp" android : layout_height = "wrap_content" android : layout_marginStart = "16dp" android : layout_marginTop = "16dp" android :

vue源码学习——认识flow

▼魔方 西西 提交于 2020-01-13 01:28:04
什么是flow? flow是Facebook出品的静态类型检查工具(vue.js 的源码就是利用了flow做 静态类型检查 ) 为什么用flow? 因为JavaScript是一种动态类型语言,灵活性强,但是过于灵活会带来一些问题,很容易写出非常隐蔽的隐患代码,没有明显的语法错误编译阶段可能不会报错,但是在运行阶段会出现各种bug。 类型检查就是在编译阶段发现由类型错误引起的bug,不影响代码的运行,使得编写JavaScript具有和编写Java等强类型语言相近的体验 vue.js 2.0在ES6的基础上,除了ESlint保证代码风格外,引用了flow做静态类型检查,因为Babel和ESLint都有对应的Flow插件以支持语法,可以完全沿用现有的构建配置,非常小成本的改动就可以拥有静态类型检查的能力 安装使用flow npm i -g flow-bin 安装flow flow init 初始化生成 .flowconfig 文件 .flowconfig文件如下: (配置一些不做类型检查的问价和做类型检查的文件等等) [declarations] [include] [ignore] [untyped] [libs] [lints] [options] [version] flow静态类型检查工作方式? 类型推断 通过变量的使用上下文推断出变量类型,然后根据这些推断来检查类型 例子:

ArrayList源码 基本功能分析

人走茶凉 提交于 2020-01-13 01:23:26
ArrayList 继承与实现 空数组 EMPTY_ELEMENTDATA DEFAULTCAPACITY_EMPTY_ELEMENTDATA 异常 常规函数实现 contains indexOf lastIndexOf clone toArray add(int index, E element) remove(Object o) batchRemove(Collection<?> c, boolean complement) 内部类 注意事项 总结 继承与实现 函数名 介绍 AbstractList List接口 继承自Collection,祖父Iterable RandomAccess 标志接口,表明实现的这个接口的List集合是支持快速随机访问的。 Cloneable 接口 覆盖clone函数,能被克隆。 java.io.Serializable 接口 支持序列化,能够序列化传输 空数组   首先,我观察到了。为毛定义了两个空数组呢~( ̄▽ ̄)。 private static final Object [ ] EMPTY_ELEMENTDATA = { } ; private static final Object [ ] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = { } ;   既然是list有空的情况和非空的情况

babel源码解析一

坚强是说给别人听的谎言 提交于 2020-01-12 22:39:20
我们直接创建一个工程,然后执行: npm install -D @babel/cli 我们用的是最新版本7.8.0 创建一个test1.js测试: /* test.js */ const fn = () => {} new Promise(() => {}) class Test {} const c = [1, 2, 3].includes(1) //测试插件1 var a=10; 创建一个babel配置文件.babelrc(先不写任何配置): /* .babelrc */ { } 然后我们执行: npx babel test1.js -o test1.babel.js --config-file .babelrc 最后看一下结果test1.babel.js: /* test.js */ const fn = () => {}; new Promise(() => {}); class Test {} const c = [1, 2, 3].includes(1); //测试插件1 var a = 10; 哦?为啥一点变化都没有呢? 我们带着疑问研究一下源码~ 为了更好的研究babel的源码,我们直接去github clone一份: git clone https://github.com/babel/babel.git 然后当我们执行: npx babel test1.js

jquery源码解读(一)

China☆狼群 提交于 2020-01-12 22:36:41
jquery源码解读,实现大概框架(一) ​ jquery是一个库,封装了很多方法。为的就是更加方便使用。 ​ ​ 首先:分析, 第一条。 他们有两类方法, 一种是 $ . 直接调用方法 ( 例如:$.each() ) 另一种是 ( ‘ S e l e c t o r ’ ) 调 用 方 法 ( 例 如 : (‘ Selector’)调用方法 (例如: ( ‘ S e l e c t o r ’ ) 调 用 方 法 ( 例 如 : (‘div’).html() ) 首先实现, $(‘Selector’)方法: < div > 1 < / div > < div > 2 < / div > < div > 3 < / div > < script src = "js/jquery-1.7.2.js" > < / script > < script > // 获得jQuery对象 console . log ( $ ( 'div' ) ) ; < / script > 是一个返回的是一个init的类数组。那么首先我们需要这样返回一个对象。 var jQuery = function ( selector ) { return new init ( selector ) ; } var init = function ( selector ) { } // 验证 console .

Caffe源码-im2col操作

心已入冬 提交于 2020-01-12 22:32:32
目录 im2col简介 im2col.cpp源码 小结 参考 @(Caffe源码-im2col操作) im2col简介 caffe的卷积操作中使用im2col来加速,im2col将卷积核中的每个点在图像上的对应点全都提取出来按行排列,得到一个矩阵,这样就将卷积操作转化为矩阵进行操作。 如上图所示的,假设输入图像的形状为 channels=1, height=width=5 ,并且 pad_w=pad_h=1, kernel_h=kernel_w=3, stride_h=stride_w=2, dilation_w=dilation_h=1 。左侧图中蓝色为padding补充的边界,值均为0,绿色为实际图像的数据。其中卷积核中 \(k_{00}\) 位置在整个卷积操作中共计算了 output_h*output_w=9 次,每次的位置在左侧图中用黑色实心圆标注出来。而im2col操作即是将卷积核上的每个点的这些对应位置上的值都提取出来,按照右侧黄色方格的形式存放起来。这样卷积操作可简单地通过将卷积核(中间的红色方格)展成一个向量,然后与右侧的黄色方格矩阵中的每一列点乘来实现。更详细的说明可查看后面列出来的参考博客。 与im2col对应的是col2im操作,即是将矩阵还原成卷积前的图像的形状,不过caffe代码中的 col2im_cpu() 函数还稍微有些改动。 im2col.cpp源码