自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 KMP算法实现strStr(c++代码实现)

KMP算法

2023-06-20 07:50:21 191

原创 udp套接字编程(超详细带你逐步实现)

socket套接字编程

2023-02-27 14:46:12 1182 1

原创 网络基础概述

网络,OSI七层模型。TCP/IP协议。

2023-02-22 15:11:48 471

原创 c语言中回车vs换行你真的理解了吗

回车vs换行倒计时进度条

2023-02-14 17:40:22 2044

原创 c++二插搜索树

二插搜索树的原理二插搜索树的代码实现

2023-01-25 00:33:46 552

原创 c++动态内存管理

new/deleteoperator new/operator deletemalloc/free和new/delete的区别

2023-01-02 20:45:54 1201

原创 关于c++类和对象的深一步探讨

构造函数的初始化列表友元内部类

2022-12-29 19:56:21 194

原创 c++函数重载流提取和流插入

c++函数重载operator>

2022-12-16 21:54:03 151

原创 类的六个默认成员函数

类的默认成员函数

2022-12-13 23:59:41 736

原创 c++中的this指针

玩转c++中的this指针

2022-12-10 19:48:50 336

原创 引用的小细节&&内联函数

引用的小细节,内联函数

2022-12-08 22:34:58 504

原创 带你了解extern “C“

extern “C”

2022-12-08 15:28:14 616

原创 八大排序附详细注释

八大排序算法附详细注释

2022-12-06 11:23:15 76

原创 队列c语言实现

队列是一种数据结构,这种结构的特点是先进先出,后进后出。有点类似于数组只能尾插和头删。不过我们不用数组实现队列,因为数组的头删需要挪动后面所有的数据,成本过高。我们采用单链表来实现队列.

2022-11-18 02:28:48 910

原创 栈c语言实现

栈的c语言实现

2022-11-18 00:58:33 395

原创 单链表c语言实现

c语言实现单链表

2022-11-14 20:30:24 314

原创 顺序表c语言实现

c语言实现动态开辟空间的顺序表

2022-11-14 12:41:05 368 1

原创 c语言中你经常遗忘的知识点汇总

c语言易忘知识点汇总

2022-11-08 23:52:06 154

原创 刷题10_30

数组中超过一半的数字, 替换空格,倒序打印链表,重建二叉树,斐波那契数列

2022-10-30 19:43:47 131

原创 刷题10_26

practice10_26

2022-10-26 23:26:57 68

原创 三子棋小游戏(c语言实现附详解)

今天给大家分享一个简单的三子棋小游戏,C语言实现,附详解。

2022-10-26 10:57:04 774

原创 Linux篇19多线程第三部分

在保证数据安全的前提下,让线程能够按照某种特定的顺序访问临界资源,从而有效避免饥饿问题,叫做同步。下面我们来解释一下什么叫做“饥饿问题”还是举我们之前用过的例子。假如有一个 自习室,每次只允许一个人进去自习,自习室门外面的墙上挂着钥匙。ABCD几个人都想来上自习,A第一个来的,他拿着钥匙进入自习室并将门反锁了,后来的几个人BCD就只能在外面等着了。

2022-09-05 16:14:15 272

原创 Linux篇18多线程第二部分

首先,我们先了解一下下面一组概念:多线程执行流共享的资源就叫做临界资源:每个线程内部,访问临界资源的代码,就叫做临界区:任何时刻,互斥保证有且只有一个执行流进入临界区,访问临界资源,通常对临界资源起保护作用:不会被任何调度机制打断的操作,该操作只有两态,要么完成,要么未完成现在,我们来举一个买票的例子帮助大家更好地理解临界资源。假如现在有1000张票,有四个人ABCD去抢。每个人抢到票的数量不做限制,直到抢完为止。我们用一段代码来模拟这种情景。

2022-08-24 20:15:44 335 1

原创 Linux篇17多线程第一部分

定义:线程是一个进程内部的控制序列为了让我们更好地理解线程的概念,我们看看下面的图。

2022-08-23 12:58:31 529 2

原创 Linux篇16进程信号第二部分

我们知道进程在收到信号的时候可能不是立即去处理信号的,而是要等到“合适的时候”。这个合适的时候指的是“从内核态切换回用户态的时候”。内核态通常用来执行OS代码,是一种权限非常高的状态。用户态是一种用来执行普通用户代码的状态,是一种受监管的约束状态。进程无论如何切换都能看到操作系统,但是不一定都能访问。...

2022-08-06 17:24:36 259 1

原创 Linux篇16进程信号第一部分

因此,未决和阻塞标志可以用相同的数据类型sigset_t来存储,sigset_t称为信号集,这个类型可以表示每个信号的“有效”或“无效”状态,在阻塞信号集中“有效”和“无效”的含义是该信号是否被阻塞,而在未决信号集中“有效”和“无效”的含义是该信号是否处于未决状态。低7位,表示的是进程退出时的退出信号,次第八位表示的是进程的退出码,而我们没有提到的第8位,就是代表进程异常退出时是否是否核心转储。我们知道,进程在收到信号的时候,不一定是在立即执行的,而是要等到“合适的时间”再去处理。信号是使用位图记录的。..

2022-08-05 20:49:27 477

原创 Linux篇15进程间通信之共享内存&&浅谈消息队列&&浅谈信号量

共享内存区是最快的IPC形式。一旦这样的内存映射到共享它的进程的地址空间,这些进程间数据传递不再涉及到内核,换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据.

2022-08-02 09:00:00 228

原创 Linux篇14进程间通信之管道

server将管道中的数据读取出来,在本地创建一个file-bak.txt,把读取的内容写到file-bat.txt。FIFO(命名管道)与pipe(匿名管道)之间唯一的区别在它们创建与打开的方式不同,一但这些工作完成之后,它们具有相同的语义。命名管道有名字,那么不同进程就可以通过名字打开同一个文件了,也就看到了同一份资源。从管道的一端写入的数据,实际上是缓存在内核中的,另一端读取,也就是从内核中读取这段数据。全双工(人在吵架的时候,你说我也说)半双工(人在正常沟通的时候,一个人说,一个人听)...

2022-07-24 01:41:42 252 3

原创 剑指offer1-10题附带解析

队列的声明如下,请实现它的两个函数appendTail和deleteHead,分别完成在队列尾部插入整数和在队列头部删除整数的功能。在复杂链表中,每个节点除了有一个next指针指向下一个节点,还有一个random指针指向链表中的任意节点或者null。一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数在该栈中,调用min、push及pop的时间复杂度都是O(1)。...

2022-07-16 00:14:05 1498

原创 Linux篇13动静态库

动静态库本质上是可执行程序的“半成品”代码编译分为四个阶段我们将一群.o文件打包就变成了库 (.so/ .a)。所以库的本质是一堆.o的集合,不包含main,但是包含了大量的方法静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库。相当于将库的代码拷贝到你的代码里面,使你的可执行文件变大。动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。在Linux下 .so为动态库,.a为静态库在Windows下, .dll为动态库,.lib为

2022-07-04 22:47:39 233

原创 Linux篇12文件系统inode和软硬链接

当我们使用ls-i指令查看文件信息时,会发现文件名前面有一个数字,这个数字是inode。我们也可以使用stat指令查看文件的详细信息,如下为了讲清楚inode,我们从磁盘开始说起文件 = 属性+内容。属性和内容在磁盘上是分开保存的。如上图所示,我们在创建一个文件的时候,过程是这样的:删除一个文件的时候,只要根据inode将对应的inode bitmap和Block Bitmap置为0,不需要管数据块上面的内容,所以删除很快,写入较慢我们知道,Linux下一切皆文件,目录也可以看做一个文件。那么我们再来理解一

2022-07-04 20:07:21 308

原创 Linux篇11基础IO

stdin & stdout & stderrC默认会打开三个输入输出流,分别是stdin, stdout, stderr。这三个流的类型都是FILE*, fopen返回值类型,文件指针stdin:键盘 标准输入stdout:显示器 标准输出stderr:显示器 标准错误在c语言里面,有fopen,fclose,fread,fwrite这些函数。而open,close,read,write都属于系统提供的接口,称之为系统调用接口。实际上,Linux环境使用fopen底层调用的还是open。那么c语言为什

2022-07-03 20:08:59 281

原创 Linux篇10进程控制

fork()函数为什么要给子进程返回0,给父进程返回子进程的pid父子进程立场:父进程不需要标识,子进程需要标识,因为父进程可以有多个子进程,而子进程只有一个父进程。子进程是要执行任务的,父进程需要通过子进程的pid来区分子进程,而子进程不需要如何理解fork有两个返回值?在fork()还没有return pid的时候,子进程就已经创建好了,return pid被执行了两次。进程调用fork,当控制转移到内核中的fork代码后,内核做:fork之前父进程独立执行,fork之后,父子两个执行流分别执行。注意,

2022-07-02 20:50:48 216

原创 Linux篇9进程2

概念:cpu资源分配的先后顺序,就是指进程的优先权(priority)在linux系统中,用ps –l命令则会类似输出以下几个内容:其中PRI就是指该进程优先级,NI代表该进程的nice值新PRi = 旧PIR + nicenice的取值范围是-20 到 19共40个级别。PRI值越小,代表优先级越高。在Linux下,可以通过调整nice值来调整优先级。我们可以通过top指令更改进程的nice值,方法如下:其他概念:概念:环境变量(environment variables)一般是指在操作系统中用来指定操作

2022-06-29 15:36:24 536

原创 Linux篇8进程

我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系这里要注意的是:存储器并不是硬盘,而是指内存。运算器和控制器统称为中央处理器,也就是我们所说的cpu;如上图所示,CPU只和内存打交道,输入输出设备也是只和内存打交道,CPU和输入输出设备没有直接的交流常见的输入输出设备有哪些呢?输入设备:键盘,网卡,硬盘,话筒,摄像头输出设备:显示器,音响,网卡,硬盘ps:像网卡,硬盘这种硬件是既可以做输入设备又可以做输出设备。他们在不同的情景下扮演不同的角色。以硬盘为例,当你把一个文件写到

2022-06-24 02:04:07 239

原创 yum && vim

在Linux下如何安装软件呢?一般有以下三种方式:1.源码安装2.rpm安装包3.yum(软件包管理器)这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去.关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!可以通过 ping 指令验证1.4查看软件包通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:下面我们

2022-06-22 01:17:16 110

原创 c++逆天改命进阶--unordered_set_mapd封装

2.UnorderedSet.h3.UnorderedMap.h4.test.cpp

2022-06-09 17:10:56 121

原创 Linux篇6--gcc的使用及Linux下的调试

c程序的翻译过程分为如下几步:预处理(-E):头文件的展开,去注释,宏替换,条件编译预处理完成会生成".i " 文件。通过观察文件大小我们就可以看出来在预处理过程中做了一系列的操作编译(-S):C代码编译成汇编语言汇编(-c):将汇编语言翻译为目标文件(变为二进制)链接:生成可执行文件这个绿色的就是可执行程序。在这里涉及到一个重要的概念:函数库函数库一般分为静态库和动态库两种静态库是指编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a

2022-06-09 00:06:55 1104

原创 LInux篇5--yum软件包管理器以及vim的使用

在Linux下如何安装软件呢?一般有以下三种方式:1.源码安装2.rpm安装包3.yum(软件包管理器)这个工具用于 windows 机器和远端的 Linux 机器通过 XShell 传输文件.安装完毕之后可以通过拖拽的方式将文件上传过去.关于 yum 的所有操作必须保证主机(虚拟机)网络畅通!!!可以通过 ping 指令验证1.4查看软件包通过 yum list 命令可以罗列出当前一共有哪些软件包. 由于包的数目可能非常之多, 这里我们需要使用 grep 命令只筛选出我们关注的包. 例如:下面我们

2022-06-08 14:18:40 382

原创 c++逆天改命进阶--哈希表

在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同。4.两个数组的交集5.哈希概念顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较

2022-06-08 12:11:13 306

空空如也

空空如也

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

TA关注的人

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