- 博客(199)
- 收藏
- 关注
原创 五子棋PVP项目总结
实现一个网页版五子棋对战程序. 支持以下核心功能:* 用户模块: 用户注册, 用户登录, 用户天梯分数记录, 用户比赛场次记录. * 匹配模块: 按照用户的天梯分数实现匹配机制. * 对战模块: 实现两个玩家在网页端进行五子棋对战的功能. ## 核心技术* Spring/SpringBoot/SpringMVC* WebSocket* MySQL* MyBatis* HTML/CSS/JS/AJAX
2022-10-09 16:00:25
683
原创 使用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
813
原创 软件测试基础总结
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
523
原创 软件测试概念总结
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
1251
原创 博客系统项目详解
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
2373
原创 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
376
原创 使用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
2502
原创 HTTP和HTTPS详解
HTTP协议HTTP请求1.组成2.方法3.header里面的一些键值对4.TCP粘包问题的补充HTTP响应1.组成2.几大类:3.HTTP请求构造HTTPS协议1.生成密钥2.公信机构
2022-08-23 22:46:05
1345
1
原创 在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
1025
原创 常见协议UDP和TCP详解
UDP报文格式TCP报文格式TCP核心机制1.确认应答2.超时重传3.连接管理(经典面试题)4.滑动窗口5.流量控制6.拥塞控制7.延时应答
2022-08-09 21:41:58
1620
原创 Java使用TCP api实现回显服务
关闭是为了“释放资源”,释放资源的前提是已经不需要使用这个资源了,但是对于UDP的程序和serverSocket,这些socket都是贯穿程序始终的。每次都得保证处理完的连接都进行释放。当上面的代码第一次accept结束之后,就会进入processConnection,在processConnection又会有一个循环,如果processConnection里面的循环不结束,processConnection就无法执行完成,外层就无法二次调用accept,就不能接受第二个客户端的链接了。...
2022-08-08 19:41:50
434
原创 Java使用UDP Socket实现回显服务
服务器定义为“被动接受请求的一方”,主动发送请求的一方叫做客户端。send方法的参数,也是DatagramPacket需要把响应数据先构造成一个DatagramPacket再进行发送,这里就不是构造一个空的数据报。在当前场景,那个客户端发来的请求,就把数据返回给那个客户端。/***/ /*站在服务器的角度:1.源IP:服务器程序本机的IP2.源端口:服务器绑定的端口号(此处手动置顶了9090)3.目的IP:包含在收到的数据报中(客户端的IP)5.协议类型:UDP。...
2022-08-08 17:38:44
591
原创 计算机网络中的封装和分用,五层协议
传输层负责端到端之间的通信,起点和终点只是关注结果(数据到没到),不关注过程(不关注数据走哪条路),相当于买家和卖家,快递公司则要关注中间的过程。在刚才IP数据报基础上,根据当前使用数据链路层协议,构造成一个数据链路层的数据报,典型的数据链路层的协议叫做以太网,就会构造一个“以太网数据帧”IP报头包含了很多信息,最重要的就是源IP和目的IP,相当于发件人的地址和收件人的地址。路由器和交换机实际上,真正的交换机和路由器之间的界限已经越来越模糊了,路由器的很多功能交换机也有,交换机的很多功能路由器也有。...
2022-08-01 21:52:55
2368
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
907
原创 XML的使用总结
XML(Extensible Markup Language)表示可扩展标记语言XML的标签没有被预定义也就是说不是固定的,用户可以根据自身的需求去自定义标签XML的作用主要是用来存储数据和传输数据XML的文档声明是可选的,也就是可以不写,但是开发中大家都会写文档声明XML的文档声明如果写了必须放在XML文件的第一行第一列,必须以结尾,而且必须包含两个属性:version和encoding元素是XML的重要组成部分,元素也称为标签每个XML文件必须要有一个根标签标签由开始标签和...
2022-06-23 17:37:37
1233
原创 Java中常见的锁策略
1.悲观锁和乐观锁:处理所冲突的态度(原因)2.重量级锁和轻量级锁:处理所冲突的结果3.挂起等待锁和自旋锁:4.读写锁和普通互斥锁:5.公平锁和非公平锁6.可重入锁和不可重入锁synchronized总结synchronized中的锁优化机制1.锁膨胀/锁升级2.锁粗化3.锁消除ReentrantLock可重入锁ReentrantLock和synchronized的区别Semaphore信号量CountDownLatch终点线CopyOnWriteArrayList写时拷贝...
2022-06-21 11:41:05
515
原创 Java中的CAS(compare and swap)
定义:用途:2)基于CAS能够实现“自旋锁”如何理解CAS中的ABA问题?一个典型的例子:解决ABA问题的方法:
2022-06-21 11:33:01
346
原创 JavaEE线程安全的线程池实现
为什么线程放在池子里就比从系统申请释放来得更快呢?java标准库中的线程池:线程池构造方法:线程池参数解析:一个程序要并发的/多线程的来完成一些任务,如果使用线程池的话这里线程数量多少合适?简化版的线程池线程池的组成...
2022-06-17 20:21:19
428
原创 Java多线程编程Thread类的使用和注意事项
Thread类的基本用法:}线程的一些指标:run和start的区别中断线程线程等待Thread.currentThread()进程状态针对系统层面:java中Thread类进一步细化:状态转换图:线程安全问题:线程不安全产生的原因:内存可见性解决方法:synchronized用法1.直接修饰普通的方法2.修饰一个代码块3.修饰一个静态方法或者监视器锁monitor lock死锁的其他场景死锁的四个必要条件(前三个都是锁本身的特点)java线程类:volatile
2022-06-15 20:00:57
460
原创 操作系统进程线程区别、并发和并行、内存和外存
3.操作系统是如何管理进程的?4.PCB中的属性5.并发和并行6.进程调度7.线程产生的原因8.线程为什么比进程更轻量?9.进程和线程的区别和联系10.内存和外存的区别
2022-06-04 21:50:24
375
原创 JDBC编程
1.创建项目2.引入依赖:JDBC编程需要用到mysql驱动包 1)下载驱动包 2)创建项目 3)创建个目录,叫做lib 4)把下载的jar文件拷贝到刚才的目录中 5)右键刚才的目录,选择add as library3.编写代码
2022-06-04 11:07:02
111
原创 MySQL中的事务
定义:把多个sql打包成一个要么全都执行,要么都不执行。事务的核心就是回滚,回滚的依据就是mysql要记录之前执行的一些过程。特性:原子性(核心,要么全都执行完要么都不执行)、 一致性(执行前后数据都是合理合法的)、 持久性(事物一旦提交数据就永久的存储起来了)、 隔离性(解决并发执行多个事务出现的问题)并发执行带来的问题:脏读,事物和事物之间没有任何隔离,加上一些约束限制就可有效避免脏读。(给写操作加锁)不可重复,在一个事务中包含了多次读操作,多次读操作结果不一致。(给读操作
2022-06-03 20:06:25
189
原创 数据库中索引定义、使用场景代价和数据结构
1.索引是干啥的?相当于一本书的目录,根据目录中对应章节的页码就能找到相应章节。索引就是为了进行查找,提高找效率。2.索引使用场景,付出的代价?适用于需要经常查找但是不经常修改的场景。占用了更多的空间且拖慢了增删改的速度。3.索引背后的数据结构?多叉搜索树(B+树)...
2022-06-03 11:23:27
195
原创 数据库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
891
原创 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
285
原创 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
207
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
496
原创 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
179
原创 Java常见排序算法之插入排序
public class 插入排序 { /** *直接插入排序: *时间复杂度:O(N^2) 逆序情况 *最好情况 :0(N)在有序情况下 *对于直接插入排序来说数据越有序越快 经常用在数据不多且整体数据趋于有序的 * *空间复杂度:O(1) * * 稳定性:稳定的 * 一个稳定的排序可以实现为不稳定的排序 * 但是一个本身就不稳定的排序,是不可以变成稳定的排序 * @param arra
2022-05-23 20:19:19
169
原创 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
124
原创 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
357
1
原创 Java旧键盘
链接:https://www.nowcoder.com/questionTerminal/f88dafac00c8431fa363cd85a37c2d5e?f=discussion来源:牛客网旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现。现在给出应该输入的一段文字、以及实际被输入的文字,请你列出肯定坏掉的那些键。输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空
2022-05-23 14:48:46
87
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人