- 博客(77)
- 收藏
- 关注
原创 贪吃蛇身匀速运动模型
当然,这是一个通用的运动模型,即在物体运动的动作空间为连续(360度随便走)时和离散时(如本项目:上右下左)都适用。我们可以想到,当我们的贪吃蛇向右走时,其实只有。这段代码就是如果当前为移动状态,每一帧刷新时直接根据获取的direction添加固定方向的偏移量。的方向移动,这样我们移动的所有点都在直角三角形的斜边上,这是一个正确的移动模式。那么作为一般的运动模型,该如何确定我们进行移动的方向呢?有了这个想法,我们就可以实现一个仅适用本项目的离散版本的。,在一帧当中,我们也知道能走的距离为。
2025-03-07 21:33:18
757
原创 Airsim 虚幻引擎 完整配置
AirSim 是一款基于游戏引擎的开源跨平台仿真器,它可以用于无人机、无人车等机器人的物理和视觉仿真。它同时支持基于 PX4 和 ArduPilot 等飞行控制器的软件在环仿真,目前还支持基于PX4的硬件在环仿真。AirSimUnreal Engine,简称UE,中文译名为虚幻引擎,是目前知名的游戏引擎之一,是一套完整的开发工具,目前已经被广泛应用于游戏开发、建筑设计与渲染、汽车展示、广播与实况活动、影视渲染、训练与模拟等各个领域中。虚幻引擎。
2025-01-17 15:24:46
1485
转载 动态代理大揭秘,带你彻底弄清楚动态代理!
代理模式是一种设计模式,能够使得在不修改源目标的前提下,额外扩展源目标的功能。即通过访问源目标的代理类,再由代理类去访问源目标。这样一来,要扩展功能,就无需修改源目标的代码了。只需要在代理类上增加就可以了。其实代理模式的核心思想就是这么简单,在java中,代理又分静态代理和动态代理2种,其中动态代理根据不同实现又区分基于接口的的动态代理和基于子类的动态代理。
2024-10-14 15:01:27
104
原创 LeetCode 94. 二叉树的中序遍历
先访问左子树的左子树,再访问左子树的根结点,最后再访问左子树的右子树。如何访问左子树的左子树呢?很简单,先访问左子树的左子树的左子树,再访问左子树的左子树的根结点,最后再访问左子树的左子树的右子树。grq:对于迭代代码,可以考虑一个局部情况,当root指向了最左下角的结点时,将其入栈,之后指向其左儿子(null),此时为空,那么将刚刚的左下角结点出栈,添加答案,之后指向右儿子(null),依然为空。grq:我们需要牢记的是每个被加入到栈中的都是根结点,最下层的叶子结点也是根结点(没有孩子结点的根结点)。
2024-09-14 10:54:33
602
1
原创 LeetCode 16. 最接近的三数之和
这道题和上一道思想类似,都是固定一个最左侧指针,然后使用双指针进行一个遍历。不同的是本题不需要去重,即找到一个最接近的解即可。初始化起始解的思想比较好,可以借鉴。
2024-09-14 10:53:09
661
原创 LeetCode 15. 三数之和
遍历到两个重复的值时,在第一次出现时已经将所有的情况枚举过了,第二次出现时就要将之前的情况pass掉。这道题使用伪三指针,实际上就是双指针想法,有一个指针动的比较少一些。因为要找的是值,而不是下标,所以要进行去重。另外,答案中要求不能用重复的元素,比如当。还有点疑惑,假设之前存在了一组解,下标为。,其中j接近k但远离i,那么当。时依然能够保证这组解被找到。
2024-09-13 09:58:56
666
1
原创 LeetCode 11. 盛最多水的容器
假设最优解的两个值为图中的两条竖线,我们的指针从左右两侧向中间移动,假设现在左边的指针先移动到了最优解的前面的竖线,现在要证明:如果左边指针先到达最优解的边界了的话,右边每次指向竖线的高度都严格小于左边指向的竖线。由此得到的结论是,假设左边先找到了最优解,那么右边的高度必然是严格小于左边界的。木桶原则是说一个水桶无论有多高,它盛水的高度取决于其中最低的那块木板。整个题目可以理解为:最好要早相遇,否则在晚相遇的基础上,每次都要找最好的。本题使用双指针的做法, 指针移动过程中会天然地造成木桶的“底”不断变小。
2024-09-13 09:57:49
1529
1
原创 LeetCode 3. 无重复字符的最长子串
当右框框进来了重复值时,左框就要右移,保证框内无重复字符。当每个字符都能求解到以其为右框的不重复子串时,遍历整个字符串就能求到整个字符串的最长不重复子串。,我们的目标是找一个对于j最长的i,使得在该区间内不包含重复字符。之后用哈希表来存储区间中每个字符出现的次数,当一个新的j’出现的次数大于2时,那么重复的一定是。之间是不包含重复字符的,这样就会有矛盾,由不包含重复字符的空间。这个字符了,就要从i开始在哈希表中递减,直到减到之前出现的。,此时i’是重复的,因此是矛盾的。往后移动了,那么对应的。
2024-09-12 16:31:59
894
原创 LeetCode 1. 两数之和
双指针算法思想很简单,但是在实现上会有一些问题,当我们对原数组进行排序后(双指针要求有序),找到答案后返回的是下标也是随着并不是原序列的下标。这就需要将值和下标成对存储,并且按照值进行排序。,那么当前遍历到的数即为b,通过查看从头到当前b的这段范围内是否有a,来看能不能找到两个数的和。有人相爱,有人夜里开车看海,有人leetcode第一题都做不出来。这道题主要有三种方法:暴力循环、字典映射、双指针。枚举整型数组中的每一个数,第二层循环。时输出下标即可,此时注意输出的是。有两个循环,因此时间复杂度是。
2024-09-12 16:30:48
665
原创 LeetCode 25. K 个一组翻转链表
与两两交换是对应的题目。依然是从dummy结点开始,首先要判断之后是否还有K个结点。如果不足,结束翻转。这里要分为三个部分进行处理,包含:K个结点的翻转、左边指向改变、右边被指向改变。K个结点的翻转:相当于是改K-1根线,因此循环K-1次。最终改完a会踩在翻转前第K个结点的位置,b就是下一组了。左边指向改变:原来是指向下一个结点的指针,要改为指向下一个K部分(此时该结点为本部分的尾端)。右边被指向改变:原来是被上一个结点指向,要改为被上一个K部分指向(此时该结点为本部分的头部)。
2024-09-10 15:24:22
680
原创 LeetCode 206. 反转链表
之后一步一步地将tail结点向前返回,但在返回的过程中不利用,只是传递最终答案。绿线的操作就是当head为正数第一个结点时的调用情况。grq:递归的做法记得要将当前调用的head的指向置null,否则会出现链表中出现环的情况。递归代码的一个首要任务是找到整个链表的尾结点(反转后的头结点)。迭代代码与之前的K个一组翻转链表相同。
2024-09-10 15:23:20
760
原创 Spring事务失效的原因
例如,在秒杀业务中,我们不仅要考虑多线程并发执行时对库存的考虑,还要考虑每个用户的请求是否由一个线程发出,当一个用户的请求由多个线程发出时,可能是脚本代刷的情况,这同样会导致业务出现异常。是一个非常重要的事情,因为如果锁的粒度太大,会导致每个线程进来都会锁住,所以我们需要去控制锁的粒度。比如在秒杀场景中,我们希望同一个用户的请求被串行化(一个用户不能同时发起多个秒杀请求),但允许不同用户同时进行秒杀。但是以上的方法仍有问题,因为我们调用的方法其实是this调用的,事务要想生效需要使用代理。
2024-09-10 15:12:51
918
原创 LeetCode 61. 旋转链表
首先要获得整个链表也是后k个结点的尾结点。由于整个是n个结点,除掉后k个结点后还有n-k个结点,要修改指针首先要跳到倒数第k+1个结点(正数第n-k个结点),从第一个结点跳n-k-1次就可以到达。将每个结点向右移动k个位置,实际上就是将后k个结点连接到头部。这道题目是不需要dummy结点的。grq:关于链表结点的修改顺序:改前先用,用后就改。
2024-09-10 12:47:44
507
原创 阿里云OSS文件上传不配置环境变量使用显式AccessKey验证
中介绍文件上传时,推荐配置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。这里用简单的方法,直接在Demo.java中显式指定。首先去创建AccessKey。记住AccessKey ID和AccessKey Secret。之后修改你本地的目标位置和bucketname即可成功运行。
2024-07-06 16:49:08
1030
原创 AcWing 727. 菱形——像拼图一样做题
这道题有需要不同的画法,上面只是笔者自己的理解,关于其他更优雅更简洁的方法请大家开动脑筋去尽情尝试吧!基于此我们可以先将这两条对角线画出来,是不是就成功了一半了呢?有了这两条相交的对角线,我们只需要处理左上角需要描的点即可,然后利用相交的对角线通过关于。另外我们可以知道正方形有两条相交的对角线,它将正方形分成了四个相等的部分。通过观察,可以看出不管给出的整数是多少,最终形成的图形一定是一由空格。轴,进行关于y轴的对称实现映射效果。轴的对称,映射到左下角/右下角。我们将采取拆解问题,通过四个部分的组合最终。
2024-03-19 19:13:58
942
原创 重新配置vue项目时出现的:连接已断开问题
在新机器上配置完node.js、vue-cli,配置了node_modules后,命令行运行。,但是没有效果,根据报错信息,原因是缺少locales文件夹。尝试在环境变量里添加C:\Windows\System32。,在该路径下创建文件夹,将其明明为locales即可。
2024-02-02 23:12:36
1802
原创 CMU15445 fall 2022/spring 2023 项目环境搭建+选择合适的版本
CMU15445是一门关于数据库管理系统(DBMS)的设计和实现的优秀课程。由数据库领域大佬Andy主讲,同时还有迟策大佬所设计和维护的BusTub,其名声在外之处更是有着极高质量的作业(HOMEWORKS)和项目(PROJECTS)。
2023-09-01 16:40:33
7507
2
原创 fatal: unable to access ‘https://github.com/xx‘: Could not resolve host: github.com解决方案——配置DNS服务器
但是,这些DNS服务器可能运行缓慢或未定期更新,这可能会导致在查询域名时解析为错误的IP地址。很遗憾的是,HTTPS的方式我还没有解决,这个以后如果解决了会再进行补充,如果大家有更好的方案,欢迎与我交流。在我机器中【1】处的信息为:eno1,【2】处的信息为inet后的地址xxx.xxx.xxx.xxx/24。可以复制上面的内容到你的文件中,只需修改两处内容,这两处内容该如何获取呢?我的服务器原始DNS设置如下,使用的是默认DNS服务器。各个安装程序的文件名可能不同。,但在你的系统中,可能会有所不同。
2023-09-01 09:27:01
6630
原创 ssh-scp 基本用法与免密登录
举例:本地当前目录下有test.txt文件,服务器已经配置好了别名为:student1,将本地test.txt上传到服务器的tom用户下,又tom已经配置好了student1别名。里的登录方式,用户名和IP\域名,这样一大长串不太方便。因此,我们来配置服务器别名,假设就叫student1。举个例子,假设我们的user是tom,hostname是123.45.67.890。现在有了别名登录方便多了,可每次登录都要输入密码还是不太好,接下来配置免密登录。之后再想登录该服务器的tom用户时,可以直接输入。
2023-08-31 10:26:12
1309
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人