自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 进程线程(一.2)

进程:进程是操作系统进行资源分配和调度的基本单位,它是执行中的程序的一个实例,包括程序代码、当前活动、相关的数据结构以及一个或多个执行线程。线程:线程是进程内的一个执行单元,也是处理器调度的基本单位。多个线程可以并行执行于同一个进程中,共享该进程的内存和资源。会完美拷贝父进程中的所有资源(堆栈,代码段,数据段…)子进程会从fork的下一句话开始,会存在父子进程,通过返回值来判断是父进程还是子进程在执行子进程永远都是在fork的下一句开始执行的(会用到fork之前定义的资源)

2024-06-03 18:19:32 598

原创 网络编程(八)

SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。

2024-06-03 17:16:44 988

原创 网络编程(七)

客户端(client):创建的bbb套接字文件只是用来收数据,使用服务端创建的aaa套接字文件来发数据。服务端(server):创建的aaa套接字文件只是用来收数据,使用客户端创建的bbb文件来发数据。socket同样也可以用于本地通信(类似:管道,共享内存,消息队列,信号。和其他进程间通信方式相比使用方便、效率更高。分为流式套接字和用户数据报套接字。在bind阶段才创建s文件。常用于前后台进程通信。

2024-06-03 16:23:22 388

原创 网络编程(六)

广播是在局域网内实现的(发送到广播地址上的消息是会被局域网内同网段的所有主机进行接收,接收方的主机不能拒绝,除非接收方关闭了相应的接收消息的进程。224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地。发送方可以将数据给局域网内某网段的广播地址上推送消息,同网段之后的所有主机就可以接收到。广播地址的形式:保留网络地址不变(子网掩码也是默认形式)的情况下,将主机地址的最大值取到。过多的广播会大量占用网络带宽,造成广播风暴,影响正常的通信。

2024-06-03 16:13:07 430

原创 网络编程(五)

如果在调用alarm时,以前已为该进程设置过闹钟时间,而且它还没有超时,则该闹钟时间的剩余时间值作为本次alarm函数调用的值返回,以前登记的闹钟时间则被新值代换。如果有以前登记的尚未超过的闹钟时间,而新设的闹钟时间值为0,则取消以前的闹钟时间,其剩余时间值仍作为函数的返回值。参数2:对于该信号的处理函数(该函数是用户自定义的,且返回值类型void ,形参是一个int的函数的地址)//当定时器指定的时间到了时,它就向进程发送SIGALARM信号,信号的默认操作是结束进程.int sa_flags;

2024-06-03 16:00:47 1024

原创 网络编程(四)

》运行服务器s,运行一个客户端c1,此时连接成功且通信没有问题,再运行一个客户端c2,发现显示connect OK(说明客户端和服务器进行了三次握手,但不代表服务器就一定能处理客户端的业务—》除非服务器执行了accept后拿到与c2通信的新的套接字),但是c2与服务器的业务对接不了,此时c1选择结束结束业务,此时s也跟着退出了。思想:主进程专门用于连接多个客户端的请求,若有一个客户端连接进来,主进程就创建一个子进程,用该子进程来创建客户端的业务数据。(accept之后的),服务器不会与客户端进行通信!

2024-06-03 15:17:08 565

原创 网络编程(三)

void FD_ISSET(int fd, fd_set *fdset) //判断fd是否在fdset集合中,发生变化,发生返回true。进程调用非阻塞IO函数,去获取数据或写数据,若没有数据提供或写缓冲区已满,该函数会返回一个非正确的值,当前进程不会被阻塞。//将新的flag作用给文件描述符的状态标志。void FD_CLR(int fd, fd_set *fdset) //将fd从fdset里清除。void FD_SET(int fd, fd_set *fdset) //将fd加入到fdset。

2024-06-03 14:54:18 809

原创 网络编程(三)

该结构体总共占16字节,两个结构体可以强转的前提是所占空间大小相同,借用struct sockaddr_in结构体存储,之后强转为struct sockaddr。数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复, 顺序发送,可能乱序接收。//参数2:指向网络终端主机信息的结构体(协议域,IP地址,端口号)//返回值:成功返回0,失败返回-1,更新errno。//参数3:其他协议–>0:自动匹配其他需要的协议。//参数3:struct sockaddr的大小。

2024-06-03 11:18:27 899

原创 网络编程(二)

/返回值:成功返回新的文件描述符,标识一个新的网络软通道,用作收发正文数据(recv/send);//返回值:成功返回文件描述符,标识socket网络软通道;//返回值:大于0,发送的字节个数;//参数2:指向网络终端主机信息的结构体(协议域,IP地址,端口号)//返回值:成功返回接收的字节数;//参数3:指向struct sockaddr的大小的指针。//返回值:成功返回0;//返回值:成功返回0,失败返回-1,更新errno。//参数3:其他协议–>0:自动匹配其他需要的协议。

2024-06-03 11:08:06 960

原创 网络编程(一)

网络的分层模型和每层所使用的协议的集合。

2024-06-03 10:40:23 817

原创 进程与线程(四)

IPC对象和文件一样,必须先创建,每个IPC对象都有特定Key值,ID值,拥有者,权限和使用大小等,但其读写操作不能使用普通文件的read/write方式。1、共享内存是一种最为高效的进程间通信方式,进程可以直接读写内存(映射之后的内存空间),而不需要任何数据的拷贝。2、为了在多个进程间交换信息,内核专门留出了一块内存区,可以由需要访问的进程将其映射到自己的私有地址空间。用户可以在消息队列中添加消息、读取消息等。key的来源1:key值是被创建出来的,通信双方只要使用同样的方式,即可获取到同一个Key。

2024-06-01 23:27:37 1180

原创 进程与线程(三)

注意:每个进程只能有一个闹钟时间。如果在调用alarm时,以前已为该进程设置过闹钟时间,而且它还没有超时,则该闹钟时间的剩余时间值作为本次alarm函数调用的值返回,以前登记的闹钟时间则被新值代换。如果有以前登记的尚未超过的闹钟时间,而新设的闹钟时间值为0,则取消以前的闹钟时间,其剩余时间值仍作为函数的返回值。向管道中写入数据时,linux将不保证写入的原子性,管道缓冲区一有空闲区域,写进程就会试图向管道写入数据。当定时器指定的时间到了时,它就向进程发送SIGALARM信号,信号的默认操作是结束进程.

2024-06-01 22:55:02 1053

原创 进程与线程(二)

类似地,在进程切换时,涉及到当前进程CPU环境的保存及新被调度运行进程的CPU环境的设置, 而线程的切换则仅需保存和设置少量寄存器内容,不涉及存储器管理方面的操作,所以就切换代价而言,进程也是远高于线程的。而在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位,把传统进程的两个属性分开,使线程基本上不拥有资源,这样线程便能轻装前进,从而可显著地提高系统的并发程度。正因如此,在系统中所设置的进程,其数目不宜过多,进程切换的 频率也不宜过高,这也就限制了并发程度的进一步提高。

2024-06-01 21:59:23 768

原创 进程与线程(一)

并发是什么?—》多个任务同时运行任务是什么?—》就是一个应用程序思考:程序是如何产生的?—》程序:一组能被计算机直接识别的有序指令的集合所以:程序是被编译生成的 eg:gcc test.c -o App (App就是一个程序)程序在外存(U盘,硬盘)上存储(静态的概念)一个程序一旦被运行起来,就会产生一个进程(动态的:被创建,被调度,被消亡)

2024-06-01 20:48:22 800

原创 c++(七)

1>普通函数:当函数调用发生时,编译器通常会生成跳转指令,将控制权转移到函数代码所在的地方,执行。弱型智能指针不能单独使用,只能和共享智能指针配合使用,弱型智能指针生命周期结束的时候并不会影。同时多个智能指针操作同一块的堆区空间,当所有的指针生命周期结束的时候,堆区的空间会自动释放。同一时刻,智能有一个指针指向堆区的空间,当这个指针生命周期结束的时候,堆区的空间会自动释放。响堆区空间的释放,只有共享智能指针的生命周期结束的时候,堆区的空间才会被释放。3、静态的成员函数:获取唯一的对象。

2024-06-01 20:09:33 718

原创 文件IO(三)

动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,因此代码体积较小。stat和lstat没有任何区别,但是当pathname是一个链接文件的时候,lstat会返回链接本身的信息,而不是源。O_SYNC:要求所有I/O操作是同步的,即写入操作完成后,才返回。O_APPEND:将文件指针设置到文件末尾,以便所有写入操作都追加到文件末尾,而不是覆盖现有内容。打开键盘的设备文件之后,如果按键被按下或者被抬起,内核会将键盘触发的事件发送给应用程序。

2024-06-01 19:56:22 1015

原创 c++(六)

重载:同一个作用域内,函数功能相似,函数名相同、参数不同,与返回值无关的一组函数重定义:在继承关系中,子类重定义父类的函数,函数名相同即可重写(覆盖):在继承关系中,子类重写父类的虚函数备注:函数首部必须一样首部:返回值类型 函数名(形式参数列表)

2024-05-29 19:45:57 973

原创 文件IO(二)

函数功能:读stream指示的文件,成功返回读到的数据(无符号的char强转成的int),失败或者读完了返回EOF(-1)函数功能:从stream指示的文件中读nmemb个数据,每一个数据有size个大小,到ptr指示的空间中。函数返回值:指针,成功返回打开的文件的流指针,失败返回NULL,并更新errno。w+ 以可读可写的形式打开文件,文件存在清空打开,文件不存在新建,光标置于开头。w 以只写的形式打开文件,文件存在清空打开,文件不存在新建,光标置于开头。

2024-05-29 14:37:52 906

原创 c++(五)

3>只有采用public方式继承的时候,父类中是什么样子的访问限定符在子类中也是什么样的访问限定符。子类的构造函数只会对子类的对象进行空间的分配和初始化,父类中继承来的属性只能由父类的构造函数。**注意:**在多重继承关系中,先执行谁的构造函数与初始化的顺序无关,是由继承的先后顺序决定的。在子类创建对象的时候,若没有指定父类要执行的构造函数,父类就会执行它的默认构造函数。在继承关系中,当子类的生命周期结束的时候,先执行子类的析构函数,再执行父类的析构函数。以public的方式继承。

2024-05-28 20:26:03 821

原创 文件IO(一)

文本文件,在存储的时候,需要数据和阿斯玛转换,一般存储数据量比较大的数据,最终结果。:存储的是数据的阿斯克码(0~127),EOF(end of file,-1)3.有缓冲区的操作,标准IO的效率比文件IO的效率高。1.标准IO由ANSI C标准定义, 库函数提供的。1.由POSIX定义,操作系统提供的系统调用提供的。s 套接字(Socket)文件 跨主机之间的通信。在Linux系统下,文件共分为7类。:标准IO,内存上的缓冲区,库函数。:存储的是数据在内存上的原样存储。4.一般以文件描述符作为操作依据。

2024-05-28 14:46:13 546

原创 c++(四)

返回值类型 函数名(参数列表);

2024-05-28 11:28:40 799

原创 数据结构(五)

快速排序*:经过一次快排的过程,将待排序元素分成两部分:比基准小的,比基准大的,再分别对这两部分进行快。在Linux下,系统定时器使用小根堆来管理定时器事件。简单选择:每一次运行总会将最小的或者最大的放到前面,如果需要交换,只交换一次。堆(大根堆,小根堆):根结点的值>=左右孩子的值 根节点的值<=左右孩子的值。冒泡:每一次运行总会将最小的或者最大的放到前面,如果需要交换,一直在交换。折半插入:原理同排序二叉树的插入,只是对象是一个有序的顺序表。希尔排序:增量,逐渐减少的,直到增量为1为止。

2024-05-26 19:50:57 255

原创 数据结构(四)

空间复杂度:算法在执行的时候,需要内存提供给我们多少空间才能保证算法正常工作。二分查找:对于有序的顺序表来说,可以使用二分查找。1.算法是否容易被实现,容易被人阅读、理解、维护。时间复杂度:算法在执行的时候,需要花费的时间。研究时间复杂度,研究的是我们的量级 O(n)排序二叉树:排序二叉树类似于链表的二分查找。冲突:多个记录的关键字指向同一个空间。分块查找:块间有序,块内无序。程序是用语言实现算法的代码。算法是静态的,程序是动态的。算法是有穷的,程序是无穷的。2.减少无用的代码存在。2.算法的执行的代价。

2024-05-26 19:43:33 246

原创 数据结构(三)

按是否有权值:带权图、不带权图。按有无方向分:有向图、无向图。

2024-05-26 19:26:23 135

原创 数据结构(二)

树(Tree)是n(n≥0)个节点的有限集合T,它满足两个条件 :有且仅有一个特定的称为根(Root)的节点;其余的节点可以分为m(m≥0)个互不相交的有限集合T1、T2、……、Tm,其中每一个集合又是一棵树,并称为其根的子树(Subtree)。二叉树的定义 : 二叉树(Binary Tree)是n(n≥0)个节点的有限集合,它或者是空集(n=0),或者是由一个根节点以及两棵互不相交的、分别称为左子树和右子树的二叉树组成。二叉树与普通有序树不同,二叉树严格区。

2024-05-26 19:21:52 867

原创 数据结构(一)

/函数功能:插入元素//函数参数:被插入元素的表,被插入的位置,被插入的值//函数返回值:成功返回OK,失败返回失败原因int i=0;//入参判断if(!//判断pos//插入元素//赋值//插入元素= NULL)//往后i++;if(!//插入元素=NULL)return OK;

2024-05-26 19:09:26 1192

原创 Linux(七)

union 共用体名成员列表;//定义了一个共用体数据类型,该共用体数据类型的名字叫 union job//类型名 变量名;定义常量的方式<1>.宏定义 #define N 20a=30;error (只读变量,不能被修改)<3>.枚举enum 名字值1,值2enum color//定义了一个枚举数据类型,该枚举数据类型的名字叫enum color。

2024-05-26 18:25:48 704

原创 Linux(六)

/1.引入库头文件//2.宏定义//3.数据类型的定义//4.枚举类型的定义//5.函数声明Make是一个工具程序,它是一种转换文件形式的工具,转换的目标称为叫target.在许多现代软件的开发中,集成开发环境已经取代了Make,但是在Unix环境中,仍然有许多任务工程师采用Make来协助软件开发.从事嵌入式系统开发,如果不能驾驭Makefile,那很难做到游刃有余。Makefile中预定义变量包含了常见编译器,汇编器的名称及其编译选项CC :C编译器的名称,默认值为cc。

2024-05-26 18:02:20 314

原创 Linux(五)

struct 结构体名//该类型的属性:成员1;成员2;成员3;//定义一个学生的数据类型//学生的属性: 姓名 学号 身高 成绩 等等2.如何定义一个结构体变量int year;int month;int day;//定义一个结构体数据类型,该结构体体数据类型的名字叫 struct date//姓名 字符数组 ----->字符串int height;//身高//定义一个结构体数据类型,该结构体数据类型的名字叫struct student//如何定义一个整型变量。

2024-05-26 17:50:32 154

原创 Linux(四)

变量名的命名规范:<1>.由数字,字母,下划线组成,首字母不能为数字<2>.不能为关键字或保留字<3>.尽量见名知意预定义变量是在shell一开始时就定义了的变量$# 包含命令行参数的个数$@ 包含所有命令行参数:“$1…$9”$* 包含所有命令行参数:“$1…$9”$$ 包含正在执行进程的ID号包含上一个命令的退出状态,正常退出返回0,反之为非0值方式一函数名() {函数体 }方式二function 函数名() {函数体 }#编写两个数求和的函数。

2024-05-26 17:10:25 700

原创 Linux(三)

在网络中,IP地址是主机的唯一标识,32位01序列,IP地址通常用"."隔开的4个十进制表示,称为点分十进制表示./etc/shadow 加密的用户清单 (必须使用root权限)/etc/group 包含了UNIX组的名称和每个组中的成员列表。网关:是一个网络通向其他网络的IP地址,一般指的是路由器的地址。1.什么是子网掩码: 网络地址全是1,主机地址全是0。判别主机发送的数据包是向外网发送,还是向内网发送。网关:最复杂的网络互联设备,让不同的网络进行通信。网络地址最高位为110。网络地址最高位为10。

2024-05-26 16:48:30 880

原创 Linux(二)

Linux系统只要支持RPM(redhat)和Deb(Debian)两种软件包管理工具。dpkg -i 安装一个在本地文件系统上存在的Debian软件包。dpkg -r 卸载。

2024-05-26 16:37:18 328

原创 LinuxC(一)

1>.shell是Linux内核的一个外层保护工具,并负责完成用户与内核之间的交互<2>.shell是一个命令行解释器,将用户命令解析为操作系统所能理解的指令,从而实现用户与操作系统的交互<3>.shell的分类(1).sh(2).csh(3).ksh(4).bash 是sh的增强版本。

2024-05-26 16:30:52 646

原创 C语言基础(七)

数 —— 数值不可修改 指 —— 指向不可修改。左数右指(const在*的哪一侧)

2024-05-26 15:20:16 269

原创 C语言基础(六)

p+n:相当于指针p向地址增大方向移动n个数据(数据大小=sizeof(指向的数据类型)),p可以为指针常量或者指针变量p-n:相当于指针p向地址减小方向移动n个数据(数据大小=sizeof(指向的数据类型)),p可以为指针常量或者指针变量p++:指针p向地址增大方向移动1个数据(数据大小=sizeof(指向的数据类型)),p为指针变量p–:指针p向地址减小方向移动1个数据(数据大小=sizeof(指向的数据类型)),p为指针变量。

2024-05-26 15:14:04 556

原创 c++(三)

指针常量:int * const p = NULL;//p的指向不能修改。常量指针:int const *p = NULL;非const修饰的成员变量也可以以初始化列表的方式进行初始化。const修饰的成员变量只能以初始化列表的形式进行初始化。作用:实现成员变量在类中所有的对象之间的 共享。const修饰的成员变量只能读不能修改。const:修饰的只能读不能写。2、指针对象名->成员变量。作用:实现成员函数的共享。3、类名::成员变量。

2024-05-25 17:52:08 550

原创 c++(二)

class 类名//访问限定符public:private:protected://成员成员变量:属性成员函数:行为。

2024-05-23 15:59:46 743

原创 c++(一)

数据类型 &别名 = 变量名;//注意:引用必须初始化,一旦初始化之后再不能给引用赋值在定义/声明的时候给形参进行初始化。

2024-05-22 14:29:42 1114

原创 数据结构项目——项目管理系统(PMS)

项目管理系统在向众企业提供一个基于互联网的项目管理系统,使其可以摒弃传统项目管理带来的种种风险和效率问题。该项目是基于Linux系统,Linux系统是以应用为中心,以计算机技术为基础,软硬件可剪裁,以及开源等优点。成为更多企业更喜爱的系统之一。采用哈希存储,可以基于文件某一属性直接定位到查找地方,节省查找时间。一个大型的项目管理系统,可以支持项目管理的多个方面,包括项目计划、进度跟踪、资源管理、任务分配、沟通协作、问题解决和报告等,可以帮助团队或组织有效地规划、执行和监控项目。

2024-04-28 20:49:19 229

原创 C语言基础(五)

1、指针指向的数据类型:去掉*和指针名,剩下的就是指向的数据类型int *p ---- 指针指向int类型int ** pp ---- 二级指针指向int *** ppp -----三级指针指向int**类型2、指针的数据类型:去掉指针名,剩下的就是指针的数据类型int * p ----- 指针的数据类型int *int ** pp ---- 二级指针的数据类型int **int ***ppp ----三级指针的数据类型int ***

2024-04-16 18:28:02 352

空空如也

空空如也

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

TA关注的人

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