- 博客(21)
- 收藏
- 关注
原创 【高并发内存池】
当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目tcmalloc,tcmalloc全称 Thread-CachingMalloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free)。我们这个项目是把tcmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习tcmalloc的精华,学习tcmlloc的这种框架设计。这种方式有点类似我们之前学习STL容器的方式。
2023-07-08 09:49:27 195
原创 【负载均衡式的在线oj(1.compile_runner_server模块)】
该子模块只负责把浏览器提交上来的代码进行编译。如果编译出错,则形成临时文件,把编译报错写入到临时文件当中。该子模块只负责把compile子模块编译好的代码运行起来,把程序运行输出到标准输出和标准错误的内容重定向到temp路径下的指定文件当中,并获取程序运行结束后的退出信号。子模块主要内存时对compile子模块和runner子模块进行分装,并引入jsoncpp第三方库。当子模块获取到浏览器提交上来的json字符串类型的请求时,子模块就会把提交上来的json字符串喂给子模块进行处理。所以子模块就是分装。
2023-05-08 15:50:01 292
原创 【负载均衡式的在线oj(2.oj_server模块)】
主要完成对用户所请求资源的路由功能,分别为获取所有所有题目、获取单个指定题目和对指定题目运行结果的判题。oj_model子模块主要用来服务器和浏览器进行数据交互,对外提供访问数据的接口。例如浏览器获取所有的oj题目链表和获取指定oj题目的具体内容。oj_view子模块的功能是对数据进行渲染形成html文件。public :LOG(INFO)
2023-05-08 15:49:48 296 1
原创 【C++面向对象三大特性之继承】
继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。
2022-10-09 10:55:17 211 2
原创 【二叉树】C语言实现
二叉树1.树的概念及结构1.1树的概念二级目录三级目录1.树的概念及结构1.1树的概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。二级目录三级目录...
2022-04-22 10:42:24 1703 4
原创 【直接插入排序、希尔排序,直接选择排序】(C语言实现)
直接插入排序、希尔排序,选择排序一.直接插入排序一.直接插入排序图形演示:✈✈✈第一趟排序✈✈✈第二趟排序✈✈✈第三趟排序✈✈✈第四趟排序代码实现://直接插入排序void InserSort(int* a, int size){ for (int i = 0; i < size - 1; ++i) { int end = i; int tmp = a[end + 1]; while (end >= 0) { if (a[en
2022-04-12 10:45:47 394 1
原创 【快速排序】(C语言实现)
快速排序一. 递归实现1. 快排是什么?2.实现快排的三种方式a.挖坑法b.左右指针法c.前后指针法二.非递归实现一. 递归实现1. 快排是什么?快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过该分界值将数组分成左右两部分。(2)将大于或等于分界值的数据集中到数组右边,小于分界值的数据集中到数组的左边。此时,左边部分中各元素都小于分界值,而右边部分中各元素都大于或等于分界值。(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,又可以取一个分界
2022-04-08 18:11:23 10312 9
原创 【堆排序算法】(C语言实现)
八大排序一.堆排序1.堆的概念及性质2.向下调整和向上调整两大算法二级目录三级目录一.堆排序1.堆的概念及性质1.1堆的概念a. 堆是一种基本的数据结构。在这里我用数组来形容,在一个二叉堆的数组中,每一个元素(根)都要保证大于等于或小于等于另外两个特定位置的元素(左右子树)。同时相应的,这些元素(根)又要大于等于或小于等于另外两个相应位置的元素(左右子树),整个数据结构以此类推。如果我们将整个数据结构画成树状结构,就能够清晰地看出整个结构的样子。1.2堆的性质a. 堆的逻辑结构一定是完全二叉树
2022-04-04 23:17:57 5630 5
原创 【环形链表】
1.输入两个链表,找出它们的第一个公共结点。OJ链接给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 nulllt图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持其原始结构 。思路一A链表中的每个节点跟B链表中的节点依次进行比较,如果有相等,就是相交,第一个相等的节点就是交点。时间复杂度为O(m*n)struct ListNode *getInter
2022-03-20 14:45:55 1232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人