自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 网络协议之http协议

一.经典的五层网络模型1.1低三层(1)物理层:作为五层网络模型的最底层,它的作用是定义物理设备如何传输数据,如机器的硬件、网卡、网线等。(2)数据链路层:在通信的实体间建立数据链路连接,如最基础的数据传输数据流。(3)网络层:为数据在结点之间传输创建逻辑链路。比如输入百度,网络层会为我们找到百度的网址,如何寻找到的过程就是网络层要做的事。1.2传输层传输层向用户提供了可靠的的端到端(end-to-end)服务,并且向高层屏蔽了下层数据通信的实现细节,比如一个post请求,如何分层如何发送使服

2021-01-03 00:03:53 1274 3

原创 Java 集合框架

一.概述Java 集合框架Java Collection Framework ,又被称为容器 container,是定义在java. util 包下的一组接口 interfaces 和其实现类 classes。其主要表现为将多个元素 element 置于一个单元中,用于对这些元素进行快速、便捷的存储store、 检索retrieve、管理manipulate ,即平时我们俗称的增删查改Java集合主要有4个部分: List列表、Set集合、Map映射、工具类( Arrays和Collections

2021-01-01 23:54:21 281

原创 HashMap详解

我们都知道,要查找一个元素,如果是顺序查找,那么时间复杂度会达到O(n) ,比如:顺序表。也有可能达到 O(logn),如:平衡树。那么要想更快,我们就可以考虑另外一种数据结构,它可以达到时间复杂度为 O(1)。如:HashMap。**什么是HashMap?**HashMap 是一个 key-value模型,具有映射关系,通过 key值可以找到 value值。并允许使用 null值和 null键,HashMap 不保证映射的顺序。一.HashMap基本知识1.哈希冲突的定义如果两个不同的元素,

2020-12-05 23:24:38 2333 5

原创 必会算法--八大排序

一、概念扫盲:1.算法效率: 算法效率分析分为两种:第一种是时间效率,第二种是空间效率。时间效率被称为时间复杂度,而空间效率被称作空间复杂度。 时间复杂度主要衡量的是一个算法的运行速度,而空间复杂度主要衡量一个算法所需要的额外空间,在计算机发展的早期,计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展,计算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。2.稳定性(重要): 两个相等的数据,如果经过排序后,排序算法能保证其相对位置不发生变

2020-12-05 09:08:02 748 2

原创 获取字符串子集个数两种方式

【代码】获取字符串子集个数两种方式。

2022-11-21 17:45:42 160 1

原创 将字符串中大写字母向后移动,并且保证其相对位置不发生变化

例:OkhaoPingCeilXu -> khaoingeiluOPCXpublic class Main { public static void main(String[] args) { String s = "OkhaoPingCeilXu"; change(s); change2(s); } //方法一: private static void change(String s) { Lis

2021-03-17 16:25:09 578

原创 http,tcp和socket的区别于联系

一、HTTP协议HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。HTTP是短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送”保持连接”的请求。这样可以保证客户端在服务器端是”上线”状态。HTTP连接使用的是”请求-响应”方式,不仅在请求时建立连接,而且客户端向服务

2021-03-09 13:27:44 247

原创 求字符串数组最长公共前缀和排序子数组

没啥说的直接上代码:public class 找m和n的索引 { public static void main(String[] args) { int[] arr = {1,2,4,7,10,11,7,12,6,7,16,18,19}; int[] ret = findIndex(arr); System.out.println(Arrays.toString(ret)); String[] strings = {"abc","

2021-02-25 22:44:19 202 2

原创 测试用例编写练习(二)

一、(微信/淘宝)支付功能的测试用例1.从金额上测试1.输入正常金额的支付,结果是否符合预期2.输入最小值的支付,结果是否符合预期3.输入最大值的支付,结果是否符合预期4.输入错误的金额时(包括超限的金额、格式错误的金额等等),是否不能支付5.当支付时的金额 > 零钱/卡余额,金额 < 零钱/卡余额,金额 = 零钱/卡余额三种情况分别出现时,判断是否可以得到对应的预期结果2.从流程上测试1.是否可以正常完成支付的流程2.支付中断后,继续支付,此流程是否可以正常完成3.支付中断后,结

2021-02-22 18:43:17 1927 1

原创 数据库的内连接、左连接和右连接

今天在CSDN上看到一个非常浅显易懂的左右连接和内连接的例子,简直秒啊,记录一下具体演示前提:创建两个表:用两个表(a_table 和 b_table),关联字段 a_table.a_id 和 b_table.b_id 来演示一下 MySQL 的内连接、外连接( 左连接、右连接)。CREATE TABLE `a_table` ( `a_id` int(11) DEFAULT NULL, `a_name` varchar(10) DEFAULT NULL, `a_part` varchar

2021-02-20 17:19:57 3295

原创 JVM的垃圾回收算法

引言:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存。内存泄露:是指该内存空间使用完毕之后未回收,在不涉及复杂数据结构的一般情况下,Java 的内存泄露表现为一个内存对象的生命周期超出了程序需要它的时间长度,我们有时也将其称为“对象游离”。一、什么是垃圾回收垃圾回收(Garbage Collection,GC),顾名思义就是释放垃圾占用的空

2021-02-19 13:10:57 147

原创 JVM如何判断对象已“死”

引言:java堆中存放着几乎所有的对象实例,垃圾回收器在堆进行垃圾回收前,首先要判断这些对象哪些还存活,哪些已经“死去”,判断对象是否已经死去有如下几种算法:1.引用计数算法:引用计数算法(Reachability Counting)是通过在对象头中分配一个空间来保存该对象被引用的次数(Reference Count)。如果该对象被其它对象引用,则它的引用计数加1,如果删除对该对象的引用,那么它的引用计数就减1,当该对象的引用计数为0时,那么该对象就会被回收。String m = newString(

2021-02-18 18:29:43 174

原创 java内存模型和运行时数据区域

一、java内存模型引言:JVM定义了一种Java内存模型(Java Memory Model,JMM)来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。在此之前,C/C++直接使用物理硬件和操作系统的内存模型,因此,会由于不同平台下的内存模型的差异,有可能导致程序在一套平台上并发完全正常,而在另一套平台上并发访问经常出错。主内存与工作内存:Java内存模型规定所有的变量都是存在于主存中的,每个线程都有自己的工作内存。线程对变量的操作都必须在工作内

2021-02-17 15:09:46 208 1

原创 本地文件搜索引擎项目说明

目录一.项目背景二.项目使用技术栈与平台三.项目功能四.项目具体实现4.1:项目总体逻辑框架4.2:pom.xml文件导入依赖4.3:数据库表设计4.4:JDBC工具类设计4.5:JavaFX界面设计4.6:设计汉语拼音工具类五.效果展示一.项目背景各个操作系统下,都有提供文件搜索的功能,如windows中查找文件:除系统自带的文件搜索功能外,也有大佬开发的很多搜索神器,比如Everything。Everything是基于NTFS文件系统的USN Journal(Update SequenceNu

2021-02-14 13:59:54 710

原创 简易图片服务器项目简单测试

目录一.单元测试二.集成测试三.系统测试四.回归测试五.验收测试六.测试用例的编写一.单元测试在编码阶段对一个具体的模块进行单元测试。测试模块:将图片对象插入到数据库的操作,查找数据库中所有图片属性信息操作,查找数据库中单个图片属性信息操作,将一个图片对象从从数据库中删除操作。首先导入第三方Junit依赖 <!--单元测试矿浆junit依赖 --> <dependency> <groupId>junit</gro

2021-02-11 12:25:33 222

原创 简易图片服务器项目说明

目录一. 项目背景二.项目使用技术栈与平台三.项目功能四.项目具体实现4.1:数据库、表的设计4.2:pom.xml文件中引入依赖4.3:服务器端封装数据库的的设计4.4:服务器端servlet接口的设计4.5:前端代码实现:五:项目实现具体一. 项目背景现在很多网页都可以见到上传图片的功能,假如我们上传一张本地图片后,网页就会显示我们刚刚所上传的图片,比如博客上传一张图、个人信息提交头像页面等等。那么这背后的原理是什么呢?其实当我们浏览网页的时候,本质上是从 对端服务器 获取资源,浏览器在获得这些

2021-02-10 23:18:33 518

原创 在浏览器地址栏输入一个URL后回车,内部发生什么?

目录一.在浏览器输入一个网址二.DNS 进行域名解析工作三.根据这个 IP 地址,找到对应的服务器,发起 TCP 的三次握手请求四.建立 TCP 连接后发送 HTTP 请求五.服务器响应 HTTP 发送来的请求,浏览器得到 html 代码六.释放TCP连接(TCP的四次挥手)七.浏览器解析 html 代码,并请求 html 代码中的相关资源(如 JS,CSS,图片等)八.浏览器对页面进行渲染呈现给用户九.总结一.在浏览器输入一个网址当输入https://www.baidu.com/index.htm

2021-02-09 18:32:24 222

原创 手把手教你用IDEA打jar包

一、二、三、四、五、六、七、八、九、

2021-02-06 23:48:16 144

原创 搜索框、微信发红包、水杯、QQ登录、聊天窗口、两台电梯的测试用例

一、搜索框的测试用例1.功能测试 1. 搜索框输入内容为空,验证功能是否正确 2. 搜索框输入内容为空格,验证功能是否正确 3. 边界值验证:最大输入的字符串长度,最小输入的字符串长度 4. 超长字符串的输入,系统是否会截取一定的长度来检验功能的正确性 5. 字符串中间加入空格,逗号,tab键,验证功能是否正确 6. 验证每种合法的输入,结果是否正确 7. 输入框是否支持内容的复制、粘贴等操作 8. 输入框是否支持回车键搜索 9. 多次输入相同的内容,查看系统的检索结果是否一致 10

2021-02-05 11:13:02 1041 2

原创 递归-八皇后问题(回溯算法)

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即:任意两个皇后都不能处于同一行、 同一列或同一斜线上,问有多少种摆法。public class Queue8 { //定义一个max表示共有多少个皇后 int max = 8; //定义数组array, 保存皇后放置位置的结果,比如 arr = {0 , 4, 7, 5, 2, 6, 1, 3}

2021-01-30 22:11:05 141 1

原创 约瑟夫环问题

Josephu(约瑟夫、约瑟夫环)问题 Josephu 问题为:设编号为 1,2,… n 的 n 个人围坐一圈,约定编号为 k(1<=k<=n)的人从 1 开始报数,数 到 m 的那个人出列,它的下一位又从 1 开始报数,数到 m 的那个人又出列,依次类推,直到所有人出列为止,由 此产生一个出队编号的序列。提示:用一个不带头结点的循环链表来处理 Josephu 问题:先构成一个有 n 个结点的单循环链表,然后由 k 结 点起从 1 开始计数,计到 m 时,对应结点从链表中删除,然后再从被删

2021-01-29 13:54:02 218

原创 软件测试生命周期

软件测试的生命周期包括下面五个模块:需求分析–>测试计划–>编写测试用例–>测试执行–>输出测试报告一.需求分析阅读需求,理解需求,分析需求点,参与需求评审会议。二.测试计划主要任务就是编写测试计划,参考软件需求规格说明书,项目总体计划内容包括:测试范围,进度安排,人力物力分配,整体测试策略。三.编写测试用例适当的了解设计,了解需求,参考需求文档,搭建测试用例框架,根据需求文档编写测试用例。四.测试执行搭建环境准备数据,执行冒烟测试(预测试)判断主流程是否走得通,

2021-01-28 22:32:24 189

原创 黑盒测试AND白盒测试

一.黑盒测试(Black-box Testing)黑盒测试也称功能测试,测试中把被测的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据与输出数据。不看软件代码,只对功能进行测试对软件进行操作,观察结果是否和我们想象的一致黑盒,顾名思义就是:把测试对象看作一个不能打开的黑盒子。测试时,测试人员完全不用考虑盒子里面的逻辑结构和具体运作,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明,检验输出结果对不对。二.白盒测试(White-box Testing)白盒测

2021-01-28 22:20:55 1048

原创 常见的二十种软件测试方法详解(史上最全)

一.单元测试(模块测试)单元测试是对软件组成单元进行测试。其目的是检验软件组成单位的正确性。测试对象是:模块。对模块进行测试,单独的一个模块测试,属于静态测试的一类测试阶段:编码后或者编码前(TDD)测试对象:最小模块测试人员:白盒测试工程师或开发工程师(测源码)测试依据:代码和注释+详细设计文档测试方法:白盒测试(因为要测源码)测试内容:模块接口测试(测试模块里面的参数传递是否正确)、局部数据结构测试(测试变量的作用域范围)、路径测试(if-else 判断必须覆盖所有分支)、错误处理

2021-01-27 22:15:57 16482 2

原创 测试用例的设计方法

一.什么是测试用例测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。二.什么是好的测试用例?好的测试用例是一个不熟悉业务的人也能依据用例来很快的进行测试。1.用例表达清楚,无二义性2.用例可操作性强3.用例的输入与输出明确,一条用例只有一个预期结果4.用例的可维护性好5.用例对需求的覆盖率高6.暴露程序Bug的能力强三.测试用例的设计方法测试用例总体的出发点:基于需求的设计RBT( Requirem

2021-01-27 21:48:51 426

原创 如何判断比较器的升序和降序

Comparator中的compare方法//升序排序public int compare(int o1, int o2) { return o1 - o2;}//降序排序public int compare(int o1, int o2) { return o2 - o1;;}Comparable中的compareTo方法//自己实现的比较器,重写compareTo方法,自定义比较规则//升序排序@Overridepublic int compareTo(Test o) {

2021-01-26 22:43:44 654

原创 如何将日期时间格式12小时制转换为24小时制

话不多说,上代码public class Main { public static void main(String[] args) { Date date = new Date(); //日期时间格式转换成12小时制 SimpleDateFormat dateFormat12 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); System.out.println(dat

2021-01-26 19:25:08 2137 1

原创 软件测试的V模型和W模型

一、V模型V模型早是由Paul Rook在20世纪80年代后期提出的,目的是改进软件开发的效率和效果,是瀑布模型的变种明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试V模型的优缺点(测试重点)(1

2021-01-24 23:10:47 657

原创 PreparedStatement 和 Statement 的区别

一、JDBC的使用连接数据库的步骤:第一种:(1)加载JDBC的驱动程序: Class.forName(“com.mysql.jdbc.Driver”);(2)获取连接:Connection connection=DriverManager.getConnection(“jdbc:mysql://localhost:3306/数据库名称?useSSL=false”,“root”,“数据库密码”);(3)创建处理对象:Statement statement=connection.createS

2021-01-23 22:42:20 172

原创 多进程及多线程的区别

一.两者区别多进程和多线程的主要区别是:线程是进程的子集(部分),一个进程可能由多个线程组成。多进程的数据是分开的、共享复杂,需要用IPC;但同步简单。多线程共享进程数据,共享简单;但同步复杂。(1)多进程进程是程序在计算机上的一次执行活动,即正在运行中的应用程序,通常称为进程。当你运行一个程序,你就启动了一个进程。每个进程都有自己独立的地址空间(内存空间),每当用户启动一个进程时,操作系统就会为该进程分配一个独立的内存空间,让应用程序在这个独立的内存空间中运行。在同一个时间里,同一个计算机系统中如

2021-01-22 22:19:53 11334 1

原创 如何优化数据库的查询效率

一.优化数据库的查询效率存储引擎的选择:如果数据表需要支持事务处理,应该考虑 Innodb 引擎,因为它完全符合 ACID 的特性;如果数据表不需要支持事务处理,则使用存储引擎 MyISAM对查询进行优化,要尽量避免使用全表扫描,首先应考虑在 where 以及 order by 字句涉及的列上建立相应的索引尽量避免在 where 子句当中使用 != 或者 > , < 等操作符,否则将导致存储引擎放弃使用索引,而进行全表扫描尽量避免在 where 子句当中使用 null 值进行判断,否则

2021-01-22 00:02:56 474

原创 软件开发和测试模型

一、瀑布模型瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。(1)优点:强调开发的阶段性;强调需求分析和早起计划;强调产品测试。(2)缺点:依赖于早期进行的唯一一次需求分析,不能适应需求的变化;由于是单一流程,开发中的经验教训不能的及时反馈给应用于本产品的过程;风险往往迟至后期的测试阶段才显露,因而失去较早的纠正机会。瀑布模型的一个大缺陷在于,如果在需求引入的一个缺陷要到测试阶段甚至更后的阶段才

2021-01-19 23:42:05 178

原创 数据库的三种删除语法

一、SQL中有以下三种删除的语法:1.drop table 表名称2.truncate table 表名称3.delete from 表名称 where 列名称 = 值二. drop,truncate,delete 的区别1.drop (删除表)删除表中的内容和定义的表的数据结构。简单来说就是把整个表删除,以后要新增数据是不可能的,除非新建立一个新表,然后再插入数据。2.truncate (清空表中的数据)删除表中的内容、释放占有的空间但不删除定义(保留表的数据结构)。与drop不同的是

2021-01-19 23:11:28 2826

原创 TCP协议的可靠性

TCP协议之所以可靠依靠以下几个机制1.校验和机制TCP检验和的计算与UDP一样,检验范围包括TCP首部及数据部分,但是UDP的检验和字段为可选的,而TCP中是必须有的。计算方法为:在发送方将整个报文段分为多个16位的段,然后将所有段进行反码相加,将结果存放在检验和字段中,接收方用相同的方法进行计算,如最终结果为检验字段所有位是全1则正确(UDP中为0是正确),否则存在错误。2.确认应答与序列号TCP将每个字节的数据都进行了编号,这就是序列号。序列号的作用:a、保证可靠性(当接收到的数据少了某

2021-01-18 23:36:34 563

原创 HTTP协议(TCP协议)的长连接和短连接

HTTP的长连接和短连接本质上就是TCP的长连接和短连接。一.HTTP协议和TCP协议HTTP的长连接和短连接本质上就是TCP的长连接和短连接。HTTP协议属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议。IP协议主要解决网络路由和寻址的问题,TCP协议主要解决如何在IP层之上进行可靠的端对端传递数据包的过程。二.HTTP协议的长连接和短连接在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束就断开连接。但从 HTTP/1.

2021-01-16 23:44:43 1075

原创 TCP三次握手和四次挥手

正常情况下,TCP要经过三次握手建立连接,四次挥手断开连接一.用到的相关术语1)序号:小写字母序列号 seq确认号 ack2)标志位:大写字母,其值要么为1 ,要么为 0确认 ACK同步 SYN终止 FIN二、TCP三次握手过程:第一次握手:Client 将标志位 SYN 置为1,随机产生一个值 seq=x,并将该数据包发送给 Server,Client 进入SYN_SENT 状态,等待 Server 确认。第二次握手:Server 收到数据包后由标志位 SYN=1 知道 Client

2021-01-15 23:36:14 152

原创 OSI七层模型和TCP/IP四层模型

一、osi七层模型OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范;把网络从逻辑上分为了7层. 每一层都有相关、相对应的物理设备,比如路由器,交换机;OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输;它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯;但是, 它既

2021-01-15 22:55:47 186

原创 网络协议之TCP协议

一.何为TCP协议TCP全称为“传输控制协议”(Transmission Control Protocol),人如其名,要对数据的传输进行一个详细的控制传输层协议有连接可靠传输面向字节流二.TCP 协议段格式TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。一个TCP报文段分为首部和数据两部分,而TCP的全部功能体现在它首部中的各字段的作用。因此,我们需要详细了解一下TCP首部各字段的作用。序列号与确认号:序列号:表示本报文段所发送数据的第一个字节的编号。在TCP连接中所传

2021-01-12 23:06:17 240

原创 网络协议之https协议

一.什么是https协议?HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL。https的默认端口号是443。二.http与https图示对比三.https的加解密有两种基本的加解密算法类型:1)对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;2)非对称加密:

2021-01-12 22:35:44 287

原创 多线程环境下的死锁是什么?

一.什么是死锁?死锁是指两个或两个以上的进程在执行过程中,因争夺资源或不正确的进程间推进顺序,而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去,此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。二.死锁产生的四个必要条件虽然进程在运行过程中,可能发生死锁,但死锁的发生也必须具备一定的条件,死锁的发生必须具备以下四个必要条件。1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内,这一资源只由这一个进程占用。如果此时还有其它进程请求该资源,则请求者

2021-01-10 00:19:59 216

空空如也

空空如也

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

TA关注的人

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