- 博客(33)
- 收藏
- 关注
原创 11.stack和queue
/ 也可以直接:while(q1.size()>1) {q2.push(q1.front());bool operator() (const T& x, const T& y) const //重载的为()bool operator() (const T& x, const T& y) const //重载的为()cout << "压入3个元素后,栈大小:" << s.size() << endl;cout << "弹出1个元素后,栈大小:" << s.size() << endl;
2026-03-28 18:19:21
362
原创 算法专题二:滑动窗口
窗口:数组 / 字符串中一个连续的子区间(用两个指针left和right界定);滑动:通过移动left或right指针,改变窗口的大小和位置;核心思想:避免重复计算子区间的元素,只对窗口「新增 / 移除」的部分做操作。
2026-03-24 17:38:30
365
原创 10.list
cout << "修改后第一个元素: " << l.front() << endl;cout << "修改后最后一个元素: " << l.back() << endl;cout << "最后一个元素: " << l.back() << endl;cout << "添加元素后元素个数: " << l.size() << endl;cout << "删除后元素个数: " << l.size() << endl;cout << "清空后元素个数: " << l.size() << endl;
2026-03-21 18:00:03
526
原创 9. vector
/ 输出 10(容量已扩容)cout << "empty(): " << boolalpha << vec.empty() << endl;// 输出 true(空)
2026-03-20 15:08:17
350
原创 项目:C++高并发内存池
一.项⽬介绍一.项⽬介绍1.这个项⽬做的是什么?当前项⽬是实现⼀个⾼并发的内存池,他的原型是google的⼀个开源项⽬tcmalloc,tcmalloc全称Thread-Caching Malloc,即线程缓存的malloc,实现了⾼效的多线程内存管理,⽤于替代系统的内存分配相关的函数(malloc、free)。这个项⽬是把tcmalloc最核⼼的框架简化后拿出来,模拟实现出⼀个⾃⼰的⾼并发内存池,⽬的就是学习tcamlloc的精华,这种⽅式有点类似我们之前学习STL容器的⽅式。
2026-03-19 21:07:05
347
原创 8.string类
cout << "operator<< 输出示例:" << s1 << " world" << endl;// 输出 "Hello!
2026-03-17 14:55:55
348
原创 10.线程同步与互斥
但对于⻓时间的任务,⽐如⼀个Telnet连接请求,线程池的优点就不明显了。⽣产者和消费者彼此之间不直接通讯,⽽通过阻塞队列来进⾏通讯,所以⽣产者⽣产完数据之后不⽤等待消费者处理,直接扔给阻塞队列,消费者不找⽣产者要数据,⽽是直接从阻塞队列⾥取,阻塞队列就相当于⼀个缓冲区,平衡了⽣产者和消费者的处理能⼒。-条件等待是线程间同步的⼀种⼿段,如果只有⼀个线程,条件不满⾜,⼀直等下去都不会满⾜,所以必须要有⼀个线程通过某些操作,改变共享变量,使原先不满⾜的条件变得满⾜,并且友好的通知等待在条件变量上的线程。
2026-03-11 19:48:04
364
原创 7. STL简介
在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。STL 是 C++ 标准的一部分,只要符合 C++ 标准的编译器(如 MSVC、GCC),都能无缝运行 STL 代码,无需针对不同平台适配底层数据结构。)和算法(如排序、查找、遍历),你无需手动实现数组扩容、链表节点管理、哈希表冲突处理等底层逻辑。采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异。
2026-02-28 13:45:31
539
原创 9.线程概念与控制
得到的线程ID,有⼀个线程ID和进程ID相同,这个线程就是主线程,主线程的栈在虚拟地址空间的栈上,⽽其他线程的栈在是在共享区(堆栈之间),因为pthread系列函数都是pthread库提供给我们的。如果计算密集型线程的数量⽐可⽤的处理器多,那么可能会有较⼤的性能损失,这⾥的性能损失指的是增加了额外的同步和调度开销,⽽可⽤的资源不变。编写多线程需要更全⾯更深⼊的考虑,在⼀个多线程程序⾥,因时间分配上的细微偏差或者因共享了不该共享的变量⽽造成不良影响的可能性是很⼤的,换句话说线程之间是缺乏保护的。
2026-02-28 12:34:53
613
原创 6.模板初阶
该语句不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型。重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。注意:在模板中,编译器一般不会进行类型转换操作,因为一旦转化出问题,编译器就需要。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。,那将会节省许多头发。模板函数可以生成更加匹配的版本,编译器根据实参生成更加匹配的。与非函数模板类型完全匹配,不需要函数模板实例化。与非模板函数匹配,编译器不需要特化。
2026-02-25 11:43:38
472
原创 8. Linux进程信号
1.信号快速认识1-1 ⽣活⻆度的信号1-2 技术应⽤⻆度的信号1-2-1 ⼀个样例1-2-2 ⼀个系统函数1-3 信号概念1-3-1 查看信号1-3-2 信号处理2. 产⽣信号2-1 通过终端按键产⽣信号2-1-1 基本操作2-1-2 理解OS如何得知键盘有数据2-1-3 初步理解信号起源2-2 调⽤系统命令向进程发信号2-3 使⽤函数产⽣信号2-3-1 kill2-3-2 raise2-3-3 abort2-4 由软件条件产⽣信号2-4-1 基本alarm验证-体会IO效率问题2-4-2 设置重复闹钟2
2026-02-23 20:23:46
616
原创 5.C/C++内存管理
因为内存池分配出的内存没有初始化,所以如果是自定义类型的对象,需要使用new。申请空间失败,尝试执行空 间不足应对措施,如果改应对措施用户设置了,则继续申请,否。1. 在空间上执行析构函数,完成对象中资源的清理工作。的共同点是:都是从堆上申请空间,并且需要用户手动释放。2. 在申请的空间上执行构造函数,完成对象的构造。对象相同大小的一段空间,还不能算是一个对象,因为构造函数没有执行。new在申请空间后会调用构造函数完成对象的初始化,delete。只需在其后跟上空间的类型即可,如果是多个对象,[]
2026-02-13 15:24:56
577
原创 4.类和对象(下)
5.尽量使⽤初始化列表初始化,因为那些你不在初始化列表初始化的成员也会⾛初始化列表,如果这个成员在声明位置给了缺省值,初始化列表会⽤这个缺省值初始化。-内部类本质也是⼀种封装,当A类跟B类紧密关联,A类实现出来主要就是给B类使⽤,那么可以考虑把A类设计为B的内部类,如果放到private/protected位置,那么A类就是B类的专属内部类,其 他地⽅都⽤不了。,初始化列表的使⽤⽅式是以⼀个冒号开始,接着是⼀个以逗号分隔的数据成员列表,每个"成员变量"后⾯跟⼀个放在括号中的初始值或表达式。
2026-02-10 14:09:29
604
原创 3.类和对象(中)
1.类的默认成员函数默认成员函数就是用户没有显式实现,编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类,我们不写的情况下编译器会默认⽣成以下6个默认成员函数,需要注意的是这6个中最重要的是前4个,最后两个取地址重载不重要,我们稍微了解⼀下即可。其次就是C++11以后还会增加两个默认成员函数,移动构造和移动赋值,这个我们后⾯再讲解。默认成员函数很重要,也⽐较复杂,我们要从两个方面去学习:第⼀:我们不写时,编译器默认⽣成的函数⾏为是什么,是否满⾜我们的需求。
2026-02-09 22:21:09
617
原创 6.库制作与原理
库是写好的现有的,成熟的,可以复⽤的代码。现实中每个程序都要依赖很多基础的底层库,不可能每个⼈的代码都从零开始,因此库的存在意义⾮同寻常。本质上来说库是⼀种可执⾏代码的⼆进制形式,可以被操作系统载⼊内存执⾏。库有两种:静态库 .a[Linux]动态库 .so[Linux]ubuntu环境下的C语言动静态库:-静态链接的出现,提⾼了程序的模块化⽔平。对于⼀个⼤的项⽬,不同的⼈可以独⽴地测试和开发⾃⼰的模块。通过静态链接,⽣成最终的可执⾏⽂件。
2026-02-08 21:26:37
651
原创 2.类和对象(上)
1. 类的定义1.1 类定义格式1.2 访问限定符1.3 类域2. 实例化2.1 实例化概念2.2 对象大小3. this指针4. C++和C语言实现Stack对比
2026-02-07 17:03:54
604
原创 1.C++入门基础
1.C++的第⼀个程序1.C++的第⼀个程序C++兼容C语⾔绝⼤多数的语法,所以C语⾔实现的hello world依旧可以运⾏,C++中需要把定义⽂件代码后缀改为.cpp,vs编译器看到是.cpp就会调⽤C++编译器编译,linux下要⽤g++编译,不再是gcc当然C++有⼀套⾃⼰的输⼊输出,严格说C++版本的hello world应该是这样写的。2.命名空间2.1namespace的价值。
2026-02-05 19:20:45
619
原创 5.Ext系列文件系统
我们看到,真正找到磁盘上⽂件的并不是⽂件名,⽽是inode。其实在linux中可以让多个⽂件名对应于同⼀个inode。本质不是一个独立的文件,没有独立的inode本质是一组新的文件名和目标ionde number的映射关系-abc和def的链接状态完全相同,他们被称为指向⽂件的硬链接。内核记录了这个连接数,inode 263466 的硬连接数为2。-我们在删除⽂件时⼲了两件事情:1.在⽬录中将对应的记录删除,2.将硬连接数-1,如果为0,则将对应的磁盘释放。
2026-02-04 22:24:53
596
原创 4.基础IO
pathname:要打开或创建的⽬标⽂件flags:打开⽂件时,可以传⼊多个参数选项,⽤下⾯的⼀个或者多个常量进⾏或运算,构成flags。参数O_RDONLY: 只读打开O_WRONLY: 只写打开O_RDWR : 读,写打开这三个常量,必须指定⼀个且只能指定⼀个O_CREAT : 若⽂件不存在,则创建它。需要使⽤mode选项,来指明新⽂件的访问权限O_APPEND: 追加写返回值:成功:新打开的⽂件描述符失败:-1核心作用:存储文件的权限位(如(8进制)
2026-01-28 21:26:38
875
原创 C语言项目实践:贪吃蛇
pragmaonceincludeinclude<time.h>include<stdio.h>define1 : 0)//⽅向enumDIRECTIONUP =1DOWN,LEFT,RIGHT//游戏状态enumOK,//正常运⾏//撞墙//咬到⾃⼰END_NOMAL//正常结束defineWALLL'□defineBODYL'●//★○●◇◆□■defineFOODL'★//★○●◇◆□■。
2026-01-24 21:07:20
572
原创 3.进程的控制
本文介绍了Linux进程管理的核心概念与实现方法。主要内容包括:1. 进程创建:通过fork函数创建子进程,分析其返回值机制和写时拷贝技术;2. 进程终止:讨论正常/异常退出场景,介绍exit、_exit等终止方法;3. 进程等待:说明wait/waitpid的必要性,对比阻塞与非阻塞等待方式;4. 进程替换:阐述exec函数族原理,分析6种替换函数的区别;5. Shell实现:构建简易命令行解释器,涵盖提示符生成、命令解析、子进程执行等核心流程。文章通过代码示例演示了关键系统调用的使用,包括fork-ex
2026-01-22 21:10:14
558
原创 2.进程的概念
在系统当中查找⼀个最合适调度的进程的时间复杂度是⼀个常数,不随着进程增多⽽导致时间成本增加,我们称之为进程调度O(1)算法!代码块structrqspinlock_tlock;ifdef。
2026-01-06 21:52:57
995
原创 1.Linux基础指令
本文总结了Linux常用命令及其功能,主要包括文件操作、目录管理、权限设置等核心指令。文件操作类如ls(列出目录内容)、cd(切换目录)、cp/mv(复制/移动文件);权限管理涉及chmod(修改权限)、chown(更改所有者);系统信息查询包括top(进程监控)、uname(系统信息)。特别强调了Linux权限体系,详细解释了文件访问者分类(用户、组、其他)和基本权限(读、写、执行)的设置方法。此外还介绍了shell的工作原理,说明其作为用户与内核交互的中介角色。文中通过具体示例演示了命令用法,并指出目录
2025-12-28 20:53:43
624
原创 随机数的生成
1.随机数⽣成1.随机数⽣成要想完成猜数字游戏,⾸先得产⽣随机数,那怎么产⽣随机数呢?1.1randC语⾔提供了⼀个函数叫rand,这函数是可以⽣成随机数的,函数原型如下所⽰:rand函数会返回⼀个伪随机数,这个随机数的范围是在0~RAND_MAX之间,这个RAND_MAX的⼤⼩是 依赖编译器上实现的,但是⼤部分编译器上是32767。rand函数的使⽤需要包含⼀个头⽂件是:stdlib.h测试代码:include<stdio.h>include。
2025-03-13 13:27:57
1202
原创 判断一个字符串是否为另一个字符串旋转之后的字符串
将source指向的字符串的前num个字符追加到destination指向的字符串末尾,再追加一个'\0'字符。if (strcmp(arr1, arr2) == 0)//两个字符串进行对比,一样则返回1。if (result == NULL)//说明str3中无str2。写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。例如:给定s1 = AABCD和s2 = BCDAA,返回1。
2024-10-09 21:48:15
691
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅