- 博客(54)
- 收藏
- 关注
原创 测试开发-正交法
摘要:正交试验法是一种高效的多因素测试方法,通过正交表减少测试用例数量。以5个输入字段(姓名、邮箱等)为例,每个字段有填写/不填写2种水平,理论上需32个用例。使用allpairs工具生成正交表,先创建包含因素水平的Excel文件并转为txt格式,通过命令行生成部分关键测试用例,最后需手动补充遗漏的重要用例。该方法能有效覆盖输入的两两组合,提高测试效率。
2025-06-13 17:12:44
95
原创 HTTP详解
HTTP请求与响应结构分析摘要:本文介绍了HTTP协议中请求和响应的报文结构,包括首行、Header和Body三部分。详细解析了URL的组成要素及各部分的含义,对比了GET和POST方法的区别与特点。阐述了常见Header字段的作用,如Content-Type、User-Agent等,并分析了三种常见的请求正文格式:x-www-form-urlencoded、multipart/form-data和application/json。最后列举了重要的HTTP状态码及其含义,包括200、404、302等。通过
2025-06-02 12:43:09
1214
1
原创 MyBatis动态SQL
本文介绍了MyBatis框架中动态SQL的使用方法,主要包括五个核心标签:<if>标签:用于条件判断,实现非必填字段的动态SQL拼接<trim>标签:处理SQL语句前后缀,可自动去除多余分隔符<where>标签:智能生成WHERE子句,自动去除开头AND/OR<set>标签:用于UPDATE语句,动态生成SET子句并去除多余逗号<foreach>标签:遍历集合,常用于IN条件批量操作还介绍了<include>标签实现SQL片段复用。文章通过用户信息表的CRUD操作示例,演示了各标签的具体应用场
2025-05-29 13:51:04
635
2
原创 MyBatis入门:快速搭建数据库操作框架 + 两种增删改查的方法(CRUD)
本文介绍了MyBatis框架的基本使用流程:首先创建项目并添加MyBatis和MySQL驱动依赖;配置数据库连接信息并创建测试数据库和表;定义实体类UserInfo;编写Mapper接口实现增删改查操作;最后进行单元测试。重点讲解了参数传递方式(单参数、多参数)、结果映射处理(自动驼峰命名、别名、@Results注解)以及常见CRUD操作的实现方法。同时提供了@Options注解获取自增主键的使用示例,并总结了常见错误排查方法。全文通过具体代码示例展示了MyBatis的核心功能及最佳实践。
2025-05-26 21:25:59
1122
1
原创 Spring MVC 接口的访问方法如何设置
@RequestMapping 是 Spring 框架中用于将 HTTP 请求映射到控制器方法的注解,支持多种 HTTP 方法(如 GET、POST、PUT、DELETE 等)。GET 和 POST 是最常用的方法,其他方法可以举一反三。@RequestMapping 可以作为类注解或方法注解,通常建议在类上使用以便快速定位问题。路径可以多层嵌套,且建议以“/”开头以符合行业规范。通过 method 属性可以限制特定方法的访问,例如 @RequestMapping(value="/u1", method=R
2025-05-15 22:44:28
481
1
原创 TCP实现安全传输的核心机制 + TCP的报文讲解(全程图文讲解)
TCP全称为 "传输控制协议(Transmission Control Protocol"). ⼈如其名, 要对数据的传输进⾏⼀个详细的控制;所以TCP是传输层的协议TCP的基本特点:有链接、可靠传输、面向字节流、全双工可以通过代码层面的accept()方法体会到,,也可以通过代码层面的getInputStream()、getOutputStream()来体会。但是,我们无法通过代码层面体会到,那么就需要来了解TCP的核心机制,看它是如何保证数据的可靠性的。一、TCP的协议和数据报格式。
2025-05-15 15:58:45
1338
4
原创 用TCP实现服务器与客户端的交互
是创建TCP服务端Socket的API方法签名方法说明创建一个服务端流套接字Socket,并绑定到指定端口⽅法:⽅法签名⽅法说明开始监听指定端口(创建时绑定端口),有客户端连接后,返回一个服务端Socket对象,并基于Socket建立与客户端的连接,否则阻塞等待关闭此套接字。
2025-04-30 13:03:28
1484
7
原创 后端程序员要了解的前端知识-HTML篇
⽐⽂本要强⼤. 通过链接和交互式⽅式来组织和呈现信息的⽂本形式. 不仅仅有⽂本, 还可能包含图⽚, ⾳频, 或者⾃已经审阅过它的学者所加的评注、补充或脚注等等。可以看到这个分割框有间隙,因为单元格与单元格之间默认有1的外边距,那我们就可以用之前介绍的。border 表⽰边框. 1 表⽰有边框(数字越⼤, 边框越粗), "" 表⽰没边框.表格标签有⼀些属性, 可以⽤于设置⼤⼩边框等. 但是⼀般使⽤ CSS ⽅式来设置.HTML的标签都是提前定义好的, 使⽤不同的标签, 表⽰不同的内容。
2025-04-18 01:26:41
595
原创 JAVA如何操作文件?(超级详细)
我们先来认识狭义上的⽂件(file)。针对硬盘这种持久化存储的I/O设备,当我们想要进⾏数据保存时,往往不是保存成⼀个整体,⽽是独⽴成⼀个个的单位进⾏保存,这个独⽴的单位就被抽象成⽂件的概念,就类似办公桌上的⼀份份真实的⽂件⼀般。简单来说就是,,但是硬盘非常大,。⽂件除了有数据内容之外,还有⼀部分信息,例如⽂件名、⽂件类型、⽂件⼤⼩等并不作为⽂件的数据⽽存在,我们把这部分信息可以视为⽂件的元信息。
2025-04-15 13:57:59
931
7
原创 JAVA-wait()和notify()
大家应该都知道,线程之间是抢占式随机执行的,但是我们并不希望这样。因为这样非常混乱,并不好去预估程序的执行结果。我们甚至希望,线程之间能够配合执行,那么我们就可以使用wait()和notify()来做到。
2025-04-02 11:14:28
982
2
原创 JAVA-堆 和 堆排序
之前在队列的时候讲过,队列是先进先出的,是根据你的插入顺序来确定优先级的。而有时候我们希望可以通过元素内容来确定优先级。比如:在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话;初中那会班主任排座位时可能会让成绩好的同学先挑座位。在这种情况下,。这种数据结构就是堆总是一棵完全二叉树。堆中某个节点的值总是不大于或不小于其父节点的值。。。
2025-04-01 17:32:58
815
1
原创 JAVA-线程不安全的原因?如何解决?
本章文章描述并解决了线程不安全的原因:1.线程是随机调度的 2.多个线程同时修改同一变量 3.修改的操作不是原子的 4.可见性问题 5. 指令重排序问题
2025-03-24 22:21:01
1188
2
原创 JAVA-多线程join()等待一个线程
我们知道线程是随机调度执行的,但是有时候我们需要另一个任务完成了,我们才能继续,这个时候我们就可以使用join去等待线程结束。谁调用join谁就等,在主线程中调用 t.join() ,就是main线程等待 “t” 线程结束。第三种了解就可以了,普通的计算机很难精确到纳秒,精确到毫秒就不错了。这里着重讲一下第三种,只要时间到就继续执行,不会等到 t 线程结束。例如:别人向我转100万,需要转完了我再看是否接收到了100万。任意线程都可以进行等待,不是只有主线程可以去等待别的线程。
2025-03-19 17:14:53
529
3
原创 JAVA-Thread类实现多线程
如果某个线程在执行过程中,能够阻止进程结束,此时这个线程就是“前台线程”,只要当进程中的所有前台线程都结束那么这个进程才可以结束。try {});t1.start();// 是否为后台线程如果这个线程执行过程中,不能阻止进程结束(虽然线程在执行着,但是进程要结束了,此时这个线程也会随之被带走),这样的线程就是“后台线程”。try {});//设置线程为后台线程,需要在start之前设置t1.start();
2025-03-13 15:22:16
1119
3
原创 什么是进程线程
进程就是正在执行的程序,以下就是我电脑上正在执行的进程。进程是系统“资源分配”的基本单位由于系统上有多个进程,需要管理起来,对Linux操作系统来说,使用称为"PCB"这样的结构体(java中的类)来描述进程信息的.描述通过 结构体/类 ,把进程的各种属性,表示出来组织 通过数据结构,把多个上面的结构体窜起来,简单的认为就是通过链表组织起来,并进行增删改查:创建新的进程(双击exe运行程序),就相当于创建了一个新的PCB结构体加入到链表中。销毁进程,就是把PCB从链表上删除,并且释放PCB结构体。
2025-03-11 22:38:43
888
2
原创 Mysql-如何理解事务?
有些场景中,某个操作需要多个sql配合完成:例如:李四这个月剩下的前不够交房租了,找张三借1000元急用:(1)给张三的账户余额 减去1000元updata 账户表 set money = money - 1000 where id = 2;(2)给李四的账户余额 加1000元updata 账户表 set money = money + 1000 where id = 1;
2025-03-01 17:56:15
880
3
原创 如何理解Mysql的索引
索引是一种特殊的文件,包含着对数据表里所有记录的引用(指针/地址)。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。
2025-02-26 23:01:52
844
1
原创 JAVA-泛型
一般的类和方法,只能使用具体的类型要么是基本类型,要么是自定义的类。如果要编写可以应用于多种类型的 代码,这种刻板的限制对代码的束缚就会很大。-----来源《Java编程思想》对泛型的介绍。泛型是在JDK1.5。从代码上讲,就是对类型实现了参数化。二、泛型的使用场景我们需要要以下代码来代入我们理解泛型:实现一个类,类中包含一个数组成员,使得数组中可以存放任何类型的数据,也可以根据成员方法返回数组中某个下标的值。我们知道Object是所有类的父类,那我们就可以使用Object来实现。
2025-02-20 17:37:16
795
1
原创 JAVA-Lambda表达式(高质量)
Lambda表达式是Java SE 8中一个重要的新特性。Lambda表达式允许你通过表达式来代替功能接口。Lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。Lambda表达式(,基于数学中的λ演算得名,也可称为闭包(Closure1.Lambda表达式的语法基本语法或Lambda表达式由三部分组成:1.paramaters类似方法中的形参列表,这里的参数是函数式接口里的参数。
2025-02-14 18:32:35
958
5
原创 JAVA-枚举的使用
Enum的构造方法Enum类只有这一个构造方法,但是我们写的枚举类并没有写构造方法,我们知道如果我们没写构造方法,会有一个没有任何参数的构造方法。但是父类只有这两个参数的构造方法。其实也是帮我们写了有两个参数的方法,传的值是null。所以枚举类是比较特殊的。构造函数是zh当枚举对象有参数后,需要提供相应的构造函数//有了自己的构造方法,就必须在这里写的时候带参数/*** 1、当枚举对象有参数后,需要提供相应的构造函数* 2、枚举的构造函数默认是私有的 这个一定要记住*/
2025-02-11 18:21:10
806
1
原创 JAVA-反射
Java的反射(reflection)机制是在状态中,对于任意一个类,都能够知道这个类的;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到那么,我们就可以修改部分类型信息;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射(reflection)机制。
2025-02-07 18:37:45
805
原创 JAVA-归并排序(图解)
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。
2025-01-25 18:03:25
745
1
原创 JAVA-快速排序
快速排序是Hoare于1962。我们此次实现拿数组的第一个元素做为基准值right找到比tmp小的,left再找到比tmp大的就交换。如果交汇了就放入第一个元素,再把tmp放进来。把交汇处的下标给par,再分别从par两边重复之前的操作。而且这不就是二叉树吗。那么就适合用递归来处理了。
2025-01-23 22:52:41
1091
2
原创 JAVA-二叉树的四种遍历
选:A提升难度:根据已知条件去构建这颗二叉树:3.设一课二叉树的中序遍历序列:badce,后序遍历序列:bdeca,则二叉树前序遍历序列为()选:D4.某二叉树的后序遍历序列与中序遍历序列相同,均为ABCDEF,则按层次输出同一层从左到右的序列为()同理一样,选A四、代码实现首先有一个二叉树的类。
2025-01-17 00:12:19
1223
1
原创 JAVA-二叉树的概念和性质
树是一种的数据结构,它是由nn>=0)个有限结点组成一个具有层次关系的集合。。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M(M > 0)个互不相交的集合T1T2......Tm,其中每一个集合m)又是一棵与树类似的子树。每棵子树的根结点有且只有一个前驱,可以有0个或多个后继树是递归定义的。
2024-12-07 18:16:04
1039
1
原创 JAVA-链表
LinkedList的底层是双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节 点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。在集合框架中,LinkedList也实现了List接口,具体如下:【说明】1. LinkedList实现了List接口2. LinkedList的底层使用了双向链表3. LinkedList没有实现RandomAccess接口。
2024-11-17 21:13:16
1897
1
原创 JAVA-队列
队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有:进行插入操作的一端称为:进行删除操作的一端称为其实就是对一种结构里面的数据进行,头删和尾插的操作。
2024-11-13 21:29:25
3759
2
原创 JAVA-栈Stack和Deque
进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。LIFO(Last In First Out)的原则。栈:一种特殊的线性表,其。压栈:栈的插入操作叫做进栈/压栈/入栈,说这么多其实就是一个数组,只要用。出栈:栈的删除操作叫做出栈。
2024-11-13 10:38:49
740
4
原创 JAVA-顺序表ArrayList(实现ArrayList)
在集合框架中,List是一个接口,继承自Collection。Collection也是一个接口,该接口中规范了后序容器中常用的一些方法,具体如下所示:Iterable也是一个接口,表示实现该接口的类是可以逐个元素进行遍历的,具体如下:站在数据结构的角度来看,List就是一个线性表,即n个具有相同类型元素的有限序列,在该序列上可以执行增删 改查以及变量等操作。在集合框架中,ArrayList是一个普通的类,实现了List接口,具体框架图如下:【说明】
2024-11-10 23:33:18
1199
2
原创 JAVA-异常(通俗易懂)
Java 中虽然已经内置了丰富的异常类, 但是并不能完全表示实际开发中所遇到的一些异常,此时就需要维护符合我 们实际情况的异常结构.例如, 我们实现一个用户登陆功能.if (!if (!System.out.println("登陆成功");此时我们在处理用户名密码错误的时候可能就需要抛出两种异常. 我们可以基于已有的异常类进行扩展(继承), 创建 和我们业务相关的异常类.具体方式:1.自定义异常类,可以继承Exception 或者 RunTimeException。
2024-10-03 22:18:58
726
3
原创 JAVA-StringBuilder和StringBuffer
/6原理是从后往前找原理是从指定位置从后向前找//0//-1找不到11.StringBuff insert(int offset, String str) 在offset位置插入:八种基类类型 & String类型 & Object类型数据//不会覆盖原有字符,原位置字符全部往后移//aaxxxbbccaabbaaxxx,证明可以当追加函数使用//报错//说明,要紧跟字符串末尾追加。
2024-09-25 21:51:16
1485
原创 String类和String类常用方法
在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提供的字符串系列函数完成大部分操作,但是这种将数据和操作数据方法分离开的方式不符合面相对象的思想,而字符串应用又非常广泛,因此Java语言专门提供了String类。而且在面试题中也频繁用到处理字符串的题目。String、StringBuff和StringBulider之间的区别等。
2024-09-23 10:54:38
1077
原创 JAVA-接口(一万四千字讲解)
提示:1. 创建接口时, 接口的命名一般以大写字母 I 开头.2. 接口的命名一般使用 "形容词" 词性的单词.3. 阿里编码规范中约定,
2024-09-05 23:54:07
894
1
原创 JAVA-封装
基本规则在文件的最上方加上一个 package 语句指定该代码在哪个包中.包名需要尽量指定成唯一的名字, 通常会用公司的域名的颠倒形式(例如 com.bit.demo1 )包名要和代码路径相匹配. 例如创建 com.bit.demo1 的包, 那么会存在一个对应的路径com/bit/demo1 来存储 代码. 如果一个类没有 package 语句, 则该类被放到一个默认包中.操作步骤1. 在 IDEA 中先新建一个包: 右键 src -> 新建 -> 包。
2024-08-26 21:26:46
1262
1
原创 JAVA-类和对象 (超详细)
在java中定义类时需要用到class关键字,具体语法如下//创建类//成员属性或者成员变量//行为 或者 成员方法class后面接着的是类名 可以根据实际需求取采用Java语言将狗类在计算机中定义完成,经过javac编译之后形成.class文件,在JVM的基础上计算机就可以识别了。通过项目文件夹out文件夹点下去就可以找到class文件类名注意采用大驼峰定义public哪里是来控制访问权限的,是封装的内容一般一个文件当中只定义一个类。
2024-08-26 16:52:34
2961
1
原创 JAVA-抽象类和抽象方法
在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果 一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。
2024-08-23 19:54:26
1020
3
原创 JAVA-多态 和 重写 (彻底给你讲明白)
多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同 的状态。比如:每个动物吃的东西不一样,猫吃猫粮,狗吃狗粮。如果没有多态就会用到大量的重写总的来说:同一件事情,发生在不同对象身上,就会产生不同的结果。
2024-08-12 16:28:55
1415
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人