shell脚本实用初级入门二

最近朋友用shell写自动化测试脚本, 请求接口并处理一些逻辑。我写的也不多,只能边查边给他提供帮助。

以下就是这个过程形成的知识点【发现shell又强大,又弱小[笑哭]】

0、把数组转成字符串
本以为像其他语言,有现成的方法直接转换,比如PHP的implode(), Golang的strings.Join(strSlice, “,”)

结果发现Shell并没有,沮丧~
继续阅读

Go语言map声明和初始化小结

2年前用过一段时间Go语言,最近用map测试一些功能的时候,编译各种报错。时间长了语法有些陌生是一个原因,另一个主要原因是之前没有全面掌握。

这里就简单小结map的声明和初始化的方法。

你可能也知道map的声明和初始化方法有两种, 直接初始化和使用make,如下

var m1 map[int]int = map[int]int{1: 100, 2: 200}
var m8 map[int]int = make(map[int]int, 10)

第一部分 描述

这里重点对全局map变量和局部变量展开说明,分三种情况
继续阅读

Android和iOS设备保存文件文件名带冒号的问题

0、问题描述
遇到了一个很奇怪的问题,微信发朋友圈,选择相册中的图片,识别不出来,发送提示失败。

图片是通过手机客户端生成后,保存在本地相册的。Android手机有这个问题,iOS没有。

Android保存逻辑:
0.0、传递给客户端的如果是url,客户端会获取url中的文件名,然后保存在本地。
0.1、传递给客户端的如果没有文件名,比如是base64格式的图片,客户端会生成一个文件名。

iOS保存逻辑:
0.2、客户端不管什么情况都会通过md5加密生成文件名,是系统本身的功能。(据说传了文件名对文件名md5, 没传文件名会有系统默认的算法)

继续阅读

Redis及PHP Redis扩展安装笔记

把2年前整理的笔记放在这里,仅供查阅。

一、Redis安装
0、下载
在Redis官网的下载页面,我们只能下载最新的版本。
如果要查看下载历史版本,可以进入官网的这个页面http://download.redis.io/releases/(没有在官网找到这个链接的入口)

wget http://download.redis.io/releases/redis-5.0.5.tar.gz
tar xzf redis-5.0.5.tar.gz

继续阅读

TCP三次握手四次挥手笔记

TCP是一个面向连接的协议,通信双方传输数据之前,必须建立连接。TCP建立连接和断开连接的策略,可以分不同层次的掌握,这里大致分4层。

一、通俗化的描述
建立TCP连接
服务器A和服务器B通信,建立连接比较好理解的比喻:
服务器A:你好服务器B,我是服务器A。
服务器B:你好服务器A,我是服务器B。
服务器A:服务器B,你好。

断开TCP连接
设定服务器A是主动结束方
服务器A:你好, 我的数据发送完毕了,我要进入准备断开的状态了。(此时它虽然不再发送数据了,但是可以接受数据)
服务器B:我知道了,我还没有发送完毕的,你等着吧。
服务器B:我也发送完毕了,可以断开连接了。(此时它也进入准备断开的状态)
服务器A:好的,那断开吧。
继续阅读

定位问题思考

今天遇到了一个线上问题,具体是啥就不细说了。

思考了很久,重新梳理了下解决问题的思路:

0、出了问题,观察分析日志,是基本手段,是大家都知道的。此外,往往我们需要增加一些日志,打印出运行中的参数。观察新增日志的时候,尽量用真实的环境是触发生成日志,并且你的动作跟你的日志要对应起来,而不是模拟请求。比如客户端内H5页面的问题,用PC浏览器去模拟请求。

1、对于偶现的问题,有一定概率是集群中部分机器的问题,不要轻易推给网络,说是网络问题。要跟踪一个请求,从头到尾往下捋,一环一环排除。

图解HTTP笔记

《图解HTTP》用大量生动的图片,轻松、完整的讲解了一遍HTTP协议, 比那本大部头《HTTP》容易通读。2年之前看过,今天又翻看了下,有常看常新的感觉,特作一些笔记。

0、协议是计算机和网络设备之前通信的规则。规则的内容包含,如何探测到通信目标、由那一方先发起通信、怎么结束通信、使用那种语言通信等。

1、互联网是在TCP/IP协议族的基础上运作的,而HTTP属于它内部的一个子集。

2、TCP/IP通过分层管理协议,分4层即应用层、传输层、网络层、数据链路层。分层之后设计简单,每层只考虑自己层的任务,另外方便局部调整层的设计。

3、发送端数据包经过封包过程到达接送端,接收端经过拆包过程,把数据包送到接收端应用程序。
继续阅读

GC及PHP GC学习笔记

一、认识GC
Garbage Collection,垃圾回收,缩写GC, 是计算机科学中一种自动内存管理机制,通常也说是垃圾回收机制和垃圾回收器。是美国科学家John McCarthy与1959年发明用于Lisp内存管理。

简单说GC的作用就是把内存中程序不在使用的对象(称为垃圾)释放,归还给内存。这个过程实际上分为两步,
第一步:识别收集垃圾
标示出内存中哪些对象是垃圾。
常用算法
0、引用计数算法(Reference counting)

0.0 为每个存储对象附加一个计数器
0.1 当有其他数据与当前对象关联时计数器+1
0.2 关联解除时计数器-1
0.3 定期检查各存储对象的计数器,为0的将物理空间回收。

缺陷:无法回收循环引用的存储对象。

继续阅读