- 博客(22)
- 收藏
- 关注
原创 03哈希表算法/代码随想录
同理双指针法,先排序,a不能重复,重复得到的值也是一样的,所以去重a不能重复,然后开始遍历b就算a的索引+1,这个时候用到两数之和的思想,先抛开,三数之和,这里就是两数之和,我先得到需要的target,就是-a,然后知道b了,target为-a-b,这个时候构建哈希表,没有就存,有就返回。看到简单题,我就上了啊,可这,是简单吗,苦命的我啊。可以构建两个哈希表,再找值,但这不上繁琐了吗,用到上一题思想,边构建边查,哎,可以再优化,不用构建,直接查,这就形参了上面的写法,写法没有什么难点。
2024-11-03 19:36:16 653
原创 Java-SE-泛型编程-总结/java
泛型是Java提供的一种模板机制,允许我们编写可以处理任意类型的代码。类型安全:泛型通过编译器进行类型检查,避免了强制转换的错误。继承关系:可以向上转型为接口类型,但不能变更类型参数的实际类型。通过使用泛型,我们可以编写更安全、更灵活的代码,而无需为每种类型重复实现类。这是泛型在Java中的核心价值。在Java中,如果使用ArrayList而不指定泛型类型,泛型实际上被视为Object// 强制转型这种情况下,只能把泛型当作Object使用,失去了泛型的优势。
2024-11-01 10:57:52 1004
原创 02链表算法/代码随想录
双指针写法,慢指针每次走一步,快指针每次走两步,如果有环,那么一定会相遇,因为当慢指针到环的时候,快制作一定到了,这个时候相当于快指针追慢指针,每次挪一步,一定会追到。交换节点需要三步,slow指向fast.next,fast指向slow,temp指向temp,这个时候交换好了,但是需要跳转然后继续交换,这里体现了虚拟头节点的好处,跳转后交换,fast要与前一个交换后的slow相连接,这里就可以通过虚拟头节点代替。此题递归需要传递的点就是反转后的头节点,此解法采用先返回反转后头节点再翻转。
2024-10-27 21:46:16 738
原创 设计模式引入/设计模式
可以在访问服务前后添加额外的处理逻辑(如日志、权限检查等)对客户端透明,客户端使用代理就像使用实际服务一样。重构代码时,但不能改动之前代码。是旧的咖啡制作接口,有。将对象的创建与使用分离。实现对象创建的统一接口。方便添加新的对象类型。
2024-10-23 13:38:27 850
原创 C++在vscode中的code runner配置/环境配置
vscode配置C++文件的debug需要单独设置launch.json,因为我设置的是只作用于当前项目所以步骤三的第三步要选择(gdb)lauch,如果大家想设置vscode全局的,在这里选择创建launch.json即可。这里配置只作用与当前项目中,其它项目中是失效的,这样起到了项目与项目之间隔绝,我认为类似于python中的虚拟环境,但还是有些许差别(诸如依赖方面)。记得修改code runner,code runner默认cpp配置在运行文件引用另一个文件会出问题,就比如课上的例子。
2024-10-14 18:59:40 1027
原创 01数组算法/代码随想录
拿与力扣59举例,那题是一个正方形,所以只会出现一种特殊情况就是层数为奇数的时候,需要手动添加垂直水平中间数组中的值,而这里行列是不一样的,所以终止的情况有多种,上下左右都有可能,所以直接在while循环中添加判断是比较复杂的。滑动窗口一层循环则可直接计算,尾指针先移动,满足条件时,尾指针不动,头指针+1,再判断,如果通过,则更新result。这种模拟的方法效率更高,大家在写模拟的时候,可以先将思路列举好,起始条件、终止条件、遍历写法,然后再一步一步优化。上述写法是比较快的,有些地方是较优解的。
2024-10-11 10:26:15 1259
原创 JavaSE-泛型编程-通配符/Java
作用:提供一种灵活的方式来处理未知类型的列表,同时保持类型安全。注意点:读取元素: 你可以从中读取元素,但返回的元素类型为,需要进行类型转换。添加元素: 你不能向添加元素(除了),因为编译器无法确定具体类型。类型安全: 由于编译时类型检查,使用可以避免许多常见的类型错误。用于声明引用的,不能是右值实现:上届通配符定义: 表示该列表可以是类型或的任何子类的列表。用途: 适用于只读取的场景,因为你只能安全地从中读取元素,无法添加元素(除了)。下届通配符定义: 表示该列表可以是类型或的
2024-09-28 22:09:51 931
原创 WSL2/windows
windows专业版可以通过“设置>>系统>>可选功能>>更多windows功能”,勾选。查看这一行,auto就是启动,off就是关闭。与上一条一样,在更多windows功能打开。检查hyper-v是否启动。
2024-09-26 13:05:44 295
原创 makefile和CMakeLists/C++包管理器
大家可能会很奇怪,都什么年代了,还学makefile,cmake都有些过时了,为什么还要再学这个呢?我是这么看待这个问题的,cmake跨平台性还是很有有优势的,有着多年积累的底蕴,借助大模型可以很好的利用这个工具。而cmake的原理就是自动生成makefile,所以还是很值得学习makefile,了解历史的。makefile和CMakeLists。
2024-09-25 16:39:31 1141
原创 maven基础/java包管理器
右边maven中的Profiles(比如不同java版本)是setting.json中配置的,如果配置多个就会有多个,但是一般的Spring项目没有的,因为在生成项目的时候,我们会指定很多参数,并不是单纯的maven项目,是在pom.xml中配置的,当然也可以实现在pom.xml中配置实现不同版本的切换。当一个模块使用了其它两个模块的jar包,每个jar包都有spring-jdbc,但版本不一样,这个时候,maven有自动的调节方案,可以看到child-test3这个模块的jdbc黑了。
2024-09-23 20:23:31 2093
原创 Vercel部署/前端部署
在项目页面,点击"Settings" > “Domains”点击"Add Domain"输入你的域名,按指示添加DNS记录Vercel会自动配置SSL证书。
2024-09-21 15:28:16 810
原创 Git补充/Git
每个开发者的本地仓库都是完整的代码库副本,包括项目的完整历史记录。:每次提交都会创建一个新的快照,记录文件在该提交时的完整状态。指向的最新提交的状态。虽然工作区的内容不会被改变,缓存区的内容会恢复到指定提交的状态。:通过将缓存区恢复到指定提交的快照来撤销暂存区的内容。模式的,可以强制禁用,这样merge的时候会生成一个新的commit。:撤回暂存区的内容,将文件从缓存区(暂存区)移除,但不影响工作区。指针到指定的提交位置,保留更改在暂存区和工作区中,:撤销工作区的修改,将文件恢复到当前分支的最新提交(
2024-09-16 22:12:54 1117
原创 C++智能指针(2)/C++新特性
make函数比起直接调用new操作符,减少了源代码的重复,保证了异常安全,并且std::make_shared和std::allocate_shared还能生成更小更快的代码不能使用make函数的情形:要自定义deleter;希望使用大括号{}来初始化对象自身重载了new和delete操作符的类系统有内存隐患,分配的对象特别大,并且有指向此对象的std::weak_ptr实例存活时间远远长于对象的最后一个std::shared_ptr笔者水平有限,有问题可以和我交流。
2024-09-15 15:30:59 1147
原创 C++智能指针/C++新特性
多个裸指针指向同一块内存地址,即使被delete了,也有可能导致改内存空间不再被使用,从而引发内存泄漏。可以使用共享指针,当该地址的引用计数缩减为0的时候,就会重载该块地址见unique_ptr的deleterreturn;fclose(fp);可以不delete内存,而关闭文件。f为共享指针的别名,可以通过这样的操作使得b指针可以访问f指针的属性,注意b和f都必须是共享指针可以使用lamda表达式、普通函数、任意函数。
2024-09-14 22:04:32 1453
原创 Vue-Router/Vue组件
别名定义别名是使用alias属性,也可以是数组进行路由的跳转id=100&title=test">查询字符串传参</router-link><router-link to="/user/007/name/ha9">路径传参</router-link><router-link :to="{path: '/content', $query:{id:100, title:test}}">动态传参--查询字符串传参</router-link>
2024-09-12 19:23:12 1279
原创 JVM/垃圾回收
分为栈、堆、本地方法栈、程序计数器、方法区栈区:主要用来存储局部变量和对象地址栈区不仅存储局部变量和对象地址,还存储方法调用的上下文信息。堆区:分为很多个区域,可以存储对象的具体数据等Java 虚拟机中内存最大的一块,是被所有线程共享的,几乎所有的对象实例都在这里分配内存;本地方法区:一些C++的native方法用于管理本地方法的调用,里面并没有我们写的代码逻辑,其由native修饰,由 C ++实现。程序计数器:指向程序当前运行的位置。
2024-09-02 22:43:11 575
原创 C++基础/C++中的多态(关于虚...)
当父类指针或引用指向(绑定)子类对象,若虚基类中没有析构函数不是虚函数,那么只会调用父类的析构,不会调用子类的析构函数,可能会造成内存泄漏。我理解的多态是,在编写任何相关代码时,如果声明传入的对象是父类的,可以根据虚函数,传入子类从而调用子类重写的方法,达到极高的代码复用性。对象切片:当你将子类对象赋值给父类对象时,只有父类部分被复制,子类特有的部分被"切掉"了。这样写,就声明了c是Animal类型的,但是Cat构造法方法中多了一个属性,且重写了,会直接截取对象,使得c对象缺少。这个属性和重写后的方法·。
2024-08-28 17:22:45 1453
原创 每日思考/01
在这个快节奏的时代,充斥着大量的碎片化信息,偶尔你可以从这些碎片化信息中获取有益的知识,可你也知道大多数时间你只是消遣。正当你下定决心想要改变这一切,减少碎片化信息的摄入,多做有意于长期发展的事。却会烦恼,你减少了碎片化信息的摄入,你就会丢失那少量的有益信息。”捡了芝麻,丢了西瓜“
2024-08-27 15:31:39 201
原创 tips in windows/ 1.windows文件路径最长限制
通过注册表,修改路径最长限制,但不推荐,因为有一些老软件调用的就是windef.h的接口,里面对最大限制是260,老软件预想文件路径是不会超过260字符,所以没有对路径超过260字符的情况做限制处理,可能会出现bug。Python 的文件操作函数能够识别和使用长路径前缀,使得你可以操作超过 260 个字符的文件路径,而无需修改系统的全局设置。原因:windows删除调用的是explorer,对路径限制不能超过260,此时超过了,但又由于是应用层,所以不会直接给以报错。的接口,对限制更宽。
2024-08-25 12:47:16 570
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人