- 博客(41)
- 收藏
- 关注
原创 C++语言编程————函数与预处理
定义无参函数的一般形式为类型标识符 函数名([void])声明部分语句定义有参函数的一般形式为类型标识符 函数名(形式参数表列)声明部分语句C++要求在定义函数时必须指定函数的类型。
2025-01-09 19:20:09
849
原创 C++语言编程————C++的输入与输出
在面向过程的程序设计中,程序设计者必须指定计算机执行的具体步骤,程序设计者不仅要考虑程序要“做什么”,还要解决“怎么做”的问题,根据程序要“做什么”的要求,写出一个个语句,安排好它们的执行顺序。怎样设计这些步骤,怎样保证它的正确性和具有较高的效率,这就是算法需要解决的问题。
2025-01-04 21:26:28
979
原创 C++语言编程————C++数据类型
计算机处理的对象是数据,而数据是以某种特定的 形式存在的(例如整数、浮点数、字符等形式)。不同的数据之间往往还存在某些联系(例如由若干 个整数组成一个整数数组)。数据结构指的是数据 的组织形式。例如,数组就是一种数据结构。不同 的计算机语言所允许使用的数据结构是不同的。处 理同一类问题,如果数据结构不同,算法也会不同。例如,对10个整数排序和对包含10个元素的整型数 组排序的算法是不同的。
2024-12-31 22:30:14
333
原创 C++语言编程————C++概述
20世纪60年代, 剑桥大学 Martin Richards为计算机软件人员在开发系统软件时,作为记述语言使用而开发了BCPL语言;1970年, Bell实验室 Ken Thompson在继承BCPL语言的许多优点的基础上发明了实用的B语言;1972年, Bell实验室的Dennis Ritchie和Briankernighan在B语言的基础上,作了进一步的充实和完善,设计出了C语言;1980年:贝尔实验室开始对C进行改进和扩充――带类的C1983年:取名C++
2024-12-30 20:44:34
844
原创 Linux应用开发————mysql数据库表
mysql> desc / describe 表名;或者:mysql> show create table 表名;常见数据库引擎: innodb, myISAM...
2024-12-17 21:07:37
999
原创 Linux应用开发————mysql数据库
什么是数据库(database)?数据库是一种数据管理的管理软件,它的作用是为了有效管理数据,形成一个尽可能无几余的数据集合,并能提供接口,方便用户使用。数据库能用来干什么?顾名思义,仓库就是用来保存东西的,所以数据库的作用就是保存、管理数据。
2024-12-17 20:53:55
690
原创 Linux应用开发————Select 技术
Select 技术是一种非阻塞方式,所谓非阻塞方式Non-block 就是说进程或者线程不必非要等到某种事件的发生,非阻塞方式一旦执,行就会立即返回,以返回值的不同来反应函数的执行情况,如果事件发生了,处理方式和阻塞方式相同,如果没有发生,就会返回一个代码来告知,而进程或线程继续执行,不必等待,所以非阻塞方式效率比较高,使用select方式工作的进程或线程,它能监视我们需要监视的文件描述符的变化情况,读,写或者是异常,注意:1、Select 技术是一种多路复用IO输入输出模式。
2024-12-16 21:46:38
719
原创 Linux应用开发————线程池
定义:简单来说,就是存放多个线程的池子。当创建线程池时,就给池中存放一些线程,如果有任务要执行,就从池中取出一个线程执行任务,依次类推;当所有线程都在执行任务时,其他任务暂时等待,当线程执行完任务后不会被回收,而是回到线程池中等待或继续执行其他的任务;这样同一个线程就被反复利用,从而减少创建线程,销毁线程耗时耗费资源的问题。
2024-12-13 23:19:48
340
原创 Linux网络基础知识————网络编程
网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机结合在一起每层实现不同的功能,其内部实现的方法对外部其他层次来说是透明的,每层向上一层提供服务,使用下一层提供的服务;网络体系结构即网络的层次结构和每层使用的协议的集合开放式系统互联(opensystem interconnection 简称 OSI)和TCP/IP。
2024-12-10 20:46:22
1084
原创 Linux应用开发————多线程的互斥与同步——同步
是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。
2024-12-09 22:31:53
767
原创 Linux应用开发————多线程的互斥与同步——互斥
是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。是指在互斥的基础上(大多数情况),通过其它机制实现访问者对资源的有序访问。互斥锁机制是用一种简单的加锁方法来控制对共享资源的访问,互锁有两种状态,上锁和解锁,可以把互斥锁看作成某种意义上的全局变量。在同一时刻只能有一个线程掌握这个互斥锁,拥有上锁状态的线程能够对共享资源按照顺序进行操作。
2024-12-09 22:04:19
780
原创 Linux应用开发————多线程
当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。而一个进程又是由多个线程所组成的。
2024-12-08 23:14:24
819
原创 Linux应用开发————进程通讯
若 shmflg&(IPC_CREAT|IPC_EXCL) 为真,共享内存不存在创建,存在返回 -1,常常根据此特点来确认系统中是否存在相关的共享内存,shmflg,还用于对新创建的共享内存指定访问权限。semflg&(IPC_CREAT|IPC_EXCL) 为真,共享内存不存在创建,存在返回 -1,常常根据此特点来确认系统中是否存在相关的共享内存,semflg,还用于对新创建的共享内存指定访问权限。若存在返回已存在的信号量集的描述符,若不存在,如果semflg中指定了。
2024-12-02 22:04:07
664
原创 Linux应用开发————进程
进程的概念首先是在20世纪60年代初期有MIT的Multics分时系统和IBM的TSS/360系统引入的,在40多年的发展中,人们对进程有过各种各样的定义,列举较为著名的几种。进程是一个独立的可调度的活动(Cohen,Jofferson进程是一个抽象的实体,当它执行某个任务时,要分配和释放各种资源。P.Denning进程是可以并行执行的计算单位(MadnickDonovan。
2024-11-28 21:18:57
775
原创 Linux应用开发————常用系统IO函数
函数原型: ssize_t write(int fd,const void* buf,size_t count): 应用程序是无法直接访问硬件设备的,需要通过内核(OS)提供的系统调用服务来达到访问硬件设备目的,函数原型: ssize_t read(int fd,void* buf,size_t count)函数参数:path: 待操作的文件或目录,若path代表目录,则mode 只能取值为 F_OK。1.硬件访问---一切皆文件--调用系统IO相关函数操作设备文件从而控制硬件的响应。
2024-11-25 20:22:47
848
原创 数据结构——二叉树和BST
树是一种非线性结构,其严格的数学定义是:如果一组数据中除了第一个节点(第一个节点称为根节点,没有直接前驱节点)之外,其余任意节点有且仅有一个直接前驱,有零个或多个直接后继,这样的一组数据形成一棵树。这种特性简称为一对多的逻辑关系。即用于描述具有层次关系,类似组织架构关系的一种数据结构。
2024-11-11 15:47:20
721
2
原创 数据结构——栈和队列
顺序存储的队列之所以被称为循环队列,是因为可以利用更新队头队尾的下标信息,来循环地利用整个数组,出队入队时也不必移动当中的数据。出队:将队头节点从队列中剔除,函数名通常为outQueue()取队头:取得队头元素,但不出队,函数名通常为front()队列是最常见的概念,日常生活经常需要排队,仔细观察队列会发现,队列是一种逻辑结构,是一种特殊的线性表。基于这种固定一端操作的简单约定,栈获得了“后进先出”的基本特性,如下图所示,最后一个放入的元素,最先被拿出来。队头:可以删除节点的一端队尾:可以插入节点的一端。
2024-08-29 15:36:02
1342
原创 数据结构——顺序表和单链表
顺序存储中,由于逻辑关系是用物理位置来表达的,因此从上述示例代码可以很清楚看到,增删数据都非常困难,需要成片地移动数据。顺序表对数据节点的增删操作是很不友好的。优点1. 不需要多余的信息来记录数据间的关系,存储密度高2. 所有数据顺序存储在一片连续的内存中,支持立即访问任意一个随机数据,比如上述顺序表中第个节点是 s->data[i]缺点1. 插入、删除时需要保持数据的物理位置反映其逻辑关系,一般需要成片移动数据2. 当数据节点数量较多时,需要一整片较大的连续内存空间。
2024-08-26 19:41:00
1101
原创 C语言——位运算
如果两个数据长度不同(例如long型和short型),进行位运算时(如a & b,而a为long型,b为short型),系统会将二者按右端对齐。a
2024-08-23 16:28:38
1836
原创 C语言——文件
文件是指存储在外存储器上(一般代指磁盘,也可以是U盘,移动硬盘等)的数据的集合。1.文件内容的读取2.文件内容的写入数据的读取和写入可被视为针对文件进行输入和输出的操作,此时数据就像水流一样从外存储器流向内存,或者从内存流向外存储器,所以系统 形象的称文件操作为文件流C语言程序对文件的操作采用“文件缓冲机制”。就是说在程序中对文件的数据读写并不是直接 操作文件中的数据,而是系统会为文件在内存中创建“文件缓冲区”,程序对文件的操作,其实是在 缓冲区进行的。
2024-08-19 21:08:42
684
原创 C语言——构造(结构体)
2>全局位置的结构体名和局部位置的结构体名可以相同,就近原则(和普通变量的定义同理)结构体成员初始化时,可以部分初始化,部分初始化时一定要带大括号标明数据的范围。自定义数据类型的一种,关键字struct,结构体类型的变量可以存储多个不同数据类型的数据。定义匿名结构体的同时必须定义结构体变量,否则编译报错,结构体可以作为另一个结构体的成员。y,x是这个匿名结构体类型的变量;数据类型n 成员名称n:类似于定义变量,定义了结构体中的成员。缺点:只能使用一次,定义的结构体类型的同时就必须定义变量。
2024-08-15 10:17:45
1113
原创 C语言——指针(函数)
指针概述为函数修改实参提供支持。为动态内存管理提供支持。为动态数据结构提供支持。为内存访问提供另一种途径。指针概述系统为了内存管理的方便,将内存划分为一个个的内存单元(1个内存单元占1个字节),并为每一个内存单元进行了编号,内存单元的编号称为该内存单元的地址。一般情况下,我们每一个变量都是由多个内存单元构成的,所以每个变量的内存地址,其实就是这个变量对应的第一个内存单元的地址,也叫首地址。变量地址称为该变量的指针。变量地址往往是指变量在内存中第一个内存单元的编号(首地址)
2024-08-09 09:32:03
852
原创 C语言——函数(1)
③若使用用户定义的函数,而用户函数又在主调函数的后面,则应在主调函数中对被调用的函数进行声明。声明的作用是把函数名、函数参数的个数和类型等信息通知编译系统,以便在遇到函数时,编译系统能正确识别函数,并检查函数调用的合法性。或 return 表达式;系统不会为形参申请内存,只有当函数调用时,系统才会为形参申请内存,用于存储实际参数,并且当函数返回,系统会自动回收为形参申请的内存资源。是把函数名、函数参数的个数和返回类型等信息通知给编译系统,以便于在遇到函数时,编译系统能正确识别函数,并检查函数调用的合法性。
2024-08-05 17:47:15
1237
原创 C语言——数组
2. 每次排序假定第一个元素是最大/最小的,用第一个元素的后面的元素一一与第一个元素比较,遇到较大/较小的和第一个元素交换,访问完数组的最后一个元素,就排好了一个数;4.若要全部元素值为0,可以写成: int a[10]={0,0,0,0,0,0,0,0,0,0};2. sizeof(arr[0])用来计算数组中一个元素所占的字节大小,因为数组中的元素类型相同,所以计算哪一个都行。所申请的内存单元是连续的。
2024-08-01 19:37:01
726
原创 C语言——循环结构
因此,在有些问题中,如果其重复的操作(即循环体) 一次也不执行(即开始时条件就不满足),则要用while语句来处理,一般不用do-while语句来处理。for语句使用语法规则上,降低/避免因为忘记循环条件更新操作,而引起的产生无限循环的几率。goto只能在同一个函数中跳转,goto会破坏掉代码的结构,同时会降低代码的可读性。在用while语句实现的循环结构中,其循环体可能一次也不执行,即执行当型循环结构一开始,其条件就不满足。2.用在循环中(while,do...while,for...),
2024-07-31 18:29:21
2851
原创 C语言——分支结构程序设计
switch语句定义:根据条件是否成立,选择相应的操作:根据某个条件成立与否,决定是否执行指定的任务。选择结构中的常见形式:if(关系表达式){ 语句1;else语句2;关系表达式:含有关系运算符的表达式(>,=,
2024-07-29 17:40:58
994
原创 C语言——数据的输入输出和顺序结构
2.一个int型整数也可以%u格式输出,反之一个unsigned型整数也可以%d、%o、%x格式输出。如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则按实际的位数进行输出。在输出实型数据时,格式说明符中的m表示整个数据所占的宽度,n表示小数点后面所占的位数。需要指出的是,在C语言中,用于输出单精度实型数据与双精度实型数据格式说明符是一样的。%g或%G形式:根据数值的大小,自动选%f 或 %e中宽度较短的一种格式,不输出无意义的0。若n>m,m自动取n值。
2024-07-28 14:47:53
973
原创 C语言基础——运算符,程序设计结构,输入输出缓冲机制
缓冲区又称为缓存,它是内存空间的一部分。也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入 或者输出的数据,这部分预留的空间叫做缓冲区。缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区。
2024-07-25 20:15:56
758
原创 C语言基础——变量,数据类型转换,运算符
表达式就是表达某种意思的式子。在C语言中,表达式指的是运算符连接操作数(变量|常量...)的式子。由关系运算符构成的表达式称为关系表达式,关系表达式的值为boolean(布尔值)非0:关系成立,为真0:关系不成立,为假。
2024-07-24 22:50:22
1003
原创 C语言基础——进制转换
如果你加上了,那么它的行为是未定义的,有的编译器支持十进制加#,只不过输出结果和没有加#一样,有的编译器不支持加#,可能会报错,也可能会导致奇怪的输出;标准的C语言并不支持上面的二进制写法,只是有些编译器自己进行了扩展,才支持二进制数字。方法为:将十六进制数的每一位通过除2取余法(也可以通过权值法),得到二进制数,每一位十六进制数得到的二进制数都应该是4位,不足时在最左边补零。方法为:将八进制数的每一位通过除2取余法得到一个二进制数(也可以通过权值法),这个二进制数必须是3位,如果不够3 位,则最左补0。
2024-07-24 10:44:50
3795
原创 C语言基础——编译,分析,数据类型和进制
main函数的返回值是给上一级进程的,因此理论上讲在当前的单进程程序中,main函数的返回值究竟是多少都无所谓,因为根本没有去使用这个返回值,除非在多进程程序中,进程间才需要使用main函数的返回值来传递信息。而C中定义了一些字母前加 '\' 来表示常见的那些不能显示的ASCII字符,如'\0','\t','\n'等,就称为转义字符,因为后面的字符,都不是它本来的ASCII字符的意思了。原码:正数直接使用二进制来表达,最为直观的表示法,将十进制的数值转换成二进制的数值,比如a=100,在内存中是 00…
2024-07-23 21:08:22
824
原创 C语言基础——C语言介绍和嵌入式了解
总之,C 语言以其高效、直接、灵活的特性,成为了计算机编程中的经典之作,对于理解计算机底层运作原理和进行系统级开发具有重要意义。不同的系统都有不同的各种各样的工具,比如vsCode、QtCreator、Xcode、Linux命令行等,不同的环境有其各自的特色。不同的语言在不同的应用场景下具备不同的优势,例如,高级语言更易于理解和编写,而低级语言则更接近硬件,提供更高的性能和控制能力。C语言最初设计用于系统开发和底层编程,它是一种面向过程的语言,强调程序的顺序执行和数据的处理。
2024-07-22 17:58:32
628
原创 Linux基础——网络及进程相关指令
linux中的根目录以外的文件要想被访问,就需要将其关联Linux系统中的某个目录来实现,我们将这种关联操作称作“挂载”,这个目录就是“挂载点”,解除此关联关系的过程称作“卸载”。
2024-07-19 17:34:13
858
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人