- 博客(46)
- 收藏
- 关注
原创 C++(继承与派生,虚基类,作用域标识符)
以下是由三种不同继承方式产生派生类后,此时基类访问权限(也就是类内不同关键字(private,public,protected)修饰的成员)的变化继承方式\访问级别public权限protected权限private权限public继承publicprotectedprivateprivate继承privateprivateprivateprotected继承protectedprotectedprivate。
2024-09-02 17:40:46
575
原创 C++(数组,指针,深浅复制,nullptr与NULL)
与指针的基本用法一样,声明对象指针的方式:类名 *对象指针名字使用对象指针来访问对象成员:对象指针名->成员名(与c语言中struct类似)注:在c++中其实struct和class都是用来定义类的,它们之间仅有的区别是struct定义的类成员默认公有(public),而class定义的类成员默认私有(private)
2024-08-09 23:05:47
641
原创 C++(2)(数据的共享与保护)
形参列表中形参的作用域:从声明处开始,到整个函数体结束为止(也就是右大括号})函数体内声明的变量同理,也是从从声明处开始,到整个函数体结束为止。-->具有局部作用域的变量成为局部变量。
2024-08-08 21:37:02
836
1
原创 C++(1)(函数,类)
C++:面向对象的C语言面向对象(C++)与面向过程(C语言)的区别:面向对象:强调属性(数据)和行为(方法,函数)面向过程:强调数据结构与算法这里着重去了解与c具有差异的部分。
2024-08-06 22:52:08
707
原创 linux高级编程(IPC共享内存)(2)
它与memset()函数类似,但是bzero()函数只能将内存区域清零,而memset()函数可以将内存区域设置为任意指定的值。其作用在多个进程同时关联该共享内存时,某一进程不需要使用后,断开与该共享内存的关联关系,下面的shmctl函数在关联关系为0时,才能够成功删除该共享内存。ftok()创建临时键值。(三板斧,ftok,shmget,shmat,前一个函数的返回值都将作为下个函数的参数之一)key值:===》唯一键值,内核分配了一块共享内存后,用户无法直接使用,只能通过key值来间接使用。
2024-08-05 11:37:03
627
原创 framebuffer(帧缓冲)
在Linux系统中,Framebuffer通常是指Framebuffer设备,它是一种特殊的字符设备,在Linux系统中,Framebuffer设备使得程序员可以通过其设定的函数接口直接访问硬件,而不需要通过CPU。framebuffer的一般操作流程为:1.打开 (open)2.获取frame相关信息 (ioctl)3.映射显存地址 (mmap)4.向显存写内容(写到映射的用户空间)5.解除映射 (munmap)6.关闭 close(fd);
2024-07-29 21:17:15
983
原创 数据结构(2)双向链表
线性表的链式存储解决顺序存储的缺点,插入和删除,动态存储问题。特点:线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。可以被存储在任意内存未被占用的位置上。所以前面的顺序表只需要存储数据元素信息就可以了。在链式结构中还需要一个元素存储下一个元素的地址。为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。
2024-07-24 22:36:08
927
原创 数据结构(1)(顺序表)
数据结构相互之间存在一种或多种特定关系的数据元素的集合。逻辑结构集合,所有数据在同一个集合中,关系平等。(数组中的每一个int)线性,数据和数据之间是一对一的关系(队列,链表,数组(线性表的一种体现))树, 一对多(高效)图,多对多物理结构(在内存当中的存储关系)顺序存储,数据存放在连续的存储单位中。逻辑关系和物理关系一致链式,数据存放的存储单位是随机或任意的,可以连续也可以不连续。struct Per 数据元素char name;//数据项(变量)
2024-07-23 23:10:15
878
原创 linux高级编程(广播与组播)
局域网,一个人发所有人都能收(服务器找客户端),(发给路由器的广播地址后后路由器自动给所有人发,可用于服务器找客户端)只能udp来做。
2024-07-16 23:03:45
896
原创 linux高级编程(IO多路复用)
定义:单线程或单进程同时监测若干个文件描述符是否可以执行IO操作的能力作用:(低开销解决阻塞)应用程序通常需要处理来自多条事件流中的事件,比如电脑,需要同时处理键盘鼠标的输入、中断信号等等事件,再比如web服务器如nginx,需要同时处理来来自N个客户端的事件。逻辑控制流在时间上的重叠叫做 并发而CPU单核在同一时刻只能做一件事情,一种解决办法是对CPU进行时分复用(多个事件流将CPU切割成多个时间片,不同事件流的时间片交替进行)。
2024-07-16 11:46:24
1160
原创 linux高级编程(sqlite数据库调用)
1、分类: 大型 中型 小型关系型数据库2、名词:DB 数据库 select update databaseDBMS 数据库管理系统MIS 管理信息系统OA 办公自动化3、嵌入式数据库:GNU特点:1、开源 C语言开发2、代码量少 1万行左右,总大小10M以内3、文件型数据库,可以移动。4、数据容量最大 2T4、sqlite3的安装: LTS long term support。
2024-07-15 22:26:45
917
原创 linux高级编程(IPC进程间通信)
1、古老的通信方式无名管道 有名管道 信号2、IPC对象通信消息队列(用的相对少,这里不讨论)共享内存信号量集3、socket通信网络通信线程信号,posix() sem_init(信号量)特例:古老的通信方式中信号是唯一的异步通信所有的通信方式中共享内存是唯一的最高效。
2024-07-12 11:56:44
1001
原创 linux高级编程(网络)(www,http,URL)
一个大型的,交互式的信息储藏空间,万维网利用网页之间的链接将不同网站的网页链接成一张逻辑上的信息网,从而用户可以方便的从internet上的一个站点去访问另一个站点。统一资源定位符 URL 是用来表示从互联网上得到的资源位置和访问这些资源的方法,其实际上是资源的地址(“资源” 是指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图形、声音等,以及与互联网相连的任何形式的数据。减少了TCP连接中的空闲时间,提高了效率。HTTP本身是无连接的(不需要建立http的连接,实际上用的是tcp的连接)
2024-07-11 21:24:05
2565
原创 linux高级编程(TCP)(传输控制协议)
TCP优点:可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。TCP缺点:因为TCP的繁琐机制,造成了TCP会更慢,消耗更多资源,效率会比较低,
2024-07-09 22:39:34
733
原创 linux高级编程(文件I/O)
文件操作:缓存 操作对象 具体操作标准IO 全缓存/行缓存 文件指针(流指针)FILE * 1.打开 --fopen2.读写3.关闭fclose4.定位文件IO 不带缓存 文件描述符 (整数) 1.打开 --open2.读写 --read/write3.关闭 --close4.定位 --lseek。
2024-07-08 22:04:15
936
原创 linux高级编程(OSI/UDP(用户数据报))
OSI 模型 --> 开放系统互联模型 --> 分为7层:理想模型 --> 尚未实现1.应用层 QQ应用程序的接口2.表示层 加密解密 gzip将接收的数据进行解释(机器->人)3.会话层 网络断开,连接状态,keep-close keep-alive通信双方管理会话4.传输层:tcp udp 协议 文件 视频,音频控制数据传输节奏5.网络层ip NAT实现数据从源经过多条链路到目的地的转发。
2024-07-08 01:02:01
2307
原创 linux高级编程(线程)(1)
概念:线程是轻量级进程,一般是一个进程中的多个任务。进程是系统中最小的资源分配单位。(竞争计算机资源的最小单位)(进程能分配硬件资源,线程不行)线程是系统中最小的执行单位。特征:1、共享资源(除了栈区都共享)-->每个进程有独立的栈区,其他空间其实都用的是所从属的进程的,有效减少内存开销2、效率高 30%3、三方库: pthread clone posix3.1 编写代码头文件: pthread.h3.2 编译代码加载库: -lpthread library。
2024-07-01 21:26:27
1000
原创 linux高级编程(进程)(3)(exec族)
用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变。
2024-06-30 15:47:29
542
原创 linux高级编程(进程)(2)
子进程是父进程的副本。子进程获得父进程数据段,堆,栈,正文段共享。(子分配了一块新的内存,但是代码段指向父进程,也就是说不论几个子进程都只有一个code段)在fork之后,一般情况那个会先运行,是不确定的。如果非要确定那个要先运行,需要IPC机制。区别:1)fork的返回值2)pid不同。
2024-06-30 02:36:00
1006
原创 linux高级编程(进程)(1)
进程是一个程序执行的过程,会去分配内存资源,cpu的调度进程分类:1、交互式进程2、批处理进程 shell脚本3、 守护进程。
2024-06-26 22:46:26
1212
原创 linux高级编程(目录)
1.打开文件 FILE *fp int fd2.读写文件 fgetc/fputc read/write3.关闭文件 fclose close。
2024-06-24 22:09:28
709
原创 linux高级编程(标准I/O,前面带f)
功能:向流中写入一个字符参数:c:要写入的字符stream:文件流指针返回值:成功返回写入的字符ASCII码值失败返回EOF。
2024-06-24 21:19:31
1008
原创 linux高级编程(1)
实现一个 用户程序(1).库函数 --来实现(2).系统调用也就是说,程序要进行系统调用的话,有直接和间接(通过库函数)两种方式linux里面对文件的处理:思想:一切皆文件。
2024-06-23 20:08:49
819
原创 枚举,typedef,位运算
一枚枚的列举 //一个个的列举在实际问题中有些变量的取值被限定在一定的范围内,例如一个星期七天,一年十二个月。枚举的使用可以大幅提高代码的可读性。枚举语法:enum 枚举名枚举常量 //名字eg:MON,TUES,WED,THURS,FRI,SAT,SUN //枚举常量注意:1.c语言中 对于枚举类型 实际上是 当作整型处理的 ,且值的范围不会超过定义的范围2.提高代码可读性,写成枚举,可以做语法检查3.枚举常量,之间用逗号隔开。
2024-06-05 19:36:18
547
原创 结构体(2),链表,共用体
int data;//数据域 --存储要处理的数据//指针域,保存地址-- 指向下一个节点//数据域+指针域//节点类型狗链头节点:链表的第一个节点,用于找到该链表实现操作,数据域一般不需要使用首节点:链表用于存储数据的第一个节点,是头节点的后一个节点尾节点:链表用于存储数据的最后一个节点,后一个节点p->next为NULL。
2024-06-04 21:32:30
1095
原创 结构体(1)
/构造一个结构体类型 --- 声明结构体struct 结构体名成员列表语法:1.struct //结构体 类型 关键字2.结构体名 (变量名)//表明这个结构体类型的 名称//student3.成员列表//来描述结构体类型中 具体的一些数据//成员变量// int age;// int sno;4.最后结束时 } 后面,注意要有一个分号思路:构造出 数据类型 之后,可以,定义变量定义数组。
2024-06-03 22:03:44
934
原创 指针(3)
/数组指针//基类型 int[4]这种类型 ---数组类型*p //等价与 a[0]//相当于是 int[4] 这个一维数组的数组名*(*(p+i)+j) a[i][j] //从内到外,先确定行,再确定列。
2024-05-30 20:55:06
782
原创 指针(2),迭代,快速排序,单词倒置
1.const 离谁近,就限定谁 (离类型近,值不能改,离变量名(指针)近,地址不能修改)2.const 修饰的变量,为只读变量 //变量还是变量 只是成了只读的3.这里说明,char *a=“hello”;//此处hello存于字符串常量区//此处a的值存于栈中,但是不可读且char *a=“hello”,char *b=“hello”,不论几个,字符串常量区只有一个hello,a,b均指向它。
2024-05-29 21:50:44
1124
原创 指针(1)
语法:基类型 * 指针变量名(1) 基类型 --- 表示 地址编号 所代表的那块空间 中要存放的数据的类型//表示的p中存放的 地址编号 所代表的那块空间 中要存放的数据的类型(2) * --- 表示 定义的变量,不是一般变量,而是指针类型的变量指针类型变量,意味着这个变量将来是存储 地址 这种数据的(3) 指针变量名 --- 标识符,命名规则与变量名命名规则一致。int a;//表示定义了一个int类型的a a是一个变量,一定对应有一块空间。
2024-05-27 20:35:23
1051
原创 函数(3)
1.函数的思想2.函数语法函数定义 //输入数据--处理--输出函数调用函数声明3.注意a. 函数传参 --- 传递过程 --- 值传递b. 函数与数组数组作为函数参数一维整型数组 形参 (数组形式,长度) 实参(数组名,数组长度)一维字符数组 形参 (数组形式) 实参(数组名)二维整型和二维字符型形参 (数组形式,行数) 实参(数组名,行数)
2024-05-24 20:42:22
1038
1
原创 二维数组,字符串相关函数,
功能:将src中的字符串拼接到dest中参数:@dest 拼接的目的字符串@src 拼接的源字符串 ,可以是变量也可以是常量操作逻辑:逐个查找字符串元素,直到第一个'\0'时插入第一个元素,并按顺序插入整个字符串,最后在末尾添加结束标志'\0'eg://src是一个字符数组数组名//src是一个字符串常量。
2024-05-16 21:07:43
1029
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人