- 博客(266)
- 收藏
- 关注
原创 【Boost搜索引擎】上
目前我们熟知的搜索引擎有:百度,360,搜狗等,它们所作的都是全网搜索 。而我们接下来做的是站内搜索,搜索数据更垂直,数据量其实更小。以前Boost库是没有搜索的,不过现在是有了,但没关系,重要的是虽然我们做的是Boost搜索引擎,但如果掌握了,可以改成任何一个搜索引擎。
2025-03-27 10:37:13
1399
110
原创 【高并发内存池】细节处理 + 性能优化 + 总结
STL容器是线程不安全的,多线程在并发用unordered_map的时候会有线程不安全的问题,在PageCache中对unordered_map写之前我们加锁了,但是在读unordered_map我们并没有加锁。这样我们就知道通过释放内存块的地址,转变成页号,在找到对应的Span,拿到_objsize就知道这个内存块大小了。写是在PageCache是加过锁的,读的时候就是在释放的时候去读,在读这个Span的时候,这个Span早在拿它的时候就写过了。,所有就减少了读写并发的问题,也就少了很多加锁解锁。
2025-03-13 11:04:17
1263
129
原创 【高并发内存池】项目介绍 + 定长内存池 + 整体框架设计
当前项目是实现一个高并发的内存池,他的原型是google的⼀个开源项目tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。我们这个项目是把tcmalloc最核新的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcamlloc的精华。所谓“池化技术”,就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。
2025-03-01 10:27:58
1366
197
原创 2024年博客之星主题创作|2024年度感想与新技术Redis学习
2024学习了很多计算机知识,有C、数据结构、C++、Linux系统编程和网络编程、数据库、高阶数据结构、算法,虽然也学习到了很多让自己从计算机小白到掌握一点计算机知识,但是对于一个程序猿来说是远远不够的,我们应该不断学习新的前沿知识不至于让新型技术把自己淘汰,2025新的一年开始,就从Redis开始继续在优快云记录自己学习到的知识。
2025-01-22 12:13:39
1747
155
原创 【MySQL】复合查询+表的内外连接
前面我们讲解的mysql表的查询都是对一张表进行查询,在实际开发中这远远不够,未来可能还有多表查询,子查询。
2025-01-17 23:52:59
3082
82
原创 【Git原理与使用】Git初识&&基本操作
为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,通俗的讲就是一个记录每次修改和版本迭代的一个管理系统,同时也方便多人协同作业。目前最主流的版本控制器就是 Git 。Git 可以控制电脑上所有格式的文件,例如 doc、excel、dwg、dgn、rvt等等。对于我们开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件!
2024-09-30 10:41:15
3129
89
原创 【高阶数据结构】跳表
skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。那么相比而言它的优势是什么呢?这么等我们学习完它的细节实现,我们再来对比。skiplist是由William Pugh发明的,最早出现于他在1990年发表的论文《Skip Lists: Askiplist,顾名思义,首先它是一个list。实际上,它是在有序链表的基础上发展起来的。如果是一个有序的链表,查找数据的时间复杂度是O(N)。
2024-09-11 10:07:06
1595
94
原创 【高阶数据结构】B树、B+树、B*树
内查找适合用于数据量相对不是很大,能够一次性存放在内存中,进行数据查找的场景。如果数据量很大,比如有100G数据,无法一次放进内存中,那就只能放在磁盘上了,如果放在磁盘上,有需要搜索某些数据,那么如何处理呢?那么我们可以考虑将存放关键字及其映射的数据的地址放到一个内存中的搜索树的节点中,找数据时比较关键字,找到关键字也就找到这个数据在磁盘的地址,然后去这个地址去磁盘访问数据。
2024-09-02 10:42:25
3380
101
原创 【高阶数据结构】图
图是由顶点集合及顶点间的关系组成的一种数据结构。关于图的一些基本概念我们要清楚。图的创建有两种方法,一种是邻接矩阵,一种是邻接表。我们都有实现。图的遍历有BFS,DFS。构造最小生成树的方法:Kruskal算法和Prim算法。这两个算法都采用了逐步求解的贪心策略。Kruskal算法是在全局找最优解,Prim算法局部找最优解。最短路径分为单源最短路径和多源最短路径,单源最短路径有Dijkstra算法和Bellman-Ford算法,多源最短路径有FloydWarShall算法,我们都有实现。
2024-08-19 10:05:39
1988
147
原创 【高阶数据结构】LRU Cache
LRU是Least Recently Used的缩写,意思是**最近最少使用**,它是一种Cache替换算法。
2024-08-17 10:05:14
952
120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人