- 博客(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标准,全称是"跨域资源共享"(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 = "person"; protected $_val = "name:ball,sex:male"; public function set(){ $duration = 0; $path = "/";
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
原创 不重新编译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
空空如也
mysql select *与select具体列的区别
2020-12-21
一个声明js变量时的初级问题
2009-06-14
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅