Python高阶编程
Python高阶编程列表表达式(List Comprehension)比如我有如下函数,用来输出一个单词中的所有字符:
123456789def output_letter(letter): l = [] for item in letter: l.append(item) return lif __name__ == '__main__': print(output_letter("hello"))
输出结果:
Python 觉得这样写代码行数太多了,不优雅,于是有了如下的写法:
1[expression for item in list]
对应于我们的函数就变成了:
1234567def output_letter(letter): return [l for l in letter]if __name__ == '__main__': print(output_letter("hello"))
输出结果:
是不是瞬间少了很多代码,逻辑也更清晰?不仅如此,Python 还允许我们在列表表达式中进行判断。
1[expression ...
OSI互联网参考模型
网络层次划分为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了”开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。其中第四层完成数据传送服务,上面三层面向用户。
关于七层网络模型中的每一层,都是为了解决网络中的某一个或某些问题。每一层的目的,可以参考下图中的描述。针对软件测试人员来说,我们在工作或面试中,常会接触到的就是传输层(TCP、UDP)和应用层(HTTP、HTTPS等)。
除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协 ...
TCP/IP 和 UDP
OSI的”实现“:TCP/IPTCP/IP四层概念模型是目前较为常用的一种网络模型,相较于OSI七层网络模型,只是对比OSI将七层减少为四层。
TCP/IP先自上而下,后自下而上处理数据头部
网络传输过程数据在网络传输的过程中,本质是一个封装和解封装的过程。例如:用户使用浏览器向百度服务器发送请求过程中,就是用户的数据从应用层一路封装到物理层,服务器得到物理层的比特流后,一路解封装得到对应数据。同理,服务器响应给用户的数据,也是服务器先一路封装,然后用户再一路解封。
定义
TCP/IP 是供已连接因特网的计算机进行通信的通信协议。
TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Protocol)。
TCP/IP 定义了电子设备(比如计算机)如何连入因特网,以及数据如何在它们之间传输的标准
TCP协议概述TCP协议:传输控制协议,就是对数据的传输进行一定的控制。关于TCP数据报文格式如图所示,关于TCP头部信息详细数据可以参考链接:(传输层)TCP协议。
TCP三次握手传输控制协议TCP简介
面向连接的 ...
Socket
定义
Socket – 本意”插座”,在网络编程中表示用于通信的逻辑载体/端点,俗称“套接字”。
是对TCP/IP协议的抽象,是操作系统对外开放的API。
服务端
创建ServerSocket类型的对象,并绑定参数指定的端口号。
等待客户端的连接请求,调用accept()方法。
得到Socket类型的对象并使用输入输出流进行通信。
关闭Socket并释放有关的资源。
客户端
创建Socket类型的对象,并提供服务器的IP地址和端口号。
使用输入输出流进行通信。
关闭Socket并释放有关的资源。
简介Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口
Socket通信流程
Socket相关的面试题编写一个网络应用程序,有客户端与服务器端,客户端向服务器发送一个字符串,服务器收到该字符串后将其打印到命令行上,然后向客户端返回该字符串的长度,最后,客户端输出服务器端返回的该字符串的长度,分别用TCP和UDP两种方式去实现
在IDEA的工程中创建socket的包
TCP通信代码实现123456789101112131415161718192021222324252627 ...
Python基础用法
Python基本功Python的标准数据类型有
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)
12345678910#定义数字变量total_num = 100#定义字符串变量welcome_words = "欢迎来到蔡超的测试开发课"#定义列表。列表元素可修改,也可以添加删除student_list = ["Kevin", "Emily", "Ray"]#定义元组(元组与列表类似,区别在于元组的元素不能修改)unique_student = ("Kevin", "Emily", "Ray")#定义字典,字典一般是key-value结构course_rank = {"math": "Kevin", "logic": "Emily", "English": "Ray"}
List 常用操作
计算列表元素个数
语法:len(list)
举例:
12345>>> list = [2, 5, 3, 7, 1]>>> list[2, 5, 3, 7, 1]>>> ...
HTTP/HTTPS
HTTP简介
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种应用层的网络传输协议,所有的WWW文件都必须遵守这个标准。
HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
http协议无状态,无连接。无连接的含义就是限制每次连接只处理一个请求,收到应答后即断开。但据说这个是http1.0。
1.1相比1.0 引入 keep-alive:长链接。
2.0 升级成本太高,推广难。
HTTP协议概述HTTP协议:超文本传输协议,是基于TCP的协议,默认为80端口。它的作用是用来规定客户端和服务器的数据传输格式。是一种用于请求与响应模式的、无状态、无连接 的应用层协议。由于HTTP协议是一种请求-响应模式,所以一般需要关注HTTP请求和HTTP响应。
超文本传输协议HTTP主要特点
支持客户/服务器模式
简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服 ...
Linux之系统操作篇
Linux之系统操作篇连接服务器
mac/linux系统,在终端执行命令
1ssh -p22 username@host
密码输入时看不到内容
Windows系统,推荐下载Xshell
帮助命令为什么要学习帮助命令
Linux的基本操作方式是命令行
海量的命令不适合“死记硬背”
通过使用帮助命令查看命令的具体使用
man
man是manual的缩写
使用演示
12# 查看ls命令的帮助文档[root@linux lvjing]# man ls
man也是一条命令,也可使用man命令获得man的帮助,man分为9个篇章
12345# 查看man的帮助命令[root@linux lvjing]# man man# 查看man第7个篇章的命令[root@linux lvjing]# man 7 man
命令的描述里面会讲解命令有多少章节,根据指定的章节查看命令的不同章节的说明
1234567891011121314151617# 目前有如下情况,passwd在Linux中存在命令和配置文件[root@linux etc]# ll /etc/ | grep passwd-rw-r ...
Linux top命令
Linux top命令top 命令能够实时监控系统的运行状态,并且可以按照 CPU、内存和执行时间进行排序,同时 top 命令还可以通过交互式命令进行设定显示,通过 top 命令可以查看即时活跃的进行。
命令使用方式命令:top -hv | -bcisSHM -d delay -n iterations [-u user | -U user] -p pid [,pid ...]
使用权限:所有使用者
说明:显示实时监控行程 (process) 的动态
参数:top的参数非常多, 以下列出常用参数
-b : 批次模式运行。通常用作来将 top 的输出的结果传送给其他程式或储存成文件
-c : 显示执行任务的命令行
-d : 设定延迟时间
-h : 帮助
-H : 显示线程。当这个设定开启时,将显示所有进程产生的线程
-i : 显示空闲的进程 -n : 执行次数。一般与-b 搭配使用
-u : 监控指定用户相关进程
-U : 监控指定用户相关进程
-p : 监控指定的进程。当监控多个进程时,进程 ID 以逗号分隔。这个选项只能在命令行下使用
-s : 安全模式操作
-S: 累计时间模式 ...
Shell典型应用
#主控制脚本实现
Shell场景脚本
提取Linux操作系统信息
获取操作系统运行状态
分析应用状态
应用日志分析
VIM编辑器设置
为什么要设置VIM编辑器
友好的设置VIM编辑器,能更加方便、快捷的提高Shell语言编程效率
设置方式分类
临时性的设置
永久性的设置(修改vimrc文件,本章主要介绍该方式)
1234567891011121314[root@lvjing ~]# cat /etc/vimrcif v:lang =~ "utf8$" || v:lang =~ "UTF-8$" set fileencodings=ucs-bom,utf-8,latin1endifset nocompatible " Use Vim defaults (much better!)set bs=indent,eol,start " allow backspacing over everything in insert mode"set ai " always set autoindenting on"set backup " keep a backup filese ...
Shell变量高级用法
变量替换
语法
说明
${变量名#匹配规则}
从变量开头进行规则匹配,将符合最短的数据删除
${变量名##匹配规则}
从变量开头进行规则匹配,将符合最长的数据删除
${变量名%匹配规则}
从变量尾部进行规则匹配,将符合最短的数据删除
${变量名%%匹配规则}
从变量尾部进行规则匹配,将符合最长的数据删除
${变量名/旧字符串/新字符串}
变量内容符合旧字符串,则第一个旧字符串会被新字符串取代
${变量名//旧字符串/新字符串}
变量内容符合旧字符串,则全部的旧字符串会被新字符串取代
变量替换练习删除123456789101112131415[root@localhost ~]# variable_1="I love you.Do you love me"[root@localhost ~]# echo $variable_1I love you.Do you love me[root@localhost ~]# var1=${variable_1#*ov}[root@localhost ~]# echo $var1e you.Do you love m ...