- 博客(36)
- 收藏
- 关注
原创 socket---TCP
客户端:在客户这一端的进程,是主动发送请求的一端。客户端必须提前知道服务端的地址与端口才能给服务端发送请求。服务端:提供服务的一端进程,是被动接收请求从而进行处理的一端。提示:以下是本篇文章正文内容,下面案例可供参考由于服务端是被动接收的一端,客户端是主动发起通信的一端,所以在通信的时候需要先运行服务端,之后才能运行客户端程序。这是由于不运行服务端的话客户端找不到服务器是发送不了请求的。
2024-10-31 06:30:00
838
1
原创 HTTP的初步了解
HTTP协议是超文本传输协议HTTP的短连接:建立连接——数据传输——关闭连接HTTP的长连接:建立连接——数据传输——(保持连接)——数据传输——关闭连接。如果长时间没有新的请求,连接才会关闭提示:以下是本篇文章正文内容,下面案例可供参考。
2024-10-30 17:11:04
1019
原创 线程安全-同步与互斥/死锁
临界资源—同时只能被一个线程/进程进行安全访问的资源,如共享内存、文件、硬件设备、全局变量等提示:以下是本篇文章正文内容,下面案例可供参考。
2024-10-26 21:31:44
1018
原创 Linux下线程的创建、终止、分离与等待
我们知道并发是轮询进行的,而线程就是实现并发处理的。下面的代码都是同一个代码,除去第一次出现的代码是完整的,下面出现一部分是说明这一部分改了一下,没有出现的说明该代码没有被修改提示:以下是本篇文章正文内容,下面案例可供参考。
2024-10-25 16:50:54
795
原创 了解Linux下的信号
信号是Linux下的一种事件通信机制,也叫做事件中断提示Linux信号是一种中断处理手段,可以打断一个进程的正常执行流。使其处理特定的事件
2024-10-23 16:56:09
896
原创 进程的那些事--进程间的通信(重点说明管道和共享内存)
进程是一个能够独立运行,独立分配资源,独立调度的基本单位,每个进程都有自己独立的虚拟地址空间。当两个进程要想通信,必须使用特定的通信机制来实现进程间的通信。
2024-10-11 21:16:57
901
原创 进程的那些事--实现shell(main的三个参数)
目标:实现一个shell 实现思想: 1:捕捉用户的输入 2:对用户输入进行解析 3:创建子进程 3.1:对子进程进行替换,替换为对应的指令 3.2:替换失败子进程退出 4:父进程等待子进程退出--避免僵尸进程
2024-09-28 19:25:16
639
原创 进程的那些事--进程控制
创建一个进程pcb,pcb中有一个指针指向虚拟地址空间(内存指针),指向的所以地址都会同页表映射到物理内存中,而代码中的g_val通过映射在物理内存中存储数据,当我们创建子进程,它就会复制子进程,它就会复制父进程(复制了所有的地址,映射关系,页表,若子进程修改g_val的数据,那么他会生成一个新的数据放到物理内存中,若不修改继续使用父进程的数据)。创建一个子进程后,等待子进程的退出,获取子进程的退出状态,避免僵尸进程的产生。返回值:返回值大于0代表退出成功,表示的是退出子进程的pid,出错返回-1。
2024-09-26 13:12:27
785
原创 进程的那些事——了解进程(虚拟地址空间)
程序和进程之间的区别: 进程:对用户而言,进程是运行中的程序,但实际是进程是对程序动态运行的描述。当程序被加载到内存中并由操作系统执行就变成了进程。进程有独立的内存空间。它的生命周期到进程结束或操作系统终止。 程序:是一系列静态的,有序执行的指令集合。用于指定计算机来完成特定的任务。通常储存在硬盘中。它的生命周期直到数据被删除或覆盖。
2024-09-05 11:35:47
896
原创 关于进程的那些事——认识进程(包含环境变量的一些描述)
僵尸进程和孤儿进程的区别:僵尸进程子进程先于父进程退出。孤儿进程父进程先于子进程退出 为什么要配置环境变量:方便程序执行,直接通过配置的环境变量来搜索可执行程序。设置特定的环境变量可以设置程序的参数。创建子进程之后会将父进程的环境变量自动传给子进程
2024-09-03 11:13:37
821
原创 Linux--gdb的常用命令
对于程序有两个版本,一个是debug版和release版,要想进行调试必须使用debug版本,再Linux上进行调试就要用到调试器gdb。
2024-08-24 21:43:26
519
原创 简单笔记--Qt控件的重要属性--QWidget
Qt中有一些特定的函数命名前缀,用于指示函数的功能,如get*()用于获取属性,set*()用于设置属性,is*()用于布尔类型的属性检查等。
2024-08-18 20:07:02
335
原创 排序篇——递归实现快速排序(hoare版-挖坑法-前后指针版)
快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法。它会选出一个基准值(key),把它放到正确的位置(排序之后的位置)。
2024-08-16 16:23:09
1138
3
原创 Linux自动构建工具——make/makefile
在Linux中make是一条指令,makefile是文件。make的核心功能就是读取一个或者多个名为makefile的文件,这些文件构成整个项目。是否会makefile,是一个人是否有能够完成大型工程项目能力的侧面体现。
2024-08-14 18:32:01
833
原创 算法篇--狠狠拷打KMP算法(手把手教你next数组)
综上所述得出一个结论:已知next[i] = k,如果p[i] == p[k],那么next[i+1] = k+1,如果p[i] != p[k],回退k,使其满足p[i] == p[k],得出next[i+1] = k+1。
2024-08-11 21:56:02
922
原创 排序篇--插入排序及希尔排序
希尔排序的基本思想是将待排序的数组元素按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。对于不同规模的数据,希尔排序都能保持较好的性能。此外在希尔排序中gap的次数没有确定的答案。
2024-08-10 17:32:03
532
1
原创 二叉树(前序/中序/后序遍历)
什么是二叉树遍历:按照某种特定的规则,依此对二叉树的节点进行相应的操作,并且每个节点只操作一次。提示:以下是本篇文章正文内容,下面案例可供参考。
2024-08-08 13:38:17
492
原创 基于QT实现贪吃蛇游戏(纯代码版)附源代码
主要利用定时器将各个定义的对象关联起来,以蛇向上为例子,定时器每隔2秒自动更新,判断是否和食物相交,是在进入下一个循环的时候,多循环一个就可以了,进入while循环通过枚举,来进入向上移动的函数,向上移动函数的作用是,在当前位置的头上增加一个矩形,退出循环后删除最后一个矩形,通过定时器没个2秒自动调用上述情况就形成了移动。用cnt是表示蛇的食物,也就是矩形,如果蛇头和矩形相交cnt++实现两次循环增加一个节点,当循环完毕,由于cnt是在定时器的槽函数里面定义的,所以当走下一格的时候,会重定义。
2024-08-07 15:06:17
935
原创 C++ 拷打继承不成反被拷打
基类和派生类在不同的作用域可以有同名的成员,同名的函数,在这种情况下,派生类同名成员将屏蔽父类对同名成员的直接访问,这叫做重定义也可以叫隐藏。(要想访问基类同名的成员函数,可以使用 基类::基类成员 进行显示访问)带着问题走:什么是菱形继承?菱形继承的坑是什么?什么是菱形虚拟继承?菱形虚拟继承在底层是怎么体现的。
2024-07-22 22:26:24
920
原创 浅谈C++类与对象(6个默认函数)
探讨类的六个默认成员函数,这是C++中类的基础,需要对C语言有一定的基础。 构造函数是一个特殊的成员函数,它的名字与类名相同,在创建对象时被调用,并且整个对象周期只调用一次
2024-07-13 21:51:11
807
原创 数据结构--二叉树的初步认识及堆的实现(降龙十八掌篇)
降龙十八掌是赫赫有名的掌法,被誉为“天下掌法无双”。初学简单,门槛不高,但越向后学习越难。这里学习降龙十八掌的第一式,是最基础的招式,也是十分重要的招式。亢龙有悔(二叉树的概念和结构)。
2024-07-09 18:22:02
1117
原创 数据结构——栈和队列(铁砂掌内功)
栈和队列本身在数据结构中作用不是很大,但是它常常在更为复杂的数据结构中作为分支使用。所以懂得栈和队列是很重要的,它是在为后面更为复杂的数据结构打基础的。
2024-07-06 07:00:00
550
原创 数据结构——双链表(八卦掌)下部(附源码)
链表的样式多种多样。有很多种,而带头双向链表结构最复杂。当你学过高数再去看初中数学是不是相当简单。当我们学习了复杂的链表结构,并且进行了实现,当遇见其他的链表直接就可以实现了。并且有了单链表作为基础很快便能学会。
2024-06-28 11:45:51
936
原创 数据结构——单链表(八卦掌)上部(附源码)
无头单向非循环链表 void是因为我们是链表不需要进行返回类型。并且由于是链表,我们需要修改指针pp所以我们要用**pp二级指针进行接收。这是由于形参是实参的一份临时拷贝。如果传入的是*pp对函数外的指针不会做任何改变
2024-06-20 17:39:05
998
原创 学会铁砂掌,手撕顺序表(内含源码)
练会铁砂掌,手撕顺序表知识点:需要基本上对于C语言有一点的了解顺序表分为静态顺序表和动态顺序表,重点说明动态顺序表。截止到现在我们的铁砂掌算是成功练成了。这是一个成功,迈入数据结构大门的第一步,还没进行。需要我们举行努力。总结就是,顺序表是以一个结构体来创建一个类似数组的空间,只不过这个空间可以变大。铁砂掌是基础,为了日后降伏数据结构这条龙,学会终极掌法,降龙十八掌打下的基础。
2024-06-01 21:03:56
879
原创 C语言 初学者也能实现扫雷游戏
本次用到的知识点有(对C语言能有个最基本的认识,对于VS的基本使用有认识,分支与循环 ,数组,一些关键字的使用,对于这些关键字也会进行说明的。
2024-05-11 13:50:25
978
1
原创 C语言 实现随机数的生成
C语言中有个 srand 函数,他是用来初始化随机数的生成器,也就是在打印之后实现对"种子“的初始化,当“种子”随机的时候便可以达到让 rand 生成随机数。C语言提供了一个rand函数,这个函数是可以随机生成的,但生成范围在 0-RAND_MAX 之间,这个大小是依赖编译器实现的,但大多数编译器到32767,rand 函数使用的头文件是:stdlib.h 如果我们对它进行生成打印到屏幕,我们会发现第一次运行是随机数,但两次运行的结果是一样的。所以我们可不可以尝试用这个函数来实现x的值的变换呢。
2024-04-29 22:22:24
452
原创 输入一个正整数,逆序打印整数的每一位(用 while循环实现)
输入一个正整数,逆序打印整数的每一位(用 while循环实现)如 1234 打印为 4 3 2 1
2024-04-26 21:48:41
542
1
原创 0-100含9的数字有多少个 什么情况下使用 if 语句不能有 else
因为是含有九的个数所以我们在 if 判断后给前面定义的变量加一,如果是个位上的是 9 就对 j 加1,这时候我们就要对 90 91 92 93 94 95 96 97 98 99 这些情况进行判断.由此我们可以得出一个结论,当有一个事物它可以同时满足两种,两种以上的情况时,如何要用到 if 语句便不适合用 if else 语句,对多个 if 语句进行嵌套 可能会比较好一些。If循环最经典的是if-------else 语句,但是在有的场景中不适合带else来进行判断。写代码先写一个主函数。
2024-04-23 09:20:16
339
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人