自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vscode配置C++运行环境+三道单调栈题目

写出这两个之后,我们可以把每个点作为B点进行遍历,如果这个点的最小的A点对应的最大的B点比这个点更大(满足两个规则,Bmax[Amin[i]]>=i)那么这个区间就是满足条件的。当这个点是A的时候,我们向后找B的位置,如果找到一个位置比A还小,那么规则A就不成立了,所以当这个点为A的时候,B最大的下标就是下一个比A小的位置的前一个。当这个点是B的时候,我们向前找A的位置,如果找到一个位置比B更大,那么规则B就不成立了,所以当这个点为B的时候,A最小的下标就是上一个比B大的位置的后一个。

2025-05-06 15:47:29 681

原创 Java项目部署

使用docker部署后端项目

2025-05-01 14:13:40 866

原创 力扣每日刷题

在函数使用循环对没有被标记的陆地使用dfs遍历并记录这样的陆地,在dfs中把和这一个土地连起来的所有的土地都遍历并标记算作一片,然后看这样的土地有多少片就好了。使用bfs遍历所有腐烂的橘子并记录时间,把最后一个腐烂的橘子的时间记录下来。所有的题目进行dfs遍历,查看当前题目的图中有没有闭环,当一个节点在一个dfs中被遍历两次就代表出现了闭环。这道题目就是看所有的选修的课形成的图中有没有环,如果有环就返回false。一个节点一共有三种状态:未被遍历,被别的节点遍历,被当前节点遍历。

2025-01-17 15:59:30 321

原创 力扣每日刷题

对于每个节点来说,如果自己就是目标节点之一,就把自己返回,如果不是则以自己为根节点查看自己的子树中有没有目标节点,如果有一个则返回一个,如果有两个则返回自己(此时自己就是最小的父节点)。优化:在之前的思路上对算法进行优化,我们只要提出一个变量用它来保存树的最大值,然后把比较树的最大值的判断语句放在遍历树的语句中,就可以达到O(N)的时间复杂度来解这道题了。不在同一个子树的时候,那么他们一定分别属于节点的左右子树,当左右节点得到的返回值都不为空时才返回共同的父节点,否则会一直返回目标节点。

2025-01-14 14:20:53 243

原创 力扣每日刷题+Codeforces Round 996 (Div. 2) A~B

通过先序遍历可以确定根节点,然后拿着这个根节点去中序遍历查看位置,在这个位置左边的都是节点左子树上的值,右边的都是节点右子树上的值。当前节点的左节点就是当前节点在前序遍历中位置的下一个,右节点就是 当前节点在前序遍历中位置+左节点的个数+1 .暴力法:以每一个节点为起点进行扫描,如果这个节点下有路径的和为targetSum,那么就记录+1。当只有一个材料缺失的时候,其它的材料能否补全这个材料呢?最后使用一个区间保存这个节点的子树的个数,当这个区间中什么节点都没有的时候就可以返回。

2025-01-13 14:46:14 285

原创 力扣每日刷题

解题思路:消除左子树,从根节点开始每次都去寻找左子树的最右边的节点,然后把当前的右子树放到左子树的最右边的节点的右节点最后把最后把左右交换,左边赋值null,当前节点向右移动,如此循环直到所有子树被消除完。解题思路:根据二叉搜索树的定义可得二叉树的中序遍历是一个有序数组,那么我们只要使用数组记录一下中序遍历,然后看数组是否是有序的就可以看出这棵树是不是二叉搜索树。解题思路:遍历树的时候按照根右左的顺序进行遍历,然后保存当前已经遍历过的最高的高度,如果当前节点的高度比最高的高那么就使用数组保存起来。

2025-01-12 11:13:02 219

原创 力扣每日刷题

解题思路:通过观察题目可以发现最远的两个节点一定是某一棵树的左右子树的端点,这个子树不一定是根节点的那一棵树,deep方法的作用就是检查这棵树的最远的节点的长度。diameterOfBinaryTree方法的作用就是对每一棵树都进行一个遍历然后选出最大的进行返回。解题思路:给了一个有序的数组,把这个数组从中间分开,挑出最中间的数作为当前节点,此数左边就是该节点的左子树,右边就是该节点的右子树。然后以这个数组分开的左右数组作为参数进行递归连接左右子树。

2025-01-11 11:38:48 332

原创 力扣每日刷题

解题思路:使用一个总的List来记录所有的List集合,然后从根节点开始调用函数(根节点所在的层数是总list的下表0),在处理一个节点的时候先看该层的list是否被建立过,如果没有就建立一个list放入。然后向这个list中添加当前的节点,把该节点的两个子节点和他们所在的层数作为参数进行函数调用。当前节点为空时直接返回程序。心路历程:一开始想的是使用bfs但是有很多的细节没考虑到(不知道如何去处理一层只有一个节点的情况),然后又想到了使用递归回溯的来解决。

2025-01-10 12:48:25 310

原创 力扣每日刷题

不递归:先遍历一遍旧链表,使用哈希表记录每个旧节点和节点在这个链表的下标(和新建的链表对应上),根据旧链表建立新链表并把新链表的前后相连,使用数组按照链表节点在这个链表的位置进行记录。最后在遍历一遍旧链表,获得旧链表的随机节点在哈希表中对应的下标,最后根据下表去数组中取新链表的节点进行连接就好。递归:使用哈希表记录每个旧链表节点和对应的新链表结点,对于每个节点都可以进行判断,如果这个节点不在哈希表中,我们就创建一个新链表节点,并把旧链表的next节点和random节点作为参数进行传入。

2024-12-31 11:46:23 302

原创 力扣每日刷题

解题思路:使用递归的思想,以k个节点为一组进行处理和递归就能解决。要注意的是k等于1的情况需要特判。最后以p为下一组的起点进行递归,然后返回pre让上一个进行链接。

2024-12-30 11:02:34 238

原创 力扣每日刷题

做题思路:把需要交换的两个数的前一个数作为参数传入,然后使用一个变量保存这两个变量的后一个数,交换这个两个数,最后把第二个数(原第一个数)的next指向这个方法(next作为参数传入)的返回值,最后返回第一个数(原第二个数)。结束条件为最后只剩下一个值或者刚好交换完。做题思路:和递归相似。把原本的head前置用于保证链表不断开并且检测是否可以继续进行交换。使用前置节点代替了递归的功能。

2024-12-29 11:06:08 339

原创 学习分享1

在开始执行计划的时候要坚决的按照计划去执行再难都要去执行,意外的情况在日常的生活中是一定会出现的,所以计划不可能总是按照时间严格执行的,这个时期考验的就是执行计划的决心,如果在一开始就因为各种原因没有按照计划去执行,那么在后面执行的时候大概率也是会因为各种原因导致没有按照计划去完成的。这不仅涉及到时间的合理安排,还包括了选择合适的学习材料、设定明确的学习目标以及采取适当的方法来跟踪进度和评估效果。在指定学习计划的时候一定要在时间上给自己留一定的空白,这样在面对计划执行阶段的突发情况时就会游刃有余了。

2024-11-24 17:25:31 1220

原创 使用原生Redis完成分布式锁

线程1获取到锁之后,在执行业务的时候时间太长,导致redis自动消除了数据完成了锁的释放,然后线程2获取到锁开始执行业务,这时线程1执行完成开始释放锁,这个时候会导致线程1释放了线程2的锁,然后线程2释放线程3······。先查看redis中是否存有对应的商品ID,如果没有对应的id,就可以使用redis的set命令对redis中添加数据,添加数据的键为对应商品的ID,值为获取的雪花ID。整个业务最重要的就是如何获取锁和释放锁,要保证整个过程不会出现任何的并发问题(两个线程拿到同一个商品的锁之类的)。

2024-11-07 23:18:11 581

原创 学习索引时想到的问题

答:数据库会先评估怎样使用索引是最快的(两个单独的索引和一个包含两个字段的复合索引会使用复合索引而不是用两个单独的索引,也有可能会使用一个索引,取决于在当时的环境),然后根据(这里使用两个单独的索引)第一个单独的索引进行查询然后使用另一个索引进行查询,最后进行回表。答:如果把全部字段都放在复合索引中,在查询的时候会比不添加索引快,但是要对索引进行维护所以在插入、删除和修改的时候会比较慢,维护索引的时间会比较长而且哪怕是这样搜索也不是最佳选择,所以不常用,要保持复合索引中的字段尽可能的简洁。

2024-10-16 01:31:26 426

原创 9.19总结

简单的把项目er图和功能点写一下,因为功能点还没想好所以ER图不是很完整。

2024-09-19 23:47:17 715 1

原创 Vue学习

pinia提供了pinia-plugin-persistedstate插件来对数据进行持久化处理,我们如果需要数据长时间保存那么我们只需要对数据进行一个标记,pinia-plugin-persistedstate插件就会自动的帮我们保存这个数据(保存的原理是将数据保存在了浏览器的。类似于javabean中的set方法,如果需要改变State中的数据,推荐尽量对于任何的对State中的数据都要通过Mutations提交进行改变,Mutations是同步的。然后在main.js中把pinia在全局引用。

2024-09-13 01:38:24 696

原创 暑期知识总结

前端和后端的拦截器,双token,文件上传,文件下载,三层架构,通过注解和反射来包装servlet对请求进行分发,通过注解对对象进行注入,websocket,推荐算法(协同过滤算法).使用servlet根据自定义注解对请求自动分发,对参数自动注入,对返回的数据进行自动序列化。在没有使用Websocket之前,前端和后端之间的数据都是通过http协议进行的。http协议是单工的,他只允许前端向后端发送数据,后端无法主动发送数据到前端,如果需要实时更新就只能使用轮询(轮询效率极低所以)。

2024-09-10 22:55:43 960

原创 2024下学期学习总结加今日学习总结

仔细想来下半年好多事情要做啊:每天要抽时间锻炼、要学spirngboot、要写项目、还要考四级,这个学期要是把这些任务都完成了就成了时间管理大师了,这个springboot项目需要写好一点,争取写出令自己满意的项目。要在这个学期结束之前把能力加强到可以写出一个令自己满意的项目,这样才可以面对明年初的比赛。在下个学期到来之前把《Java核心技术卷》、《并发编程的艺术》、《设计模式之美》这几本书给看了对于书中的知识要多去思考把每个知识点都去想一想别的优化或者平替方法,再去学习java虚拟机。

2024-09-08 23:23:47 383

原创 Spring boot

SpringBoot实现拦截器需要类去实现HandlerInterceptor接口,实现其中的preHandle、postHandle、afterCompletion方法@Override// 处理请求前逻辑System.out.println("被拦截到了");// 返回 false 会阻止请求继续// 处理请求后逻辑,但在视图渲染之前// 完全请求处理后执行。

2024-09-05 23:19:01 1191 3

原创 Vue学习

Vue.js(读音 /vjuː/, 类似于view)是一个构建数据驱动的 web 界面的库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

2024-09-03 22:40:03 1720

原创 java通过jwt生成Token

JWT(JSON Web Token)简而言之,JWT是一个加密的字符串,JWT传输的信息经过了数字签名,因此传输的信息可以被验证和信任。一般被用来在身份提供者和服务提供者间传递被认证用户的身份信息,以便于从资源服务器获取资源,也可以增加一些额外的业务逻辑所需的声明信息。

2024-07-15 01:08:34 532

原创 Cookie和Session

如果设置了 Domain 属性,浏览器在发送 HTTP 请求时,会检查请求的域名是否包含在该 Cookie 的 Domain 属性中,如果包含,则浏览器会发送该 Cookie。定义:Cookie是存储在用户计算机上的小型文本文件,由服务器发送给客户端(通常是Web浏览器),然后客户端会将Cookie保存并在每次请求时发送回服务器。如果设置了 Path 属性,浏览器会检查请求的路径是否包含在该 Cookie 的 Path 属性中,如果包含,则浏览器会发送该 Cookie。常用于跟踪用户的会话状态。

2024-07-12 02:04:30 673

原创 Axios

SqlSession 对象是线程不安全的,因此它的最佳实践是在每个请求或线程中创建一个新的 SqlSession 实例,并在执行完数据库操作后关闭它,以确保资源的正确释放和避免潜在的资源泄漏问题。在浏览器中所有的连接都是短链接,如果在网站中有登录的操作,那么服务器就很难根据不同的用户展示不同的数据,因为服务器无法识别每一个用户。cookie相当于给每一个用户发送了一个身份证,在拥有身份证以后每一个用户在访问服务器获取相应的数据时都携带上自己的身份证以便服务器进行识别。请求指定的页面信息,并返回实体主体。

2024-07-10 00:56:58 691

原创 axios和Mybatis

发送 PUT 请求通常用于更新服务器上的资源。在这个例子中,我们向发送了一个 PUT 请求,更新了 ID 为 1 的文章数据发送 DELETE 请求通常用于从服务器删除资源。在这个例子中,我们向发送了一个 DELETE 请求,删除了 ID 为 1 的文章。以上使用的都是别名。MyBatis 是一个持久层框架,专注于将 Java 对象与关系型数据库的记录进行映射,通过 XML 或注解配置 SQL 查询语句,简化了与数据库的交互过程。

2024-07-08 01:33:35 609

原创 【无标题】

Servlet 容器根据请求中的 URL 或其他条件找到对应的 Servlet,并创建一个 Servlet 实例(第一次使用ervlet时)。继承servle必须重写三个方法(init、service、destroy),init方法在创建servlet对象的时候会调用并且只会调用一次,service方法在每一次被访问的时候都会去调用,destroy方法在释放servlet对象时运行。Flexbox(弹性盒子)是一种用于布局设计的 CSS 技术,它提供了一种更加灵活的方式来组织、对齐和分布容器中的项目。

2024-07-05 08:05:50 436

原创 7.2学习总结

java是动态加载的语言,因为设计者并没有限定Class一定是从磁盘来的,也可能是网络,也可能是压缩包,总之Class是符合规则的二进制代码就行,剩余的建立对象的任务都会交由JVM虚拟机来建立,而且每个Class一定是独一无二的.所以反射最重要的用途就是开发各种通用框架。记住,用这三种方法获取的Class永远的只能获取且仅有的一个,所以这三种方式获取的Class类都是一致的(内存地址相同)答:Class是一个类,小写的class代表这是个类型,大写的Class代表了这个类的名称。

2024-07-03 01:48:15 394

原创 JavaScript

在建立JSON格式的字符串之后无法直接的进行使用要使用JSON.parse()函数把字符串变成JSON对象才可以作为对象进行使用,如果重新转化为字符串也需要使用相应的函数JSON.stringify()把对象转化为字符串。使用起来很像双列集合,都是一个key对应唯一一个value,但是JSON对于不同数据类型的value有不同的格式要求,这点在使用的时候需要注意,要牢记value对于不同的数据类型的格式要求。- location对象提供了当前URL的信息,并允许你重定向浏览器到新的URL。

2024-06-20 23:40:40 732

原创 HTML学习和JAVAScript学习

Javascript对变量类型的要求不高变量可以存放不同类型的值,所以统一使用。和java大致一样,有小部分不同就是每行代码结尾的分号可有可无。输入用户名和密码点击提交之后数据会显示在url之后,可以被看见。cellspacing:规定单元之间的空间。外部js文件的后缀名要求是.js。定义表格的行,必须嵌套在<table>中。js中的数组的特点是长度可变,类型可变。定义标题单元格,必须嵌套在<tr>中。定义表格整体,可以包含多个<tr>width:规定表格的宽度。定义单元格,必须嵌套在<tr>中。

2024-06-18 22:58:08 368

原创 HTML的常用标签

a标签可以从一个页面链接到另一个页面,就是常用的超链接。

2024-06-17 08:18:38 334

原创 javaweb和Mysql学习

在绝大多数情况下,我们不需要在使用索引时去操心使用什么索引类型比较好,数据库会自动的根据你创建的索引和查询的需求来选择合适的索引类型,我们只需要专注于创建合适的索引。当你执行查询语句时,数据库引擎可以利用索引来快速定位符合条件的数据行,从而减少了数据检索的时间。空间索引是 MyISAM 引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少。不同的数据库管理系统支持不同类型的索引,每种索引类型都有其适用的场景和性能特点。如果不加 CREATE 后面不加索引类型参数,则创建的是常规索引。

2024-06-13 23:55:01 456

原创 6.9学习总结

先开起事务(标记一个事务的开始),然后执行想要在一个事务中运行的语句,最后可以根据情况选择提交事务(事务运行成功,数据改变)或者回滚事务(事务运行失败,数据回到开始事务之前),至此一个事务结束。幻读:一个事务读取到了另一个事务中已提交的插入或者删除的数据。不可重复读:一个事务读取到了另一个事务中已提交的被改变的数据,导致了对同一条数据进行多次查找得到不同结果。脏读:一个事务读取了另一个事务中未提交的数据,导致得到了不一致和不准确的数据。多个事务同时运行时,一个事务读取到了另一个事务未提交的数据。

2024-06-12 07:33:34 544

原创 6.6学习总结

ignore关键字:在使用update和insert关键字进行多列修改时只要有一列的修改数据出现错误那么整个update语句的修改都会被撤销(已被修改的数据会被回溯成没有修改之前的值),为了在出现错误时也可以进行修改,遇到重复插入可以不进行插入,就会使用到ignore关键字,可以使update和insert在发生错误时也可以运行。注意:不同类型的引擎之间的表不能混合引用,即使用一个引擎的表不能引用具有使用不同引擎的表的外键。这样插入的数据会根据你的给出的顺序插入,如果想只对最后一个数据进行插入就很难做到。

2024-06-07 00:28:00 1022

原创 6.4学习总结

缩短SQL语句允许在单条SELECT语句中多次使用相同的表。

2024-06-04 22:38:30 722

原创 数据库学习总结

函数说明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返回某列的最大值MIN()返回某列的最小值SUM()返回某列值之和例:AVG函数:COUNT函数:MAX函数:MIN函数:SUM函数:以上的五个函数都有以下用法对所有的行执行计算,指定ALL参数或不给参数(ALL为默认)只包含不同的值,指定DISTINCT参数如果指定列,那么distinct只能用于count函数,且distinct只能用于列名。例:(X)(√)

2024-06-02 23:09:59 978

原创 Mysql学习

单个字段:select 字段名 from 表名;多个字段:select 字段名,字段名 from 表名;搜索多个字段时,字段名之间使用逗号隔开所有字段:select * from 表名;搜索所有字段时使用 '*' 替代字段名搜索不同的行:select distinct 字段名 from 表名;distinct关键字必须放在所有的字段名之前,不能放在部分的字段名之前;限定返回结果的行数:select 字段名 from 表名 limit 行数;

2024-05-30 22:29:02 1193

原创 5.28学习总结

hashcode():在Object里这个方法是通过返回地址的整数值来生成哈希值。equals():在Object里这个方法是通过比较他们的内存地址来确定两个对象是否相同。hashcode的时间复杂度为O(1)(因为只要计算一次哈希值就行了),equals的时间复杂度为O(n)(因为要比较每一个值),所以在比较是否相同时要优先使用hashcode方法获取的值是否相同。当输入样本量足够大时,不相同的对象调用hashcode是会产生相同输出的,也就是形成哈希冲突。

2024-05-29 01:02:13 531

原创 复习java5.26

String类是不可改变的,在保存字符串时使用的是byte数组来进行存储的,而这个数组是使用final进行修饰的,所以String类是不可以改变的,对String类进行+运算则是生成了一个新的变量。继承:从已有的类中派生出新的类(新的类继承旧的类,旧的类叫做新的类的父类),新的对象具有父类的属性和方法并可以具有自己独有的属性和方法,java中继承是单继承(每一个子类都只能有一个直接的父类)如果传输的是对象,那么传输的是对象引用的副本,在方法中改变对象的值,那么对象引用的值也会和方法中一样。

2024-05-26 22:43:37 1390

原创 java学习和项目总结

JRE:JRE是Java 运行时环境,主要包括了两个运行需要的组件:JVM 和 Java 核心类库,如果不进行java开发只想运行就可以只下载JRE。而Java语言,它的代码会先通过javac编译成字节码,再通过jvm将字节码转换成机器码(0和1)执行,即解释运行和编译运行配合使用,所以是混合型。在程序运行之前,通过编译器将源程序编译成机器码可运行的二进制,以后执行这个程序时,就不用再进行编译了。JVM:JVM是java进行编译的虚拟机,是Java 能够跨平台运行的核心。特点:执行速度慢、效率低;

2024-05-24 02:08:26 1018

原创 学习通项目总结:

暴露出来的需要加强的:自我学习能力太差,java的基础知识不牢固(看书做笔记看资料),对数据库的使用掌握的太少了(看Mysql必知必会),对项目的结构与规范不了解。选择题,先要能保存做题目的进度,老师那边要提供正确答案每一题的分数,所有的题目都要显示正确的答案、错题集(选择题)、老师可以修改学生的签到状态。4.对数据库的认识太少了,就只使用了最简单的增删改查,相关的知识点了解的太少。5.对项目的结构没有一个很好的认识,导致在完成功能点的时候走了很多的弯路。2.只是做了基础的功能点没有自己的想法(没有创新)

2024-05-22 00:59:45 352

原创 5.15项目进度总结

实时显示的思路:在登录后开一个线程用一个socket去链接服务端并查询需要实时的信息,同时服务端把这个socket记录下来(标记为用来更新状态的socket),然后客户端就可以进入循环开始等待服务器发送消息了,服务端只要一但进行了需要同步消息的操作就判断该操作是否需要客户端进行更新数据或是只需要跳出提示框,若要更新就向所有最先记录的socket发送一个消息”让他们来服务器更新消息“。今天完成了随机选人和实时显示的功能(还需要维护),使得程序可以对用户的操作进行实时的显示。

2024-05-15 01:44:33 344

空空如也

空空如也

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

TA关注的人

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