- 博客(26)
- 收藏
- 关注
原创 Boost搜索引擎
BoostSearchEngine文章目录BoostSearchEngine项目目的:项目分析:技术栈需求和第三方库的使用:实现原理项目实现数据清洗获取title获取description获取URL建立索引正排索引:倒排索引编写搜索模块Searcher编写HTTP_Server模块前端模块END项目目的:Boost库以前是并没有搜索引擎的,查阅文档相当之麻烦,从那时起,我就有一个想法,能不能给想办法查阅Boost变得方便一些,搜索引擎无疑是最方便的.后来偶然机会,我发现从Boost下载的版本文档和Bo
2024-08-18 17:54:10 584
原创 高并发内存池项目
当前项目是实现一个高并发的内存池,他的原型是google的一个开源项目TCmalloc,TCmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了高效的多线程内存管理,用于替代系统的内存分配相关的函数(malloc、free).我们这个项目是把TCmalloc最核心的框架简化后拿出来,模拟实现出一个自己的高并发内存池,目的就是学习TCamlloc的精华,不是为了造出来一个更好的轮子.
2024-08-18 17:48:32 801
原创 Linux进程控制 Part 1
那是因为每个进程都有相同范围的地址空间,地址空间和实际物理空间地址还有一层页表的转化,地址空间指向一个页表,页表指向实际物理空间,当创建子进程时候,父子进程的地址空间是一致的,当子进程需要对程序数据进行修改或者操作的时候,子进程的页表会自动指向一块新的空间,来存放或者修改变量值。进程的退出状态必须被维持下去,因为他要告诉关心它的进程(父进程),你交给我的任务,我办的怎么样了。3、还可以把进程运行到指定的CPU上,这样一来,把不重要的进程安排到某个CPU,可以大大改善系统整体性能。
2024-04-05 10:43:22 742
原创 C++内存管理
C++里的new和delete是运算符重载的,他们的本质是调用operator new和operator delete函数。operator new函数最终是调用的malloc来开辟的内存,其实C++就是在C语言功能上进行的完善和修改进一步封装。答案是不可以,因为delete会进行析构,而malloc时候都不会调用构造函数来初始化,谈何析构而言呢?对单个对象的申请都大同小异,但是对于连续空间比如数组的申请就是我们这次重点要讨论的了。1、 既然C++是兼容C的那么malloc和delete可以混合使用嘛?
2024-02-26 14:11:14 1558
原创 C++面向对象 Part 1
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的定义方式有两种声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能会将其当成内联函数处理。一般情况下,还是更推荐使用第二种方式,更符合规范些。
2024-02-01 19:26:59 814 1
原创 C++函数新特性
void func(int a = 10) {//全缺省func();这种写法是C++相比于C语言特有的写法,在C语言里函数的形参和实参必须要一一对应,才可以正确编译通过。但是我们的C++祖师爷认为这是不合理的,所以在C++里对函数做了缺省参数的修改。//错误示例!!!return 0;
2024-01-27 13:37:50 853 1
原创 初识Linux
预备知识:绝对路径和相对路径:不论在Windows还是Linux下,所有文件都有唯一的绝对路径。什么是绝对路径呢?先拿Windows路径下的一个文件进行举例:比如我在G盘目录下电影文件夹下存放了了部动漫,那么G:\电影 这个就是绝对路径从盘符开始一步一步到文件位置就是绝对路径再拿Linux下进行举例:我们在root文件夹在有个blog目录,那么他的绝对路径可以表示为 /root/blog/。相对路径就是通过某个文件夹或者文件的位置来相对表示某个文件的位置的。比如我们使用相对路径来退
2023-11-24 14:55:59 1826 1
原创 顺序结构-链表的实现
一:如果要从末尾插入一个数据其两种方式的时间复杂度顺序表 O(1)链表 O(N)二:删除数据中的某一项,空位后边元素自动往前移动顺序表 O(N)链表 O(1)由此可见,顺序表的随机存储的特性使其访问速度和查找速度高于链表,但是在扩容和移动上不如链表灵活,扩容存在时间浪费,并且空间也存在一定浪费。链表其特性使其不会浪费空间,且插入和删除非常方便,但是使用时候就需要遍历,效率不高。
2023-11-21 21:33:06 36
原创 数据结构-线性结构
首先要解决的问题就是如何能让空间大小不会被定死呢?这里我给同学们介绍几个函数和几个概念一、malloc函数和堆的概念首先介绍堆的概念:堆就是在内存上开辟的一段空间,一般由使用者自行开辟,使用完后要手动释放,不然会造成内存泄漏的问题!!!代码原型可以看到,函数返回值类型是void* 类型的指针,参数是需要开辟的空间大小将函数返回值强制转换为你需要求的类型。二、现在需要让大家明白各种变量都在内存中的存放位置局部变量,常量,全局变量,静态变量静态变量和全局变量放在静态区。
2023-11-15 21:10:58 46
原创 函数栈帧的创建与销毁
为什么函数传参(值传递)无法改变变量值?下面将是为什么这个函数无法实现mian函数里的变量交换的重点!在解决这个问题之前先引入一个堆栈的概念,堆和栈是内存里的一段特殊区域,这个问题只是涉及到栈的方面,故这里只介绍栈的存放和栈顶指针栈底指针。在程序调试开始的时候刚进入主函数这些就会自动完成供主函数使用的栈空间创建和初始化。我们接着往下走------->显然这个swap函数无法交换main函数里的a,b的值。栈是一种数据结构,它的存储方式是先进后出,后进先出,栈顶指针永远指向栈顶,栈底指针永远指向栈底。
2023-09-16 20:47:50 38 1
原创 学习日记 1
因为其数据是有序的,将要查找的数据跟中间值mid作比较。如果比mid小则将商标改为mid-1,若比mid大则将下标改为mid+1。查找到需要找的数据打印输出并将flag置1,跳出循环。= EOF)代码意思就是当scanf的返回值不是-1就执行循环。scanf的返回值是根据匹配到几个数据返回几,若匹配不到就返回-1。(scanf函数是遇到空格停止输入~)。示例:输入一组数代表智力。写代码过程中发现在输入密码按下回车后即便再输入Y也是保存失败。如果我们知道数组的商标和下标即可求得数组的中间的元素。
2023-09-01 10:48:45 31
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人