自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 基于Spring前后端分离版本的论坛

记录论坛项目的实现

2024-08-06 01:02:59 730

原创 测试用例设计思路

本文提供了详细的测试用例设计思路,对于初入软件测试行业的同学十分友好,不论是在自己的软件开发还是实际的工作中,都可以给出一定参考价值

2024-07-24 17:03:30 261 1

原创 慢SQL的治理思路

慢 SQL 指的是 MySQL 中执行比较慢的 SQL,排查慢 SQL 最常用的方法是通过慢查询日志来查找慢 SQL。MySQL 的慢查询日志是 MySQL 提供的一种日志记录,它用来记录在 MySQL 中响应时间超过阀值的语句,具体指运行时间超过 long_query_time 值的 SQL,就会被记录到慢查询日志中,long_query_time 的默认值为 10s,意思是运行超过 10s 以上的语句就会被当做慢 SQL 记录到日志中。

2024-06-02 21:53:43 770

原创 Charles-抓包工具的使用

Charles 是在 PC 端常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的网络通讯协议,常常需要截取网络封包来分析。除了在做移动开发中调试端口外,Charles 也可以用于分析第三方应用的通讯协议。配合 Charles 的 SSL 功能,Charles 还可以分析 Https 协议。Charles 通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

2024-03-10 19:07:12 1243

原创 软件测试方法与分类

系统非正常运行的时间可能是由于硬件,软件,网络故障或任何其他因素(如断电)造成的,这些因素能让系统停止工作,或者连接中断不能被访问,或者性能急剧降低导致不能使用软件现有的服务等。集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。改善软件的易学性与易用性;在实际的测试中,最常见的是用户文件的测试,例如:手册说明书等。外部大型复杂网络应用系统,比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复杂的系统的功能测试需求外,在。

2023-11-08 22:36:11 184

原创 博客系统-项目测试

个人博客系统自动化测试(selenium+junit)

2023-10-28 23:35:13 1168 1

原创 Junit单元测试框架

【代码】Junit单元测试框架。

2023-10-28 12:36:49 85

原创 Selenium自动测试框架

在隐式等待中,如果在查找元素时没有立即找到,会等待一段时间再进行查找,直到超过设定的等待时间。隐式等待适用于整个测试过程中的多个操作,可以减少代码中的重复等待代码。在显式等待中,我们需要明确指定等待的条件,例如等待元素可见、可点击、存在等。这种等待方式更加灵活,可以根据具体的等待条件来控制等待时间。显式等待和隐式等待都可以用于处理页面加载缓慢、网络延迟或元素加载时间不确定的情况。显式等待更加精确和灵活,适用于需要等待特定条件的情况;而隐式等待更加简单,适用于整个测试过程中的多个操作。

2023-10-28 12:35:29 380

原创 软件测试基础

软件测试 :验证软件产品特性是否满足用户的需求软件测试的特点 : 软件测试只是一个样本试验,具有不可穷尽性用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。大多数公司在进行软件开发的时候会把用户需求转化为软件需求,开发人员和测试人员工作的直接依据就是软件需求。

2023-10-25 19:15:33 61

原创 Redis

答 : 当Redis 运行内存被使用完时,也就是当 Redis 的运行内存,已经超过 Redis 设置的最大内存之后Redis 将采用内存淘汰机制来删除符合条件的键值对,以此来保障 Redis 的正常运行 .使用命令“redis-cli shutdown”先关闭 redis 服务,再使用“redis-server /etc/redis.conf &”启动 redis 服务。对于一些热点数据,可以将其设置为永不过期,或者设置一个较长的过期时间,确保热点数据在缓存中可用,减少因为过期而触发的缓存击穿。

2023-10-19 17:12:07 77

原创 MyBatis 查询数据库

MyBatis ORM (对象关系映射框架) 实现更简单的操作数据库的框架。

2023-10-08 16:57:19 44

原创 SpringMVC程序开发

MVC 是 Model View Controller 的缩写,它是软件⼯程中的⼀种软件架构模式,它把软件系统分为模型、视图和控制器 三个基本部分Model(模型)是应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据。

2023-10-04 20:34:43 33

原创 SpringBoot创建,配置与日志

Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,就有一个功能齐全的构建器、自动记录变量等等。如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤。使⽤⽇志对象的相关语法输出要打印的内容。3. 开启 运行中的热部署。筛选重要信息 , 节省时间。在程序中得到⽇志对象。于排查问题的关键⽇志。

2023-10-03 20:49:53 40

原创 Spring的创建与Bean的存储和获取

IoC = Inversion of Control 翻译成中⽂是“控制反转”的意思,也就是说 Spring 是⼀个“控制反转”的容器 .控制权反转对象的生命周期,不由程序员(或当前代码片段控制) , 而由 spring (ioc 容器)来控制IoC 优点 : 实现解耦合DI依赖注入 :指的是在程序运行期间 , 动态的将依赖对象获取到的过程 .

2023-09-30 21:15:14 50

原创 Linux基本使用和程序部署

部署在上的项目可以直接被外网访问到这和一个公司发布一个正式的网站没有任何区别.也就能让我们自己写的程序去给别人去使用.这三个信息是我们登陆到 Linux 上的必要条件.

2023-09-26 11:36:20 105 1

原创 Tomcat

HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 Java 实现的一个开源免费,2. 将自己的网站文件移入 webapps 再次启动 Tomcat。想要Tomcat 正常使用,务必要确保你的电脑安装了 jdk。6. 部署(拷贝war 到 webapps)Tomcat 是一个 HTTP 服务器.也是被广泛使用的 HTTP 服务器.使用 fiddler 查看请求和响应。在右边的maven栏 点击刷新下载。7. 验证(浏览器 发GET)

2023-09-13 08:45:42 101 1

原创 HTTP 与 HTTPS

为了使数据在网络上从源头到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议,它最终体现为在网络上传输的数据包的格式。因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空行就相当于是 “报头的结束标记”, 或者。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它.HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在传输过程中出现一些被篡改的情况.在构造的页面中,输入数据后,进行提交,我们再通过抓包,查询到了以下结果。

2023-09-11 20:06:39 31

原创 HTML-常用标签

width/height: 控制宽度高度. 高度和宽度一般改一个就行, 另外一个会等比例缩放. 否则就会图片。head 和 body 是 html 的子标签(html 就是 head 和 body 的父标签)border 表示边框. 1 表示有边框(数字越大, 边框越粗), “” 表示没边框.title 是 head 的子标签. head 是 title 的父标签.alt: 替换文本. 当文本不能正确显示的时候, 会显示一个替换的文字.html 标签是整个 html 文件的根标签(最顶层标签)

2023-05-25 19:23:25 86

原创 网络原理之TCP

四次挥手中,B给A发的ACK是内核负责的,B给A发的FIN是用户代码负责(B的代码中调用了socket.close()方法,才会触发FIN)。在延迟应答的基础上,我们发现,很多情况下,客户端服务器在应用层也是 “一发一收” 的。接收端处理数据的速度是有限的。如果发送端发的太快,导致接收端的缓冲区被打满,这个时候如果发送端继续发送,就会造成丢包,继而引起丢包重传等等一系列连锁反应。三次握手中,B发送的ACK和SYN同一时机,就能够合并,此处的B给A发送的ACK和SYN都是操作系统内核负责进行的。

2023-05-20 18:31:14 204 1

原创 基于TCP的Socket通信

【代码】基于TCP的Socket通信。

2023-05-12 18:41:15 170

原创 网络基本概念

对于提供方来说,利用封装的特性,隐藏了实现的细节,只需要开放接口即可。通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。分层最大的好处,类似于面向接口编程:定义好两层间的接口规范,让双方遵循这个规范来对接。发送方发送数据集,要把数据从上到下,依次交给对应的层次的协议,进行封装。接收方收到数据,要把数据从下到上,依次交给对应层次的协议,进行解析。物理层:网络通信的基础设施(网线,光缆,接口…(起点深圳,送到北京,从众多路径中选择合适的)

2023-05-03 15:09:32 59

原创 锁与CAS

自旋时消耗大量CPU(空转),若此时多个线程竞争一个锁,1线程竞争上了,其余多个线程空转等待,会消耗大量cpu,此时升级为重量级锁,在内核里阻塞等待(意味着线程暂时放弃cpu,由内核进行后续调度)**优点:**无锁化的实现方式,避免了锁机制的使用,可以避免锁机制的使用,避免由锁竞争导致的线程挂起,唤醒等操作,提高了系统的并发性能。持有锁的时间越长,发生死锁的概率就越大。,都没遇到别的线程与其进行锁竞争,则保持不加锁状态,如一旦有线程与其竞争,则立马将偏向锁升级为轻量级锁,此时其他线程只能等待。

2023-04-13 11:31:30 99

原创 线程池的认识和应用

/阻塞队列用来存放任务 private BlockingDeque < Runnable > queue = new LinkedBlockingDeque < >();} //此处实现一个固定线程数的线程池 public MyThreadPoll(int n) {i < n;i < 1000;} } }

2023-04-04 19:50:19 79

原创 单例模式的写法(保证线程安全)

*单例模式(SingLeton)**是一种经典的设计模式(大佬们总结出来的代码编写套路)单例模式能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例, 防止频繁地创建对象使得内存飙升,让所有需要调用的地方都共享这一单例对象。

2023-03-28 20:25:30 150

原创 线程的状态与安全

保证内存可见性,被volatile 修饰的变量,此时编译器会禁止上述优化,能够保证每次都是从内存上重新读取数据。就绪状态(正在CPU上运行 / 准备好随时可以去CPU运行)如果没使用 volatile 修饰 flag 则程序经过。系统中的线程还未创建出来,只有Thread 对象。代码在多线程环境下执行会出 bug -> 不安全。系统中线程已经执行完了,Thread 对象还在。指定时间登台,sleep 方法~

2023-03-26 22:51:23 42

原创 Thread 类的基本用法

有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。让 start 创建的新线程等待 hello t 打印完后 再执行。你在哪个线程中去调用这个方法,那么它就会返回这个线程的实例对象.( isInterrupted 标志位 = false)(join 方法)使该线程 阻塞 等待。让线程的入口方法执行完毕。

2023-03-26 17:29:04 66

原创 线程的基本概念和与进程的区别联系

进程是工厂,线程是工厂里的流水线,一个线程就是一个 “执行流”. 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 “同时” 执行着多份代码。

2023-03-23 16:37:32 40

原创 进程调度的基本过程

一个运行起来的程序就是进程[everything.exe 是一个可执行的程序,当双击它运行的时候就形成了一个进程]打开任务管理器,我们可以看到电脑中正在运行的进程。

2023-03-16 16:39:44 103

原创 JAVA——时间复杂度和空间复杂度

如何衡量算法的好坏呢

2022-09-16 13:50:06 242

原创 数据的存储

简析数据在内存中的存储数据类型介绍类型基本归类整形在内存中的存储原码、反码、补码大小端介绍浮点型在内存中的存储浮点数的存储规则数据类型介绍基本的内置类型:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数类型基本归类整形在内存中的存储原码、反码、补码正数的原、反、补码都相同。

2021-12-07 20:48:29 625

原创 做个扫雷玩玩呗

扫雷游戏的组成text.c菜单界面游戏函数组成game.h声明棋盘大小声明雷的个数game.c初始化棋盘打印棋盘布置雷排查雷成果演示扫雷是一款电脑自带的经典益智小游戏,今天我们通过C语言来实现它text.c菜单界面#define _CRT_SECURE_NO_WARNINGS 1#include"game2.h"void menu(){ printf("\n"); printf("*****************************************\n"); printf

2021-11-13 17:12:27 3498 9

原创 三子棋原来可以这样写

三子棋 想必大家都玩过吧,它又叫又叫九宫棋、圈圈叉叉、一条龙等。 将正方形对角线连起来,相对两边依次摆上三个双方棋子,只要将自己的三个棋子走成一条线,对方就算输了。如果我们想用C语言去实现一个三子棋小游戏,该如何操作呢?话不多说,上代码!首先我们创建出一个菜单,可以让玩家们自己选择是否进入游戏,像这样:void menu(){ printf("***********************************\n"); printf("********* 1.play

2021-11-10 17:29:36 4414 3

原创 用c语言实现完整版猜数游戏

想要玩猜数游戏至少进行一次:do while 循环使用menu函数,1.play, 0.exit输入其他default(switch)语句怎样生成一个随机数呢?用 rand 函数#include<stdlib.h>srand函数设计一个(随机变量)那这个随机变量怎样设计呢时间戳:当前计算机的时间减去计算机的起始时间(1970.1.1.0:0:0)=()秒time 函数(获取系统时间)#include<time.h>srand((unsigned int)

2021-05-09 16:26:19 344

原创 JVM的内存区域/类加载/GC

JVM

2021-04-15 00:30:06 192

空空如也

空空如也

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

TA关注的人

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