像Storm一样飞

飞来飞去
私信 关注
Storm啊
码龄13年

QQ群:460430320

  • 545,863
    被访问量
  • 128
    原创文章
  • 13,078
    作者排名
  • 669
    粉丝数量
  • 于 2008-05-08 加入CSDN
获得成就
  • 博客专家认证
  • 获得172次点赞
  • 内容获得107次评论
  • 获得680次收藏
荣誉勋章
兴趣领域
  • #测试
    #测试用例#selenium#postman
TA的专栏
  • 移动端自动化——Appium
    6篇
  • HTTP协议学习总结
    5篇
  • Web自动化测试——Selenium + Python
    1篇
  • Selenium + Python
    49篇
  • Python
    20篇
  • 接口测试
    8篇
  • 性能测试
    30篇
  • 安全测试
  • 前端相关
    16篇
  • 软件部署
    20篇
  • Linux
    20篇
  • 其它
    43篇
  • 数据库
    3篇
我的QQ群:460430320
QQ群: 测试!测试!测试!
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

multipart/form-data & application/x-www-from-urlencoded

1、form-data就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。2、x-www-form-urlencoded就是
原创
100阅读
0评论
0点赞
发布博客于 3 月前

Web UI自动化测试控件练习网址(http://www.stormtest.cn/)

关于Web UI自动化测试的学习,一般会分为几个步骤:1、了解Selenium的历史、原理、演进过程2、学习Selenium的API在这个阶段,当时笔者为了亲自尝试操作各种API,就不得不找各种前端控件,比如:Select、Alert、upload file、日期时间控件(允许输入、不允许输入-readonly属性)等等。寻找控件的过程很痛苦,于是开始自己编写一些HTML,构造各种被测页面。但不能每个学习的同学都搭建一套前端页面吧,于是本着“独乐了不如众乐乐”的想法。上线了一个前端控件页面,方便大家学
原创
221阅读
0评论
1点赞
发布博客于 3 月前

Python3——数组中的高阶方法——reduce

reduce,有减少,降低,归纳的意思。reduce() 函数会对参数序列中元素进行“累积”。函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。reduce语法:reduce(function, iterable[, initializer])参数:function – 函数,有两个参数iterable –
原创
144阅读
0评论
0点赞
发布博客于 5 月前

Python3——数组中的高阶方法——filter

filter 筛选
原创
203阅读
2评论
0点赞
发布博客于 5 月前

Python3——数组中的高阶方法——map

map 映射,将一个可迭代的对象,按照一定的规则,映射成一个新的对象。语法:map(function, iterable, ...)参数function – 函数iterable – 一个或多个序列第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。我们通过几个例子来演示一下用法:(1)自定义个函数,来作用映射b = [1,3,5,7]def abc(x): # 自己随
原创
292阅读
0评论
0点赞
发布博客于 5 月前

Python3——统计字符串中的单词出现的次数

需求:统计一个文件或一个字符串中所有单词出现的次数。由于句子中存在标点符号,直接对字符串切割的话会把单词和标点切割在一起,比如:We met at the wrong time, but separated at the right time. The most urgent is to take the most beautiful scenery!!! the deepest wound was the most real emotions.直接切割的话,如下:['We', 'met', 'at
原创
599阅读
0评论
1点赞
发布博客于 5 月前

Python3——判断字符串类型

1、S.isalpha()判断字符串是否全部是“字母+中文”res = 'aa中国'.isalpha()print(res)运行结果:True那如果只想判断是不是字母呢?res1 = 'aa中国'.encode(encoding='utf-8').isalpha()res2 = 'aa'.isalpha()print(res1)print(res2)运行结果:FalseTrue2、S.isdigit()判断字符串是不是纯数字res1 = '12'.isdigit()
原创
217阅读
0评论
0点赞
发布博客于 5 月前

Python3——列表去重的方法

1.方法一:set去重lst1 = [1,4,4,2,3,4,5,6,1]print(lst1) # [1, 4, 4, 2, 3, 4, 5, 6, 1]print(set(lst1)) # {1, 2, 3, 4, 5, 6}lst2 = list(set(lst1))print(lst2) # [1, 2, 3, 4, 5, 6]可以看到使用set可以方便的去重列表,不过该方法有个弊端,会打乱元素的顺序。那有没办法保持原列表
原创
73阅读
0评论
0点赞
发布博客于 5 月前

6-Appium之终端基本操作

1、安装APP来学第一个API,我们可以简易写法:直接传递路径from appium import webdriverimport timedesired_caps = { "deviceName": "127.0.0.1:7555", "platformName": "Android",}driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)# 安装APPdriver.install_ap
原创
198阅读
1评论
0点赞
发布博客于 6 月前

5-Appium之Inspector识别元素

Appium Inspector识别元素
原创
72阅读
0评论
0点赞
发布博客于 6 月前

4-Appium之uiautomatorviewer识别元素

uiautomatorviewer识别元素
原创
121阅读
0评论
0点赞
发布博客于 6 月前

3-Appium之monkey测试

插播一篇介绍monkey的博客
原创
132阅读
0评论
0点赞
发布博客于 6 月前

2-appium之adb介绍

本节主要介绍adb的概念及常用命令。
原创
153阅读
0评论
0点赞
发布博客于 7 月前

1-appium环境搭建

本文摘要:(1)基本概念介绍(2)环境部署
原创
277阅读
1评论
0点赞
发布博客于 7 月前

关于“测试左移”&“测试右移”

之前写过该话题的博客,但最近在看一些大佬聊天的时候,感觉get到了一些新的思路,拿过来,分享给大家。1、测试左移、右移,可以针对测试团队来说,左移就是尽早的参与项目,从需求阶段就开始参与评审,站在测试角度提出意见或建议;右移就是项目上线成功后,还要做一些测试能做的工作,比如线上的监控等;测试左移和右移强调的是测试工作的全流程参与,相当于全程软件测试,全过程质量控制,把固有的瀑布式对测试所产生的误解进行纠正,使测试的工作内容得到扩展,测试的参与角色也得到扩展。2、测试左移、右移,可以针对项目团队来说,左移
原创
338阅读
0评论
0点赞
发布博客于 10 月前

关于“缺陷逃逸率”的思考

听腾讯大佬讲测试绩效考核,其中一个重要指标为“缺陷逃逸率”;这个我能理解,我在自己团队中做绩效考核,也把“缺陷逃逸率”作为一项关键指标来考核,大约占了35%的比例。不过在实际考核过程中,想要量化这个值比较难,我都偷懒解决了,就是在这个考核周期内根据我接收到的生产问题个数来对每个成员打分。(实际上有很多生产问题我并不知道,由生产问题对接人去处理)很显然这并不十分合理,比如我接收的信息不全面,有的人做...
原创
3182阅读
0评论
2点赞
发布博客于 1 年前

中产焦虑——转

转:https://xueqiu.com/2466538972/127015910中产很焦虑 , 最主要的原因还是不知道怎样掌握生产资料 。所谓中产 , 其实就是社会中受教育程度高一点 , 从事脑力劳动 , 收入比普通劳动人民高一点点的一群人 。但是根本上来说 , 中产是靠出卖自己人力资本来获取回报 , 一旦停止劳动 , 也没有了收入来源 。 所以中产就是无产 。人力资本获取的回报是有上限...
转载
196阅读
0评论
0点赞
发布博客于 1 年前

pytest-运行次序(1)

今天来看下pytest的运行次序(1)准备这样一个测试脚本,test_py_01.pyimport pytestclass Test01: def setup_class(self): print('setup_class') def teardown_class(self): print('teardown_class') de...
原创
510阅读
0评论
0点赞
发布博客于 1 年前

《人生五章》--觉察到自己可能掉进去的深洞的存在是关键

今天想分享一首诗《人生五章》,作者波歇.尼尔森,我个人觉得这是一首很治愈的诗,却也很写实,描述了我们遇到问题的反应以及最终如何去解决这个问题的心理过程。希望你喜欢!人生五章第一章我走上街,人行道上有一个深洞,我掉了进去,我迷失了,我绝望了,这不是我的错,我费了好大的劲才爬出来。第二章我走上同一条街,人行道上有一个深洞,我假装没看到,还是掉了进去,我不能相信我居然会掉在同...
转载
895阅读
0评论
0点赞
发布博客于 2 年前

软件测试右移的概念解析

导言上一篇文章,我们搞明白了测试左移的概念,那测试右移的概念,你应该能大致猜测出来,就是将测试阶段向右扩展到运行维护的阶段。测试右移测试右移是上线后测试同学仍需要关注线上情况,不能认为功能上线测试同学就可以退出了。通过线上监控和预警,及时发现问题并跟进解决,将影响范围降到最低。在开发设计时就要考虑预警功能,系统层(如cpu、内存问题)、应用层(如响应时间)、业务层(如注册率、交易量)等出现异...
原创
905阅读
0评论
0点赞
发布博客于 2 年前

软件测试左移的概念解析

前言在15年左右,测试圈比较流行测试左移、右移的概念。最近又遇到“小伙伴”问我这个问题,那今天就来写一篇博客吧。背景在聊“测试左移、右移”这个概念之前,我们先来了解一下IT行业传统的开发模式,我们都知道,在传统的IT软件研发周期中,有个比较著名的模式叫“瀑布模式”,在这个模式中,项目周期被清晰的分为“制定计划->需求分析->软件设计->程序编码->软件测试->运...
原创
1619阅读
0评论
2点赞
发布博客于 2 年前

谈谈测试覆盖率

以前面试的时候,两次被问到同一个问题,“你是如何计算测试覆盖率的?”,但每次回答都不好,直到最近看了一些文章,有所感悟,总结如下:1 定义测试覆盖率通常被用来衡量测试的充分性和完整性。从广义角度讲,测试覆盖率分为:一、面向项目的的需求覆盖率;二、偏向技术的代码覆盖率;需求覆盖率:指测试对需求的覆盖程度,通常的做法是将软件需求分解成多个测试任务,通过计算完成的测试任务,来得出需求覆盖率;需求...
原创
1437阅读
0评论
1点赞
发布博客于 2 年前

如何看待测试开发比

测试开发比测试开发比是一个比较玄妙的东西。为什么说玄妙呢,请往下看:一般来说,领导层希望通过测试开发比,判断人力资源是否合理;测试人员以及研发人员比例是否失衡;但是,很难通过测试开发比来衡量不同的团队。比如我了解到,360搜索部门测试开发比1:15;京东金融事业部测试开发比1:5;Google测试开发比号称1:10;微软测试开发比号称2:1;差距实在太大了。那是什么造成上述的原因呢?我们来简...
原创
883阅读
0评论
3点赞
发布博客于 2 年前

第6章 HTTP首部(上)

6.1 HTTP 报文首部HTTP 请求报文HTTP 响应报文6.2 HTTP 首部字段6.2.1 HTTP 首部字段传递重要信息6.2.2 HTTP 首部字段结构6.2.3 4 种 HTTP 首部字段类型6.2.4 HTTP/1.1 首部字段一览6.2.5 非 HTTP/1.1 首部字段6.2.6 End-to-end 首部和 Hop-by-hop 首部6.3 HTTP/1....
转载
191阅读
0评论
1点赞
发布博客于 2 年前

RAM和ROM的区别

概念RAM(random access memory)即随机存储内存,这种存储器在断电时将丢失其存储内容,故主要用于存储短时间使用的程序。ROM(Read-Only Memory)即只读内存,是一种只能读出事先所存数据的固态半导体存储器。对比手机中的RAM和ROM分别对应电脑的内存和硬盘,内存负责程序的运行以及数据交换,有了它,电脑中的软件才能运行,并有了进程;而硬盘就是一块存储空间,您可以...
转载
5300阅读
2评论
5点赞
发布博客于 3 年前

第5章 与HTTP协作的Web服务器

5.1 用单台虚拟主机实现多个域名5.2 信数据转发程序:代理、网关、隧道5.2.1 代理5.2.2 网关5.2.3 隧道5.3 保存资源的缓存5.3.1 缓存的有效期限5.3.2 客户端的缓存一台 Web 服务器可搭建多个独立域名的 Web 网站,也可作为通信 路径上的中转服务器提升传输效率。5.1 用单台虚拟机实现多个域名HTTP/1.1 规范允许一台 HTTP 服务...
转载
171阅读
0评论
1点赞
发布博客于 3 年前

第4章 返回结果的HTTP状态码

4.1 状 态码告知从服务器端返回的请求结果4.2 2XX 成功4.2.1 200 OK4.2.2 204 No Content4.2.3 206 Partial Content4.3 3XX 重定向4.3.1 301 Moved Permanently4.3.2 302 Found4.3.3 303 See Other4.3.4 304 Not Modified4.3.5...
转载
220阅读
0评论
0点赞
发布博客于 3 年前

第3章 HTTP报文内的HTTP信息

3.1 HTTP报文3.2 请求报文及相应报文的结构3.3 编码提升传输速率3.3.1 报文主体和实际主体的差异3.3.2 压缩传输的内容编码3.3.3 分割发送的分块传输编码3.4 发送多种数据的多部分对象集合3.5 获取部分内容的范围请求3.6 容协商返回最合适的内容HTTP通信过程包括从客户端发往服务器端的请求以及从服务器端返回客户端的响应3.1 HTTP报文基于H...
转载
181阅读
0评论
0点赞
发布博客于 3 年前

第2章 简单的HTTP协议

2.1 HTTP 协议用于客户端和服务器端之间的通信2.2 通过请求和响应的交换达成通信2.3 HTTP 是不保存状态的协议2.4 请求 URI 定位资源2.5 告知服务器意图的 HTTP 方法2.6 使用方法下达命令2.7 持久连接节省通信量2.7.1 持久连接2.7.2 管线化2.8 使用 Cookie 的状态管理2.1 HTTP 协议用于客户端和服务器端之间的通信HTT...
转载
207阅读
1评论
0点赞
发布博客于 3 年前

写在前面

以《图解HTTP》这本书为学习对象,将里面的干货,加上自己的理解,形成该专栏。请大家支持原创作者,谢谢。
转载
194阅读
0评论
0点赞
发布博客于 3 年前

第1章 了解Web及网络基础

1.1 使用HTTP协议访问Web1.2 HTTP的诞生 1.2.1 为知识共享而规划Web 1.2.2 Web成长时代 1.2.3 驻足不前的HTTP1.3 网络基础TCP/IP 1.3.1 TCP/IP协议族 1.3.2 TCP/IP的分层管理 1.3.3 TCP/IP通信传输流1.4 与HTTP关系密切的协议:IP、TCP和DNS 1.4.1 负责传输的IP协议 1.4.2 确保可靠性的TCP协议1.5 负责域名解析的DNS服务1.6 各种协议与HTTP协议的关
转载
392阅读
0评论
0点赞
发布博客于 3 年前

CentOS 7 firewalld vsftpd开放端口

vsftp “上传 553 Could not create file”setsebool -P ftpd_disable_trans 1service vsftpd restart或者setsebool -P ftp_home_dir 1service vsftpd restart参考文章:https://www.cnblogs.com/dajianshi/p/3747927....
转载
402阅读
0评论
0点赞
发布博客于 3 年前

查看虚拟机里的Centos7的IP

这里之所以是查看下IP ,是我们后面要建一个Centos远程工具secure CRT连接Centos的时候,需要IP地址,所以我们这里先学会查看虚拟机里的Centos7的IP地址首先我们登录操作系统 用户名root 密码 123456然后我们输入ip查询命名 ip addr 也可以输入 ifconfig查看ip,但此命令会出现3个条目,centos的ip地址是ens33条目中的inet值。...
转载
174阅读
0评论
0点赞
发布博客于 3 年前

数据库中查询列数据是否有重复

数据库中查询列数据是否有重复查单个字段:SELECT TEST_NAME,COUNT() FROM T_TEST GROUP BY TEST_NAME HAVING COUNT() > 1;查组合字段:SELECT TEST_NAME1,TEST_NAME2,COUNT() FROM T_TEST GROUP BY TEST_NAME1,TEST_NAME2 HAVING COUNT()...
转载
1747阅读
0评论
0点赞
发布博客于 3 年前

转载:虚拟机安装centos6.5出现 unsupported hardware detected 解决方法

BIOS开启Virtual Technology虚拟化技术就可以了一、进入BIOS参考以下按键,开机时按住对应的键进入BIOS:普通兼容机直接在开机时按Del键或Delete键进入BIOS;华硕按F8、Intel按F12,其他品牌按ESC、F11或F12;笔记本以品牌分,联想ThinkPad系列按F1,其他品牌按F2;品牌台式机按品牌分, Dell按ESC,其他按F12;...
转载
5007阅读
2评论
2点赞
发布博客于 3 年前

MySQL数据备份之mysqldump使用

mysqldump常用于MySQL数据库逻辑备份。1、各种用法说明A. 最简单的用法:mysqldump -uroot -pPassword [database name] > [dump file]上述命令将指定数据库备份到某dump文件(转储文件)中,比如:mysqldump -uroot -p123 test > test.dump生成的tes...
转载
221阅读
0评论
0点赞
发布博客于 3 年前

数据库优化技术

本篇文章为转载文章一、百万级数据库优化方案1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null最好不要给数据库留NULL,尽可能的使用 NO...
转载
999阅读
0评论
2点赞
发布博客于 3 年前

启动Apache httpd报错Cannot load /etc/httpd/modules/libphp5-zts.so into server 解决方案

SymptomsApache cannot start on Linux Shared Hosting NG webserver after PHP 5.3 was upgraded to php53-5.3.3-5.el5 (using the command yum update php53) with the error message below:[root@Beta-ngin...
原创
2597阅读
1评论
0点赞
发布博客于 3 年前

通过PV计算并发(打假,打假)

 最近和几个朋友,聊到并发和服务器的压力问题。很多朋友,不知道该怎么去计算并发?部署多少台服务器才合适? 所以,今天就来聊一聊PV和并发,还有计算web服务器的数量 的等方法。这些都是自己的想法加上一些网上的总结,如有不对,欢迎拍砖。   几个概念    网站流量是指网站的访问量,用来描述访问网站的用户数量以及用户所浏览的网页数量等指标,常用的统计指标包括网站的独立用户数量、总用户数量(含...
原创
618阅读
0评论
1点赞
发布博客于 3 年前

LoadRunner测试WebService接口(Soap接口)——内附公共Web Services API

1、什么是Web Service接口讲不好,请参考文章 https://www.cnblogs.com/thiaoqueen/p/7143797.html https://www.cnblogs.com/phoebes/p/8029464.html2、公共资源天气预报Web服务,数据来源于中国气象局 Endpoint :http://www.webxml.com.cn/WebSe...
原创
2448阅读
0评论
1点赞
发布博客于 3 年前

临时记录

1、修改 C:\Windows\System32\drivers\etc下的hosts文件,可以配置本地域名对应的IP地址 例如上图中的storm.com,自动指向192.168.132.132的服务器。再多说一句。看到那行127.0.0.1 localhost了吗?这就是为什么你访问本地服务,可以用localhost或127.0.0.1的原因假如我们配置了...
原创
151阅读
0评论
0点赞
发布博客于 3 年前

三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)

三大主流软件负载均衡器对比(LVS、Nginx、HAproxy)LVS: 1. 抗负载能力强,性能高,能达到F5的60%,对内存和CPU资源消耗比较低 2. 工作在网络4层,通过VRRP协议(仅作代理之用),具体的流量是由linux内核来处理,因此没有流量的产生。 3. 稳定,可靠性高,自身有完美的热备方案(Keepalived+lvs) 4. 不支持正...
转载
956阅读
0评论
1点赞
发布博客于 3 年前

UI自动化定位元素之span类型元素

帮朋友定位元素,发现要做UI层自动化,还是需要对前端知识了解多谢,比如JS,比如JQuery,这样能更好的借助这些语言定位元素,操作元素。记录一下。span的赋值与取值1、span的文本的取值。js取的值并不是用document.getElementById(‘span_noticesg’).value,而是document.getElementById(‘span_id’).in...
转载
2311阅读
0评论
0点赞
发布博客于 3 年前

推荐截图工具

1、Windows端截图工具snipaste官网:https://www.snipaste.com/ 介绍:http://www.ifanr.com/app/744064试用了下Windows版本,还可以,亮点在于能智能识别出窗口的控件边界,方便的模糊某个区域 看官网,已经发布了mac版本,没有试用。2、Mac端截图工具Xnip 未试用,有需求的可用搜索试试...
转载
569阅读
0评论
1点赞
发布博客于 3 年前

Linux监控与分析工具nmon

一、概述nmon是一种在AIX与各种Linux操作系统上广泛使用的监控与分析工具,相对于其它一些系统资源监控工具来说,nmon所记录的信息是比较全面的,它能在系统运行过程中实时地捕捉系统资源的使用情况,并且能输出结果到文件中,然后通过nmon_analyzer工具产生数据文件与图形化结果。nmon所记录的数据包含以下一些方面(也是我们在寻找问题过程中所关注的资源点):cpu占用率内...
转载
166阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令strace

1、简介strace 常用来跟踪进程执行时的系统调用和所接收的信号。在Linux 世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace 可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。 strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用str...
转载
456阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令lsof

1、简介lsof 命令的原始功能是列出打开的文件的进程,但LINUX 下,所有的设备都是以文件的行式存在的,所以,lsof 的功能很强大2、命令用法lsof-a:列出打开文件存在的进程;-c<进程名>:列出指定进程所打开的文件-g :列出GID 号进程详情-d<文件号> :列出占用该文件号的进程+d<目录> :列出目录下被打开的文件+...
转载
610阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令vmstat

1、简介Vmstat也是一个功能比较齐全的性能检测工具,可以统计CPU、内存使用情况、swap使用情况等信息,不足之处是无法对某个进程进行深入分析。和sar类似,也可以指定采集周期和次数。下面是每秒采样一次,共计3次:[root@Beta-nginx ~]# vmstat 1 3procs -----------memory---------- ---swap-- -----io----...
转载
839阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令netstat

netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等1、输出信息[root@dev-nginx /]# netstatActive Internet connections (w/o servers)Proto Recv-Q S...
转载
484阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令pidstat

1、pidstat命令简介pidstat命令用来监控被Linux内核管理的独立任务(进程)。它输出每个受内核管理的任务的相关信息。pidstat命令也可以用来监控特定进程的子进程。1.1 如何安装pidstat  pidstat 是sysstat软件套件的一部分,sysstat包含很多监控linux系统状态的工具,它能够从大多数linux发行版的软件源中获得。   在Debian...
转载
2215阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令uptime、ps

1、uptime命令uptime 命令是监控系统性能最常用的一个命令,主要是来统计系统当前的运行状态输出信息依次是:系统现在的时间,系统从上次开机到现在运行了多长时间,系统当前有多少个登录用户,系统在一分钟内、5 分钟内、15 分钟内的平均负载 注意点:如果load average 值长期大于系统CPU 的个数则说明CPU 很繁忙,负载很高,可能会影响系统性能。[root@Beta-ng...
转载
577阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令free

1、free -h[root@Beta-nginx test1]# free -hfree: invalid option -- 'h'usage: free [-b|-k|-m|-g] [-l] [-o] [-t] [-s delay] [-c count] [-V] -b,-k,-m,-g show output in bytes, KB, MB, or GB #按块、K、M...
转载
1026阅读
0评论
0点赞
发布博客于 3 年前

Linux(CentOS)性能监控命令iostat

1、iostat简介iostat是对系统的磁盘I/O操作进行监控,它的输出主要显示磁盘读写操作的统计信息,同时也给出CPU的使用情况。但是iostat不能对某个进程进行深入分析,仅对操作系统的整体情况进行分析。 磁盘I/O很容易成为系统性能瓶颈。通过iostat可以快速定位系统是否产生了大量的I/O操作。2、分析[root@dev-nginx /]# iostat -help用...
转载
2095阅读
0评论
1点赞
发布博客于 3 年前

Linux(Cent OS)性能分析命令sar

1、sarsar是非常强大的性能分析命令,通过sar命令可以全面的获取系统的CPU、运行队列、磁盘IO、交换区、内存、CPU中断、网络等性能数据。使用-h命令查看sar的用法[root@Beta-nginx /]# sar -h用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ]主选项和报告: -b I/O 和传...
转载
330阅读
0评论
0点赞
发布博客于 3 年前

CPU核数和load average的关系

在前面的文章《Linux系统监控——top命令》中我简单提到了,判断load average的数值到底大不大的判断依据,就是数值除以CPU核数,大于5,就说明超负荷运转了。——这里其实不太严谨今天这篇文章来仔细分析分析,CPU和load average的关系。转载文章一我们知道判断一个系统的负载可以使用top,uptime等命令去查看,它分别记录了一分钟、五分钟、以及十五分钟的系统...
原创
54526阅读
1评论
10点赞
发布博客于 3 年前

Linux(Cent OS)查看进程中的线程

0、引言问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率)。线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念。当一个程序内有多个线程被叉分出用以执行多个流时,这些线程就会在它们之间共享 特定的资源(如,内存地址空间、打开的文件),以使叉分开销最小化,并避免大量高成本的I...
转载
2502阅读
1评论
0点赞
发布博客于 3 年前

分享2个在线图表制作工具

1、使用Excel可以轻松完成图表的制作但是有个缺点,不能云端存储,我需要一个在线编辑的图表,无论身处何地,无论哪台电脑,只要能联网,即可编辑;2、推荐一http://charts.udpwork.com/ 3、推荐二http://www.tubiaoxiu.com/ ...
原创
10611阅读
0评论
1点赞
发布博客于 3 年前

Linux的htop命令

参考文章: https://linux.cn/article-3141-1.html https://blog.csdn.net/u011068702/article/details/54891324 https://www.cnblogs.com/yqsun/p/5396363.html再学习top命令时,无意间看到了一篇htop的命令介绍。比较给力,送个大家。在 Linux 系统...
原创
886阅读
0评论
0点赞
发布博客于 3 年前

Linux查看物理CPU个数、核数、逻辑CPU个数

# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores...
原创
101阅读
0评论
1点赞
发布博客于 3 年前

Linux中有关硬中断和软中断的概念

硬中断: 1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗C...
转载
1079阅读
0评论
0点赞
发布博客于 3 年前

Linux系统监控——top命令

1、top命令显示top命令显示区分为两个部分,上面是系统统计信息;下面是进程信息。2、系统统计信息2.1 第一行 第一行,需要关注的是load avg这行,通过这三个值,我们能看出系统负载的发展趋势。比如过去1分钟、5分钟、15分钟的平均负载的值分别是2.4、1.5、0.7,能说明什么问题呢?压测后,系统的负载越来越多。这个load值,除以逻辑CPU的数量,大于5就...
原创
2872阅读
0评论
1点赞
发布博客于 3 年前

16、性能分析过程简介

问题性能测试绝不是拿个工具,设置个并发,看下结果就完了的事情。 你想啊,你执行手工测试,总是会发现问题的对吧,然后要提交bug的对吧。 那性能测试,出现什么情况算bug呢?TPS达不到?一定并发数下,响应时间不达标?还是只要设定的并发下err请求不超过0.01%就可以了? 那或者我再问你,如果出现了上面的问题,怎么分析是哪里出了问题呢?是硬件资源不够,还是程序本身有问题呢?从响应...
原创
260阅读
0评论
0点赞
发布博客于 3 年前

Cent OS借助YUM快速安装MySQL

1、Linux(Cent OS)自带数据库CentOS7默认数据库是mariadb。但是企业常用的数据库确实mysql,所以,我们得自己安装mysql。2、安装MySQL(1)下载mysql官方的Yum Repositorywget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rp...
原创
532阅读
0评论
1点赞
发布博客于 3 年前

Cent OS 7 借助yum安装nginx

1、安装nginx(1)直接使用命令yum -y install nginx[root@localhost bin]# yum -y install nginxLoaded plugins: fastestmirror, langpacksbase | 3.6 kB 00...
转载
2959阅读
0评论
0点赞
发布博客于 3 年前

Centos中tomcat8指定jdk

前面我们讲过如何安装部署Tomcat。虽然简单,但有时候你可能有这样的需求。 服务器上默认的jdk是1.8的,但是我想我的tomcat指定一个自定义的jdk怎么办呢1、需要有一个除默认外的jdk的安装包(不用配置任何环境变量),如下图: 2、进入tomcat的bin目录,修改setclasspath.sh文件 ...
转载
1916阅读
0评论
0点赞
发布博客于 3 年前

CentOS 7安装 jdk1.8

1、Cent OS中默认安装了open jdk(1)查看默认安装的jdk[root@localhost html]# java -versionopenjdk version "1.8.0_65"OpenJDK Runtime Environment (build 1.8.0_65-b17)OpenJDK 64-Bit Server VM (build 25.65-b01, mi...
原创
486阅读
1评论
0点赞
发布博客于 3 年前

CentOS7中systemctl的使用

最近开始玩CentOS 7,我擦,发现好多命令改了,哎,心酸。 原文地址:https://blog.csdn.net/u012486840/article/details/53161574CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。1、原来的 service 命令与 sys...
转载
203阅读
0评论
0点赞
发布博客于 3 年前

CentOS 7 安装、配置Apache

Apache程序是目前拥有很高市场占有率的Web服务程序之一,其跨平台和安全性广泛被认可且拥有快速、可靠、简单的API扩展。 它的名字取自美国印第安人土著语,寓意着拥有高超的作战策略和无穷的耐性,在红帽RHEL5、6、7系统中一直作为着默认的Web服务程序而使用,并且也一直是红帽RHCSA和红帽RHCE的考试重点内容。Apache服务程序可以运行在Linux系统、Unix系统甚至是Windows系...
原创
263阅读
0评论
0点赞
发布博客于 3 年前

apache、tomcat 的区别与联系

前言工作中有用过Tomcat,百度tomcat,进入到Tomcat官网能看到如下界面。 以为Tomcat就是Apache,今天突然发现这是两个东西,囧。1、apache支持静态页,tomcat支持动态的,比如servlet等。一般使用apache+tomcat的话,apache只是作为一个转发,对jsp的处理是由tomcat来处理的。 apache可以支持php\cgi\pe...
转载
838阅读
3评论
0点赞
发布博客于 3 年前

mysql-5.6.13-3308-源码安装

一、卸载旧版本: 使用下面的命令检查是否安装有MySQL Server rpm-qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e –nodeps mysql // 强力删除模式 二、创建MySQL属组、用户 groupadd mysql useradd -g mysql mysql 安装Mysql 安装编译代码需要的包 ...
转载
143阅读
0评论
0点赞
发布博客于 3 年前

额呵,手机丢了,捡到者直接关机,连谈判的机会都不给。我觉得出价会比他卖了赚钱。

额呵,手机丢了,捡到者直接关机,连谈判的机会都不给。我觉得出价会比他卖了赚钱。
原创
287阅读
0评论
0点赞
发布博客于 3 年前

Linux定时任务Crontab命令详解

原文地址:https://www.cnblogs.com/intval/p/5763929.htmllinux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。另 外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控制计划任务的命令 :crontab 命令。一、crond简...
转载
81阅读
0评论
0点赞
发布博客于 3 年前

性能测试知多少 --并发用户数与TPS之间的关系

1. 背景在做性能测试的时候,很多人都用并发用户数来衡量系统的性能,觉得系统能支撑的并发用户数越多,系统的性能就越好;对TPS不是非常理解,也根本不知道它们之间的关系,因此非常有必要进行解释。2. 术语定义(1)并发用户数: 指的是现实系统中操作业务的用户,在性能测试工具中,一般称为虚拟用户数(Virutal User),注意并发用户数跟注册用户数、在线用户数有很大差别的,并发...
转载
1312阅读
0评论
0点赞
发布博客于 3 年前

app崩溃的原因 和 提前测试流程/方法 和出现崩溃后怎么定位和处理

首先,崩溃有几种情况:闪退提示停止运行无响应 1、接口返回值[直接原因]:app无法解析接口返回值/获取不到要获取的参数/参数类型不对 导致客户端代码报错 [引起原因]:脏数据/网络问题导致接口超时或漏了数组元素/前后台没有统一参数类型标准/参数名错误/实体消失 [解决办法]:在网络顺畅/不顺畅情况下抓包,对着api文档一个一个的参数对比,返回值有数组可以横向对比,可...
转载
2129阅读
0评论
1点赞
发布博客于 3 年前

Web测试和app测试重点

WEB测试重点1.功能测试: 所实现的功能是否和需求一致; 2.界面测试: 界面是否美观,风格是否一致,文字内容是否正确; 3.链接测试: 打开链接速度是否合理;是否链接到正确的页面;是否有空白页面; 4.性能测试: 系统能支持多少用户同时在线;超过这些用户数,系统会给出什么样的反映; 5.兼容性测试: 项目在不 同操作系统,不同浏览器上功能是否能正常使用; 6.安全性测试...
转载
1068阅读
0评论
0点赞
发布博客于 3 年前

学习笔记02——Loadrunner基础(1)

导读1、Loadrunner简介 2、Web Tours 简介一、Loadrunner简介LoadRunner是一种预测系统行为和性能的工业标准级负载测试工具。通过模拟上千万用户实施并収负载及实时性能监测的方式杢确讣、查找问题LoadRunner 能够对整个企业架构迕行测试。通过使用LR企业能最大限度地缩短测试时间,优化性能和加速应用系统的収布周期。LoadRunner 是一种...
原创
413阅读
0评论
0点赞
发布博客于 3 年前

学习笔记01——软件性能测试基础

导读1、什么是软件性能? 2、什么是软件性能测试? 3、性能测试的目的 4、性能测试的指标 5、性能测试的类型 6、性能测试的流程1、什么是软件性能?软件的性能是个很大的概念,覆盖面非常广泛,对一个软件系统而言,包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等待。用户视角的软件性能 从用户角度来说,软件性能就是软件对用户操作的响应时间;管理员视角的...
原创
297阅读
0评论
1点赞
发布博客于 3 年前

查看系统硬件信息(CPU、内存、磁盘、网卡)

导读Windows查看系统硬件信息CentOS查看系统硬件信息Windows查看系统硬件信息查看Windows系统硬件信息最方便的方法是使用“鲁大师”等类似软件。效果见下图: 可以看到,我的电脑配置为: CPU:双核 内存:4G 硬盘:500G、7200转/分注意: (1)通过设备管理器看到的是CPU线程数,不是核数 可以看到上图显示4个Core不是说我是...
原创
35385阅读
0评论
3点赞
发布博客于 3 年前

Buffers与cached啥区别

A buffer is something that has yet to be “written” to disk. A cache is something that has been “read” from the disk and stored for later use 对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性...
转载
157阅读
1评论
0点赞
发布博客于 3 年前

free命令中cached和buffers的区别

原文地址:https://www.cnblogs.com/chenpingzhao/p/5161844.html1、命令[root@Beta-nginx ~]# free -m total used free shared buffers cachedMem: 15948 5974 ...
转载
840阅读
0评论
0点赞
发布博客于 3 年前

MySQL 可以用localhost 连接,但不能用IP连接的问题

连接问题 由于数据库配置的问题,当我们用ip连接数据库时,会出现连接不上的情况,而用localhost连接则没有任何的问题。解决方法:mysql安装完后,默认是root用户,root用户只能在服务器登录,需要分配新用户1、以root用户登陆mysql数据库 2、执行以下命令分配新用户:grant all privileges on *.* to '用户名'@'IP地址' ide...
转载
1483阅读
1评论
0点赞
发布博客于 3 年前

15-性能测试之JMeter创建Redmine用户

导读录制创建用户脚本调试脚本回顾前面学的知识1、引言本章将回到之前的Redmine系统,用JMeter创建用户,为后续压测登录功能做准备2、录制创建用户脚本(1)录制请求包含以下动作:打开登录页;输入用户名、密码,点击登录按钮,完成登录;点击“管理”;点击“用户”;点击“新建用户”输入用户信息,点击“创建按钮”(2)Badbody录制到的请...
原创
562阅读
1评论
0点赞
发布博客于 3 年前

14-性能测试之JMeter发送HTTP请求

导读前言测试环境准备HTTP Request Sampler介绍HTTP Authorization ManagerHTTP Header ManagerHTTP Cookie Manager1、前言(1)对于Web端项目,大多数压测都是针对HTTP请求的,还有一些FTP、JDBC、JAVA等请求,接下来我们会按照请求的种类介绍一些知识点; (2)压测有两种情况,第一种...
原创
7197阅读
0评论
3点赞
发布博客于 3 年前

13-性能测试之JMeter计时器

导读各类计时器1、计时器计时器一般被我们用来设置延迟与同步,定时器的优先级高于Sampler,在同一作用域下有多个计时器存在时,它们都会执行;如果想让某一计时器只针对某一个Sampler有效,则要把计时器加到该Sampler下面。请看下图 我们在请求1后面(但是同级)加了一个特定时间计时器,设定时间是3秒,然后再请求2下面(注意下面,不是后面)加了一个特定计时器,设定时间...
原创
2283阅读
3评论
1点赞
发布博客于 3 年前

12-性能测试之JMeter逻辑控制器

导读的前言前面几篇博客简单讲解JMeter的关联,参数化,断言,计时器等知识,但明显不够细致,接下来我们详细来看看,本节学习一下所有的逻辑控制器。尽量找到操作的示例,这样才能验证观点,加深记忆。如果找不到示例,那么就干脆简单待过,不下结论,避免误导大家。逻辑控制器用来对元件执行逻辑进行控制。 If Controller 看名字就知道,相当于if条件语句,如果判断结果...
原创
516阅读
0评论
0点赞
发布博客于 3 年前

敏捷开发之Scrum扫盲,及敏捷开发中XP与SCRUM的区别

敏捷开发之Scrum扫盲篇现在敏捷开发是越来越火了,人人都在谈敏捷,人人都在学习Scrum和XP…为了不落后他人,于是我也开始学习Scrum,今天主要是对我最近阅读的相关资料,根据自己的理解,用自己的话来讲述Scrum中的各个环节,主要目的有两个,一个是进行知识的总结,另外一个是觉得网上很多学习资料的讲述方式让初学者不太容易理解;所以我决定写一篇扫盲性的博文,同时试着也与园内的朋友一起分享...
转载
1563阅读
0评论
2点赞
发布博客于 3 年前

适合码农工作时玩的游戏:Scrum

导读文章目录 1. 前言 2. Scrum 是游戏规则 3. Scrum 是基于经验的 4. Scrum 的三大支柱 5. Scrum 的基础游戏规则 5.1. 角色定义 5.1.1. 没有子团队 5.1.2. 强调平等 5.1.3. 游戏人数规则 5.1.4. 游戏时间 5.2. 游戏玩法 5.2.1. 计划会议 5.2.2. 每日站立会议 5.2.3. 评审会议...
转载
489阅读
0评论
0点赞
发布博客于 3 年前

关于“.bash_profile”和“.bashrc”区别的总结

0、前言项目环境部署是自己的薄弱项,一些简单的服务,照着搜索来的步骤能凑合部署成功,但并不明白其中的原理,偶尔遇到一些ERR,就抓瞎,无从下手。项目环境部署,需要一些基础服务,如java环境,tomcat环境、mysql等等;服务部署成功后,还需要给其配置环境变量;要配置环境变量,就要用到什么bashrc或bash_profile文件,可是这文件有啥区别,一直不明白,今天看到这篇文章,结合自己...
转载
12022阅读
3评论
6点赞
发布博客于 3 年前

11-性能测试之JMeter线程组

导读准备本节所用到的测试计划线程组详解本章总结1、准备测试计划(1)新建测试计划 (2)新建线程组 (3)添加两个请求(前面录制的360搜索请求) (4)添加察看结果树,用来验证结果 准备好的测试计划如下图所示: 请求1,搜索storm关键字 请求2,搜索lina关键字 2、线程组测试计划,右键,添加,Threads(user),线程组,如下图所示: ...
原创
790阅读
0评论
0点赞
发布博客于 3 年前

10-性能测试之JMeter运行方式

导读各操作系统,GUI和非GUI模式启动JMeter1、Windows GUI形式运行JMeter(1)Windows下以GUI的形式运行JMeter很简单,直接双击jmeter.bat文件即可,这是我们前面一直在做的事情。 但是在双击jmeter.bat启动JMeter时,会弹出如下命令行提示符,如下图所示: 这些英文是什么意思呢?翻译如下:不要使用GUI模式进行负载...
原创
1569阅读
2评论
0点赞
发布博客于 3 年前

09-性能测试之JMeter事务、聚合报告

导读精简测试脚本聚合报告简介事务控制器1、精简测试脚本(1)为了查看请求方便,我们将请求重命名,如下图所示: (2)删除不必要的脚本 假如我们想对登录功能进行压测,那么第1个请求“Redmine首页”和第4个请求“登出”没有用,我们直接删掉(或者点击Toggle切换成不发送状态)。然后点击启动按钮,看是否能够成功。 2、添加监听器——聚合报告(1)在Ste...
原创
4756阅读
0评论
1点赞
发布博客于 3 年前

08-性能测试之JMeter断言

导读介绍响应断言的用法请求重定向的问题1、从浏览器登录Redmine(1)从浏览器登录Redmine,使用正确的用户名、密码登录,登录完成后,右上角显示登录账号的名称,如下图所示: (2)使用错误的用户名、密码登录,会提示登录失败,然后右上角还是登录按钮,如下图所示: 上面这个现象很正常,符合我们的预期。2、使用JMeter发送请求(1)正确的用户名、...
原创
810阅读
0评论
0点赞
发布博客于 3 年前

07-性能测试之JMeter定时器

导读定时器作用域介绍两种定时器JMeter提供了很多有用的元件,帮助我们构造各种场景的性能测试。本节,我们来看看定时器(timer)1、定时器作用域定时器是在每个sampler(采样器)之前执行的,而不是之后(不管定时器的位置在sampler之前还是下面);当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;如果希望定时器仅应用于其中一个sampler,...
原创
339阅读
0评论
0点赞
发布博客于 3 年前

06-性能测试之JMeter参数化

导读JMeter参数化函数助手:_CSVReadCSV Data Set ConfigUser Defined VariablesUser Variables1、JMeter 参数化参数化是自动化测试脚本的一种常用技巧。简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则,这样,脚本在运行的时候就可以根据需要选取不同的参数...
原创
404阅读
0评论
0点赞
发布博客于 3 年前

04-性能测试之目标系统部署

导读安装VMware安装Cent OS安装SecureCRT安装Redmine系统Redmine系统简介录制、调试登录脚本目的:搭建一套论坛系统,当作压测的目标系统,来学习后续的知识点。所以本节很重要。1、安装VMware如果你有一台Linux服务器,请直接跳转到第3节。(1)Windows安装VMware打开百度,搜索VMware,将文件下载到本地,如...
原创
316阅读
0评论
0点赞
发布博客于 3 年前

05-性能测试之JMeter关联

导读JMeter关联简介正则表达式介绍登录脚本调试1、JMeter关联简介JMeter中关联可以在需要获取数据的请求上,“右键”|后置处理器,然后根据需要选择即可。这里,我们介绍正则表达式提取器。 (1)正则表达式提取器 名称: 可以随意设置,名称最好有业务意义。注释:可以为空,可以随意设置;Apply to:应用范围,4个选项; Main sample a...
原创
571阅读
0评论
0点赞
发布博客于 3 年前

03-性能测试之脚本录制

导读本节主要包括以下内容: 1. JMeter工作区介绍 2. JMeter HTTP协议录制1、JMeter工作区介绍启动JMeter后,会打开如下窗口: 注:笔者在写本系列博客的时候,使用JMeter的最新版本4.0(1)区域1是菜单栏和工具栏菜单栏 JMeter工具的菜单栏包括File、Edit、Search、Options等菜单,和其它Window...
原创
1275阅读
3评论
0点赞
发布博客于 3 年前

02-性能测试之Jmeter简介

导读本节内容包括:Jmeter工具简介Jmeter安装Jmeter目录结构Jmeter常用组件1、Jmeter简介(1)概念 Apache JMeter应用程序是开源软件,100%纯Java应用程序,用来进行负载测试、度量系统性能。它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数。 (2)使用Jmeter我们能做什么? Apache JMeter可以用...
原创
342阅读
0评论
1点赞
发布博客于 3 年前

1、Selenium + Python 实现 UI 自动化测试-环境搭建

密谋已久的文章分享从今天开始,分享测试知识,不求赢得赞誉,只求无愧于心。一、总览Windows 10 + Python 3.6 + Selenium 3.4 + Chrome 59 + Pycharm二、删除三、安装Python1、下载官网:https://www.python.org/,打开官网,在Downloads下,选择操作系统,我的环境是Windows,点击后进入下载页,目前Python比...
原创
531阅读
0评论
0点赞
发布博客于 3 年前

01-性能测试流程、概念

导读本节内容包括:性能测试流程性能测试成功要素性能测试常用术语性能测试通过标准1、性能测试流程在很多同学的概念中,性能测试就是使用Loadrunner、Jmeter等工具进行压测,然后得到测试结果即可,但仔细想想,对谁进行测试?测试目的是什么?监测指标有哪些?得到的结果如何分析(怎样的结果算通过)等等。所以使用工具压测只是性能测试最基础的一个步骤,下面先来看看性能测试...
原创
376阅读
3评论
1点赞
发布博客于 3 年前