自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 OSI七层模型总结

OSI

2022-09-11 10:48:08 243 1

原创 八股(C++/Python/计网/数据库/操作系统)

自己不会总结,所以就把看过的连接都放进来,以便快速复习。C++知识C++所有内容:【C++ Primer】目录_今岁成蹊的博客-CSDN博客_c++primer目录《Effective C++》 目录_KangRoger的博客-CSDN博客【C++ Primer】目录_今岁成蹊的博客-CSDN博客_c++primer目录1. 智能指针【C++学习笔记】37 新特性5:智能指针 - 知乎 (zhihu.com)C++ 智能指针最佳实践&源码分析2、C++ 中内存分配情况

2022-05-19 20:44:45 1046

原创 WebUI自动化测试

主要是selenium+pytest+POM一、selenium初始框架:# 导入模块from selenium import webdriverfrom time import sleep# 实例化浏览器对象driver = webdriver.Chrome()# 打开网页driver.get('***.html')# 展示效果sleep(3)# 关闭页面driver.quit()元素定位# 使用id定位element = driver.f

2022-05-08 22:15:24 868

原创 软件测试八股(二)

一、测试的主要方面功能测试:链接测试、表单测试、Cookie测试,设计语言测试,数据库测试性能测试:连接速度测试,负载测试,压力测试接口测试:服务器接口,外部接口,错误处理可用性测试:导航测试,图形测试,内容测试,整体界面测试兼容性测试:平台测试,浏览器测试,视屏测试,连接速度测试,打印机测试,组合测试安全测试:目录设置,登录,Session,日志文件,加密,安全漏洞代码合法性测试:程序代码合法性检查,显示代码合法性检查文档测试二、软件测试的对象数据,文档,程序三

2022-04-27 10:46:17 291

原创 软件测试八股(一)

一、什么是软件测试软件测试是发现软件缺陷而执行软件的过程。二、软件测试的目的1. 提高软件的质量2. 提高软件的安全性3. 降低软件的开发成本4. 降低因为软件缺陷而产生的商业风险5. 为用户接收软件提供依据6. 增加用户对软件的信任三、软件测试的目标1. 发现软件程序员在开发过程中可能造成的缺陷2. 获得质量水平的信息并提供质量水平的信息3. 防止软件缺陷4. 确保最终软件能够满足业务和用户的需求5. 确保软件满足业务需求规范和系统需求规范6.

2022-04-27 10:06:16 534

原创 登录和发布文章功能测试

登录登陆需求1. 输入正确的中国手机号(11位)当文本框失去焦点的时候验证,红色为失败,绿色位成功2. 点击发送验证码如果手机号文本框状态为绿色,弹出“点击按钮进行验证”如果手机号文本框位红色,提示手机号不正确3. 点击按钮进行验证拖拽图形到指定位置,按钮小时;拖拽图...

2022-04-23 16:47:38 617

原创 软件测试总结

1. 测试主流技能功能测试、自动化测试、接口测试、性能测试2. 常见测试分类按阶段划分:单元测试、集成测试、系统测试、验收测试按代码可见度划分:白盒测试、灰盒测试、黑盒测试单元测试:针对程序源代码进行测试(开发)软件测试基础 (一): 单元测试 - 知乎 (zhihu.com)集成测试:又称接口测试,主要针对模块与模块或系统与系统之间的接口进行测试软件测试入门系列之十:集成测试 - 知乎 (zhihu.com)系统测试:针对软件全面进行验证(功能、兼容、文档)软件测试基础 (三)

2022-04-23 11:19:06 417

转载 HTTP学习

1. IP协议、TCP协议和DNS服务在使用HTTP协议通信过程中各自发挥作用客户端任务:hei!我想浏览http://hackr.jp/xss/ Web页面首先他就访问DNS服务器,客户端表示:ei,DNS,我想知道hackr.jp的地址,告诉我呗~DNS服务器回答:ummm,hackr.jp对应的IP地址是20X.189.105.112撒~客户端我有了IP地址了嘿!那我就用HTTP协议问吧~我用HTTP协议生成对应的HTTP请求报文,然后把这个把这个报文交给TCP,TCP就把我的HTTP

2022-04-22 20:40:07 482

原创 jei回馈,投稿经历,历时2个月左右

一审:StageStartDateRevision Received 2022-03-05 20:02:08Waiting for Revision2022-02-23 14:15:49Decision Sent ...

2022-04-13 11:25:03 5854 46

原创 selenium学习

测试分类:按开发阶段:单元、继承、系统、验收测试按是否查看代码:黑盒、白盒、灰盒按是否运行:静态、动态按测试对象:性能、安全、兼容性、文档、用户体验、业务、界面、安装、内存泄漏按测试实施的组织:a、b、第三方按是否手工执行:手工、自动化其他分类:冒烟、回归selenium三剑客:selenium webdriver:客户端API,测试人员通过调用这些接口访问浏览器驱动,浏览器驱动再访问浏览器selenium ide:浏览器插件selenium grid:大型项.

2022-04-11 16:11:59 629

原创 TinyWebServer读经---日志

log:重写了一个阻塞队列,主要在原来的队列模板上加入了锁机制,以此来使得异步写入的时候保证临界资源访问没有问题C++11以后,使用局部变量懒汉不用加锁static Log *get_instance() {static Log instance;return &instance;}Log析构函数设置为虚函数异步需要设置阻塞队列的长度,同步不需要设置如果设置了max_queue_size,则设置为异步,异步时需要创建一个线程来进...

2022-04-05 20:51:28 1384

原创 软件系统测试流程规范

一阶段:一周:系统测试的流程规范二周:数据库基础三周:Linux操作系统四周:项目实战五周:APP专项测试段位:初级测试工程师、初中级测试工程师的能力二阶段:一周:Python基础二周:Python高阶三周:接口测试(基于Python自动化实施方案)四周:UI测试(基于Python自动化实施方案)段位:中级工程师三阶段:一周:性能测试流程规范二周:性能测试高阶三周:性能测试项目实战四周:自动化测试框架设计实现段位:中高级、高级四阶段

2022-03-31 22:26:02 1296

原创 矩阵旋转模板

1. 矩阵顺时针旋转90°1. 先按照对角线对称对换2. 每行数组翻转2. 矩阵逆时针旋转90°1. 先按照对角线对称对换2. 列进行翻转,第一列放到最后一列......3. 一串字符按单词翻转1. 整个字符串翻转2. 每个单词翻转4. 螺旋遍历数组定义四个边界,每次遍历不能超过边界值的范围修改边界...

2022-03-29 16:01:08 518 2

原创 差分数组解题模板

差分数组适合解决对数组某一部分值做同样的改变的题。主要分为三步:1. 初始化差分数组 2. 做改变 3. 还原数组1. 建立int subNum[];int nums[];差分数组大小和原数组大小相同for(int i = 0; i < nums.size(); i++) { subNum[i] = nums[i]-nums[i-1];}2. 改变,[left, right, value] 从left到right都增加valuesubNum[le...

2022-03-29 15:07:07 204

原创 前缀和解题框架

前缀和适合解那种不改变原始数组数据(不管是几维都可以),计算原始数组部分和的问题。int []....[] preSum;int []....[] nums;preSum每个维度的大小都比nums每个维度的大小大1for(int i = 1; i < preSum.size(); i++) { for(int j = 1; j < preSum[i].size(); j++) { 前缀和 //...

2022-03-29 14:42:50 149

原创 异步请求池

请求组件:1. 线程池2. 协程3. 异步请求池请求第三方服务:以mysql为例:客户端send请求给业务服务器,业务服务器收到后进行解析,解析后调用mysql_query(sql)执行sql语句请求mysql服务器返回数据,这个请求mysql服务器请求时间很长,要等mysql服务器数据的返回才继续往下执行,否则就是阻塞状态。在单线程里面如果发多个请求,这些请求就是串行的,会很慢。异步请求:每次发完请求后不等待结果的返回,直接去干其他的事情,用一个线程去专门接收mysql数据库的返回。这样就实现

2022-03-28 16:02:27 963

原创 Reactor框架(事件驱动式框架)代码总结

1. 三个struct结构体1. 事件结构体,每个fd对应一个eventstruct ntyevent { int fd; //每个event对应一个fd int events; void *arg; int (*callback)(int fd, int events, void *arg); //回调函数 int status; char buffer[BUFFER_LENGTH]...

2022-03-27 21:13:29 1495

原创 五种IO模型

在调用read函数的时候要经过两个阶段:1. 等待数据阶段:没有数据→数据就绪2. 数据拷贝阶段:将数据从内核拷贝到用户态(read),或者从用户态拷贝到内核态(write),这个阶段数据拷贝→拷贝完成。阻塞IO在这种情况下调用read的时候,如果数据还没有准备好,那就会被阻塞,等到准备好并拷贝完返回结果才解除阻塞状态,所以他会在两个阶段都阻塞。系统调用一般都是阻塞型的,只有当结果返回的时候才会解除阻塞状态。非阻塞IO可以设置socket来让其变成非阻塞IO(fcnt...

2022-03-26 21:30:59 503

原创 深入理解epoll

intmain(){listen(lfd,...);cfd1=accept(...);cfd2=accept(...);efd=epoll_create(...);epoll_ctl(efd,EPOLL_CTL_ADD,cfd1,...);epoll_ctl(efd,EPOLL_CTL_ADD,cfd2,...);epoll_wait(efd,...)}和epoll相关的函数主要有三个: ep...

2022-03-25 19:32:50 2055

原创 TinyWebServer阅读笔记(二)

有错误麻烦大佬指出!!!拜托了!!!!异步日志实现:主要包含两个部分: 1. 日志模块 2.阻塞队列模块,其中加入阻塞队列模块主要是解决异步写入日志做准备.阻塞队列模块:实现了一个模板类循环队列block_queue(int max_size = 1000)//根据max_size的大小对循环队列进行构造,这个里面主要有以下几个属性: 1. m_max_size: 循环队列能容纳的最大元素个数 2. m_array: 具体的循环队...

2022-03-24 21:56:18 576

原创 log4cpp

fwrite -> 用户态缓冲区 -> write ->内核 write -> 内核当每次写入的数据较小(小于1024)的时候fwrite的效率更高。但如果每次写的数据很多(比如2900)则write的效率更高,因为fwrite要进行二次拷贝日志输出方式:输出到控制台 输出到本地文件 通过网络输出到远程服务器日志回滚:本地日志支持最大文件限制,当本地日志到达最大文件限制的时候新建一个文件,每天至少一个文件。Log4cpp配置文件:可以分模块打印不同的日志,也

2022-03-24 21:35:48 573

原创 TinyWebServer阅读(一)

有错误麻烦大佬指出!!!拜托了!!!!主线程epoll监听socket://创建套接字,返回listenfdint listenfd = socket(PF_INET, SOCK_STREAM, 0);assert(listenfd >= 0);int ret = 0;struct sockaddr_in address;bzero(&address, sizeof(address));address.sin_family = AF_INET;address.sin_

2022-03-24 16:34:28 4097

原创 MySQL

数据库类型:1.关系型数据库mysql 2. redis mongo 3. elasticsearchOLTP(一般就是我们,对数据库进行增删改查)、OLAP(对数据进行分析)SQL:结构化查询语言DQL:查询语句DML:引起数据库数据变更的语句,增删改DDL:数据定义语句,create,alter,dropDCL:数据控制语句,grant,revokeTCL:事务控制语言commit,rollback复合键:多个列作为一个键MySQL体系结构:连接件connectors

2022-03-23 20:15:36 440

原创 BM23 二叉树的前序遍历

/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} * }; */class Solution {public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * .

2022-03-23 11:51:40 99

原创 94. 二叉树的中序遍历

给定一个二叉树的根节点 root ,返回它的 中序遍历。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[2,1]示例 5:输入:root = [1,null,2]输出:[1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bin.

2022-03-22 19:46:05 317

原创 剑指 Offer 55 - II. 平衡二叉树

输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \4 4...

2022-03-22 18:53:05 70

原创 内存池的实现与场景分析

内存池是对malloc在堆上申请出来的空间进行的管理!内存池作用:(内存池要用但不要自己造,要懂他的原理)避免频繁分配内存(recv之前malloc一块空间,让recv函数来用,这种方式内存会被频繁分配释放和使用,会造成内存碎片化,这样当我们再次申请一块大内存的时候会遇到分配失败的情况。)内存池:jemalloc,tcmalloc避免频繁分配与释放方法: 1. 使用链表,每次malloc把块加入到链表中,不释放,调用free的时候直接在结构体里设置一个fla...

2022-03-22 14:53:51 781

原创 jei投稿求福

一审:呜呜呜,很幸运一个月一审就完了,给了大修改了十几天三十多页的回复意见,但是投完还是发现了一些小错误,希望二审能中!!!!走过路过求留下福气祝我二审小修or accept,拜托了!!!!!...

2022-03-22 13:18:24 1291 43

原创 面试题32 - I. 从上到下打印二叉树

从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。例如:给定二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回:[3,9,20,15,7]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof哎,树来了。左神好厉害啊,我好菜,只会常规题/...

2022-03-22 13:00:56 77

原创 148. 排序链表

给你链表的头结点head,请将其按 升序 排列并返回 排序后的链表 。示例 1:输入:head = [4,2,1,3]输出:[1,2,3,4]示例 2:输入:head = [-1,5,3,4,0]输出:[-1,0,3,4,5]示例 3:输入:head = []输出:[]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sort-list/** * Definition for singly-linked ..

2022-03-22 10:04:47 70

转载 剑指 Offer 22. 链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-bi..

2022-03-22 09:59:08 68

原创 剑指 Offer 18. 删除链表的节点

给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释: 给定你链表中值为1的第三个节点,那么在调用了你的函数...

2022-03-22 09:40:01 55

原创 剑指 Offer 25. 合并两个排序的链表

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4限制:0 <= 链表长度 <= 1000来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/** * Definition

2022-03-22 09:31:58 1187

原创 剑指 Offer 35. 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。示例 1:输入:head = [[7,null],[13,0],[11,4],[10,2],[1,0]]输出:[[7,null],[13,0],[11,4],[10,2],[1,0]]示例 2:输入:head = [[1,1],[2,1]]输出:[[1,1],[2,1]]示例 3:输入:hea

2022-03-22 09:24:01 61

原创 143. 重排链表

给定一个单链表 L 的头节点 head ,单链表 L 表示为:L0 → L1 → … → Ln - 1 → Ln请将其重新排列后变为:L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。示例 1:输入:head = [1,2,3,4]输出:[1,4,2,3]示例 2:输入:head = [1,2,3,4,5]输出:[1,5,2,4,3]来源:力扣(LeetCode)链接:https:

2022-03-21 22:14:33 70

原创 86. 分隔链表

给你一个链表的头节点 head 和一个特定值 x ,请你对链表进行分隔,使得所有 小于 x 的节点都出现在 大于或等于 x 的节点之前。你应当 保留 两个分区中每个节点的初始相对位置。示例 1:输入:head = [1,4,3,2,5,2], x = 3输出:[1,2,2,4,3,5]示例 2:输入:head = [2,1], x = 2输出:[1,2]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/partition-

2022-03-21 22:00:11 67

原创 23. 合并K个升序链表

给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例 1:输入:lists = [[1,4,5],[1,3,4],[2,6]]输出:[1,1,2,3,4,4,5,6]解释:链表数组如下:[ 1->4->5, 1->3->4, 2->6]将它们合并到一个有序链表中得到。1->1->2->3->4->4->5->6示例 2:输入:lists = ...

2022-03-21 10:30:12 56

原创 21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例 1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例 2:输入:l1 = [], l2 = []输出:[]示例 3:输入:l1 = [], l2 = [0]输出:[0]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists/

2022-03-21 10:11:40 67

原创 19. 删除链表的倒数第 N 个结点

给你一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。示例 1:输入:head = [1,2,3,4,5], n = 2输出:[1,2,3,5]示例 2:输入:head = [1], n = 1输出:[]示例 3:输入:head = [1,2], n = 1输出:[1]来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/** * D..

2022-03-21 10:04:52 859

原创 2. 两数相加

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,9,

2022-03-21 09:39:25 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除