自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 07| 队列:如何在线程池等有限资源中应用?

队列最大的特点就是先进先出,主要的两个操作是入队和出队。跟栈一样,它既可以用数组来实现,也可以用链表来实现。用数组实现的叫顺序队列,用链表实现的叫链式队列。特别是长得像一个环的循环队列。在数组实现队列的时候,会有数据搬移操作,要想解决数据搬移的问题,我们就需要像环一样的循环队列。循环队列是我们这节的重点。要想写出没有bug的循环队列实现代码,关键要确定好队空和队满的判定条件,具体的代码你要能写出来。

2023-12-11 17:05:40 926 1

原创 04| 链表(上):如何基于链表实现LRU缓存淘汰算法?

链表是一种跟数组“相反”的数据结构,跟数组一样,也是非常基础、非常常用。不过链表要比数组稍微复杂,从普通的单链表衍生出来好几种链表结构,比如双向链表、循环链表、双向循环链表。和数组相比,链表更适合插入、删除操作频繁的场景,查询的时间复杂度较高。不过,在具体软件开发中,要对数组和链表的各种性能进行对比,综合来选择使用两者中的哪一个。

2023-12-08 19:47:48 924

原创 03| 数组:为什么数组要从0开始编号?

数组是一种,利用连续的内存空间,来存储一组相同类型的数据,的线性表数据结构。要想理解一个概念,只要理解它的关键点就好了。连续的内存空间+相同类型的数据简单理解,数组的中数据的数据类型是一致的,比如:int [] a = new int [10];这里申请了一个长度为10的整数类型的数组,如图,系统会为数组 a[10],分配了一块连续内存空间 1000~1039,其中,内存块的首地址为 base_address = 1000。其中a数组只能存储int类型的数据。

2023-12-08 16:16:41 972

原创 23| 红黑树(上):工程中为什么常用红黑树这种二叉树?

红黑树的英文是“Red-Black Tree”,简称R-B Tree。它是一种不严格的平衡二叉查找树,前面解释了,它的定义是不严格符合平衡二叉查找树的定义的。那红黑树究竟是怎么定义的呢?见名知意,红黑树节点要么是红色的,要么是黑色的。根节点是黑色的;每个叶子节点都是黑色的空节点(NIL),也就是说,叶子节点不存储数据;任何相邻的节点都不能同时为红色,也就是说,红色节点是被黑色节点隔开的;每个节点,从该节点到达其可达叶子节点的所有路径,都包含相同数目的黑色节点;

2023-12-08 11:43:43 1013

原创 8 | 递归:如何用三行代码找到“最终推荐人“?

相信大家都见过,推荐用户注册返佣金的程序把?可以简单的概述为,用户A推荐用户B来注册,用户B推荐用户C来注册。那么,用户C的最终推荐人为用户A,用户B的最终推荐人也为用户A,而用户A没有最终推荐人。一般来说,我们会将这层关系存入到数据库中。如图所示:基于此,我们思考一下,如何根据用户ID来获取用户的最终推荐人呢?看下去吧,你会找到答案。

2023-12-05 23:02:12 335 1

原创 02| 复杂度分析(下):最好、最坏、平均、均摊时间复杂度

在硬件越来越发达的今天,人们越来越注重程序的性能,那怎么去评估程序的性能呢?那就要用到上一篇的内容,时空复杂度,如果你感兴趣可以前往合集查看。。本篇博客都有描述哦,相信你都能掌握。

2023-12-05 23:01:54 371 1

原创 01| 复杂度分析(上):如何分析算法的执行效率和资源消耗?

大家好,我是爱好编程的斌斌。总所周知,数据结构解决的是""的问题,即如何让代码更省内存;算法解决的是""的问题,即如何让代码运行得更快。因此,执行效率是算法一个非常重要的考量指标。那么,如何来评估我们编写的代码的时空复杂度呢?如果你想知道,就请把这篇文章看完。通俗易懂,你会找到答案。

2023-12-05 22:08:16 907 1

原创 NoSQL是什么?Redis如何使用?

大家好,我是爱好编程的斌斌。在这个快速发展的互联网时代,用户对程序性能的要求越来越高,缓存的使用场景也变得越来越丰富。作为后端开发的程序员,redis是必备技术栈之一。

2023-12-03 12:29:11 786 1

原创 28| 图的表示:如何存储微信、微博等社交网络中的好友关系?

在这篇文章中,笔者先引入了几个概念:无向图、有向图、带权图、顶点、边、度、入度、出度,在结合日常生活的分析下,相信您已经对它们有了充分的理解。其次,介绍了两种图的存储方式:邻接矩阵和邻接表。然后,对二者的优缺点进行了分析。邻接矩阵存储方法的缺点是比较浪费空间,但是优点是查询效率高,而且方便矩阵运算。邻接表存储方法中每个顶点都对应一个链表,存储与其相连接的其他顶点。尽管邻接表的存储方式比较节省存储空间,但链表不方便查找,所以查询效率没有邻接矩阵存储方式高。

2023-12-02 23:07:29 1130

原创 6| 栈 : 浏览器的前进和后退功能是如何实现的?

栈只能在一端操作数据,是一种受限的数据结构,只有入栈和出栈两种操作。栈既可以用数组实现,也可以基于单链表实现,两种实现的入栈、出栈的时间、空间复杂度都是O(1).**参考资料**- 数据结构与算法之美。

2023-11-30 22:30:50 1085 1

空空如也

空空如也

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

TA关注的人

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