自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux--I/O复用之select

目录一:概念二:使用三:参数介绍:1.ndfs:2.fd_set类型:3.readfds:4.writefds:5.exceptfds:6.timeout:7.返回值:四:代码main.cI/O 复用使得程序能同时监听多个文件描述符这对提高程序的性能至关重要。通常网络程序在下列情况下需要使用 I/O 复用技术解析:可以同时监听多个文件描述符上是否有用户感兴趣的事件发生,(先检测谁有数据就绪,只处理这些有数据就绪的)用一个线程来避免阻塞客户端程序要同时处理多个 socket。客户端程序要同时处理用户输入和网络

2023-09-04 20:44:52 567 1

原创 C++之STL

扮演了容器与算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator* , operator-> , operator++,operator–等指针相关操作予以重载的class template. 所有STL容器都附带有自己专属的迭代器,只有容器的设计者才知道如何遍历自己的元素。高可重用性:STL 中几乎所有的代码都采用了模板类和模版函数的方式实现,这相比于传统的由函数和类组成的库来说提供了更好的代码重用机会。* 仿函数--函数对象,将它放在算法中,可以将算法的功能得以扩展。

2023-05-17 20:13:01 520

原创 计算机网络--TCP、UDP相关概念

recvfrom()可以接收所有客户端发送给当前应用程序的数据,并 不是只能接收某一个客户端的数据。//sendto()往 socket 上写入数据, buff 和 len 参数分别指定写缓冲区的位置和 数据长度 //dest_addr 指定接收数据端的 socket 地址 //addrlen 指定该地址的长度。//recvfrom()读取 sockfd 上的数据, buff 和 len 参数分别指定读缓冲区的位置和大小 //src_addr 记录发送端的 socket 地址。(因为没有建立链接)

2023-03-28 21:16:07 435

原创 Linux--抓包-连接状态

/Crtl+c进程结束,但是连接还没结束,连接的结束取决于对方 ,需要双方挥手。//最后一个ack=1,是因为三次握手完成,便于观察数据,也可以不是1。//下半部分是由四次挥手(三次挥手)带来的。//上半部分的状态转换是由三次握手带来的。//抓的是从我到他,以及从他到我的数据包。//发送五个字符的hello(长度为5)//演化为三次挥手,中间两次同时发送。//sudo 用户名//管理员权限。以hello为例:(五个字符)//收到五个字符(ack6)//回复OK(长度为2)//收到OK(ack3)

2023-03-28 20:57:50 1033

原创 Linux--UDP编程

udp是无连接的,服务器端断开,客户端并不知道,只看端口,哪怕不运行,也发出去了,是不过数据丢失。第一次发送的数据包是一个独立个体,接受完就结束,没接收完,剩下的也丢了。无连接,只要有人发,就会接收,可以直接接受来自于很多客户端的数据。//无连接、不可靠、尽最大的努力发出去,不保证能收到,效率高。UDP:视频传输,eg:打视频电话,处理丢包的成本很低;如果没有把数据报内容收完,那么其余数据丢失,将接收大小由127改成1,一次只接受一个。sendto:不能保证目的地址一样,再次接受的时候是下一个数据报。

2023-03-27 21:54:02 1263

原创 Linux--TCP编程使用多进程处理并发

/有人连接,就会产生子进程,所以子进程会循环不断的产生,只要客户端一关闭,子进程就会退出,变成将死进程,所以将死进程也会不断的产生。利用fork产生子进程,父进程只参与创建子进程,创建完成后,用子进程来接受数据,父进程关闭,直到最后数据接收完毕,子进程才关闭。//第三次为执行服务器,再关闭一个个客户端,无客户端,只剩服务器阻塞。//能解决将死进程问题,但是不能用,//第二次为执行服务器,关闭一个客户端,只剩以一个客户端。//子进程还在接受数据,没有结束,wait就阻塞住了,

2023-03-27 20:23:34 501

原创 Linux--tcp编程(循环读数据、多客户端)

Linux下实现TCP连接,客户端以及服务器端编程流程、原理、代码解释、运行结果一、简介:二、基础准备1.IP地址转换函数:2. 套接字地址结构1.通用socket地址结构:2.专用socket地址结构:三、编程流程四、服务器端编程流程//头文件代码//可以查看端口号五、客户端编程:六、连接后运行结果七、循环写入数据1.客户端代码:2.服务器端代码:3.执行结果:八、如果用两个终端同时运行./client会怎样?1.结果如何:2.数据还能发送吗?3.中间数据去哪

2023-03-21 16:46:43 1837 1

原创 牛客--反转链表

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0\leq n\leq10000≤n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:输入:{1,2,3}返回值:{3,2,1}输入:{}返回值:{}说明:空链表则输出空。

2023-03-19 14:43:12 358

原创 Linux--生产者、消费者问题

有些线程生产资源、有些线程消费资源。//生产者、消费者可以有多个。//缓冲区如果是空,不能被消费。//支持并发、支持忙闲不均。//先p操作,再加锁。

2023-03-19 09:27:23 262

原创 Linux--线程安全、多线程fork问题

当一个进程有多条执行路径,对他进行fork(),产生的子进程只有一条执行路径,被所在线程启用。

2023-03-18 21:42:19 1052

原创 Linux--线程同步

二、线程方式:1.用户级线程:2.内核线程:3.组合线程:三、线程在Linux中的实现四、线程同步

2023-03-18 17:13:59 977

原创 Linux--多线程(2)--多线程并发

多线程会造成什么样的结果,怎么处理多线程造成的问题

2023-03-16 21:34:42 587

原创 Linux--多线程(1)

创建、退出、合并进程//man pthread_create//Compile and link with -pthread.//1.为什么没有fun函数?//2.加上sleep来改进//3.线程结束会不会影响主线程运行?//4.那如果主线程比较少呢?四、如何解决主线程比子线程早结束,子线程不执行问题?调用等待线程:pthread_join();

2023-03-14 21:48:17 408

原创 Linux--消息队列

消息队列的创建和读取相关注意事项和源代码及其执行结果。

2023-03-13 20:52:21 1613

原创 Linux--ipcs、共享内存、共享接口简介

Linux--ipcs、共享内存、共享接口简介

2023-03-13 19:11:07 954

原创 数据结构--循环链表

为什么要有循环链表、循环链表定义、循环链表和单链表的图示对比、循环链表和单链表的代码对比、.循环链表的操作、clist.h、clist.cpp、初始化plist、往plist中头部插入数字val、往plist中的尾部插入数字val、在plist中查找val值,找到返回该节点地址,失败返回NULL、删除plist中的第一个val、判断plist是否为空链表(没有数据节点)、获取plist长度,数据节点的个数、获取plist链表的pos位置的值、获取val的前驱、.获取val的后继、输出plist的所有数据

2022-11-26 19:29:58 829

原创 Linux--信号量共享内存

信号量接口、信号量共享内存

2022-11-25 21:11:44 1355 4

原创 Linux--信号量

信号量是一个特殊的变量,一般取正数值。它的值代表允许访问的资源数目, 获取资源时,需要对信号量的值进行原子减一,该操作被称为p操作。当信号量值为0时,代表没有资源可用,p操作会阻塞。释放资源时,需要对信号量的值进行原子加一,该操作被称为v操作。信号量主要用来同步进程。 信号量的值如果只取0,1,将其称为二值信号量。如果信号量的值大于 1,则称之为计数信号量。

2022-11-24 20:11:56 504

原创 数据结构--单链表

由于顺序表的插入删除操作需要移动大量的元素,影响了运行效率,因此引入了线性表的链式存储——。单链表通过一组任意的存储单元来存储线性表中的数据元素,不需要使用地址连续的存储单元,因此它不要求在逻辑上相邻的两个元素在物理位置上也相邻。

2022-11-22 21:57:33 1226

原创 Linux--进程间通信、IPC、管道

1.管道简介|命令:举例:ps -ef|grep "sleep"两个进程通信,比如a,b进程,a向管道中写入数据,b读取数据;管道的分类:有名管道和无名管道区别:有名管道在任意两个进程间通信,无名管道在父子进程间通信;2.有名管道的创建创建的命令:mkfifo 管道名打开管道:open();读数据:read();写入数据:write();关闭管道:close();3.有名管道演示进程间通信思考如果进程 a 要将从键盘获取的数据传递给另一个进程 b, 用已具备的知识思考应该如何完成?

2022-11-22 20:53:18 117

原创 数据结构--不定长顺序表

1.不定长顺序表与定长顺序表相比不定长顺序表的区别在于我们可以通过扩容来进行增添元素的存储单元。2.结构是对定长顺序表的一种改进,在初始时开辟内存被利用完后,还要继续插入数据时,这时候据需要扩容。故顺序表的结构设计就要发生变化。

2022-11-21 21:20:29 248

原创 Linux--my bash

Linux--bash项目、命令的分类、内置命令、普通命令:、项目框架、.完整代码、总结

2022-11-21 19:54:36 298

原创 数据结构--线性表之顺序表

线性表(List):零个或多个数据元素的有限序列。线性表的数据集合为{a1,a2,…,an},假设每个元素的类型均为DataType。其中,除第一个元素a1外,每一个元素有且只有一个直接前驱元素,除了最后一个元素an外,每一个元素有且只有一个直接后继元素。在较复杂的线性表中,。在这种情况下,常把数据元素称为记录,

2022-11-19 17:36:23 784

原创 C++面试题之继承

【代码】C++之继承面试题。

2022-11-19 13:55:48 360

原创 C++之继承、派生

继承的概念与定义、继承的层次概念是计算机的重要概念、私有的能被继承,不能被访问、继承的三步骤、有继承和组合的构造顺序---内存布局、继承之下的赋值运算符重载7.一个类被多个类继承

2022-11-18 21:30:46 1077

原创 C++之函数模板、类模板、模板的特化

模板是c++的一种特性,允许函数或者类(对象)通过泛型(generic types)的形式表现或者运行,模板可以使得函数或类在对应不同的类型(types)的时候正常工作,而无需为每一种类型分别写一份代码。

2022-11-15 22:36:12 2760

原创 C++之对象与对象的关系:依赖、关联、聚合、组合、继承、类模板

C++对象间的关系:依赖、关联、聚合、组合、继承、类模板的图示、定义、实现

2022-11-14 16:49:15 2365 5

原创 数据结构与算法--分治策略

分治的概念:把大规模变成小规模,不是将问题缩小!递归概念:若一个函数直接地或间接地调用自己,则称这个函数是递归的函数。(简单地描述为"自己调用自己")、分治的特征、步骤、栈的面试题、递归相关例题的1.分析:、阶乘可递归的定义为:、递归程序、图解递归过程(代码的调动过程)、.图解递归过程(栈帧的动态调动过程)、总结

2022-11-12 11:13:03 1141

原创 C++之static,静态变量

static的详解 关于初始化、内存、优点、指针、释放时机等问题。静态局部变量在全局数据区分配内存,局部变量在栈区分配内存。

2022-11-04 17:49:55 6462

原创 数据结构与算法--八大排序

1.基本概念:1.排序:2.需要掌握的点:3.稳定性:4.排序难点:2.分类:3.比较:1.稳定性:2.时间复杂度:3.空间复杂度:4.排序详解:1.选择排序--直接插入排序2.插入排序--希尔排序(Insert Sort)3.选择排序-简单选择排序(Simple selection sort)4.选择排序-堆排序(Heap sort)5.交换排序-冒泡排序(Bubble Sort)6.交换排序-快速排序(Quick-Sort)7.归并排序-(Merge sort)8. 基数排序(RadixSort)

2022-11-03 19:06:39 743

原创 Linux--信号signal、父子进程、SIGCHLD信号相关命令

Linux--信号signal、父子进程、SIGCHLD信号相关命令;信号名称 信号代号;15号信号和9号信号1.概念:2.信号的存储位置:3.常见的信号的值以及对应的功能说明:4.信号的值在系统源码中的定义:5.响应方式:6.改变信号的相应方式:(1)设置信号的响应方式:(2)默认:SIG_DFL;忽略:SIG_IGN;(3)默认响应方式:(4).自定义响应方式:(5)忽略:7.练习题目:8.15号信号和9号信号9.SIGCHLD信号(1)验证信号(2)处理僵死进程(wait结合信号)

2022-11-02 13:20:15 1454

原创 Linux--关于open、file、write、read、close的相关命令——操作文件的底层调用

Linux--操作文件的底层系统调用open:打开一个文件、read: 从文件中读取数据、write:向文件中写入数据、close:关闭文件、文件描述符、利用读写对文件进行负责、实现类似cp命令。

2022-11-02 12:17:51 1257

原创 Linux--bash、fork、exec、进程替换相关命令

Linux--bash、fork、exec、进程替换相关问题;bash详解、利用bash创建ps命令----execl的使用(结合fork)fork+exec()是Linux上创建新进程方式;

2022-11-02 12:08:15 587

原创 Linux--进程、进程替换、命令

注意,就是原来的程序换成了ps程序,但是PCB没有改变,但是PCB里面的有些值被修改了,比如pcb中程序的名字换成了新进程的名字;注意,"abc"可以, "/usr/bin/psxx"不可以;,如下:(2).execlp只给文件名,不需要给文件路径,可以去环境变量PATH所指的位置去搜索;echo $PATH(3).execle这个execle多了一个环境变量;(4).execvexecv系列把参数都放在了一个数组中,然后把这个数组传递进去即可;(5)execvp第一个参数只要文件名,

2022-11-01 21:51:55 381

原创 C++之函数指针、指针函数以及相关问题

指针、指针变量的定义、指针的分类、指针判定的右左法则、数组指针、指针数组、指针函数指针数组、函数指针、指针函数、扩展转移列表、函数指针数组考题

2022-11-01 21:31:14 381

原创 C++之运算符重载

1.运算符重载:1.可实现的对象2.定义运算符重载函数的一般格式:3.运算符的重载实际2.为什么要重载?3.前提:4.如何重载?5.默认6.指针作为数据成员7.字符串重载8.友元重载:重载输出

2022-10-31 21:09:28 505

原创 C++之函数重载

在C++中可以为两个或两个以上的函数提供相同的函数名称,只要参数类型不同,或参数类型相同 而参数的个数不同, 称为函数重载;函数重载的规则、函数重载的解析步骤

2022-10-31 19:43:34 1097

原创 C++之友元函数

友元函数:友元函数的定义、分类、三种友元函数举例,代码注意点,判断谁是谁的友元函数或类

2022-10-29 21:52:24 24227 5

原创 Linux--malloc、申请空间、申请是否成功、4G虚拟空间分布、父子进程相关代码及相关命令

1.进程在执行的过程中,malloc申请空间,不使用时,没有free就会出现内存泄漏;如果进程结束了,那么所有向操作系统申请的内存都会被回放(释放);2.申请1G或者更大空间,到底能不能成功?如果当前的物理内存剩余空间够用,那么申请的空间肯定能成功;如果物理内存不够,先看有没有虚拟内存,如果有,看虚拟内存加上物理内存能否满足申请的空间大小;sudo swapoff -a;关闭虚拟内存;sudo swapon -a;开启虚拟内存;3.32位操作系统进程的4G虚拟空间分布

2022-10-28 18:02:51 383

原创 Linux--文件、进程、fork、open、系统调用、库函数相关知识

Linux--文件、进程、fork、open、系统调用、库函数相关知识

2022-10-28 17:28:40 807

空空如也

空空如也

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

TA关注的人

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