自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 问答 (2)
  • 收藏
  • 关注

原创 《Go语言入门经典》19~21章读书笔记

第19章创建HTTP客户端19.2 发出GET请求Go语言在net/http包中提供了一个快捷方法,可用于发出简单的GET请求。使用这个方法意味着不需要考虑如何配置HTTP客户端以及如何设置请求报头。如果只是要从远程网站获取一些数据,那么默认配置完全够用。package mainimport ( "net/http" "fmt" "io/ioutil" "log")func main(){ response, err := ht

2020-07-06 16:44:46 281

原创 《Go语言入门经典》16~18章读书笔记

第16章调试16.1 日志日志并非为报告Bug而提供的,而是可供在Bug发生时使用的基础设施。Go语言提供了log包,让应用程序能够将日志写入终端或文件。下面是一个简单的程序,它向终端输出一条日志消息。package mainimport ( "log")func main() { log.Printf("This is a log message");} 运行结果2020/06/30 19:26:59 This is a log message要将日志写入文件

2020-07-02 16:05:19 183

原创 《Go语言入门经典》13~15章读书笔记

第13章使用包实现代码重用13.1 导入包Go程序以package语句打头。main包是一种特殊的包,其特殊之处在于不能导入。对main包的唯一要求是,必须声明一个main函数,这个函数不接受任何参数且不返回任何值。简而言之,main包是程序的入口。在main包中,可使用import声明来导入其他包。导入包后,就可使用其中被导出的(即公有的)标识符。在Go语言中,标识符可以是变量、常量、类型、函数或方法。这让包能够通过接口提供各种功能。举一个函数导出的例子,strings包导出了函数ToLower,

2020-06-30 18:07:49 230

原创 《Go语言入门经典》10~12章读书笔记

第10章处理错误10.1 错误处理及Go语言的独特之处在Go语言中,一种约定是在调用可能出现问题的方法或函数时,返回一个类型为错误的值。这意味着如果出现问题,函数通常不会引发异常,而让调用者决定如何处理错误。package mainimport ( "fmt" "io/ioutil")func main() { file, err := ioutil.ReadFile("foo.txt"); if err != nil{ fmt.Printl

2020-06-24 11:49:41 213

原创 《Go语言入门经典》7~9章读书笔记

第7章 使用结构体和指针7.1 结构体是什么结构体是一系列具有指定数据类型的数据字段,它能够让您通过单个变量引用一系列相关的值。通过使用结构体,可在单个变量中存储众多类型不同的数据字段。通过使用结构体,可提高模块化程度,还能够让您创建并传递复杂的数据结构。package main

2020-06-22 17:28:02 215

原创 《Go语言入门经典》4~6章读书笔记

第4章 函数4.1 函数是什么4.1.2 返回单个值func isEven(i int) bool{ return i % 2 == 0;}4.1.3 返回多个值在Go语言中,可在函数签名中声明多个返回值,让函数返回多个结果。在这种情况下,终止语句可返回多个值。func getPrize()(int, string){ i := 2 s := "goldfish" return i,s}调用这个函数时,可直接将返回值赋给变量并使用它们。fun

2020-06-18 15:52:16 242

原创 《Go语言入门经典》1~3章读书笔记

第1章 起步1.4.1 使用go run编译并运行程序go run main.go在开发go代码时,go run提供了一种便利的方式编译并运行程序。第2章 理解类型go是一种静态类型语言2.2 区分静态类型和动态类型在go中,程序员可显式地声明类型,也可以让编译器推断类型。2.3 使用布尔类型可以像下面这样声明布尔类型var b bool如果没有给布尔变量赋值,它将默认为false。2.4 理解数据类型2.4.1 带符号整数和无符号整数在go语言中,声明整型的方式如下:va

2020-06-17 15:41:49 220

原创 编写自己的newman reporter

1. newman?report?1.1 newman是什么newman时一款基于Node.js开发的可以运行postman的工具,使用Newman可以直接从命令行运行postman集合。更多介绍可以参看这里。1.2 reporter是什么reporter决定了newman输出的形式,不同的repoter以不同的形式输出newman的执行结果。如果自带的reporter和第三方report...

2020-05-07 18:23:01 801

原创 postman的命令执行工具--newman

1. 什么是newmannewman时一款基于Node.js开发的可以运行postman的工具,使用Newman可以直接从命令行运行postman集合。2. 安装要求Node.js >= v10npm install -g newman3. 基本使用3.1 从postman导出测试集右键点击想导出的集合,点击export,可以将测试集导出json。导出的文件版本,按系统推荐...

2020-04-24 15:02:42 870

原创 快速上手postman测试

0. test的构成一个标准test的写法如下:pm.test("test name", function () { //测试逻辑});它由两部分构成:test name. 这个name会出现在你的测试报告中function. 这部分包含你的居体测试逻辑(解析数据,断言等等)一个具体的例子如下:pm.test("http code is 200", function ...

2020-04-17 14:39:42 697

原创 细说postman变量中的local

关于local变量,手册中的原文如下:Local variables are temporary, and only accessible in your requestscripts. Local variable values are scoped to a single request orcollection run, and are no longer available whe...

2020-04-16 15:23:35 1148

原创 postman脚本执行顺序

一. 单一请求中脚本的执行顺序单一请求中,我们可以设置pre-request, test两个脚本。其执行顺序如下图所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NsLMNM95-1582258399109)(https://assets.postman.com/postman-docs/req-resp.png)]pre-request脚本发送请求...

2020-02-21 12:15:36 2885 1

原创 php7.4 preload(预加载)

1. 什么是preload什么是preload?Preloading in PHP 7.4中有一句话总结的简单到位:Opcache, but more!那么preload比opcache多做了哪些呢?为了更好的说明问题,我们先来看下面这张opcache的工作原理图。图中不难看出,对于执行过的代码,再次执行时将命中cache,cache中的opcode可以直接被取出,进而执行。从而省了下...

2019-12-12 10:12:14 2671

原创 git tag

1. tag是什么如果用过svn,你一定对tag不陌生。通常版本上线前,我们会对相应的代码打一个tag,将其封存起来,就如同一个代码快照。2. 常用操作2.1 创建taggit tag -a <tag名称> <commit hash> -m <备注信息>例:git tag v6.2.1 6b2d5ffc -m "皮肤盒子"commit hash...

2019-11-15 18:46:09 242

原创 yapi中mock jsonp接口响应的方法

1. 问题yapi具有强大的mock能力,但是它是否可以mock jsonp请求呢?2. 尝试2.1 yapi端的准备普通的json schema和期望方式,都只能返回json,无法在返回中增加callback函数名。我们尝试使用“高级mock”中的“脚本”完成这个功能。如下图所示,注意“是否开启”的部分一定要打开。Mock脚本如下:var cb = params.callback;...

2019-04-08 19:02:50 1838

原创 phpunit中执行指定测试case的方法

一. 问题一个测试文件中,可能包含多个case,如何只执行其中的某个或某几个case呢?比如下面的这段测试代码(demotest.php),是否可以只执行针对FuncA的两个测试~testFuncA_1,testFuncA_2呢?<?phpuse PHPUnit\Framework\TestCase;class Unittest_Demo extends TestCase{ ...

2019-03-20 16:36:20 3183

原创 post提交数据的常见方式及php对应的接收方法

post提交数据的方式,主要体现在http协议头上的Content-Type字段,不同的Content-Type对应不同的http请求体,与之相应的php接收数据方法也不同。1.application/x-www-form-urlencoded1.1发送html中的form表单,如果不设置enctype属性,就默认用该方式提交数据。发送的http请求类似:POST http://exam...

2019-02-21 18:34:47 3935

原创 yapi中的高级mock--期望

1. 功能测试时,经常需要根据不同的请求参数和IP返回不同的HTTP 状态码、HTTP头、JSON数据等。期望就是根据设置的请求过滤规则返回期望数据。2. 为接口添加期望首先选中一个接口,点击“高级Mock”,再点击“添加期望”,可以看到类似下图的弹出窗口。所填写的信息分为两部分:基本信息,响应。2.1 基本信息此处可以添加IP过滤规则和参数过滤规则。如果你添加了IP过滤,则意...

2019-02-02 17:31:19 8837

原创 yapi中使用json-schema mock数据

1. 基本的json-schema mock首先,我们建立一个简单的json-schema,如下图所示:该schema定义了一个返回结构,包括两个字段,data为string类型,code为integer类型。点击“预览”,可以看到类似下面的mock数据:{ "data": "non id", "code": -12100200}这就是最基本的mock, 即根据数据类型返回...

2019-01-31 17:57:14 7213

原创 git导出代码的方法~archive

问题如果你用过svn,一定知道svn export,可以用来从代码库中导出一份干净的代码(没有.svn等)。git是否有类似功能呢?git archieve可以用于将库中代码打包。1. 基本用法:git archive --format tar.gz --output "./output.tar.gz" master说明:将master分支打包为output.tar.gz–fo...

2019-01-25 17:49:47 18971 2

原创 《代码整洁之道--程序员的职业素养》(读书笔记)

Robert C.Martin 著第1章 专业主义1.1 清楚你要什么专业主义:它不但象征着荣誉与骄傲,而且明确意味着责任义务与担当。1.3 首先,不行损害之事1.3.1 不要破坏软件功能写一些随时都能运行的单元测试,然后尽可能多地执行这些测试。测试覆盖率尽可能为100%。1.3.2 不要破坏结构结构良好的代码更灵活。以牺牲结构为代价,得不偿失,将来必追悔莫及。如果希望自己的软...

2019-01-14 15:36:17 1204

原创 分析redis key大小的几种方法

当redis被用作缓存时,有时我们希望了解key的大小分布,或者想知道哪些key占的空间比较大。本文提供了几种方法。一. bigKeys这是redis-cli自带的一个命令。对整个redis进行扫描,寻找较大的key。例:redis-cli -h b.redis -p 1959 --bigkeys输出:# Scanning the entire keyspace to find big...

2019-01-08 10:33:17 44039 7

翻译 Redis的OBJECT命令(翻译)

查看原文请点击这里OBJECT subcommand [arguments [arguments …]]2.2.3及以上版本可用时间复杂度:O(1).OBJECT命令允许你从内部查看给定的Redis对象。它对查错很有帮助,同时也让你了解某个key使用了何种编码类型,这对节省存储空间很有帮助。当使用Redis作为缓存时,你可以依据OBJECT命令获取的信息制定key的淘汰策略。OB...

2018-12-29 17:21:11 2539

原创 使用curl控制下载速度

1. 速度控制1.1 php代码方式function http_request($URI){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $URI); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //速度控制 $speed = 100...

2018-12-05 17:11:45 9135

原创 浏量监控工具iftop简易使用说明

一. 用途实时流量监控工具。二. 源码安装wget http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gztar xvzf iftop-0.17.tar.gzcd iftop-0.17./configuremakemake install可能遇到的问题:依赖libpcap及libcurses,如果没有,需要...

2018-12-05 11:06:21 956

原创 跨域ajax请求中的cookie传输问题

CORS是一个W3C标准,全称是&quot;跨域资源共享&quot;(Cross-origin resource sharing)。它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。对CORS协议不了解的同学,可以猛击这里。今天我们来讨论其中的CORS中的cookie传输问题。场景:http://a.com/test.html向http://b.com/t...

2018-10-31 19:25:47 2150

原创 php setcookie对cookie值进行urlencode的问题及解决

1. 问题有如下代码setcookie.phpclass Cookie{ protected $_key = &quot;person&quot;; protected $_val = &quot;name:ball,sex:male&quot;; public function set(){ $duration = 0; $path = &quot;/&quot;;

2018-10-25 18:58:56 2535 1

原创 ES6中的export与import入门

1. 简介ES6在语言规格的层面上,实现了模块功能,而且实现得相当简单,完全可以取代现有的CommonJS和AMD规范,成为浏览器和服务器通用的模块解决方案。ES6 模块不是对象,而是通过export命令显式指定输出的代码,再通过import命令输入。2. 导入导出不同的导出方式对应不同的导入方式。导出可以分为两种:名字导出,default导出。2.1名字导出函数,...

2018-06-28 14:30:00 988

原创 rollup快速入门

1. rollup是什么Rollup 是一个 JavaScript 模块打包器,可以将小块代码编译成大块复杂的代码。2. 安装npm install --global rollup3. 使用示例有如下代码,Person.js是独立模块,我们在main.js中使用它。具体代码如下: /src/Person.jsfunction Person(){ v...

2018-06-27 17:22:06 945

原创 ab发送cookie和post请求的方法

ab是apache自带的压力测试工具,近期需要压测一个接口,涉及使用post请求,并在其中带cookie。方法总结如下:1. 发送cookie方法1-C key1=value1;key2=value2...例:ab -n 1 -C "name=ball;age=99;sex=male" "http://wc.sogou.com/worldcup2018/test...

2018-05-30 17:49:24 6044

原创 使用ffmpeg增删水印

一.获取基本信息ffmpeg -i 文件名 输出类似:Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'a.mp4': Metadata: major_brand : isom minor_version : 1 compatible_brands: isommp42 Duration: 00:03:31.1...

2018-02-24 18:51:06 9766 8

原创 linux下编译安装ffmpeg

安装步骤1. 安装yasmwget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gztar zxvf yasm-1.3.0.tar.gzcd yasm-1.3.0./configure --prefix=/usr/localmakemake install2. 安装ffmpegw...

2018-02-13 18:08:59 3001

原创 redis的MULTI与PIPELINE

对redis的multi和pipeline机制做更详细的分析对比

2018-01-16 14:24:45 6880 2

原创 不重新编译PHP,单独添加扩展模块的方法

问题php自身提供了很多扩展,比如curl,gmp, mbstring等等。我们在编译安装php时未必安装了所有扩展。那么在安装完php后,如果想单独安装某个php自身的扩展怎么办呢?我们以curl扩展模块的安装为例说明如何单独添加扩展。步骤1.进入php源码的扩展目录。本例中我的源码对应目录如下:/search/src/php-7.0.14/ext2.进入模块目录,我们安装的是curl扩展,所以进

2018-01-09 18:10:31 9021

原创 使用tideways绘制php callgraph(profiling)

零. 概述tideways是一款付费的在线应用,其诸多强大功能可见这里。 你可以在官网上注册,并免费使用一个月。如果想继续使用,又不想付费怎么办?答:换个邮箱!本文主要讲述如何用tideways绘制php callgraph(profiling)。 从callgraph上,你可以很清楚的看到: - php函数调用关系 - 每步执行时间 - 函数执行次数并依此对代码进行优化。相比于xdebu

2017-11-10 14:44:54 2080

翻译 php中self与static的区别

原文链接,猛击这里。php中self与static的区别通过一些示例,我们可以很容易看出self和static的区别。假定我们有class Car – 它有两个方法,model和getModel。注意,这里我们使用了关键字self。class Car{ public static function model() { self::getModel(); }

2017-08-18 14:26:34 10568

原创 php中array_merge与array相加的区别

一.array_merge1. 数组键值为字串的情况(hash数组)键名相同的情况下,后出现的元素覆盖先出现的。示例<?php$ary1 = array('name'=>'test', 'age'=>18);$ary2 = array('age'=>3, 'sex' => 'm');$result = array_merge($ary1, $ary2);var_dump($result);输

2017-06-13 11:43:25 1773

原创 使用phpredis批量向sort set中加入元素

问题zAdd, 按文档所述,可以向sort set中加入一个或多个元素。加入多个元素的方式如下:$redis->zAdd('key', score1, 'val1', score2, 'val2', ...);这种api的形式在实际使用中非常的不方便,特别是要批量加入元素时。解决个人觉得,方便的api形式应该接受kv形式的元素数组,数组的每项是val=>score。 代码如下:/* * 批量向s

2017-03-25 11:40:07 5145

原创 shell数组小结

给数组赋值的几种方式array_nmae=(v0 v1 v2…);例:arr=(1 2 3);或者arr=( 1 2 3);注意:等号两边不能有空格2.array_name[i]=v;例:arr[0]=1;arr[1]=2;arr[2]=3;读取数组1.获取其中某个元素 ${array_name[index]}例:arr=(1 2 3);echo ${

2017-02-21 19:11:44 1768

原创 使用strace跟踪多进程程序

简介strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。常用参数-p 跟踪指定的进程-o filename 默认strace将结果输出到stdout。通过-o可以将输出写入到filename文件中-ff 常与-o选项一起使用,不同进程(子进程)产生的系统调用输出到filename.PID文件-r 打印每一个系统调用的相对时间-t 在输出中的每一行前加上时间信息。

2017-02-14 15:38:29 4896

空空如也

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

TA关注的人

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