- 博客(240)
- 收藏
- 关注
原创 【高阶数据结构】跳表
skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。那么相比而言它的优势是什么呢?这么等我们学习完它的细节实现,我们再来对比。skiplist是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: Askiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。如果是一个有序的链表,查找数据的时间复杂度是O(N)。
2024-09-11 10:07:06 1066 86
原创 【高阶数据结构】B树、B+树、B*树
内查找适合用于数据量相对不是很大,能够一次性存放在内存中,进行数据查找的场景。如果数据量很大,比如有100G数据,无法一次放进内存中,那就只能放在磁盘上了,如果放在磁盘上,有需要搜索某些数据,那么如何处理呢?那么我们可以考虑将存放关键字及其映射的数据的地址放到一个内存中的搜索树的节点中,找数据时比较关键字,找到关键字也就找到这个数据在磁盘的地址,然后去这个地址去磁盘访问数据。
2024-09-02 10:42:25 1531 94
原创 【高阶数据结构】图
图是由顶点集合及顶点间的关系组成的一种数据结构。关于图的一些基本概念我们要清楚。图的创建有两种方法,一种是邻接矩阵,一种是邻接表。我们都有实现。图的遍历有BFS,DFS。构造最小生成树的方法:Kruskal算法和Prim算法。这两个算法都采用了逐步求解的贪心策略。Kruskal算法是在全局找最优解,Prim算法局部找最优解。最短路径分为单源最短路径和多源最短路径,单源最短路径有Dijkstra算法和Bellman-Ford算法,多源最短路径有FloydWarShall算法,我们都有实现。
2024-08-19 10:05:39 1556 138
原创 【高阶数据结构】LRU Cache
LRU是Least Recently Used的缩写,意思是**最近最少使用**,它是一种Cache替换算法。
2024-08-17 10:05:14 823 113
原创 【高阶数据结构】并查集
并查集实际是一个森林,森林是由多棵互不相交的树组成的。那什么数据结构能把多颗树存下来呢?下面随着我们的学习就知道了。
2024-07-30 09:25:05 1671 98
原创 【C++】STL之空间配置器
空间配置器,顾名思义就是为各个容器高效的管理空间(空间的申请与回收)的,在默默地工作。虽然在常规使用STL时,可能用不到它,但站在学习研究的角度,学习它的实现原理对我们有很大的帮助。
2024-07-18 09:17:17 2061 122
原创 【基础算法总结】哈希表
哈希表是什么?存储数据的容器有啥用?“快速” 查找某个元素。时间复杂度O(1)什么时候用哈希表?频繁的查找某一个数的时候。频繁查找某一个数的时候,我们还要想到一个二分查找也可以快速查找某一个元素,但是二分因为有些局限,具有二段性才可以用二分,它也比较快,时间复杂度O(logn)。而且能用二分我们尽量用二分,因为哈希表虽然非常快,但是它空间复杂度是O(n)。怎么用哈希表?容器(哈希表)用数组模拟简易哈希表关注字符串中的 “字符”
2024-07-15 11:23:08 2490 140
原创 【基础算法总结】链表
常用技巧1.画图!!!-> 直观 + 形象 + 便于我们理解2.引入虚拟 “头” 节点便于处理边界情况方便我们对链表操作3.不要吝啬空间,大胆去定义变量比如都会遇到到这种题,前两句必须放前面,不然链表就断开了。但是我们可以定义一个next,这样就不用管按什么顺序了。4.快慢指针判环,找链表中环的入口,找链表中倒数第 n 个节点,都是用快慢指针解决的。链表中的常用操作1.创建一个新节点 new2.尾插3.头插。
2024-07-12 09:38:38 1689 124
原创 【MySQL】MySQL连接池原理与简易网站数据流动是如何进行
实际上在开发的时候把表结构各方面设计好了,接下来要做的不是写各种各样的sql,在做开发的时候,是先要连接数据库的。而我们会发现连接数据库的时候每一次连的都是先创建数据库对象然后connet用完之后要把释放把连接关掉,这种执行一条sql这种就把连接关了这是一种短连接,并且挺浪费的。所以mysql在网站和数据库之间,除了一些缓存方面的技术,还有一个在编码层面上的技术叫做 连接池。
2024-07-08 15:01:31 3130 104
原创 【MySQL】mysql访问
从开始到选择我们用的都是命令行式的mysql访问mysqld,向mysqld下达我们的指令,其实在数据库层面上,连接数据库的客户端除了现在命令行式的客户端,还有图形化界面、网页版的,当然也包括语言级别的库或者包帮我们去访问数据库。
2024-07-02 18:27:30 2127 114
原创 【MySQL】用户管理
我们推荐使用普通用户对数据的访问。而root作为管理员可以对普通用户对应的权限进行设置和管理。如给张三和李四这样的普通用户权限设定后。就只能操作给你权限的库了。
2024-06-29 09:43:42 1970 78
原创 【MySQL】视图
视图是一个虚拟表,它可以把查询出来的结果暂时以表结构的方式保存起来,其内容由查询定义。视图同真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。
2024-06-25 09:48:40 1683 106
原创 【递归、搜索与回溯】floodfill算法一
floodfill算法又叫洪水灌溉或者洪水淹没啥的,这个算法比如有一个区域,负数表示低谷,0表示平原,正数表示山峰。此时发大水把这些区域淹了。其中平原和山峰可能不会改变,但是低谷水位就要上升。这种类型题目就是,我们要在这个区域中找出水位会上升的区域或者说找到会被洪水淹的区域。其实这道题说白了就是把性质相同的一个连通块找出来。比如这里就是把所有是负数的连通块找到,注意只能上下左右相连,斜着不能连!floodfill算法解决的问题就这么简单,它解决方法也非常简单,可以用深度优先遍历和宽度优先遍历。
2024-06-23 09:21:41 1482 112
原创 【MySQL】事务二
数据库并发的场景有三种:读-读 :不存在任何问题,也不需要并发控制,因为没有人去修改。读-写 :有线程安全问题,可能会造成事务隔离性问题,可能遇到脏读,幻读,不可重复读。写-写 :数据库只会被人写,事务都是写事务,一定通过加锁来保证数据安全。否则有线程安全问题,事务不是有回滚吗,有可能一个事务在更新另一个事务回滚了彼此交叉运行,可能会存在更新丢失问题,比如第一类更新丢失,第二类更新丢失(后面补充)。
2024-06-20 09:06:43 2328 98
原创 【MySQL】事务一
mysql存的是数据注定会被多个客户端同时访问,mysql内部是采用多线程方式来实现存储相关工作的,注定会有对数据并发访问的场景,为了更好解决这类事情,关系型数据库为我们提供了事务。
2024-06-15 11:23:35 1920 106
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人