自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 http//[服务器外网ip]:8080/ 出现404

首先应该用netstat -tunlp查看是否开启8080 端口如果没有开启则开启;若开启了,则需要看服务器安全组有没有添加8080 端口;在此可以参考服务器tomcat无法外网访问解决如果尝试以上情况都是正常,那么有可能是另一个tomcat进程未杀掉。则进行以下操作:1、使用ps查看tomcat进程id下图明显多一个id为16790的进程2、使用kill杀掉该进程3.再次进行访问就成功了。以上是我的一次服务器外网访问tomcat出现问题的解决过程。以后遇到若有多个tomcat需要先.

2021-03-12 20:37:56 2628

原创 0~n-1中缺失的数字

题目: 一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 :输入: [0,1,3]输出: 2解题思路:方法一:看到该题目我首先想到的就是将0~n-1加起来作为count1,将,将数组中的元素加起来作为count2,count1-count2的结果就是缺失的数字。class Solution { public int missingNumber(int[] nums.

2020-12-28 21:59:57 184

原创 实现简易版——MyLinkedList

class Node{ String val; Node pre; //双向 Node next; Node(String val){ this.val = val; }}public class MyLinkedList { private Node head; //头结点 private Node last; //尾结点 private int size; //链表中当前元素个数 public boo.

2020-12-26 17:17:20 170

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

题目: 在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。示例:s = “abaccdeff”返回 “b”s = “”返回 " "解题思路: 使用哈希表统计每个字符的个数,再遍历哈希表找到value为1的字符返回即可,注意要使用LinkedHashMap,是有序的,根据插入顺序进行遍历的。Java中HashMap、LinkedHashMap、TreeMap的区别import java.util.*;class Solution { publi

2020-12-24 21:04:20 91

原创 包含min函数的栈

题目: 定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min(); --> 返回 -3.minStack.pop();minStack.top(); --> 返回 0.

2020-12-24 17:38:22 118 1

原创 合并两个排序的链表

题目: 输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } }class Solution { public ListNode mergeT

2020-12-21 17:01:27 84

原创 二分查找

二分查找的基础是数组有序。二分查找的过程: 从数组的中间开始查找,如果给定值与中间值相等,则查找成功;如果给定值小于中间值,则在左半部分查找;如果给定值大于中间值则在右边部分查。具体看下面代码和注释public class test { public static int find1(int[] arr,int n){ int left = 0; int right = arr.length; //左闭右开 [left,right) //区

2020-12-20 22:55:09 61

原创 反转链表

题目: 定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL public class ListNode { int val; ListNode next; ListNode(int x) { val = x; } } class Solution { public Lis

2020-12-20 22:14:54 59

原创 链表中倒数第K个节点

**题目:**输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.解题思路: 快慢指针,先让快指针先走k-1步,然后快慢指针一起走,之后快指针一直比慢指针快k- 1步,当快指针到最后一个节点时,慢指针指向

2020-12-20 16:01:58 63

原创 Java中变量的三种形态

public class Person{//类变量public static char sex = 'F';//属性(实例变量)public int age;public String name;//构造方法public Person(int age,String name){this.age = age;this.name = name;} public void printInformation(){String province = "陕西";System.out.prin.

2020-12-19 21:22:42 171 1

原创 调整数组顺序使奇数位于偶数前面

**题目:**输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4]输出:[1,3,2,4]注:[3,1,2,4] 也是正确的答案之一。解题思路: 看到这道题,我首先想到的是快排中partition的过程,利用partition过程接替即可,两个指针i和j,分别从数组的两边开始遍历,左边遇到偶数,右边遇到奇数的时候,两者进行交换即可。(只是快排中若是升序排序,则左边大于基准值,右边小于基准值时

2020-12-19 17:32:31 130 1

原创 旋转数组的最小数

题目: 一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0方法一: 遍历数组,相邻两数进行比较,当前一个数比后一个数小时,说明此时的后一个属就是当前数组中最小的数;若数组为景行旋转,则就直接返回数组中的第一个元素。class Solut

2020-12-19 16:52:47 95 1

原创 数据库锁——学习笔记

数据库锁的分类:(1)按锁的粒度划分:分为表级锁、行级锁、页级锁(2)按照锁级别划分:分为共享锁、排它锁(3)按照加锁方式划分:分为隐式锁(内部自动加锁)、显示锁(显示的添加锁)(4)按照使用方式划分:分为乐观锁悲观锁数据库中不同的存储引擎支持不同的锁机制根据表粒度的锁1、表级锁:开销小,加锁快;不会出现死锁,发生锁冲突的概率最高;并发度最低表锁锁定整张表,一个用户在对表进行写操作前(插入、删除和更新等),需要先获得写锁,这会阻塞其他用户在对该表的所有读操作。只有没有写锁时,其他用户才能

2020-10-07 10:41:30 129 1

原创 表的约束

约束:数据库针对数据进行一系列的校验,如果发现插入的数据不符合约束中描述的校验规则,就会插入失败,为了更好的保证数据的正确性。MySQL中主要主持6种完整性约束:约束条件约束描述Primary Key主键约束,约束字段的值可以唯一的标识对应的记录Unique Key唯一约束,约束字段的值是唯一的Notnull Key非空约束,约束字段的值不能为空Default默认约束,约束字段的默认值Auto_Incremnet走到梦幻增加约束,约束字段的值自动增加

2020-10-05 17:18:53 810

原创 drop、truncate、delete

drop:直接删除表;包括表数据和表结构。truncate:删除表中的所有数据,并且会将表锁占用的空间全部释放; 再插入数据的时候,自增id又会从1开始。delete:删除表中的数据,可以利用where子句进行控制约束删除范围。从下面几个方面来看三者之间的详细区别:1、删除(1)delete语句执行删除操作的过程是每次从表中删除一行,并且同时将改行的删除操作作为事务记录在日志中保存以便进行回滚操作。(2)truncate是一次性从表中删除所有的数据并不把单独的删除记录记入日志中保存,删除行是不能

2020-10-04 18:30:13 175

原创 HTTP vs HTTPS

一、HTTPHTTP是超文本传输协议,是一个基于请求和响应,无状态的应用层协议,常基于TCP/IP传输数据,用于从WWW服务器传输超文本到本地浏览器的传输协议。关于HTTP前面的博客中已经进行了总结HTTP二、 HTTPS什么是HTTPSHTTP+加密+认证+完整性保护=HTTPSHTTPS并不是应用层的一个新协议。是HTTP的安全版,HTTP通信接口部分用SSL(Secure Socket Layer)和TLS(Transport Layer Security)协议代替。通常HTTP直

2020-10-04 16:34:18 492 1

原创 应用层——HTTP总结

为何要有应用层?我们知道数据能从客户端经过路径选择跨网络床送到服务器端进程(ip+port),可是,仅仅把数据从A点送到B点就结束了吗?这就好比,在淘宝上买了一部手机,卖家(客户端)把手机通过顺丰(传送+路径选择)送到卖家(服务器)手里就结束了吗?当然不是,买家还要实用这狂产品,还要在使用之后,给卖家打分评论。所以,我们把数据从A端传送到B端,TCP/IP解决的是顺丰功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关心应用细节!这层协议叫做应用层协议。而应用是有不同

2020-10-03 17:56:17 433

原创 测试用例的要素你知道吗

1、用例编号2、所属的功能模块 当前测试用例所在的测试用例大类或被测试需求、被测模块、被测单元等3、用例的标题4、重要级别,即用例的优先级 一般分为高、中、低。特殊项目可以自定义优先级别,目的是用例执行人员可以参照此来安排执行的时间。5、前置条件 执行该测试用例的前提条件,如果不满足此前提条件,则无法执行后边的测试步骤。前置条件并不是每个用例都需要的,是情况而定。6、输入数据7、操作步骤 执行当前测试用例时的操作步骤,需要明确的给出每个步骤的详细描述,用例执行人员需根据该步骤完成测试用例

2020-09-27 18:17:46 1396

原创 浏览器输入url回车后会发生什么呢?

在平时我们访问一个网址的是够,在浏览器属于对应域名,然后点击回车就会跳转到对应想要的页面。那么从输入点击回车到得到我们想要的页面都发生了哪些事情呢?一、解析URL按下回车,浏览器开始解析URL,通过URL,浏览器就可以知道下面信息:(1)请求协议:(http还是https等等)(2)服务器:(通常是域名,也可以是IP地址)(3)端口号:例如80端口(4)请求资源页(5)查询参数如果url不合法就会使用默认的搜索引擎进行搜索,如果输入的是一个域名,默认会加上一个http前缀。如果合法就可以进行

2020-09-21 20:48:19 203

原创 应用层——域名系统DNS

我们平常在访问某个网站的时候不使用IP地址,而是使用遗传有罗马字和点号组成的字符串。而一般用户在使用TCP/IP进行通信的时候也不实用IP地址。能够这样做是因为有了DNS(Domain Name System)功能的支持。DNS可以将那串字符串自动转换为具体的IP地址。这种DNS不仅使用于IPv4,还适用于IPv6。...

2020-09-20 18:36:09 792

原创 数据链路层

数据链路层数据链路层将网络层的分组封装成帧,在两个相邻结点间的链路上传输,每一帧包括数据和必要的控制信息(同步信息、地址信息、差错信息)。控制信息使接收端能够知道一个帧从哪个比特开始到哪个比特结束,从帧中提取数据交给网络层。控制信息还使接收端可以检测收到的帧有无差错,如果有差错就简单的丢弃,避免继续传送而浪费网络资源。认识以太网1、"以太网" 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容. 例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;

2020-09-20 12:07:43 122

原创 网络层——IP协议及IP地址总结

在复杂的网络环境中确定一个合适的路径主机:配有IP地址,但是不进行路由控制的设备路由器:既然、配有IP地址,又能进行路由控制节点:主机和路由器的统称协议格式-解包:4位首部长度分用:8位协议版本:IPv4(4位)、IPv6(6位)8位协议:表示上层协议的类型8位生存时间(TTL(time to live)):以跳位单位网段划分IP地址分为两个部分,网络号和主机号网络号:保证相互连接的两个网段具有不同的标识主机号:同一网段内,主机号之间具有相同的网络号,但是必须有不同的主机

2020-09-20 10:04:36 645

原创 地址解析协议 ARP

ARP不是一个单纯的网络层或者数据连路程协议,而是一个介于数据里哪路层和网络层之间的协议。由于IP使用了ARP因此把ARP轨道网络层,但ARP的作用是通过一个高速缓存,存储本地局域网的各主机和路由器的IP地址到硬件地址的映射表,以从网络层IP地址解析出数据链路层的硬件地址,因此也可以把ARP规划在数据链路层。ARP协议建立了主机IP地址和MAC地址的映射关系在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;数据包首先是被网卡接收到再去处理上层协议的,如果接收到的

2020-09-20 09:07:08 165

原创 认识路由

互联网是有路由器连接的网络组合而成的,为了能让数据报正确到达目标主机,路由器必须在途中进行正确的转发。这种想“正确方向”转发数据所进行的处理就叫做路由控制。路由的目的就是在复杂的网络结构中,找出一条通往终点路线路由的过程就是这样一跳一跳的过程(Hop by Hop)1、一跳(1Hop)是指利用数据链路层以下分层的功能传输数据帧的一个区间;2、以太网等数据链路中使用MAC地址传输数据帧。此时的一条是指从源MAC地址带目标MAC地址之间传输帧的区间。3、多条路由是指由路由器或主句在转发IP数据报时

2020-09-19 10:57:06 258

原创 传输层协议——TCP

TCP全称为“传输控制协议”人如其名,要对数据的传输进行一个详细的控制TCP协议段格式1、源/目的端口:表示数据从哪个进程来,到哪个进程去。2、4位TCP报头的长度:表示该TCP头部有多少个32位bit(有多少个4字节); 所以TCP头部最大长度是15 * 4 = 603、6位标志位:URG: 紧急指针是否有效ACK: 确认号是否有效PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段SYN: 请求建立连接; 我们

2020-09-16 21:26:24 501

原创 unittest测试框架总结

unittest框架解析unittest是python的单元测试框架,unittest单元测试提供了创建测试用例、测试套件以及批量执行测试的方案,unittest在安装python之后就直接自带了,直接import unitest就可以直接使用了。作为单元测试的框架, unittest 也是可以对程序最小模块的一种敏捷化的测试。在自动化测试中,我们虽然不需要做白盒测试,但是必须需要知道所使用语言的单元测试框架。利用单元测试框架,创建一个类,该类继承unittest的TestCase,这样可以把每个cas

2020-09-15 20:55:14 308

原创 selenium webdriver工作原理

1、启动浏览器,selenium-webdriver会将目标浏览器绑定带特定的端口,启动后的浏览器则作为webdriver的remote server(服务端)2、==客户端(也就是测试脚本)发送HTTP请求给server端。==通信协议:The WebDriver Wire Protocol,在HTTP请求的body中,会以The WebDriver Wire Protocol协议规定的JSON格式的字符串来告诉selenium我们希望浏览器接下来做什么。3、Server端需要依赖原生的浏览器组件,转

2020-09-15 18:15:57 323

原创 selenium常见API

元素定位(1)通过id和name定位(2)tag name(标签名)和class name(3)CSS定位(通过copy selector来获取)(4)XPath定位(通过copy xpath来获取)(5)link text定位(通过链接定位)(6)Partial link text定位(通过部分链接定位)不管用那种方式都需要保证页面上该属性的唯一性。以下是代码演示各种元素定位的方法:()#utf-8防止乱码coding=utf-8#要使用webdriver中的函数,首先需要把包导进来

2020-09-15 16:23:26 204

原创 认识自动化测试

什么是自动化测试?自动化测试是指软件测试的自动化,在预设状态下运行程序或者系统,预设条件包括正常和异常,最后评估运行结果。将认为驱动的测试行为转化为机器执行的过程。常用的自动化测试工具:selenium、jmeter、Loadrunner、Rational Robot 、appium、soapui、QTP等等selenium是一个web自动化测试工具。selenium测试工具的特点:(1)免费的,不需要破解(2)小巧,对于不同的语言,它只是一个包而已,利用import导入即可(3)支持多语言,

2020-09-15 15:35:21 129

原创 传输层协议——UDP

UDP协议端格式1、16 位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度2、如果校验和出错,直接丢弃UDP的特点1、无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接。2、不可靠:没有确认机制,没有重传机制;如果因为网络故障该段无法发送给对方,UDP协议层也不会给应用程序返回任何错误信息。3、面向数据报:不能灵活的控制读写数据的次数和数量。应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;//用UDP传输100个字节数据如果发送端调用一次s

2020-09-13 17:12:27 147

原创 认识端口号

我们知道传输层是负责数据从发送端到接收端,负责端对端的通信。端口号(port)标识了一个主机上进行通信的不同的应用程序。,因此被称为程序地址。传输层正是利用这些端口号识别本机中正在进行通信的应用程序。但是仅凭目标端口识别某一个通信是远远不够的。如上图所示:①和②的目标端口是相同的,但是源端口不同,就可以根据原端口进行区分。同理③和①的目标端口和源端口都是相同的,但源IP地址不同,就可以根据源IP地址区分。所以通常用==源IP”、“目标IP”、“源端口”、“目标端口”、“协议号”==这样一个五

2020-09-13 16:40:55 508

原创 OSI七层协议模型、TCP/IP四层模型和五层模型

以下是三种模型的体系结构OSI七层协议模型主要包括:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层四层模型主要包括:应用层、传输层、网络层、网络接口层五层模型主要包括:应用层、传输层、网络层、数据链路层、物理层五层体系协议结构是综合了OSI和TCP/IP的优点的一种协议结构,但是五层协议体系结构只是为介绍网络原理而设计的,实际使用还是TCP/IP四层体系结构。OSI由于体系比较复杂,而且设计先于实现,有许多设计过于思想,不太方便计算机软件实现,因而完全实现OSI参考模型的系统不多,应

2020-09-13 10:16:32 988

原创 聚合、联合查询

一、聚合查询聚合函数常见的聚合函数:count():返回查询到的数据的数量,(查询到多少行)sum():返回查询到的数据的总和,不是数字没有意义avg():返回查询到的数据的平均值,不是数字没有意义max():返回查询到的数据的最大值,不是数字没有意义min():返回查询到的数据的最小值,不是数字没有意义也可以先用where过滤,再进行聚合查询。grop by子句grop by子句可以进行分组havinggrop by中中也可以结合一些条件对数据进行进一步的筛选,不是使用w

2020-09-12 17:39:38 255

原创 数据库表的增删改查操作

一、 在表中插入插入数据全列插入要正确插入中文,就必须指定数据的字符编码方式,需要修改my.ini配置文件//多行插入insert into students values{(1,"小明",17),(2,"小花",18),(3,"小丽",18);}指定列插入insert into students(id,name) values(3,"小志");二、查询全列查询select * from students;注意:通常情况下不建议全列查询生产环境的服务器(数据库)数量非常大

2020-09-12 17:06:05 727

原创 软件测试的各种技术

按开发阶段划分SDK:(SoftWare DeveLopment Kit)一般是指软件工程师特定的软件包建立的开发工具集合。单元测试手机有很多功能,女孩子都喜欢用美颜功能,突然有一天美颜功能不可用了,怎么办?只针对这一功能的代码进行测试。...

2020-09-12 11:00:49 7086

原创 重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例:前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树:3/ 9 20/ 15 7前序遍历:根—左---右中序遍历:左—根---右整体思路:由前序遍历我们可以找到根结点,在中序遍历数组中找到根结点所对应的下标(rootIndex),rootIndex将中序遍历数组分成两部分,前部分

2020-09-11 10:20:39 76

原创 测试用例设计方法——场景设计法

场景设计法==现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一时间不同触发顺序和处理结果就形成事件流。==该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向。案例:已注册为例:这与根据需求的业务流来设计差不多,主要是想象各种业务流来设计用例。例如我们可以再想象以下场景:1、用户激活后再次点击

2020-09-10 21:34:13 351

原创 测试用例的设计方法——正交排列

因果法设计用例太多怎么办?正交法的目的就是为了减少测试用例数目,用尽量少的用例覆盖输入的两两组合正交试验设计(Orthogonal experimentaldesign)是==研究多因素多水平的一种设计方法,==它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是一种基于正交表的、高效率、快速、经济的试验。**因素(Factor):**在一项试验中,凡欲考察的变量称为因素==(变量)==水平(位级)

2020-09-10 20:20:06 664

原创 测试用例的设计方法——因果图

因果图是一种简化了的逻辑图,能直观的表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。恒等:如果原因为真,那么结果必定为真。 例如:动物园运来大熊猫,动物园一定有大熊猫与:只有多个原因都为真,那么结果为真或:多个原因中有一个为真时,结果就为真。非:只有原因为假,结果才为真。 例如:你不好好学习,找到好工作因果图法设计测试用例的步骤如下。(1)分析所有

2020-09-10 18:49:11 937

原创 测试用例设计方法——边界值

边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。日常语言中的"边界"漏洞考完试发成绩了, 老师布置寒假作业: 超过60分的, 所有题目抄写1遍, 低于60分的, 所有题目抄写3遍. 于是小明就没有写作业~~, 因为他刚好60分1.输入框长度为1-11,取边界值为:1、11、12、02. 运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项3. 查询面页面有999行,每50行为一页,取边

2020-09-10 16:59:16 630

空空如也

空空如也

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

TA关注的人

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