自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 收藏
  • 关注

原创 15. C生万物之详解程序环境和预处理

C生万物之详解程序环境和预处理

2024-07-06 20:50:57 701 1

原创 14. C生万物之文件操作

C生万物之文件操作

2024-07-06 12:40:38 934 3

原创 13. C生万物之动态内存管理

本文我总共会介绍三种动态内存函数,分别是malloc()calloc()realloc(),与之对应内存释放函数还有free()

2024-07-05 21:47:02 991

原创 12. C生万物之详解结构体、枚举与联合体

C生万物之详解结构体、枚举与联合体

2024-07-03 15:57:45 682 1

原创 11. C语言之字符函数、字符串函数与内存函数

C语言之字符函数、字符串函数与内存函数

2024-07-03 09:31:48 727

原创 Linux多线程【线程互斥】

生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者 要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。挂起等待锁:当某个线程没有申请到锁的时候,此时该线程会被挂起,即加入到等待队列等待。当锁被释放的时候,就会被唤醒,重新竞争锁。悲观锁:在每次取数据时,总是担心数据会被其他线程修改,所以会在取数据前先加锁(读锁,写锁,行锁等),当其他线程想要访问数据时,被阻塞挂起。

2024-07-02 21:11:48 887

原创 Linux多线程【线程控制】

在之前的认知中,我们都认为一个进程就是一个PCB + 程序的代码和数据。但是现在我们要重新认识进程了。当进程内部只有一个执行流的时候, 进程 = PCB + 程序的代码和数据。当进程内部有多个执行流的时候 ,那么进程 = 多个PCB + 程序的代码和数据。在CPU的视角中,CPU其实根本不关心当前调用的是进程还是线程,因为它只认PCB,也就是。所以在linux系统下,PCB

2024-07-02 16:37:15 1116 1

原创 22. C++的IO流操作

C++的IO流操作

2024-07-01 21:30:00 1123

原创 21. C++的类型转换

C++的类型转换

2024-07-01 17:09:00 848 1

原创 20. C++特殊类设计

C++特殊类设计

2024-06-30 09:52:07 1328 1

原创 19. C++11线程库操作

C++11线程库操作

2024-06-29 17:40:50 1109 1

原创 17. C++异常

C++异常

2024-06-29 14:00:53 946

原创 18. C++智能指针

C++智能指针

2024-06-28 14:50:33 572 1

原创 16. C++11 右值引用和移动语义,完美转发和万能引用,移动构造和移动赋值,可变参数模板,lambda表达式,包装器

C++11 右值引用和移动语义,完美转发和万能引用,移动构造和移动赋值,可变参数模板,lambda表达式,包装器

2024-06-27 16:56:07 994 1

原创 15. C++哈希表、哈希桶的实现以及模拟实现封装unordered_map 和 unordered_set && 位图 && 布隆过滤器 && 哈希切割相关

C++哈希表、哈希桶的实现 && 模拟实现封装unordered_map 和 unordered_set

2024-06-25 16:47:44 1076 1

原创 STL —— 用一棵红黑树同时封装出map和set

STL —— 用一棵红黑树同时封装出map和set

2024-06-24 10:55:50 581 1

原创 STL——set、map、multiset、multimap的介绍及使用

STL——set、map、multiset、multimap的介绍及使用

2024-06-16 18:32:52 859 1

原创 14. 红黑树【C++实现】

红黑树【C++实现】

2024-06-14 13:34:35 822 1

原创 13. AVL树【C++实现】

AVL树【C++实现】

2024-06-07 17:28:26 1026 3

原创 12. C++二叉搜索树介绍以及实现

C++二叉搜索树介绍以及实现

2024-05-31 13:17:55 815 2

原创 11. C++多态总结与原理、菱形继承问题

C++多态总结与原理、菱形继承问题

2024-05-27 12:28:49 934 2

原创 10. C++继承总结

C++继承总结

2024-05-23 12:21:45 748 1

原创 Linux信号概念,信号的产生异常情况,信号的保存,信号的处理,捕捉信号,可重入函数,volatile,SIGCHLD信号

Linux信号概念,信号的产生异常情况,信号的保存,信号的处理,捕捉信号,可重入函数,信号角度理解volatile,理解子进程向父进程发送SIGCHLD信号

2024-05-14 09:39:49 804 4

原创 Linux进程间通信 && pipe && 实现进程池 && 命名管道 && 实现打印日志 && 共享内存代码验证 && 消息队列 && 信号量

Linux进程间通信pipe的使用,用C++实现模拟线程池,命名管道的创建以及通信,最后实现打印日志

2024-05-11 18:08:23 827 5

原创 Linux理解文件操作 && 文件描述符fd && 理解重定向 && dup2 && 缓冲区 && C语言实现自己的shell

我们在平时使用的C/C++/Java的时候,我们所用的文件操作都是封装系统接口来进行供我们操作,我们在使用这些接口,本质上就是在访问硬件,也就是磁盘一个硬件设备是如何被函数接口的调用访问到的呢?当然是通过操作系统,操作系统是管理硬件设备的,在我们学的C/C++/Java等等语言所封装的文件操作接口,都必须通过操作系统的允许,才可以访问到磁盘这个硬件设备,而操作系统是不相信任何用户的,所以为了能够得到操作系统的允许,我们又必须提供一些系统调用接口,供操作系统和用户打交道。

2024-05-04 21:18:19 682 2

原创 Linux动态库和静态库

动态库在多个程序间共享,节省了磁盘空间,操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。动态库是程序在运行的时候才去链接相应的动态库代码的,多个程序共享使用库的代码。如果程序不知道其所使用的动态库的路径, 那么进程在运行时, 操作系统就不能根据程序把动态库加载到内存中。我们知道, 动态库在链接时是不会将代码加载到程序中的, 只会将代码以一个相对地址的形式加载到程序中。如果动态库不能被加载到内存中, 进程的虚拟地址空间的共享区就不能指向动态库的代码。

2024-04-29 19:45:23 676 1

原创 Linux文件系统 && 软硬链接

如果使用512KB,可能会进行更多次数的IO,造成效率降低,而且如果操作系统使用和磁盘一样的大小,万一磁盘基本大小变化了,OS的源代码也需要改变,所以OS有自己一套的规定,这样就完成了软件和硬件的解耦。字节的空间,保存的是对应特定文件的属性,该块组内,所有文件的inode空间的集合,需要标识唯一性,每一个inode块,都要有一个inode编号。一般而言一个文件,一个。它的内部也是一个位图,每一个比特位和 特定的inode是一一对应的,如果该比特位为1,说明该inode已经被占用,否则表示空闲可用。

2024-04-21 10:13:43 832 2

原创 9. C++模板【函数模板与类模板】【非类型模板参数、模板特化和模板分离编译】

C++模板【函数模板与类模板】【非类型模板参数、模板特化和模板分离编译】

2024-04-16 10:04:00 1053 1

原创 Linux进程的优先级&&环境变量&&上下文切换&&优先级队列

如何设置本地变量呢?但是使用【echo】命令还可以查看到,因为echo是可以操作环境变量的,所用echo命令是可以操作所有的变量的,不管是本地变量还是环境变量。,这个nice值有正负数,我们可以举一个例子:一个进程的PRI为80,我们给NI值为-10,再根据上面的公式得出新的PRI为70。因为PRI是系统内核去动态调整的,我们修改后需要经过内核的允许,如果这个PRI值超过了内核的最大限度,那么这个值就会保留在。我们发现使用env来查看我们设置的变量,并不能显示出结果,证明了我们刚刚设置的变量是本地变量。

2024-04-03 09:37:10 1746 83

原创 Linux之进程控制&&进程终止&&进程等待&&进程的程序替换&&替换函数&&实现简易shell

所以如果我们模拟实现的shell也想实现cd改变路径的功能,实际上是不可以创建子进程的,因为子进程程序替换执行cd,父进程的工作目录是没有改变的,所以直接将这一种情况单独拿出来进行判断,在这种情况下,直接让父进程执行cd命令,修改父进程的工作目录即可。在模拟shell的实现代码中,cd到其他目录,pwd之后的路径实际上是没有变化的,因为pwd实际上pwd的是父进程shell的路径,而父进程的cwd路径始终是未改变的,而执行cd命令的是子进程,所以子进程的cwd路径是会改变的。这就是进程之间的独立性。

2024-03-28 15:54:04 1548 83

原创 Linux进程地址空间详解

我们在学习C/C++的时候用到的地址是什么地址呢?虚拟地址?物理地址?本文就来寻找一下答案~

2024-03-23 18:23:45 972 96

原创 Linux手动创建用户不使用useradd【七步走完成】

Linux手动创建用户七步走

2024-03-21 12:21:03 1947 73

原创 9. C语言之数据在计算机内部的存储

C语言之数据在计算机内部的存储

2024-03-18 19:28:30 1689 86

原创 C++STL详解(一)——string的介绍及使用

本文学习了C++中的string类,简单的介绍了几个比常用的几个接口,以及如何使用

2024-03-14 14:11:38 911 81

原创 Linux进程概念&&僵尸进程&&孤儿进程

Linux进程概念&&僵尸进程&&孤儿进程

2024-03-11 18:50:57 1762 89

原创 Linux 实现打印彩色进度条

Linux 实现打印彩色进度条详解

2024-03-04 10:36:55 2026 107

原创 8. C语言之操作符详解

本文介绍了算术作符、移位操作符、位操作符、赋值操作符、单目操作符、强制类型转换、关系操作符、逻辑操作符、条件操作符以及问题表达式

2024-02-29 15:19:06 1200 96

原创 8. C++内存管理学习【new】

本文讲解了C/C++内存分布形式,并且学习C++中new的操作,最后了解了内存泄漏分类,如何检测内存泄漏,如何避免内存泄漏

2024-02-24 08:54:42 2913 106

原创 7. C++初始化列表、static成员、友元、匿名对象、附练习题

C++初始化列表、static成员、友元、匿名对象、附练习题

2024-02-21 19:50:06 1565 59

原创 6. C++中默认成员函数【取地址重载】【const成员函数】 【运算符重载】【实现一个日期类】

C++中默认成员函数【取地址重载】【const成员函数】 【运算符重载】【实现一个日期类】

2024-02-19 13:06:16 1502 62

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除