自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 五子棋PVP项目总结

实现一个网页版五子棋对战程序. 支持以下核心功能:* 用户模块: 用户注册, 用户登录, 用户天梯分数记录, 用户比赛场次记录. * 匹配模块: 按照用户的天梯分数实现匹配机制. * 对战模块: 实现两个玩家在网页端进行五子棋对战的功能. ## 核心技术* Spring/SpringBoot/SpringMVC* WebSocket* MySQL* MyBatis* HTML/CSS/JS/AJAX

2022-10-09 16:00:25 551 1

原创 博客系统自动化测试

测试用例设计自动化测试1.登录功能2.显示博客3.写博客和删除博客4.注销5.测试套件6.生成报告

2022-09-12 19:02:54 418

原创 使用unittest框架实现一个自动化测试

1.编写测试脚本:1. Test Fixture2.Test Case3.unittest断言4.异常捕捉与错误截图2.构建测试套件Test Runner方法1:addTest方法2:TestLoader方法3 : discoverHTML报告3.批量执行脚本4.数据驱动

2022-09-11 21:08:42 566

原创 软件测试基础总结

1.软件测试的生命周期2.如何描述一个bug1)问题的版本2)出现的环境3)错误重现的步骤4)预期行为的描述5)错误行为的描述6)其他7)不要把多个bug放到一起3.如何定义bug的级别1)Blocker(崩溃):2)Critical(严重):3)Major(一般):4)Minor(次要):4.bug的生命周期5.如何开始第一次测试6.测试的执行和BUG管理7.如何发现更多的bug?8.产生争执怎么办

2022-09-04 11:02:23 266

原创 软件测试概念总结

1.软件测试:2.软件测试的特点:3.软件测试和开发的区别:4.软件测试与调试的区别:5.优秀的软件测试人员具备的素质6.核心竞争力7.学习方法8.学习内容9.需求的概念10.用户需求11.软件需求12.生成测试用例的过程13.为什么需求对软件测试人员如此重要14.如何才可以深入理解被测试软件的需求15.测试用例的概念16.软件错误(BUG)的概念17.软件的生命周期18.瀑布模型(Waterfall Model)19.螺旋模型(Spiral Model)20.增量、迭

2022-09-03 11:28:46 1191

原创 博客系统项目详解

1.创建maven项目2.导入写好的前端代码3.设计数据库4.封装数据库操作1)创建 DBUtil 类2)创建 Blog类3)创建 User4 )创建BlogDao类5)创建UserDao类5.实现博客主界面1)约定前后端交互接口2)编写服务器代码3)编写客户端代码6.实现博客详细界面1)约定前后端交互接口2)编写服务器代码3)编写客户端代码7.实现博客登陆页面1)约定前后端交互接口2)编写服务器代码3)编写客户端代码8.实现用户状态判定功能1)约定前后端交互接口

2022-09-02 16:53:32 1573

原创 JVM面试常考的4个问题详解

1.JVM内存区域划分1)程序计数器2)栈3)堆4)方法区2.类加载1)Loading环节2)Linking环节3)Intializing3.双亲委派模型1)加载java.lang.String2)加载自己写的Test类4.JVM的垃圾回收机制(GC)1)垃圾回收的概念2)回收的过程:找垃圾/判定垃圾释放垃圾3)垃圾收集器

2022-09-02 11:32:07 263

原创 使用Tomcat搭建一个Servlet项目

Tomcatmaven使用创建maven项目管理依赖实践使用总结GET,POST请求应用场景Servlet运行原理Tomcat伪代码Tomcat初始化Tomcat处理请求Servlet的关键APIHTTPServletHttpServletRequest和HttpServletResponse例子1:例子2:body格式请求body格式响应body格式Cookie和SessionHttpServletRequest类中的相关方法HttpServletRespons

2022-08-25 11:28:29 1966

原创 HTTP和HTTPS详解

HTTP协议HTTP请求1.组成2.方法3.header里面的一些键值对4.TCP粘包问题的补充HTTP响应1.组成2.几大类:3.HTTP请求构造HTTPS协议1.生成密钥2.公信机构

2022-08-23 22:46:05 1144

原创 在Java基础上学习JavaScript

1.注释2.字符串3.输出4.变量5.数据类型6.求长度7.字符串拼接8.布尔类型9.运算符1)比较操作符2)&&和||10.数组1)创建2)打印3)获取数组元素11.函数1)不需要指定参数类型2)函数参数的个数,实参和形参个数不一样也是可以的3)函数->普通变量12.作用域链13.对象......

2022-08-16 22:45:12 624

原创 计算机网络网络层数据链路层协议详解

计算机网络网络层IP协议IP地址NAT机制IPv6路由选择数据链路层协议MTUMSSARP报文DNS

2022-08-12 18:55:09 1409

原创 常见协议UDP和TCP详解

UDP报文格式TCP报文格式TCP核心机制1.确认应答2.超时重传3.连接管理(经典面试题)4.滑动窗口5.流量控制6.拥塞控制7.延时应答

2022-08-09 21:41:58 1300

原创 Java使用TCP api实现回显服务

关闭是为了“释放资源”,释放资源的前提是已经不需要使用这个资源了,但是对于UDP的程序和serverSocket,这些socket都是贯穿程序始终的。每次都得保证处理完的连接都进行释放。当上面的代码第一次accept结束之后,就会进入processConnection,在processConnection又会有一个循环,如果processConnection里面的循环不结束,processConnection就无法执行完成,外层就无法二次调用accept,就不能接受第二个客户端的链接了。...

2022-08-08 19:41:50 278

原创 Java使用UDP Socket实现回显服务

服务器定义为“被动接受请求的一方”,主动发送请求的一方叫做客户端。send方法的参数,也是DatagramPacket需要把响应数据先构造成一个DatagramPacket再进行发送,这里就不是构造一个空的数据报。在当前场景,那个客户端发来的请求,就把数据返回给那个客户端。/***/ /*站在服务器的角度:1.源IP:服务器程序本机的IP2.源端口:服务器绑定的端口号(此处手动置顶了9090)3.目的IP:包含在收到的数据报中(客户端的IP)5.协议类型:UDP。...

2022-08-08 17:38:44 502

原创 计算机网络中的封装和分用,五层协议

传输层负责端到端之间的通信,起点和终点只是关注结果(数据到没到),不关注过程(不关注数据走哪条路),相当于买家和卖家,快递公司则要关注中间的过程。在刚才IP数据报基础上,根据当前使用数据链路层协议,构造成一个数据链路层的数据报,典型的数据链路层的协议叫做以太网,就会构造一个“以太网数据帧”IP报头包含了很多信息,最重要的就是源IP和目的IP,相当于发件人的地址和收件人的地址。路由器和交换机实际上,真正的交换机和路由器之间的界限已经越来越模糊了,路由器的很多功能交换机也有,交换机的很多功能路由器也有。...

2022-08-01 21:52:55 1816 2

原创 使用dom4j解析XML

Dom4j重要的API说明org.dom4j.Document常用方法org.dom4j.Element的常用方法dom4j结合XPath解析XMLXpath可以使用路径表达式来选取XML文档中的元素或者属性节点,节点是沿着路径来选取的。XPath官方文档:https://zvon.org/xxl/XPathTutorial/General_chi/examples.htmldom4j集成XPath1.定义版本1.2.02.添加依...

2022-06-30 17:20:01 837

原创 XML的使用总结

XML(Extensible Markup Language)表示可扩展标记语言XML的标签没有被预定义也就是说不是固定的,用户可以根据自身的需求去自定义标签XML的作用主要是用来存储数据和传输数据XML的文档声明是可选的,也就是可以不写,但是开发中大家都会写文档声明XML的文档声明如果写了必须放在XML文件的第一行第一列,必须以结尾,而且必须包含两个属性:version和encoding元素是XML的重要组成部分,元素也称为标签每个XML文件必须要有一个根标签标签由开始标签和...

2022-06-23 17:37:37 1174

原创 Java多线程下使用哈希表

1.HashTable(不推荐)2.ConcurrentHashMap(推荐)

2022-06-21 11:42:40 215

原创 Java中常见的锁策略

1.悲观锁和乐观锁:处理所冲突的态度(原因)2.重量级锁和轻量级锁:处理所冲突的结果3.挂起等待锁和自旋锁:4.读写锁和普通互斥锁:5.公平锁和非公平锁6.可重入锁和不可重入锁synchronized总结synchronized中的锁优化机制1.锁膨胀/锁升级2.锁粗化3.锁消除ReentrantLock可重入锁ReentrantLock和synchronized的区别Semaphore信号量CountDownLatch终点线CopyOnWriteArrayList写时拷贝...

2022-06-21 11:41:05 462

原创 java中的并发JUC(java.util.concurrent)

Callable具体使用:

2022-06-21 11:38:27 122

原创 Java中的CAS(compare and swap)

定义:用途:2)基于CAS能够实现“自旋锁”如何理解CAS中的ABA问题?一个典型的例子:解决ABA问题的方法:

2022-06-21 11:33:01 235

原创 JavaEE线程安全的线程池实现

为什么线程放在池子里就比从系统申请释放来得更快呢?java标准库中的线程池:线程池构造方法:线程池参数解析:一个程序要并发的/多线程的来完成一些任务,如果使用线程池的话这里线程数量多少合适?简化版的线程池线程池的组成...

2022-06-17 20:21:19 284

原创 JavaEE线程安全的定时器模式

Timer内部组成:

2022-06-17 11:51:52 202

原创 JavaEE线程安全的生产者消费者模型优点

阻塞队列生产者消费者模型

2022-06-16 20:59:10 95

原创 JavaEE线程安全的单例模式两种典型的实现

1.饿汉模式2.懒汉模式

2022-06-16 20:56:14 98

原创 Java多线程编程Thread类的使用和注意事项

Thread类的基本用法:}线程的一些指标:run和start的区别中断线程线程等待Thread.currentThread()进程状态针对系统层面:java中Thread类进一步细化:状态转换图:线程安全问题:线程不安全产生的原因:内存可见性解决方法:synchronized用法1.直接修饰普通的方法2.修饰一个代码块3.修饰一个静态方法或者监视器锁monitor lock死锁的其他场景死锁的四个必要条件(前三个都是锁本身的特点)java线程类:volatile

2022-06-15 20:00:57 409

原创 Java中Thread类的基本使用

Thread类的基本用法:线程的一些指标:中断线程线程等待Thread.currentThread()

2022-06-15 16:24:44 1855 1

原创 操作系统进程线程区别、并发和并行、内存和外存

3.操作系统是如何管理进程的?4.PCB中的属性5.并发和并行6.进程调度7.线程产生的原因8.线程为什么比进程更轻量?9.进程和线程的区别和联系10.内存和外存的区别

2022-06-04 21:50:24 314

原创 JDBC编程

1.创建项目2.引入依赖:JDBC编程需要用到mysql驱动包 1)下载驱动包 2)创建项目 3)创建个目录,叫做lib 4)把下载的jar文件拷贝到刚才的目录中 5)右键刚才的目录,选择add as library3.编写代码

2022-06-04 11:07:02 83

原创 MySQL中的事务

定义:把多个sql打包成一个要么全都执行,要么都不执行。事务的核心就是回滚,回滚的依据就是mysql要记录之前执行的一些过程。特性:原子性(核心,要么全都执行完要么都不执行)、 一致性(执行前后数据都是合理合法的)、 持久性(事物一旦提交数据就永久的存储起来了)、 隔离性(解决并发执行多个事务出现的问题)并发执行带来的问题:脏读,事物和事物之间没有任何隔离,加上一些约束限制就可有效避免脏读。(给写操作加锁)不可重复,在一个事务中包含了多次读操作,多次读操作结果不一致。(给读操作

2022-06-03 20:06:25 123

原创 数据库中索引定义、使用场景代价和数据结构

1.索引是干啥的?相当于一本书的目录,根据目录中对应章节的页码就能找到相应章节。索引就是为了进行查找,提高找效率。2.索引使用场景,付出的代价?适用于需要经常查找但是不经常修改的场景。占用了更多的空间且拖慢了增删改的速度。3.索引背后的数据结构?多叉搜索树(B+树)...

2022-06-03 11:23:27 144

原创 数据库mysql增删查改操作指令

1.基础操作MySQL服务器->许多数据库->许多数据表->指定表头,表头描述了列名和列类型->每行为一个记录,每列为一个字段数据类型:tinyint(1字节),smallint(2字节),int(4字节),bigint(8字节)float(m,d),double(m,d);m为有效数字,d为小数位数decimal(m,d);能够精确表示小数datatime(8字节),timestamp(4字节)注释:# 或者 --后面有个空格 快捷键:终止输入键: ct

2022-05-28 14:49:01 822

原创 Java字符串中第一个唯一字符

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。示例 1:输入: s = “leetcode”输出: 0示例 2:输入: s = “loveleetcode”输出: 2示例 3:输入: s = “aabb”输出: -1提示:1 <= s.length <= 105s 只包含小写字母来源:力扣(LeetCode)链接:https://leetcode.cn/problems/first-unique-character-

2022-05-24 20:00:40 252

原创 Java常见排序算法之计数排序

public class 计数排序 { public static void countingSort(int[] array){ int maxVal = array[0]; int minVal = array[0]; //1.找最大最小值 for (int i = 1; i < array.length; i++) { if(array[i] < minVal){

2022-05-24 12:21:03 179 2

原创 Java常见排序算法之交换排序

public class 交换排序 { public static void swap(int[] array, int i, int j){ int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } /** * 冒泡排序: * 时间复杂度:0(n^2) 逆序情况下 * 有序情况下:0(n) * * 空间复杂度:0(n)

2022-05-24 12:20:44 436

原创 Java常见排序算法之归并排序

public class 归并排序 { /** * 合并两个有序数组 * * @param array1 * @param array2 * @return */ public static int[] mergeArray(int[] array1, int[] array2){ int[] tmp = new int[array1.length+array2.length]; int i = 0;

2022-05-23 20:22:02 153

原创 Java常见排序算法之插入排序

public class 插入排序 { /** *直接插入排序: *时间复杂度:O(N^2) 逆序情况 *最好情况 :0(N)在有序情况下 *对于直接插入排序来说数据越有序越快 经常用在数据不多且整体数据趋于有序的 * *空间复杂度:O(1) * * 稳定性:稳定的 * 一个稳定的排序可以实现为不稳定的排序 * 但是一个本身就不稳定的排序,是不可以变成稳定的排序 * @param arra

2022-05-23 20:19:19 122

原创 Java常见排序算法之选择排序

public class 选择排序 { public static void swap(int[] array, int i, int j){ int tmp = array[i]; array[i] = array[j]; array[j] = tmp; } /** * 选择排序: *时间复杂度:O(n^2) * 空间复杂度:O(1) * 稳定性:不稳定 * @param array

2022-05-23 20:18:22 96

原创 Java前K个高频单词

给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序。示例 1:输入: words = [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “lo

2022-05-23 20:14:23 255 1

原创 Java旧键盘

链接:https://www.nowcoder.com/questionTerminal/f88dafac00c8431fa363cd85a37c2d5e?f=discussion来源:牛客网旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空

2022-05-23 14:48:46 60

空空如也

空空如也

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

TA关注的人

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