自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Visual Statio 配置

Visual Studio 解决方案 .sln文件 解读 | 小鱼人的专属博客

2024-02-08 09:00:13 123

原创 接口测试学习笔记

结合步骤3,使用pytest的装饰器 @pytest.mark.parameterize 以实现json文件数据驱动。#将每条数据以json的形式组织,然后通过列表组织起来,放在data文件夹下,保存为xxx.json。编写方法,将json文件读取,并将json列表组织的形式转化为元祖列表组织的形式。作用:规定了客户端与服务器之间的信息传递规范,是二者共同遵守的协议。congfig文件中保存基本的url 和 项目的路径等基本信息。http:超文本传输协议,基于请求与响应的应用层协议。为什么要有接口规范?

2023-12-22 15:17:08 1210

原创 软件测试基础学习笔记

软件:控制计算机工作的工具软件测试:使用技术手段验证软件是否满足使用需求测试目的:减少软件缺陷,保障软件的质量。

2023-12-12 23:17:39 138

原创 mysql基础学习笔记

数据库操作查询所有数据库:SHOW DATABASES;查询当前数据库:SELECT DATABASE();创建数据库:CREATE DATABASE [IF NOT EXISTS] 数据库名称 [DEFAULT CHARSET 字符集] [CALLATE 排序规则];删除数据库:DROP DATABASE [IF NOT EXISTS] 数据库名称;使用数据库:USE 数据库名;表操作——创建&查询查询当前数据库所有表:SHOW TABLES;查询表结构:DESC 表名;

2023-11-17 14:26:44 523

原创 selenium 自动化测试——WebDriver API

控制浏览器窗口大小:set_window_size()方法设置全屏模式下运行:maximize_window()方法控制浏览器前进、后退:back(),forward()方法模拟浏览器刷新:driver.refresh()方法,模拟手动刷新(F5按键)

2023-10-17 14:29:11 480

原创 selenium 自动化测试——元素定位

WebDriver 提供了8种元素的定位方法,分别是:id 定位:find_element(By.ID, "kw")name 定位: find_element(By.NAME, "")tag 定位: find_element(By.TAG, "")class 定位: find_element(By.CLASS_NAME, "")link text 定位: find_element(By.LINK_TEXT, "")

2023-09-08 15:18:27 470

原创 selenium 自动化测试——环境搭建

然后找到对应的webdriver文件下载,完成后将该驱动放到 /usr/local/bin下即可。执行过程中,你会发现执行到第4行时会报错,那是因为没有下载对应的浏览器驱动,然后尝试第一次使用selenium 完成一个简单的测试自动化脚本。安装python,并且使用pip命令安装 selenium。下载对应的驱动,我的是chrome浏览器,查看版本。

2023-09-02 17:32:32 1065

原创 设计模式之单例模式

什么是设计模式?设计模式代表了最佳的实践。是软件开发人员在软件开发过程中面临的一般问题的解决方法。这些解决方案是众多软件开发人员经过相当长一段时间的试验和经验错误总结出来的。所以,设计模式是一套被反复使用的,多数人知晓、经过分类编目的、代码设计经验的总结。什么是单例模式?单例:一个类只能实例化出一个实例 模式:软件开发过程中,软件开发人员总结出的一套解决一般问题的方案...

2018-09-04 12:04:42 158

原创 HTTP服务器(三)

下面实现处理动态页面的逻辑:创建一对命名管道,fork创建子进程;让父子进程执行不同的任务值得注意的是,由于管道数据流动是单向的,所以要创建一对;父进程将必要的信息通过管道传递给子进程,子进程将计算的结果通过管道传递给父进程。int HanndlerCGI(int sock, Req* req){ err_code = 200; //1、创建一对匿名管道 ...

2018-08-23 16:41:17 288

原创 HTTP服务器(二)

前面已经实现了服务器的整体框架,现在就来具体实现HTTP服务器处理静态页面的逻辑。要获取具体的静态文件,就要知道要获取的文件的路径。我们分析url:协议方案名:使用http:或https:等协议方案名获取访问资源时要指定的协议类型登录信息:用户名和密码作为从服务器端获取的必要登录信息,是可选项服务器地址:访问服务器的地址(可以是要进行解析的地址,也可以是IPv4地址)服务...

2018-08-23 15:07:46 276

原创 HTTP服务器实现(一)

实现一个HTTP服务器就是实现一个程序可以接受客户端发送给服务器进程的请求消息,通过解析这些请求消息,做出相应的响应。下面我们先来梳理一下整体的思路: 进行服务器的初始化: int init_server(char* ip, int port){ int sock = socket(AF_INET, SOCK_STREAM, 0); if(sock < 0...

2018-08-22 16:37:32 1886

原创 Python爬虫之爬取CSDN人工智能栏目的文章

在进行正式开始爬虫之旅前,我们要认识几个Python库:urllib2:Python标准库,该库中提供了一系列针对url的操作方法 re:Python标准库,提供了一系列针对字符串匹配的方法 BeautifulSoup4:最主要的功能是从网页抓取数据(可以通过pip install BeautifulSoup4安装)接下来,就可以开始愉快的爬虫了~~首先,我们先获取要爬取的网页:...

2018-08-18 16:25:43 879 1

原创 NAT技术

我们知道,IPv4协议中,IP地址的数量并不能够满足我们现在的需要。除了通过子网掩码划分子网的方式可以一定程度解决这个问题外,还有一个方法——NAT技术。NAT技术是当前解决IP地址不够用的主要手段,是路由器的一个重要功能。NAT能够将私有IP转化为对外通信时的全局IP,很多学校、家庭、公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP;全局IP要求唯一,但是私有IP不需...

2018-08-14 18:23:11 378

原创 DNS与域名解析

DNS是一整套从域名映射到IP的系统。TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆。于是人们用一个字符串来表示这个IP地址,这个字符串就叫做主机名。并且使用一个host文件来描述主机名和IP地址的关系。最初,通过互联网信息中心来管理这个hosts文件。这时候如果一个新的计算机要接入网络,或者某个计算机IP变更,都需要到信息中心申请变更hosts...

2018-08-13 17:16:50 412

原创 数据链路层——以太网与ARP协议

1 以太网以太网不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容,例如:规定了网络拓扑结构、访问控制方式、传输速率等。例如以太网中的网线必须使用双绞线;传输速率有10M、100M、1000M等。以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网、无线LAN等。1.1 以太网帧格式协议帧类型如上图所示,有三种取值,分别对应IP协议,...

2018-08-13 11:47:13 2318

原创 网络层——IP协议

网络层的主要功能是寻找一条合适的路径。1 IP协议1.1 基本概念主机:配有IP地址,但不进行路由控制的设备; 路由器:即配有IP地址,又可以进行路由控制的设备; 节点:主机和路由器的统称。1.2 IP协议的结构服务类型:3位优先权字段(已弃用);4位TOS字段:分别表示最小延时、最大吞吐量、最高可靠性、最小成本,这四个相互冲突,只能选择一个(对于ssh/telnet这样...

2018-08-11 17:07:19 297

原创 认识传输层(UDP与TCP)

传输层主要负责数据能够从发送端发送到接收端。要正确传输就要明确发送端和接收端,这时候IP地址和端口号一起就可以确定一端了。那么他们是怎么唯一标识的呢?1 端口号(port)    端口号唯一标识一个主机上进行通信的不同应用程序。    在TCP/IP协议中,采用源IP地址、目的IP地址、协议号、源端口号、目的端口号这样一个五元组来进行唯一标识一个通信。1.1 端口号划分0~...

2018-08-11 12:11:31 1059

原创 HTTP协议(应用层协议)

1 协议      我们都知道,协议是一种约定,我们规定好一种信息的格式,如果发送方按照这种请求格式发送信息,那么接收端就要按照这样的格式解析数据。这就是协议。      应用层协议,一方面包含客户端和服务器端需要进行交互的信息,一方面包含如何组织(序列化)以及如何解析信息(反序列化)。2 自定制协议      我们可以通过一个简单的网络计算器的例子来自定制一个协议,体会其中的含义...

2018-08-09 15:48:10 4827

原创 TCP协议通讯流程——三次握手四次挥手

TCP协议通讯流程(如图) 1 服务器的初始化(服务器端)调用socket,创建文件描述符 调用bind,将当前文件描述符与IP地址跟端口号绑定在一起;如果该端口号已经被其它进程占用了,就会bind失败 调用listen, 声明当前文件描述符为服务器的文件描述符 调动accept,阻塞等待客户端连接2 建立连接的过程(三次握手)客户端调用socket,创建文件描...

2018-07-26 13:00:12 299

原创 网络编程套接字

1 IP地址1.1 IP地址的基本理解IP协议有两个版本,IPv4 和IPv6,我们这里使用IPv4。IPv4有4个字节,32位来表示 IP地址四IP协议中用来标识网络中不同主机的地址 我们通常使用点分十进制标识IP地址,如192.168.1.01.2 源IP地址和目的IP地址       在IP数据报头部有两个IP地址,一个是源IP地址,表示该数据报从哪个主机发送过来...

2018-07-26 09:51:26 228

原创 网络传输的基本流程

1 网络传输的进本流程同一网段内两台主机进行文件传输,文件传输的流程:2 理解封装和分用不同协议对数据报有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame); 应用层数据通过协议栈发到网络上,每层协议都要加上一个数据首部(header),称为封装; 首部信息中包含了一些类似于首部有多长,载荷多长,上层协议是什么的信...

2018-07-25 17:01:53 1142

原创 OSI七层模型与TCP/IP五层模型

1 OSI(open system interconnection)七层模型OSI模型为开放式系统互联参考模型,是一个逻辑上的定义和规范; 把网络从逻辑上划分为了7层,每一层都有相应的物理设备; OSI模型是一种框架性的设计方法,其主要功能是帮助不同类型的主机进行数据传输; 它最大的优点是将服务、接口和协议三个概念区分开,通过七个层次化的结构模型,使得不同系统的数据传输可靠;1.1 应...

2018-07-25 15:19:14 370

原创 多线程的同步与互斥——读者写者模型

在读者写者模型中,同样有“一二三”,一个交易场所,两种角色,三种关系。在读者写着模型中,读者与读者之间是共享的关系,因为并没有改变资源,所以不需要互斥;写者与写者之间是互斥的关系;读者与写者之间是同步与互斥的关系。那么如何实现这么复杂的关系呢?读写锁可以帮助我们进行完成以上同步与互斥关系:int pthread_rwlock_init(pthread_rwlock_t *re...

2018-07-23 16:37:51 875

原创 多线程的同步与互斥---生产者与消费者模型

生产者与消费者模型是多线程同步与互斥应用的一个典型场景,在这个模型中我们要实现:一个交易场所;两种角色(一个是生产者,一个是消费者);三种关系(互斥,同步,同步与互斥)。值得注意的是,消费者与消费者,生产者与生产者之间都是互斥的关系;而生产者与消费者之间是同步与互斥的关系。说到这里就不免要解释一下线程的同步与互斥是什么了?简单来说,互斥就是同一个资源,互斥双方不能同时访问;而同步就...

2018-07-23 16:13:52 1158

原创 Linux多线程

一、什么是线程什么是线程?        线程是进程中一个单一顺序的执行流。我们可以假设这样一个场景,有100道数学题,我做完一道数学题需要1分钟,做完100道需要100分钟;如果我有两个脑袋,其中一个脑袋做前50个题,另外一个脑袋做后50个题,这样我就可以省下一半的时...一个进程中可以有多个线程,这就意味着,完成一件任务,每个线程可以完成一部分,各个线程合作完成一件工作,会大大提高...

2018-07-19 15:34:20 183

原创 找出字符串中第一个只出现一次的字符

题目:找出字符串中第一个只出现一次的字符输入描述:输入一个非空字符串输出描述:输出第一个只出现一次的字符,如果不存在输出-1示例1输入asdfasdfo输出o解题思路:和找出一个数组中只出现一次的数字方法类似,都是利用哈希表的思想来统计每个字符或数字出现的次数。然后在进行遍历,以返回只出现一次的数字或字符。这个题的难点主要在于要自己设计main函数用来打印结果。值得注意的是,在这种题目中一定要循...

2018-07-11 16:49:05 384

原创 数组中出现次数超过一半的数字

题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路:要求出数组中出现超过一般的数字,也就意味着要统计每个数字出现的次数。可以利用哈希表,定义一个数组,在每个数字下标的地方存放该下标数字出现的次数。这样统计完后,就可以在进行一次...

2018-07-11 16:25:41 138

原创 逆序栈(使用递归)

题目:一个栈依次压入1,2,3,4,5那么从栈顶到栈底分别为5,4,3,2,1。将这个栈转置后,从栈顶到栈底为1,2,3,4,5,也就是实现了栈中元素的逆序,请设计一个算法实现逆序栈的操作,但是只能用递归函数来实现,而不能用另外的数据结构。给定一个栈Stack以及栈的大小top,请返回逆序后的栈。解题思路:借助递归,利用辅助函数,在调用辅助函数的函数定义一个栈,用来存放逆序后的结果;在辅助函数内进...

2018-07-11 16:21:37 581

原创 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。

题目:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。解题思路:可以借用一个临时栈帮助遍历数据并存放数据。代码实现:class Solution { stack<int> s;public: void push(int value) { s.push(value); } void pop() { ...

2018-07-10 15:47:34 1260

原创 将一个有序的链表转化为一个二叉搜索树

题目:Given a singly linked list where elements are sorted in ascending order, convert it to a height balanced BST.解题思路:解决这道题目,首先要想到的就是二叉树是递归定义的。所以我们在将链表转化为二叉树时,就要先从递归的角度入手。我们知道二叉搜索树是根节点比左子树的所有节点大,比右子树的所...

2018-07-09 18:32:12 271

原创 Partition(list)

题目:Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of ...

2018-07-09 18:24:40 381

原创 链表的旋转

题目:Given a list, rotate the list to the right by k places, where k is non-negative.For example:Given1->2->3->4->5->NULLand k =2,return4->5->1->2->3->NULL.解题思路:观察发现,如果我们将元...

2018-07-09 18:17:07 211

原创 删除链表的倒数第n个节点

题目:Given a linked list, remove the n th node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from th...

2018-07-09 18:05:22 99

原创 双栈排序

题目:请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector&ltint>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。思路:代码实现:class TwoStacks {public: ...

2018-07-09 16:44:25 173

原创 Linux查看系统负载的常用命令

top:查看系统整体状态uptime:与top的第一行相似主要描述的是01:33:50:当前时间,4 users:用户连接数load average:系统平均负载,最近1/5/15分钟的系统平均负载w:第一行与top的第一行相似。USER :登录的用户名 TTY :登录后系统分配的终端号 FROM:远程主机名,即从哪儿登录来的 LOGIN@:何时登录 IDLE:空闲了多长时间,表示用户闲置的时间。...

2018-07-08 17:20:44 915

原创 将一个二叉搜索树转化为有序双向链表

题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:    根据二叉搜索树的特点,左子树的结点<根节点<右子树的结点,我们可以按照二叉树中序遍历的顺序对该二叉树的指针进行调整,使得二叉树变为一个有序的双向链表。    采用递归的思路,先对左子树进行转换,    再处理根节点,让根节点的做指针指向它的前驱节点;...

2018-06-21 10:09:21 552

原创 连续子数组的最大和

题目:一个数组有 N 个元素,求连续子数组的最大和。 例如:[-1,2,1],和最大的连续子数组为[2,1],其和为 3解题思路:方案一:可以使用暴力求解的方式,直接用两层for循环来解决问题,是一个O(n^2)的算法方案二:从头开始遍历数组,每遍历一个元素sum+=array[i],若此时sum<array[i],就说明从array[i]开始的子数组的和大于前面的子数组的和,所以令sum=...

2018-06-19 12:52:49 131

原创 二维数组中的查找

题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解决思路:对于这样一个数组,我们可以观察到如果从右上角的元素开始比较,如果target>该元素,那么一定是++i;                                                      ...

2018-06-19 11:57:19 98

原创 正则表达式匹配

问题:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配解决思路:首先,我们考虑字符串匹配都有哪些情况:1)模式串的下一个字符为*:        a)匹...

2018-06-19 11:46:54 110

原创 信号

一、信号什么是信号?当我们运行一个前台进程时,通过键盘Ctrl+C可以输入一个硬件中断,如果CPU当前正在执⾏这个进程的代码,则该进程的⽤户空间代码暂停执⾏,CPU从⽤户态 切换到内核态处理硬件中断。终端驱动程序将Ctrl-C解释成⼀个SIGINT信号,记在该进程的PCB中(也可以说发送了⼀ 个SIGINT信号给该进程)。当某个时刻要从内核返回到该进程的⽤户空间代码继续执⾏之前,⾸先处理PCB...

2018-06-14 15:28:14 239

空空如也

空空如也

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

TA关注的人

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