摘要: 先贴一些二叉树的基础吧,红黑树和AVL树等这些东西不是凭空产生的,必须从二叉树开始理解和发展: 一、二叉树 不需要太多说明,仅列举一些名词和性质: 度:结点孩子个数 树的高度:根结点到叶结点的简单路径和(的最大值) 结点的深度:结点到根节点的简单路径和 树的度为所有结点度的大值,二叉树的度为2。 树 阅读全文
posted @ 2024-01-24 18:22 realcp1018 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 堆排序是利用最大堆的性质将堆顶元素与数组末尾元素互换,然后重新将剩下的HeapSize-1部分的数组维护为最大堆的过程。 首先我们需要知道什么是堆,以及最大堆和最小堆等。 堆是数组,可以被看做是一颗完全二叉树(即任意两个叶子节点的深度相差不超过1且其排列与满二叉树契合),反过来我们也可以说堆是一个完 阅读全文
posted @ 2024-01-09 14:51 realcp1018 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 归并排序和快排都是时间复杂度为n*logn的排序算法,都较好的的利用了分治思想,因此放在一起描述。 上图是我比较喜欢的一副展示归并和快排的示意图,我们可以通过递归来实现上述两个排序算法。 先来说归并排序: 归并排序的本质就是将要排序的数组一层一层的拆分为直到长度为1的单元素数组然后进行逐层归并。 通 阅读全文
posted @ 2024-01-09 14:40 realcp1018 阅读(43) 评论(0) 推荐(0) 编辑
摘要: 这三种排序之所以放到一起说,是因为他们都比较基础,其最差时间复杂度皆为O(n²),空间复杂度皆为O(1)。 最差时间复杂度为O(n²)并不意味着他们就一定比快排、归并等排序算法差,因为时间复杂度只是一个理论相关值,实际排序的耗时和数组规模、数组的有序程度以及 比较/交换次数 都有关系。 鉴于算法较为 阅读全文
posted @ 2024-01-09 14:25 realcp1018 阅读(8) 评论(0) 推荐(0) 编辑
摘要: # Python抽象类 python没有接口类型,因为python是动态类型的语言,像接口这种轻耦合的东西在python中随处都是,例如内置的魔法方法等,甚至可以说在python这种天马行空的语言中接口显的反而有点清秀。 不过Python还是提供了像java中那样的抽象类定义方法,某些时候还是有用的 阅读全文
posted @ 2023-05-31 11:16 realcp1018 阅读(368) 评论(0) 推荐(0) 编辑
摘要: 使用Golang编程时,一般只有在写最终的main函数时我们才有机会调用某个函数进行测试,在大型项目中如果只负责编写某个非main模块时应当如何测试函数的可用性? Golang提供了Testing模块,这个模块可以让我们随时随地进行函数功能验证。 testing - The Go Programmi 阅读全文
posted @ 2022-11-25 16:43 realcp1018 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 本文参照如下官网链接: gRPC简介:https://grpc.io/docs/what-is-grpc/introduction/ proto语法:https://developers.google.com/protocol-buffers/docs/proto3 如何使用proroc工具和相关插 阅读全文
posted @ 2022-09-14 14:38 realcp1018 阅读(309) 评论(0) 推荐(0) 编辑
摘要: ent快速上手一文中介绍了如何在ent框架内使用ORM思想操作数据库,本文讲述下如何在ent框架下执行裸SQL语句。 ent通过引入sql/execquery的feature flag来支持裸SQL执行,这样可以绕过繁琐的relational mapping部分。 详见:https://entgo. 阅读全文
posted @ 2022-09-01 19:02 realcp1018 阅读(1073) 评论(0) 推荐(0) 编辑
摘要: https://entgo.io/docs/getting-started https://github.com/ent/ent ent是一款facebook开源的go语言ORM框架,类似于gorm等用于实现数据库对象映射和操作的框架。ent的不同之处在于他可以使用图模式来表达对象之间的关系,在需要 阅读全文
posted @ 2022-09-01 17:38 realcp1018 阅读(3759) 评论(0) 推荐(0) 编辑
摘要: https://go.dev/blog/intro-generics 在《Interface简介》一文中,我使用如下代码实现了简单的Contains函数: package main import ( "fmt" ) func main() { var s []interface{} s = appe 阅读全文
posted @ 2022-07-29 15:45 realcp1018 阅读(1492) 评论(0) 推荐(0) 编辑