自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 问答 (2)
  • 收藏
  • 关注

原创 多线程复习——进程线程(上)

目录一、进程是啥?跑起来的程序二、进程是怎么管理的?描述+组织三、进程的PCB里有啥?四、进程的调度是咋进行?时间管理大师五、进程的独立性是咋回事?六、进程之间如何通信?一个进程要想跑起来,我们就得给其分配内存和各种资源PCB其中的属性?例如 现有12块时间.最喜欢 B ,就给 B 分配了 7块时间其次最喜欢 C , 就给 C 分配了 4块时间最不喜欢 A ,就给 A 分配了 1块时间这样就优先给 B 其次是 C 最后是 A同一个时刻我们是只能执行一个进程的(单核CPU),因此我们看起来同时执行,其实

2022-12-04 20:42:12 611 1

原创 文件操作及IO

目录一、文件的分类二、文件路径三、File 常见方法 1、get 相关方法使用2、文件的创建和删除3、遍历目录下所有文件四、文件读写站在程序员的角度,文件通常可以分为两类:有的朋友可能有疑惑:字符不也是由字节构成的吗?是的,文本文件中的字符的确是由一个个相邻的字符构成的,但这些相邻的字节之间是存在关系的,而二进制文件里面存储的字节毫无关系!!文件路径通常可以分为两类:Java 中通过 类来对一个文件(包括目录)进行抽象的描述File 属性:构造方法: 方法:小练习:运行截图:

2022-12-04 16:03:15 1008 1

原创 MySQL数据库复习——事务

事务的概念:事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。举个例子:小明和小红约好逃课去看英雄联盟总决赛。但小明逃课出来等小红的时候,发现小红被老师逮住了,所以小明叹气地说:那还不如我不逃课,在教室上课呢!此时事务地重要性就体现出来了,事务就是把这几个操作打包成一个整体,要么都执行成功,要么一步都不执行(结果要么我们去看了总决赛,要么我们都在教室上课),这就是事务的概念。

2022-12-01 22:14:06 958

原创 MySQL数据库复习——索引

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引,并指定索引的类型,各类索引有各自的数据结构实现。官方的概念往往难以理解,简单来说索引就像我们书本的目录,能够加快我们查询速度。在加快我们查询速度的同时,索引同时也要消耗存储空间(就好比目录也要费纸一样~)索引的使用场景?数据量较大,且经常对这些列进行条件查询该数据库表的插入操作,及对这些列的修改操作频率较低。满足以上条件时,考虑对表中的这些字段创建索引,以提高查询效率。

2022-12-01 20:33:11 609

原创 项目实战——Web自动化测试

目录一、前言及测试用例设计二、 首页测试(未登录)三、注册测试四、对局列表测试五、排行榜测试六、对战测试七、Bot测试八、测试套件Suite整个项目已经部署完成,我们历经九九八十一难,但再好的软件,bug也是再所难免,因此从这篇文章开始(也可能只有这一篇文章),我们就对整个项目进行测试,也会包含web自动化测试,因此如果没有学习过测试的同学可以看我之前的博客,废话不多说我们直接开始介绍我们的总体测试: 首先在我们的test目录下新建 FrontPageTest 类,由于我们每次都要用到 Chrome 的驱动

2022-12-01 16:05:50 4095

原创 项目实战——项目上线

ps : 项目要在云服务器上部署,博主自己是用的腾讯云,大家可以选择购买合适的服务器进行部署。

2022-11-27 21:03:35 2174

原创 项目实战——对战回放和排行榜

先写service接口,写完写service接口的实现ServiceImpl,在重写方法之前,先创建对应的Controller,@Autowired注入刚刚写的service接口,完善Controller,最后再完善Impl里的内容。在此函数,我们还要更新对局信息,可以用console.log(record)看看我们传进来的record数据格式是怎么样的,方便我们在后面写update函数。由于我们不可能一页展示所有对局信息,因此我们要把所有信息分成多个页展示,这里就需要直到当前的页是第几页的。

2022-11-26 16:36:58 1239

原创 项目实战——Bot的执行

本节课把代码执行的微服务写完负责接收一段代码,把代码扔到我们的队列当中、每一次我们去运行一段代码运行结束之后、把我们的结果返回给我们的服务器。

2022-11-25 21:23:52 491

原创 项目实战——匹配系统(下)

上节课知识梳理:用户浏览器打开之后、两个client表示两个浏览器Client向云端server发送请求、有http的servercontroller还有ws的server、前端client会向websocket发请求发完请求之后、本来应该用微服务实现匹配系统向matchingsystem发送请求、表示我们加入了一个玩家matchingsystem匹配完之后向server返回一个结果当两名玩家匹配完之后、他们就会开一个线程。

2022-11-25 16:22:54 1477

原创 dp入门(二)

当前可移动距离尽可能多走,如果还没到终点,步数再加一。整体最优:一步尽可能多走,从而达到最小步数。思路虽然是这样,但在写代码的时候还不能真的就能跳多远跳远,那样就不知道下一步最远能跳到哪里了。所以真正解题的时候,要从覆盖范围出发,不管怎么跳,覆盖范围内一定是可以跳到的,以最小的步数增加覆盖范围,覆盖范围一旦覆盖了终点,得到的就是最小步数!这里需要统计两个覆盖范围,当前这一步的最大覆盖和下一步最大覆盖。

2022-11-24 20:38:44 649 1

原创 项目实战——匹配系统(中)

后端接受前端两名玩家输入的操作后,才开始进行下一步操作。为了游戏的流畅性,提高玩家的游戏体验感,我们规定,如果超过一定的时间后,另一名玩家仍然未能给予操作,我们就判定这个玩家lose了。还需要注意的是,我们前端设置1s走5步,200ms走一步,所以为了操作顺利,不会因为操作太快而读入多个操作,我们每一次读取前都要先sleep 200ms,规范一下。这里可以按照自己的情况合理地规定等待时间,可以通过增加循环次数,减少sleep时间优化玩家操作手感,以牺牲服务器的计算量换取玩家的操作的流畅性。

2022-11-23 20:45:29 1340

原创 项目实战——匹配系统(上)

要实现匹配系统起码要有两个客户端client1,client2,当客户端打开对战页面并开始匹配时,会给后端服务器server发送一个请求,而匹配是一个异步的过程,什么时候返回结果是不可预知的,所以我们要写一个专门的匹配系统,维护一堆用户的集合,当用户发起匹配请求时,请求会先传给后端服务器,然后再传给匹配系统处理,匹配系统会不断地在用户里去筛选,将rating较为相近的的用户匹配到一组。当成功匹配后,匹配系统就会返回结果给springboot的后端服务器,继而返回给客户端即前端。

2022-11-22 20:21:20 2394 1

原创 DP入门(一)

由于作者经常卡力扣周赛最后一题的dp,因此决定痛改前非,从头做人,争取下次能做出最后一道dp ak周赛!呜呜呜加油~~ 因此 这个系列的文章不会教 dp ,只会讲刷题思路,目前的计划是先更 lc 的题目,如果有时间也会做其他的 dp 问题。

2022-11-20 22:51:54 616 1

原创 项目实战——创建个人中心页面(下)

实现 refresh_bot,获取上节课的 API: /user/bot/getlist/ 查询 bot 列表,通过获取后端信息把数据展示在前端上。在 views.user.bot.UserBotIndexView.vue 下修改,增加一个模态框,然后丰富模态框的内容。在 views.user.bot.UserBotIndexView.vue 下修改,实现基本的个人 bot 信息展示。创建完成后需要绑定前端的信息。在 views.user.bot.UserBotIndexView.vue 下修改。

2022-11-20 18:52:06 337

原创 项目实战——创建个人中心页面(上)

一、整体框架一、整体框架。

2022-11-20 18:06:39 1437

原创 320力扣周赛总结

6241. 数组中不等三元组的数目思路:数据范围都非常小,三重循环即可,开胃小菜!

2022-11-20 17:02:03 741

原创 项目实战——实现注册与登录模块(结尾)

在 view -> user -> account 下的 UserAccountRegisterView.vue 文件实现,实现方式类似于同目录下的 UserAccountLoginView.vue。当我们的用户重定向到登陆页面的时候,我们需要把用户的 token 存储到浏览器的 local storage,这样就可以实现登录状态持久化。在 router 目录下的 index.js 文件下实现。首先 修改 store 目录下的 -> user.js 文件,在合适的位置添加下列两行。记得 git 维护~

2022-11-15 20:53:11 961

原创 项目实战——实现注册和登录模块

在 pom.xml 中添加下列依赖:jjwt-apijjwt-impl。

2022-11-15 17:54:23 1626

原创 项目实战——配置MySQL与Spring Security模块

PS:本篇文章主体内容并不涉及复杂代码的编写~~请大家放心食用hh。

2022-11-14 20:33:32 918

原创 项目实战——创建菜单与游戏页面(下)

画蛇及键盘响应实现!

2022-11-13 21:26:15 1938 4

原创 项目实战——创建菜单与游戏页面(上)

PS:整篇文章全是实现前端的工作,如果大家不了解vue3,建议补一下前置知识~~PS:整篇文章全是实现前端的工作,如果大家不了解vue3,建议补一下前置知识~~

2022-11-13 11:33:34 1500

原创 项目实战——配置git环境与项目创建

bot 其实是一个函数,可以控制我们的蛇进行不同方向的移动,我们为了简单可以设计上下左右为数字1234,那么我们每次都要返回一个数字(1~4)。我们会做一个蛇类对战游戏,用户可以创建AI(bot)代替自己参战,也可以选择自己参战,bot 其实就是一段代码。然后我们将现有的文件夹推送到云端,由于我们已经初始化过了本地仓库,因此我们从 “已有仓库” 开始执行。可以看到我们初始化之后的文件夹有了一个 .git文件夹,代表我们初始化成功。1)代码存档,git可以看到代码的所有历史版本,可以进行回档。

2022-11-12 11:24:21 1078

原创 Junit单元测试框架

Junit 框架的简单介绍和使用(自动化测试必备知识!)

2022-11-10 22:20:33 937

原创 自动化测试

selenium的使用 和 进阶

2022-11-09 23:00:56 1274

原创 软件测试分类

软件测试的分类~~

2022-11-08 20:45:53 793

原创 测试用例的设计方法

测试用例的设计方法

2022-11-08 19:45:33 457

原创 软件测试(基础知识)

软件测试概念篇

2022-11-07 22:37:57 7287

原创 软件测试基本概念

测试的基本概念

2022-11-07 20:31:35 762

原创 软件测试(mark)

软件测试入门

2022-11-07 19:32:21 242

原创 acw 周赛总结

思路:第一位是字母,其他位全是数字,我们利用char计算时使用的是 assic 码值,但 数字字符的acsic 码 的奇偶性是一样的!因此我们可以直接计算!

2022-08-28 14:36:06 251

原创 剑指offer打卡(一)

这道题对新手其实还是比较有难度的,我们观察题意可知 值的范围是 0 ~ n 而个数是 n + 1,因此根据抽屉原理可知一定是有一个元素重复的,我们可以枚举一段区间 l r 统计 l ~ mid(左闭右闭)的元素个数,如果个数 大于 mid - l + 1 的话 证明我们 l ~ mid 中一定是由重复元素的,每次我们可以划分 一半的区间 而统计个数的时候 是 O(N) 的复杂度 所以总的时间复杂度 O(N * log N)思路:对于一个结点,它的中序遍历的下一个结点是哪一个有几种可能?...

2022-08-27 11:50:19 431

原创 acwing每日一题(8.12 ~ 8.14)

每日一题

2022-08-15 10:08:13 284

原创 算法数论(约数)

算法数论之约数篇

2022-07-14 22:49:08 297

原创 算法数论篇(质数)

算法数论

2022-07-13 22:53:02 307

原创 最短路算法详解

图的最短路算法

2022-06-25 21:48:27 2670 1

原创 多线程面试八股大总结

一、如何保证线程安全?1、使用没有共享资源的模型2、使用共享资源只读不写的模型1)不需要写共享资源2)使用不可变对象3、直面线程安全(重点) 1)保证原子性 2)保证顺序 3) 保证内存可见性二、线程 vs 进程1、线程的优点1)创建一个新的线程的代价要比创建一个新的进程小2)与进程间切换相比,线程间的切换需要操作系统做的操作小得多3)线程占用资源比进程少4)能充分利用多处理器的可并行数量5)在等待 I.........

2022-06-05 10:41:11 1185 16

原创 面试问我线程池?还好我早有应对

目录一、线程池1、线程池是什么2、标准库中的线程池3、线程池工作流程4、拒绝策略的解析5、线程池的实现一、线程池1、线程池是什么线程池顾名思义就是类似一个“池子”里边存着线程,我们需要处理任务的时候就从中取出一个线程,搭载上我们的任务去执行就好了。那为什么要有线程池呢?看到这里线程池的作用已经很明显了:减少每次启动,销毁线程的损耗。2、标准库中的线程池我们先介绍其中一些参数的意义:1、corePollSize:核心线程最大数量,可以理解为正

2022-05-28 10:12:22 411 18

原创 Java多线程(2)

1、多线程带来的风险 ------ 线程安全什么是线程不安全,请看以下代码:public class ThreadDemo1 { static int N = 10_0000; static int res = 0; public static class MyRunnable implements Runnable { @Override public void run() { for (int i =

2022-05-25 22:23:55 870 18

原创 Java多线程(1)

写在前面:由于笔者实力有限,此篇文章只为总结梳理多线程知识,其中知识总结大部分参考了一篇非常优质的博客:(248条消息) Java多线程(超详细!)_一个快乐的野指针~的博客-CSDN博客_多线程javahttps://blog.csdn.net/qq_44715943/article/details/116714584?ops_request_misc=&request_id=&biz_id=102&utm_term=java%E5%A4%9A%E7%BA%BF%E7%A8%8

2022-05-21 15:22:53 480 4

原创 算法笔记二(这些数据结构你知道吗?)

一、数组模拟单链表单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。单链表是我们很常见的一种线性表 适用于经常增删元素的场景 在我们日常使用中我们可以采用结构体的方式来实现链表 也就是把很多个 Node 串在一起 ,但是这种结构体的实现是很慢的 因为java中new一个对象所耗费的时间是很多的 ,因此我们.

2022-05-16 17:52:21 515 15

空空如也

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

TA关注的人

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