当前位置: 首页 > news >正文

从写下第1个脚本到年薪40W,我的自动化测试心路历程

我希望我的故事能够激励现在的软件测试人,尤其是还坚持在做“点点点”的测试人。

你可能会有疑问:“我也能做到这一点的可能性有多大?”因此,我会尽量把自己做决定和思考的过程讲得更具体一些,并尽量体现更多细节。

每个测试人的经历都不一样,但我希望我的经历中能让你有所收获。

测试新人

我的软件测试职业开始和大多数最普通的测试人员一样,一开始在一家社交平台的公司做软件测试,公司最开始只我人一位软件测试人员,没有任何流程和规范,但好在工作比较轻松,这就导致我有充足的时间学习各种测试技术和工具。

当你认为工作很闲时,这正是你可以有更多的时间投入学习的时候,但是,学习的内容一定要基于自己的工作来,这样才能把学来的技术变成工作经验。

当时,有一些机会在工作中做性能测试,于是,学会了使用LoadRunner和JMeter,有一次需要测试MySQL数据库的性能,用JMeter搞了半天不知道怎么设置,结果叫一位开发的同事帮我过来很快就搞定了。

这让我认识到开发知识对于测试工作的帮助,编程语言的能力会决定你测试技术的深度。

加入群:1150305204,即可免费领自取~

选择Python

大概在2013年的时候,脚本语言变得越来越流行,我正纠结学习Python还是Ruby,后来,我被分到社区项目的测试工作,公司产品开始选用Python开发的,所以,我毫不犹豫的选择了Python。

如果你不知道学习什么编程语言,那么就根据项目的开发语言来,这也会有助于你对测试的bug的理解。

接着,开始用Python语言和Selenium来尝试做自动化测试。那时,关于Python版的Selenium并不多,在学习的同时我开始发表相关博客。

交流是学习新技术的驱动力,大多数时候我们很难坚持学一个新技术的原因就在于缺少反馈,不管是做内部分享或者是社群交流都是很好的反馈机制。

2014年的时候,由于项目的原因,开始使用Robot Framework测试框架,正因为有Python的基础所以很快就理解了Robot Framework框架的工作原理,并可以根据项目的需要开发系统关键字。

掌握自动化工具的原理使用起来才能更加游刃有余,而这也需要你有一定的编程基础的原因。

2015年随着移动App越来越流行,趁着换工作的间隙,我开始学习了一个月的appium自动化工具,但工作中用不到后来就没在继续了。

后来,我开始针对另一个社区项目编写Web UI自动化测试,前后做了几个月,积累了一些经验,开始尝试设计Web自动化框架,当时主要还是针对Selenium API的封装。

自动化测试

为什么我越来越有更多机会去做自动化相关的工作,当然,是我先学会了这项技能,然后才有,公司项目又比较适合去做自动化,所以,我就尝试去做了,最后,这就变成了我的经验。

但是,没多久我会调到另外一个项目负责接公司口平台的测试,这个项目支撑公司内部不同的业务线,为了更加高效的保证接口的质量,开发设计了一套基于PHPunit的接口自动化项目,因为整个接口平台也是有PHP开发,所以,我开始尝试用PHP编写接口自动化测试。这个自动化项目非常高效的保证了接口平台的稳定性,我持续维护了两年。

测试有时候必须跟着项目发展自己的技术,但也正是之前的编程基础和自动化的经验的积累,所以,才会很快的上手接口自动化项目。

2018年我开始做全栈工程师,和团队一起从零开发内部管理平台,后端用Django框架设计接口,前端用vue.js框架设计页面,项目已经在整个公司得到应用。

这个阶段跨度有点大,但应了我前面的一些思路,当你掌握的更多的技术,那么你也会有更多的机会继续提升自己。

你也在往自动化方向发展吗?

在适当的年龄,选择适当的岗位,尽量发挥好自己的优势。

我的自动化测试之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,所以,我和朋友花了一段时间整理编写了下面的软件测试工程师发展规划路线,会给你带来帮助和方向:

《软件自动化测试开发学习路线》

1.软件测试基础知识内容

软件测试职业以及发展定位
软件测试的概述&原则
软件测试的策略及详细讲解
软件测试的生命周期
软件测试工作流程
软件需求分析制作详解
软件测试计划的编写
软件测试用例的常用方法--等价类,边界值
软件测试用例的常用方法--因果图,判定表
测试用例的常用方法--状态迁移图;场景法
软件测试环境准备&团队组织架构&职责划分
bug编写规范,教你写出不low的缺陷
bug的流转与状态处理
缺陷编写规范与流程处理
缺陷编写规范与流程处理

2.MySQL数据库知识

数据库对测试人员的重要性
数据库概述
数据库安装
navicat连接数据库
简单的增删改查语句
DDL语言+类型与约束
数据库的增删改操作
数据库的其他约束
数据库的删除操作

3.接口测试基本知识

接口测试原理本质
接口测试用例编写和设计
Postman部署与接测试以及断言
Postman测试集使用&参数化
Postman接口关联以及发送报告
Fiddler环境搭建及原理&抓包、过滤、断点
Fiddler模拟mock实战及弱网实战
Jmeter常见元件详解及接门测试参数化
Jmeter接门关联、断言及JDBC包使用
Jmeter的jar包使用及生成测试报告

4.Python编程技术

编程语言介绍/编程概念讲解/环境搭建
Python编程思维及语法:变量的定义及基本使用
Python编程思维及语法:基本运算、基本数据类型、
Python编程思维及语法:输⼊与输出、数据的类型转换
Python编程逻辑流程:数学运算符/比较运算符/赋值运算符
Python编程逻辑流程:逻辑运算符/成员运算符
Python编程逻辑流程:程序中的条件分支--if
Python编程逻辑流程:程序中的循环结构--while
Python中的数据类型:python中的list列表定义
Python中的数据类型:python中的list列表操作流程
Python中的数据类型:python中的dict字典定义
Python中的数据类型:python中字典的增删改查
Python中的数据类型:元组在python中的应用

Python复杂操作:range函数在python中的意义

Python复杂操作:for循环的定义实操
Python复杂操作:字符串、列表的切片操作
Python中的数据类型:python中的集合应用
Python函数:python中的函数定义
Python函数:python中函数的注释
Python函数:python中函数的嵌套
Python函数:python中的内置函数
Python函数:python中的匿名函数
Python函数:python中函数的调用与引用的概念
Python函数:python中的装饰器详解
Python中的模块化与引用关系
Python导包:from关键字与import关键字的应用场景
python中的文件操作
面向对象:python中的类机制
面向对象:类属性的概念与应用
面向对象:类中的继承概念应用
面向对象:类中的多态概念
面向对象:异常机制

5.Web自动化测试技术

Web自动化测试入门:前端页面的组成分析详解
Web自动化测试入门:javascript操作Dom元素详解
Web自动化测试入门:selenium中的环境搭建详解
Web自动化测试入门:selenium原理,UI自动化的核心含义
Web自动化测试入门:从手工用例向自动化测试用例的迈进
Web自动化测试入门:常规定位--八大元素定位
Web自动化测试入门: 元素定位之selenium4.0特有网格定位
Web自动化测试入门: 元素定位之selenium元素内定位
Web自动化测试进阶:网页中难点之等待机制--强制等待
Web自动化测试进阶:网页中难点之等待机制--隐式等待
Web自动化测试进阶:网页中难点之expected_conditions的应用与原理
Web自动化测试进阶:网页中难点之等待机制--显式等待
Web自动化测试进阶:网页中难点之匿名函数在等待中的使用
Web自动化测试进阶:selenium模拟鼠标操作
Web自动化测试进阶:selenium模拟键盘操作
Web自动化测试进阶:ActionChain模拟拖动滚动操作
Web自动化测试进阶:实战中的单选复选框选择
Web自动化测试进阶:实战中的下拉框定位问题
Web自动化测试进阶:selenium中的switch_to函数详解
Web自动化测试进阶:selenium中的句柄操作详解
Web自动化测试进阶: 网页中难点之frame切换
Web自动化测试进阶: 网页中难点之多窗口切换
Web自动化测试进阶: 网页中难点之alert切换
Web自动化测试进阶:实战项目中难点之验证码问题
Web自动化测试进阶:图像处理的灰度化与二值化操作
Web自动化测试进阶:验证码处理之OCR图像识别操作
Web自动化测试进阶:验证码处理之cookie跳过验证码操作
Web自动化测试进阶:验证码处理之js处理方案
Web自动化测试进阶:自动化中的难点--文件上传操作
Web自动化测试进阶:自动化中的难点之input标签文件选择
Web自动化测试进阶:自动化中的难点之非input标签文件选择
Web自动化测试进阶:实战难点之多文件上传
Web自动化测试进阶:实战难点之iframe日期控件
Web自动化测试框架篇:unittest+pytest框架入门应用
Web自动化测试框架篇:实战中的pytest框架规则
Web自动化测试框架篇:pytest框架夹具及顺序
Web自动化测试框架篇:pytest框架插件实战详解
Web自动化测试框架篇:如何利用pytest框架生成测试报告
Web自动化测试框架篇:POM核心设计思路详解
Web自动化测试框架篇:POM的业务代码逻辑与组件分离
Web自动化测试框架篇:用POM思想设计一套框架
Web自动化高级篇:用POM思想重构unittest框架代码
Web自动化高级篇:进阶思路--从POM到关键字驱动
Web自动化高级篇:测试报告生成及Allure报告优化
Web自动化高级篇:Allure报告生成之用例重运行
Web自动化高级篇:Allure的装饰器执行流程
Web自动化高级篇:Allure的截图,异常截图操作
Web自动化高级篇:自动化执行记录之自定义框架日志封装
Web自动化高级篇:自定义框架封装设计理念
Web自动化高级篇:关键字与核心执行器封装
Web自动化高级篇:自动化测试重复流程的抽取和处理
Web自动化高级篇:数据驱动与数据分离--yaml文件驱动
Web自动化高级篇:动态化测试用例的生成与断言数据的生成
Web自动化拓展:web自动化分布式测试Grid介绍
Web自动化拓展:Web自动化分布式测试之selenium-Grid的hub详解
Web自动化拓展:Web自动化分布式测试之selenium-Grid的Nodes详解
Web自动化拓展:Web自动化分布式测试之selenium-Grid的配置详解
Web自动化拓展:全面提升测试效率--实战中的Grid的应用与常见问题处理

6.接口自动化测试

接口自动化入门: Http请求的核心概念及原理详解
接口自动化入门: Http的请求头,请求体,响应码解析
接口自动化入门: Http请求的域名与IP地址概念
接口自动化入门: swagger/word/excel/pdf等不同种类的接口文档理解
接口自动化入门:项目实战中接口测试流程分析及实现
接口自动化入门:Jmeter实现在接口工具中关联接口处理方案
接口自动化入门:Jmeter的多组数据测试、JDBC驱动及数据断言
接口自动化入门:JSON中的万能密码--JSONPath解析
接口自动化入门:大型项目中接口测试分工协同安排
接口自动化入门:接口自动化思维逻辑梳理及相关环境搭建
接口自动化入门:接口自动化实战项目需求分析+用例分析
接口自动化入门:Requests组成介绍及接口调用方式
接口自动化入门:Requests请求头设置详解
接口自动化入门:Requests的RESTFul请求发送
接口自动化入门: Requests实现项目接口关联调用测试实战
接口自动化入门:登录流程中的Session,Token鉴权实践
接口自动化入门:requests中的Assert断言处理
接口自动化入门: 加密接口处理之对称加密
接口自动化入门:加密接口处理之非对称加密
接口自动化进阶:Pytest运行规则插件安装常用参数详解
接口自动化进阶:Pytest结合Requests实现自动化
接口自动化进阶:Pytest全局配置pytest.ini文件详解
接口自动化进阶:Pytest之Fixture拓展及conftest.py加载机制
接口自动化进阶:Pytest之Parameterize数据驱动应用
接口自动化框架篇:Pytest断言处理以及Allure报告生成
接口自动化框架篇:Pytest+Allure报告企业定制化实现
接口自动化框架篇:Pytest企业级接口用例管理流程
接口自动化框架篇:Pytest中的接口请求封装
接口自动化框架篇:Pytest中的接口关联封装
接口自动化框架篇:优化逻辑--接口关联封装改进
接口自动化框架篇:规范JSON数据格式测试用例封装
接口自动化框架篇:接口框架中如何实现热加载封装
接口自动化框架篇:接口框架中的常归断言封装
接口自动化框架篇:接口框架中的日志记录封装
接口自动化框架篇:使用python连接数据库-PySQL介绍
接口自动化框架篇:PySQL的游标概念及数据操作
接口自动化框架篇:PySQL的游标概念及数据操作
接口自动化框架篇:Mysql数据库数据断言封装
接口自动化框架篇:接口框架中的数据类型处理
接口自动化框架篇:核心执行器封装流程
接口自动化框架篇:框架中的数据流转处理
接口自动化框架篇:框架中的不同请求方式封装
接口自动化框架篇:自定义异常日志封装
接口自动化框架篇:自定义断言封装逻辑
接口自动化框架篇:BaseURL基础路径封装
接口自动化框架篇:接口加密解密封装
接口自动化框架篇:接口签名Sign封装
接口自动化框架篇:接口自动化框架的测试报告生成
接口自动化拓展:接口Mock的理念与实战场景
接口自动化拓展:Flask框架安装、介绍及工作中的应用
接口自动化拓展:Flask框架与前端页面的通讯
接口自动化拓展:Flask框架的数据库操作
接口自动化拓展:Flask框架的增删改查接口实战

7.APP自动化测试

App自动化测试入门:APP测试的定义及环境搭建处理
App自动化测试入门:Appium设计理念解析
App自动化测试入门:APP测试中常用的ADB操作命令理解
App自动化测试入门:APP自动化稳定性测试详解
App自动化测试入门:Appium自动化的组件角色介绍
App自动化测试入门:Appium的自动化测试原理
App自动化测试入门:Appium的Inspector实战操作
App自动化测试入门:Desktop配置及底层逻辑
App自动化测试入门:运用Appium-Python-Client替代Desktop操作
App自动化测试入门:实战中的APP元素定位方式之Id定位
App自动化测试入门:实战中的APP元素定位方式之Name定位
App自动化测试入门:实战中的APP元素定位方式之ClassName定位
App自动化测试入门:实战中的APP元素定位方式之TagName定位
App自动化测试入门:实战中的APP元素定位方式之Xpath定位
App自动化测试入门:实战中非常规模式下的其他元素定位方式详解
App自动化测试入门:APP自动化中Activity组件原理
App自动化测试入门:实战中App自动化页面加载资源流程中的"坑"
App自动化测试入门:实战中App自动化页面资源渲染需要注意的"雷区"
App自动化测试入门:APP自动化测试中的三种常规等待类型
App自动化测试入门: 常规等待无法处理的bug解决方案--Activity等待与指令等待
App自动化测试进阶:App自动化-常规元素属性详解
App自动化测试进阶:App自动化-常规元素操作
App自动化测试进阶:App自动化非常规元素操作之触控操作详解
App自动化测试进阶:App自动化非常规元素操作之多指操作详解
App自动化测试进阶:App自动化非常规元素操作之新版本W3C操作
App自动化测试框架篇:实战中Pytest的用例标签详解
App自动化测试框架篇:Pytest-html测试报告生成
App自动化测试框架篇:实战中Pytest的用例参数化驱动测试用例
App自动化测试框架篇:实战中Pytest的conftest与钩子函数
App自动化测试框架篇:Pytest的yiled关键字原理解析
App自动化测试框架篇:Pytest-html报告添加截图操作
App自动化测试框架篇:Pytest-html获取用例结果流程
App自动化测试框架篇:Pytest-html报告源码解读与改造
App自动化测试框架篇:Pytest-html 自定义异常截图流程
App自动化测试框架篇:Pytest-html 实战中测试报告生成解析
App自动化测试框架篇: 企业级自定义框架封装思路详解
App自动化测试框架篇: 企业级数据驱动之数据的定义方式
App自动化测试框架篇: 自定义框架测试下的元素操作关键字封装详解
App自动化测试框架篇: 自定义框架测试下的系统函数关键字封装详解
App自动化测试框架篇: 自定义框架测试下的逻辑处理关键字封装详解
App自动化测试框架篇: 自定义框架测试下的逻辑处理关键字封装详解
App自动化测试框架篇: 自定义框架测试下的断言关键字封装详解
App自动化测试框架篇: 框架设计数据分离关键字之存储文件处理
App自动化测试框架篇: 框架设计数据分离之关键字热处理
APP自动化测试框架篇: 关键字驱动在企业中的落地方案

8.APP自动化测试拓展

App自动化测试拓展:企业级设备集群管理平台环境搭建介绍 
App自动化测试拓展:企业级设备集群管理平台核心配置含义
App自动化测试拓展:Appium在多机器下的自动化操作流程
App自动化测试拓展:实战中APP测试框架结合ATXServer集群测试方案
App自动化测试拓展:H5在APP中的应用与问题介绍
App自动化测试拓展:实战中的混合应用APP问题常见处理方式
App自动化测试拓展:混合应用中的元素定位与操作流程
App自动化测试拓展:混合应用中的跳转及等待操作处理
App自动化测试拓展:公众号H5 webview混合应用测试实战
微信小程序自动化:Minium环境搭建、自动化流程梳理
微信小程序自动化:小程序自动化的核心思路与原理理解
微信小程序自动化:小程序中的元素定位、属性分析、元素操作
微信小程序自动化:小程序中的特殊操作-点击、长按、拖动
微信小程序自动化:minitest命令详解/测试报告分析

9.跨平台自动化测试RobotFramework & Airtest

RobotFramework简介与环境搭建
RF语法之变量使用
RF基础语法之测试用例编写
RF之关键字与资源文件
RF之语法控制流与循环
RF-Web自动化项目实战
RF-接口自动化项目实战
RF-扩展库开发
RF-集成Jenkins之持续集成
Airtest环境搭建与IDE使用
Airtest-Web自动化项目实战
Airtest-APP自动化项目实战
Airtest之poco框架
Airtest-windows应用程序自动化测试
Airtest之脚本运行方式

10.DevOps 持续集成

GIT代码版本控制:版本控制概念/环境搭建
GIT代码版本控制:版本库创建
GIT代码版本控制:克隆、pull、push、commit命令使用
GIT代码版本控制:版本冲突解决/分支/tag控制
Jenkins持续集成:CICD介绍、环境搭建
Jenkins持续集成:Jenkins插件管理常用插件
Jenkins持续集成:命令执行机制/远程ssh执行
Jenkins持续集成:Allure测试报告集成/办公软件集成
Jenkins持续集成:自动化用例结合Jenkins应用
Jenkins持续集成:Jenkins定时任务/GIT集成
Jenkins持续集成:构建 CI/CD 流水线 开发-测试-运维
sonar代码白盒检测:代码检测概念,sonar环境搭建
sonar代码白盒检测:常见代码检测问题解析
sonar代码白盒检测:代码检测报告分析
sonar代码白盒检测:Jenkins与sonar组合持续集成

11.Jmeter性能测试

性能和功能的区别
性能指标:响应时间
程序运行过程中,对服务器资源占用率
吞吐量 和 并发量 的关系?/区别?
性能测试整体流程介绍
项目中性能测试的背景分析
性能需求分析-业务模型
性能测试用例的概念和示例
性能测试概念-负载测试
性能测试用例结构及项目实例
性能测试完成标准
性能测试环境 服务器配置
Jmeter环境构建
Jmeter多线程插件的使用
Jmeter压测汇总报告结果分析
Jmeter梯度压测线程组实际应用
Jmeter分布式集群压测概念
阿里云PTS云服务器压测方式
Jmeter压测使用CSV数据集
Jmeter 7大定时器分析
结果分析之Basic Graphs图表
InfluxDB + Grafana+Jmeter监控大屏
Jmeter 后端监听器连接InfluxDB
Jmeter-InfluxDB-Grafana完整调试
nmon数据采集与结果分析
prometheus 服务器 配置
性能测试报告-测试实施情况编写
性能测试报告-资源使用率截图内容
如何找性能拐点及性能瓶颈定义
APP性能测试概念,目的与意义
性能测试流程和性能测试工具分析
APP性能指标(cpu、内存、流畅度等)
APP性能测试工具选择,环境搭建实战
APP性能指标启动时间、CPU、流量详解获取方法
APP性能监控脚本实现;数据分析
APP性能指标之电量、内存、FPS
APP性能指标之过度渲染及实战
Locust简介 Locust是什么?
Locust发起HTTP接口请求
Locust的Web界面
locustfile之task_set属性
locustfile之weight (权重)属性
详解任务集合TaskSet类
动态URL参数使用
Locust“逐步负载”模式运行
Locust+Grafana 搭建性能监控平台

12.vue测试开发平台

阶段1. 前端HTML/CSS/JS项目开发实战
阶段2. VUE 前端框架项目开发实战
阶段3. Flask WEB后端开发框架项目实战
阶段4. Flask+Vue前后端分离系统项目实战
阶段5. 测试平台管理系统基础功能开发  
阶段6:接口自动化测试平台设计阶段
阶段7:接口测试平台前端界面设计与开发
阶段8:接口测试平台后端设计与开发
阶段9:接口测试平台联调测试
阶段10:WEB自动化测试平台设计阶段
阶段11:WEB测试平台前端界面设计与开发
阶段12:WEB测试平台后端设计与开发
阶段13:WEB测试平台联调测试
阶段14:APP自动化测试平台设计阶段
阶段15:APP测试平台前端界面设计与开发
阶段16:APP测试平台后端设计与开发
阶段17:APP测试平台联调测试
阶段18:用例执行图形报表可视化数据监测
阶段19:CICD持续集成整合企业测试流程
阶段20:办公软件钉钉/飞书/企微等整合
阶段21:Xmind测试用例数据格式集成
阶段22:Swagger/Har动态接口数据集成
阶段23:测试平台分布式集群部署实战

13.django测试开发

WEB开发技术简介及Django开发环境搭建
Django开发web接口urls及views机制
Django数据库模型和视图
Django-admin环境搭建及应用
接口测试脚本自动化及脚本存在的问题
Pytest插件开发测试工具原理分析
如何将Python测试工具打包成可执行命令
自动化测试平台开发思路
通过Django_admin_vue模板快速开发出web界面
平台开发:项目创建及自定义管理平台数据展示内容
平台开发:实现复杂数据维护页面
平台设计:如何将测试数据转换为数据库存储
平台实现:接口测试平台效果演示及debug调试
WEB封装思维锻炼:web自动化中封装技术的应用
WEB封装思维锻炼:fixture及断言截图机制拓展封装
代码封装思维对于测试开发的重要性
WEB平台驱动封装:POM的作用以及它的问题
WEB平台驱动封装:UI自动化框架实现原理剖析
WEB平台:底层UI执行驱动工具开发
WEB平台:自动化平台项目实战及原理debug分析
APP_UI平台:APP自动化平台内容梳理及实战项目
APP_UI平台:封装思想及拓展思想分析
APP_UI平台:平台数据库设计思路分析
UI自动化测试平台封装思维整体梳理
自动化平台架构:集群分布式部署方案分析
自动化平台部署:Nginx集群部署实践
自动化平台部署:集群下登陆session共享方案

14.安全测试

安全测试两大项目靶场部署
WEB安全漏洞及渗透测试手法:反射性XXS漏洞
WEB安全漏洞及渗透测试手法:DOMXXS漏洞
WEB安全漏洞及渗透测试手法:SQL注入漏洞
WEB安全漏洞及渗透测试手法:文件下载漏洞
WEB安全漏洞及渗透测试手法:平行权限漏洞
WEB安全漏洞及渗透测试手法:路径遍历漏洞
WEB安全漏洞及渗透测试手法:URL跳转漏洞
WEB安全漏洞及渗透测试手法:短信_邮件_炸弹_暴力破解
漏洞扫描工具:ZAP简介及安装
漏洞扫描工具:ZAP纯自动扫描机制
漏洞扫描工具:ZAP被动扫描-浏览器
漏洞扫描工具:ZAP模糊测试
漏洞扫描工具:ZAP构建CSRF攻击表单
漏洞扫描工具:CSRF Token构建机制
漏洞扫描工具:安全测试报告及脚本机制

15.K8S云原生技术测试应用内容

容器技术与虚拟机区别
手把手教你搭建docker环境
Docker 容器使用
Docker 项目运行镜像制作
Docker容器部署运行测试环境
Kubernetes介绍
高可用Kubernetes集群部署
详解Pods、Service、Namespace等核心概念
核心组件:Master
K8S测试环境搭建
Helm应用管理工具
Kubesphere产品介绍
K8S持续集成流程实现
K8S云原生 CI/CD 工具链
自动化测试技术与K8S融合

相关文章:

从写下第1个脚本到年薪40W,我的自动化测试心路历程

我希望我的故事能够激励现在的软件测试人,尤其是还坚持在做“点点点”的测试人。 你可能会有疑问:“我也能做到这一点的可能性有多大?”因此,我会尽量把自己做决定和思考的过程讲得更具体一些,并尽量体现更多细节。 …...

Vue CLI组件通信

目录 一、组件通信简介1.什么是组件通信?2.组件之间如何通信3.组件关系分类4.通信解决方案5.父子通信流程6.父向子通信代码示例7.子向父通信代码示例8.总结 二、props1.Props 定义2.Props 作用3.特点4.代码演示 三、props校验1.思考2.作用3.语法4.代码演示 四、prop…...

C语言编译器(C语言编程软件)完全攻略(第九部分:VS2019使用教程(使用VS2019编写C语言程序))

介绍常用C语言编译器的安装、配置和使用。 九、VS2019使用教程(使用VS2019编写C语言程序) 继《八、VS2019下载地址和安装教程(图解)》之后,本节给大家讲解如何用 VS2019 编写并运行 C 语言程序。 例如,在…...

走向云原生 破局数字化

近年来,随着云计算概念和技术的普及,云原生一词也越来越热门,云原生成为云计算领域的新变量。行业内,华为、阿里巴巴、字节跳动等各个大厂都在“抢滩”云原生市场。行业外,云原生也逐渐出圈,出现在大众视野…...

spring常用注解(三)springbean类

一、Service用于标注业务层组件、 二、Repository用于标注数据访问组件,即DAO组件。 三、Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注。(pojo) 四、Scope用于指定scope作用域的&#xff…...

qiankun微服务

官网 📦 基于 single-spa 封装,提供了更加开箱即用的 API。 📱 技术栈无关,任意技术栈的应用均可 使用/接入,不论是 React/Vue/Angular/JQuery 还是其他等框架。 💪 HTML Entry 接入方式,让你接…...

文件夹重命名方法:提高效率减少错误,中英文批量翻译文件夹名称

在日常生活和工作中,经常要处理大量的文件夹,无论是整理电脑上的文件,还是为项目分类。如何快速、准确地重命名这些文件夹,对于提高工作效率和减少错误至关重要。现在来看下云炫文件管理器一些实用的文件夹重命名方法,…...

【PHP】where和whereOr一起复杂查询示例

在ThinkPHP 5 中,where 和 whereOr 方法可以一起使用以实现复杂的查询条件。以下是一个示例: // 接收的参数 $param $this->request->param();// 实例化 $query new UserModel();// 关联表 $query->with([collect > function($collect_qu…...

Mysql 动态链接库配置步骤+ 完成封装init和close接口

1、创建新项目 动态链接库dll 2、将附带的文件都删除,创建LXMysql.cpp 3、项目设置 3.1、预编译头,不使用预编译头 3.2、添加头文件 3.3、添加类 3.4、写初始化函数 4、项目配置 4.1、右键解决方案-属性-常规-输出目录 ..\..\bin 4.2、生成lib文件 右…...

哈希一致性算法

一致性哈希是什么,使用场景,解决了什么问题? #网站分配请求问题? 大多数网站背后肯定不是只有一台服务器提供服务,因为单机的并发量和数据量都是有限的,所以都会用多台服务器构成集群来对外提供服务。 但…...

基于SpringBoot的在线考试系统绿色

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅 项目介绍 基于SpringBoot的在线考试系统绿色,java…...

设计模式:原型模式

原型模式 定义代码实现使用场景 定义 原型模式(Prototype Pattern)是一种创建型设计模式,它允许通过复制现有的对象来创建新对象,而无需从头开始编写代码。在这个模式中,我们可以使用已经存在的对象作为“原型”&…...

Qt5+VS2013兼容XP方法

用Qt5VS2013编译程序默认配置会在XP运行时报"不是有效的Win32程序" 工作需要必须要XP运行 pro文件中加一句: QMAKE_LFLAGS_WINDOWS /SUBSYSTEM:WINDOWS,5.01 ------------------------------------------------------- qtbase\mkspecs\common\msvc-desktop.conf …...

GitHub Copilot 最佳免费平替:阿里通义灵码

之前分享了不少关于 GitHub Copilot 的文章,不少粉丝都评论让我试试阿里的通义灵码,这让我对通义灵码有了不少的兴趣。 今天,阿七就带大家了解一下阿里的通义灵码,我们按照之前 GitHub Copilot 的顺序分享通义灵码在相同场景下的…...

体系化的进阶学习内容

UWA学堂:传播游戏行业的体系化的进阶学习内容。UWA学堂作为面向开发者的在线学习平台,目前已经上线272门课程,涵盖了3D引擎渲染、UI、逻辑代码等多个模块,拥有完整的学习体系,一直致力于为广大的开发者提供更丰富、更优…...

SpringBoot解决前后端分离跨域问题:状态码403拒绝访问

最近在写和同学一起做一个前后端分离的项目,今日开始对接口准备进行 登录注册 的时候发现前端在发起请求后,抓包发现后端返回了一个403的错误,解决了很久发现是【跨域问题】,第一次遇到,便作此记录✍ 异常描述 在后端…...

【linux】更改infiniband卡在Debian系统的网络接口名

在Debian或任何其他基于Linux的系统中,网络接口的名称由udev系统管理。通过创建udev规则,可以修改网络接口名称。以下是更改InfiniBand卡接口名称的一般步骤: 1. 找到网络接口的属性,以编写匹配的udev规则 可以使用udevadm命令查…...

SPRING BOOT发送邮件验证码(Gmail邮箱)

SPRING BOOT邮件发送验证码 一、Gmail邮箱配置 1、进入Gmail(https://mail.google.com) 2、打开谷歌右上角设置 3、启用POP/IMP 4、启用两步验证(https://myaccount.google.com/security) 5、建立应用程式密码 6、复制保存应用程式密码 二、代码 1、引入依赖 <d…...

Liunx安装FTP和SFTP

ftp端口&#xff1a;20/21 sftp端口&#xff1a;22 一、ftp 1、安装ftp yum install vsftpd #安装ftp 服务 &#xff08;1&#xff09;查看ftp服务的状态 命令&#xff1a;service vsftpd status PS&#xff1a;提示vsftpd: command not found&#xff0c;修改PATH的环境…...

【Mars3d】new mars3d.layer.GeoJsonLayer({不规则polygon加载label不在正中间的解决方案

问题&#xff1a; 1.new mars3d.layer.GeoJsonLayer({type: "polygon",在styleOptions里配置label的时候&#xff0c;发现这个 不规则polygon加载的时候&#xff0c;会出现label不在中心位置。 graphicLayer new mars3d.layer.GeoJsonLayer({ name: "全国省界…...

怎么快速修复mfc140.dll文件?解决mfc140.dll缺失的方法

面对计算机报告的 ​mfc140.dll​ 文件遗失错误&#xff0c;这通常表明系统中缺少一个关键的动态链接库文件&#xff0c;该文件对于运行以 Microsoft Foundation Class (MFC) 库编写的程序十分重要&#xff0c;尤其是那些需要图形界面的应用程序和一些游戏。若没有这个文件&…...

安全防御之入侵检测与防范技术

安全防御中的入侵检测与防范技术主要涉及到入侵检测系统&#xff08;IDS&#xff09;和入侵防御技术&#xff08;IPS&#xff09;。 入侵检测系统&#xff08;IDS&#xff09;是一种对入侵行为自动进行检测、监控和分析的软件与硬件的组合系统。IDS通过从计算机网络或系统中的若…...

Leetcode2807. 在链表中插入最大公约数

Problem: 2807. 在链表中插入最大公约数 文章目录 题目思路注意点Code 题目思路 模拟插入流程&#xff1a; 检测当前节点是否有后置结点&#xff1b;将当前结点与后置结点的值做最大公约数处理得到新结点的值&#xff0c;然后插入到当前结点之后&#xff1b;再将检测结点向后…...

MySQL-DML

DML是数据操纵语言&#xff0c;用来对表中数据进行增删改操纵。 添加数据&#xff1a;INSERT 1.给指定字段添加数据&#xff1a;INSERT INTO 表名(字段名1,字段名2,...)VALUES(值1,值2); 2.给全部字段添加数据&#xff1a;INSERT INTO 表名VALUES(值1,值2) 3.给指定字段批量添…...

开源项目 | 完整部署流程、一款开源人人可用的开源数据可视化分析工具

&#x1f4da; 项目介绍 在互联网数据大爆炸的这几年&#xff0c;各类数据处理、数据可视化的需求使得 GitHub 上诞生了一大批高质量的 BI 工具。 借助这些 BI 工具&#xff0c;我们能够大幅提升数据分析效率、生成更高质量的项目报告&#xff0c;让用户通过直观的数据看到结…...

我建立了一个资源分享群

我建立了一个资源分享群 在为寻找资源犯愁&#xff1f; 在为分享资源犯愁&#xff1f; 一起加入分享资源群&#xff08;是wx群哦&#xff09;吧&#xff01;你可以分享自己的资源帮助他人。你可以在群组里需求资源获取别人的帮助。发广告请绕行&#xff0c;会被拉黑哦 微信…...

C++中几个常用的类型选择模板函数

std::enable_if<B, T>::type 如果编译期满足B&#xff0c;那么返回类型T&#xff0c;否则编译报错 std::conditional<B, T, F>::type 如果编译期满足B&#xff0c;那么返回类型T&#xff0c;否则返回类型F 下面是一个示例&#xff0c;展示如何使用 std::condit…...

【LeetCode】1321. 餐馆营业额变化增长

表: Customer ------------------------ | Column Name | Type | ------------------------ | customer_id | int | | name | varchar | | visited_on | date | | amount | int | ------------------------ 在 SQL 中&#xff0c;(custo…...

【网络技术】【Kali Linux】Wireshark嗅探(八)动态主机配置协议(DHCP)

一、实验目的 本次实验使用 Wireshark &#xff08;“网鲨”&#xff09;流量分析工具进行网络流量嗅探&#xff0c;旨在初步了解动态主机配置协议&#xff08;DHCP协议&#xff09;的工作原理。 二、DHCP协议概述 动态主机配置协议&#xff08; D ynamic H ost C onfigurat…...

算法29:不同路径问题(力扣62和63题)--针对算法28进行扩展

题目&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff0…...

深圳横岗做网站的/app推广策略

转载&#xff1a;https://blog.csdn.net/u011762993/article/details/40898871 一、使用方法 假设创建的对话框的类名是CMyDlg&#xff0c;具体过程如下&#xff1a; 步骤一&#xff1a;在CMyDlg对话框界面单击右键进入对话框的属性设置界面&#xff0c;将Border设置为Resiz…...

福州网站设计费用/鄂州seo

PYPI 国内源 搬砖自http://www.cnblogs.com/sunnydou/p/5801760.html 阿里云 http://mirrors.aliyun.com/pypi/simple/中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/ 豆瓣(douban) http://pypi.douban.com/simple/ 清华大学 https://pypi.tuna.tsinghua.edu.cn/simpl…...

网站建设公司怎么盈利/推广网络公司

1.解决方案&#xff1a;在第四行URL前加www即可 http://www.mybatis.org/dtd/mybatis-3-config.dtd2.如果还是报错&#xff0c;可能是Eclipse未引入XML的dtd约束文件。 Eclipse引入XML的dtd约束文件操作如下&#xff1a; 1.Window–>Preferences–> 2.找到XMl操作如下…...

wordpress typecho 大数据库/外包网站

Solr实现全文搜索SolrApache Solr特点搜索引擎搜索引擎组件搜索引擎工作流程分词技术中文分词算法基于字符串匹配基于统计及机器学习的分词方式IKAnalyzer部署Solr并安装IKAnalyzerSolr分析功能修改managed-schema配置业务系统字段复制配置到容器重启容器SpringBoot整合Solr创建…...

做wish选品参考什么网站/网站多少钱

【DATAGUARD】 基于同一个主机建立物理备库和逻辑备库&#xff08;二&#xff09; 之前发布过一步一步搭建 oracle 11gR2 rac dg&#xff0c;这里的dg为物理dg&#xff0c;但是实际自己使用过程中发现需要开3个虚拟机&#xff0c;机器特卡&#xff0c;所以决定在同一台机器上再…...

昆明做网站建设的公司哪家好/seo快排技术教程

首先获取两个 nginx 源码包nginx-1.4.7.tar.gznginx-1.6.2.tar.gz------------安装nginx----------# yum install -y gcc gcc-c make //安装gcc由于实验环境缺少编译工具# yum install -y pcre-devel zlib-devel // nginx rewrite gzip 需要依赖的库解压nginx# tar -xzvf n…...