自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 资源 (4)
  • 收藏
  • 关注

原创 分别在windows和linux上编译cjson为动态链接库,用在loadrunner中解析json

最近的性能测试中,压测的某些接口返回的数据是一个复杂的json格式的字符串,而后续的接口中又需要把这个字符串修改后作为入参,自己处理起来比较麻烦。于是想到了把cjson编译成动态链接库在loadrunner的脚本中调用。另外,由于实际压测用的是部署在linux上的负载机,还需要再编译一个linux上的动态链接库。这样在调试时使用windows平台的dll,而在压测时使用linux平台的so。

2017-11-20 22:09:32 4430 5

原创 在linux上用docker安装loadrunner generator

一开始安装网上的教程在linux上安装loadrunner-generator,可惜一直没安装成功。后来发现HP官方已经提供了打包好的docker镜像,使用起来比自己安装方便多了。官方提供的镜像是12.5版本的,不过亲测11.0和12.5版本的controller都可以连接。 这里假设你了解docker相关知识,并且机器里已经安装了docker。链接 1. 从官网拉镜像 docker pull

2017-11-13 20:23:02 1860

原创 python通过定制路径的方式解析接口返回数据

该问题基于http://stackoverflow.com/questions/7320319/xpath-like-query-for-nested-python-dictionaries的讨论,源码来自于pyresttest的实现。问题:在做接口测试时,经常需要检查返回的json数据中某个字段是否符合预期。固然可以在代码里写死要检查的字段,但不太灵活,希望能用路径的方式来访问字段。例如如下

2017-10-22 20:31:58 657

原创 使用sed提示错误unterminated `s' command

我需要将一个文件中的某个字段,替换成python脚本生成的字符串。考虑到自己实现比较麻烦,我决定采用sed命令。 但无论是在python中调用系统命令,还是导出生成的字符串,在shell中执行sed,都会报错,提示 sed: -e expression #1, char 11: unterminateds’ command` 一开始怀疑是中文编码的问题,因为字符串中包含中文,但去掉中文仍然报错

2017-08-17 09:15:04 8236

原创 googletest初探(一) 源码中的例子

GTEST前言最近打算在项目中使用gtest来做一些移动端接口自动化的测试,在网上查了一些资料,发现最详细的是玩转Google开源C++单元测试框架Google Test系列,除此外基本上没有介绍在移动端应用的。于是决定把自己学习的过程记录下来。安装从github上下载源码,不再多说链接。 我们先在windows上学习一下gtest的运行。 1. 打开googletest/msvc,使用visu

2017-03-26 21:22:45 430

原创 把VIM打造成python开发环境

vundle安装自动补全工具YouCompleteMe

2017-03-03 01:11:59 6178

原创 django学习

django学习django学习django支持mysqldjango支持post使用gunicorn部署django使用apache部署djangodjango支持mysql安装mysql安装MySQLdbsudo yum install MySQL-python修改settings.pyDATABASES = { 'default': { 'ENGINE':

2017-01-04 18:07:42 428

转载 vs2010中添加lua

VS2010取消了08之前在options里面添加第三方库目录的设置,新的设置方法如下:View->Property Manager, 在Property Manager框里面有Debug|Win32和Release|Win32选项,打开任意一个Microsoft.Cpp.Win32.user会弹出Microsoft.Cpp.Win32.user Property Page

2013-08-17 21:01:53 3455

原创 类继承中的重载问题

exceptional C++ 上看来的。#include #include using namespace std;class base{public: void f(int){ cout<<"f(int)"<<endl; } void f(double){ cout<<"f(double)"<<endl; }};

2013-05-17 20:25:09 643

原创 线程的三种同步机制

线程的三种同步机制:互斥:变量名为:pthread_mutex_t初始化与销毁:如果是静态分配的互斥量,可以设置为常量 PTHREAD_MUTEX_INITIALIZER如果是动态分配的互斥量,则在销毁内存之前要调用pthread_mutex_destroyint pthread_mutex_init(pthread_mutex_t *, NULL);

2013-04-17 12:18:33 776

原创 动态数组与普通数组在内存分配上的区别

//// main.cpp// test//// Created by Cong on 13-3-24.// Copyright (c) 2013年 liuchyin. All rights reserved.//#include #include using namespace std;int main(){ //int **matrix = new

2013-04-15 11:42:18 790

转载 const相关

const int nValue; //nValue是constconst char *pContent; //*pContent是const, pContent可变const char* const pContent; //pContent和*pContent都是const2)const在后面,与上面的声明对等int const nValue; //nValue是

2013-04-04 19:40:40 462

转载 python中xrange和range的异同

原文链接:http://ciniao.me/article.php?id=17range    函数说明:range([start,] stop[, step]),根据start与stop指定的范围以及step设定的步长,生成一个序列。range示例: >>> range(5) [0, 1, 2, 3, 4] >>> range(1,5) [1, 2, 3, 4] >>

2013-03-26 22:27:09 487

转载 Python的函数参数传递:传值?引用?

作者:winterTTr (转载请注明)我想,这个标题或许是很多初学者的问题。尤其是像我这样的对C/C++比较熟悉,刚刚进入python殿堂的朋友们。C/C++的函数参数的传递方式根深蒂固的影响这我们的思维--引用?传值?究竟是那种呢。呵呵,语言的特性决定了是使用的方法,那么,现在我们来探究一下python的函数参数传递方式。在开始之前,我们有必要分清一下pytho

2013-03-26 12:51:17 916

原创 STL map: [] 还是find

在map中操作元素时,我习惯与使用[],例如:map m;m[1] = 1;m[1]++;但是,今天在研究STL源码时,发现这样可能会影响效率。T& operator[](const key_type& k){return (*((insert(value_type(k, T()))).first)).second;}也就是说operator[]是调

2013-03-12 15:36:29 748

原创 使用STL map 时遇到的两个问题

(1) 重载map的comparemap的定义为map昨天想重载Compare, 使得在一个以pair作为key的map中, 与能被认为是相同的key。 函数在逻辑上很容易实现,但是程序一直编译不过。后来参照网上的资料,发现了几个问题:#include #include using namespace std;class compare{public:

2013-03-12 15:18:23 930

转载 C++中struct与class的区别

一、 C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能。    struct能包含成员函数吗?   能!    struct能继承吗?          能!!    struct能实现多态吗?       能!!!      最本质的一个区别就是默认的访问控制,体现在两个方

2013-03-08 16:21:02 478

原创 数组名与指针,一个有意思的区别

int getSize(int data[]){ return sizeof(data);}int main(){ int data[] = {1, 2, 3, 4, 5}; cout<<sizeof(data)<<" "; int*data; cout<<sizeof(data)<<" "; cout<<getSize(data)<<end

2013-02-25 15:40:46 305

原创 仿函数

#include #include #include #include using namespace std;class Cmp{public:    bool operator()(int a,int b)const{        return a > b;    }};int main(){    int a[]

2013-01-10 16:02:12 379

原创 函数的参数默认值

#include using namespace std;int a(int p1 = 0, int p2 = 0){ cout<<p1<<" "<<p2;}int a(int p1 = 0){ cout<<p1<<endl;}int main(){ a(1); return 0;}虽然一直没用过默认参数值的功能,今天突然

2012-11-19 22:36:12 482

原创 STL中的容器map:不要用指针做键值

我不知道会不会有人跟我犯同样的错误。我只能说,这个bug实在太奇葩了。这两天在跑trace时发现,同样的参数下重复运行,第一次的数据总是跟后面几次有很大出路。一开始觉得是随机数的关系,但心里总有些不安。试着重复运行了10次,果然第一次跟后面9次的数据有明显不同,delivery rate大概有5%的差距。于是我怀疑会不会是结果之间有干涉,例如用来保存结果的数组之间由于编码的问题

2012-11-04 20:26:08 2510

转载 vector中resize与reserve的区别

vector 的reserve只是增加了vector的capacity,但是size没有改变!resize同时改变了vector的capacity和size!reserve是容器预留空间,但并不真正创建元素对象,在创建对象之前,不能引用容器内的元素,因此当加入新的元素时,需要用push_back()/insert()函数。resize是改变容器的大小,并且创建对象,因此,调用这

2012-11-03 12:58:37 322

原创 erase-remove删除容器元素

c.erase(remove(c.begin(), c.end(), 1963), c.end());// 当c是vector、string或deque时,erase-remove惯用法是去除特定值的元素的最佳方法remove函数的作用是,将所有等于T的元素(这里是1963)移动到容器的最后,然后返回一个新的end(),同时也是这些被移动的元素的起始位置。然后就可以使用erase函数删除这些元

2012-11-01 15:46:02 515

原创 使用STL进行文件输入

今天在读电子版的effective STL,无奈正版没有中文的,所以只能看网友翻译的版本。在第六条中,学到了用STL做文件输入,真是太方便了。#include #include #include #include using namespace std;int main(){ ifstream dataFile("input.txt"); if(!dat

2012-10-31 22:19:33 811

原创 C++中数组的初始化

今天在改大一学生的C++作业时,有个学生这么给数组初始化:array[8] = {0};直觉上觉得这样不对,因为C++里不允许用这种形式给所有的元素赋值。但是试了一下,的确是给所有的数组元素初始化为0了。于是回忆了一下数组初始化的规定。在C++中,利用花括号给数组初始化,如果花括号中给的初始值的个数不够,则会自动将未给出初始值的元素赋0。因此这样的赋值在结果上对的。例如array[

2012-10-30 19:59:30 16514 3

原创 不能被继承的类

看到一道有意思的题目:用C++设计一个不能被继承的类。尝试了一下,需要声明一个私有的默认构造函数,这样这个类就不能被继承。但这个类还需要另外声明带参数的公共的构造函数才能被使用。不知道答案是不是这样。

2012-10-14 15:10:50 430

原创 STL学习笔记(三) 堆的操作

今天在写simulator的时候,需要找出M个数中N个最大的数。想起上次和面试官讨论过可以用堆来实现,就查了一下,果然在STL中已经有现成的堆模板。make_heaptemplatevoid make_heap(RandomAccessIterator first, RandomAccessIterator last);templatevoid make_heap(Ra

2012-10-05 14:18:49 594

原创 ostream_iterator

无意中看到ostream_iterator这个函数,还是挺有意思的。网上搜了一下,找到一个简单的解释:流迭代器是标准模板库中的。因此是类模板。ostream_iterator指定了类型,就是迭代器读写的类型。通过这个流迭代器可以把你要输入的写入到指定的流中。cout就是指定的流。就是标准输出。可以改成一个输出流就可以,比如一个文件。通俗的一点说,你把它看成一个指向输出流的指针。

2012-06-01 20:19:24 838

转载 socket

【IP地址转换函数】 点分十进制   整数  inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。{    #include   #include   #include       // arpa/inet.h:提供IP地址转换函数}sys/types.h:数据类型定义sys/socket.h:提供so

2012-06-01 20:00:08 329

原创 STL学习笔记(二) 会改变操作对象内容的算法

拷贝某个区间copy(InputIterator first, InputIterator last, OutputIterator result)将range1的内容复制到[result, result + (last - first)copy_backward(BidirectionalIterator1 first, BidirectionalIterator1 last, Bi

2012-05-19 11:46:54 463

原创 STL学习笔记(一)不改变操作对象内容的算法

线性查找find(InputIterator first, InputIterator last, const T EqualityComparable& value);找到range中与value值相等的第一个值的iteratorfind_if(InputIterator first, InputIterator last, Predicate pred);找到range中满足p

2012-05-06 22:09:27 328

转载 基于对象与面向对象【转】

面向对象的三大特点(封装,继承,多态)缺一不可。通常“基于对象”是使用对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说“基于对象”没有继承的特点。而“多态”表示为父类类型的子类对象实例,没有了继承的概念也就无从谈论“多态”。现在的很多流行技术都是基于对象的,它们使用一些封装好的对象,调用对象的方法,设置对象的属性。但是它们无法让程序员派生新对象类型。他们只能使用现有

2012-04-27 16:46:24 318

原创 const对象不能被引用

例如:class cl{public:inline cl(){}inline cl(int a){this->a = a;}int getA(){return a;}void copy(cl &c2){a = c2.a;}private:int a;};int main(){const int a = 10;

2012-04-27 14:10:16 612

原创 数组作为函数参数

通过引用传递数组和其他类型一样,数组形参可以声明为数组的引用。如果形参是数组的引用, 编译器不会将数组实参转化为指针,而是传递数组的引用本身。在这种情况下,数组的大小成为形参和实参类型的一部分。编译器检查数组实参的大小与形参的大小是否匹配:void printValues(int (&arr)[10]);void printfValues(int (&arr)[3][10]);

2012-04-26 15:49:34 295

原创 关于函数调用中的const参数

有几个需要注意的地方:1.返回引用例如:const string &shorterString(const string &s1, const string &s2){ return s1.size() < s2.size() ? s1 : s2;}形参和返回类型都是指向const对象的引用,调用函数和返回结果时,都没有复制这些string对象。试着运行了一

2012-04-23 22:10:07 393

cjson编译好的动态链接库,so和dll,32位

cjson编译好的动态链接库,so和dll,32位,可以在loadrunner中直接使用

2017-11-20

第一本DOCKER书 修订版

第一本DOCKER书 修订版,pdf版,带书签

2017-08-09

Selenium 2自动化测试实战 基于Python语言

Selenium 2自动化测试实战 基于Python语言,pdf版,带书签

2017-08-09

Robot Framework自动化测试修炼宝典 中文

Robot Framework自动化测试修炼宝典 pdf版,带书签

2017-08-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除