Linux和C学习日志
文章平均质量分 66
记录学习
地落点孤
这个作者很懒,什么都没留下…
展开
-
linux网络编程
1.基本概念1)网络模型2)基本协议第一部分称为网络层。主要包括Internet 协议(IP)、网际控制报文协议(ICMP)和地址解析协议(ARP) Internet 协议(IP)。网际控制报文协议(ICMP):允许网际路由器传输差错信息或测试报文。地址解析协议(ARP):它处于IP和数据链路层之间,根据ip地址找到mac地址。IP主要功能:数据传送 ,寻址 ,路由选择,数据报文的分段第二部分是传输层协议,包括传输控制协议和用户数据报文协议传输控制协议(TCP):原创 2022-03-09 21:02:37 · 7950 阅读 · 1 评论 -
Linux多线程编程
1)线程的基本操作1.pthread_create()#include <pthread.h> int pthread_create(pthread_t * tidp,const pthread_attr_t * attr,void*(*start_rtn)(void),void*arg)创建线程成功后返回值为0tidp:线程id,create会创建线程,并自动将线程id返回给tidpattr:线程属性,通常为NULLstart_rtn:线程要执行的函数,通常参数.原创 2022-03-07 21:28:39 · 667 阅读 · 0 评论 -
Linux进程间通信编程
进程间通信方式现在Linux使用的进程间通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信号(signal)3、消息队列4、共享内存5、信号量6、套接字(socket)1.管道:管道是单向的、先进先出的,它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。数据被一个进程读出后,将被从管道中删除。进程试图读空管道时,进程将阻塞。同样,管道已经满时,进程再试图向管道写入数据,进程原创 2022-03-05 21:21:07 · 482 阅读 · 0 评论 -
Linux进程控制编程
1.概念进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元;进程的状态:进程正在占用CPU:执行状态进程因为等待某个资源而睡眠:等待状态进程一切准备就绪等待cpu:就绪状态2.getpid()#include <sys/types.h>#include <unistd.h>pid_t getpid(void) 获取本进程IDpid_t getppid(void) 获取父进程ID3.fork()#inclu原创 2022-03-03 21:00:32 · 519 阅读 · 0 评论 -
数据库基本概念以及Sqlite3的使用基本操作
1.数据库概述数据库(DataBase,简记为DB)就是一个有结构的、集成的、可共享的统一管理的数据集合。所谓有结构的,指的是数据是按一定的模型组织起来的。所谓集成的,是指数据库中集中存放着企业各种各样的数据。所谓共享,指的是数据库中的数据可以被不同的用户使用。所谓统一管理的,指的是数据库由DBMS统一管理,任何数据访问都是通过DBMS来完成的。数据库管理系统 (DataBase Management System,DBMS): 所有访问数据库的请求都由DBMS来完成的。2.数据原创 2022-02-27 20:18:52 · 1283 阅读 · 0 评论 -
Linux系统调用和c库函数对文件的操作
系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务。文件描述符是一个非负的整数,它是一个索引值,并指向内核中每个进程的记录表中; 一个进程启动时,都会打开三个文件: 标准输入: STDIN_FILENO 0 标准输出: STDOUT_FILENO 1 标准出错处理:STDERR_FILENO 2cre...原创 2022-02-25 19:53:40 · 465 阅读 · 0 评论 -
(C)排序
方法分类:内部排序:在内存中进行,适于小文件外部排序:使用内存和外存,适于大文件,内存不够用1.直接插入排序:将前n位看做一个有序序列,n+1位插入时,先从n位往前遍历,直到找到比n+1位小的数,此数后的数都往后移一位,将n+1插到此数后面,此时前n+1位为有序序列,重复此操作。2.希尔排序:1.先选定一个小于N的整数gap作为第一增量,然后将所有距离为gap的元素分在同一组,并对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量,重复上..原创 2022-02-23 19:52:58 · 188 阅读 · 0 评论 -
平衡二叉树
平衡因子 BF:左子树和右子树高度差 =左子树高度 - 右子树高度的值(简称 BF)转载 2022-02-21 20:24:05 · 80 阅读 · 0 评论 -
一级指针和二级指针使用区别
int a=1; a是一个整形变量a=1,&a=0x0001int *b=&a;b是一个指针,指向变量a,b存储的是a的地址b=&a=0x0001,*b=a=1,&b=0x0002int **c=&b;c是二级指针,指向指针b,c存储的b的地址c=&b=0x0002,*c=b=&a=0x0001,**c=*b=a=1,&c=0x0003...原创 2022-02-16 15:16:38 · 772 阅读 · 0 评论 -
数组指针和指针数组
int *a[10]:指针数组,是一个数组,里面装着指针,表示每一个单元存放一个int类型的指针int (*a)[10]:数组指针,是一个指针,指向一个数组,原创 2022-02-15 09:25:33 · 111 阅读 · 0 评论 -
数值在计算机中的存储方式
指针在64位中占8个字节,在32位中占4个字节char *c[5]:指针数组,存放了5个指针的数组,占40个字节。char (*c) [5]:数组指针,指向一个存放五个元素的数组指针,占8个字节。结构体的内存对齐:以最大的数据类型为单位进行字节对齐。如果是结构体的嵌套,就将结构体展开,看最大的数据类型。例:Cp为指针,占8个字节。*p为结构体,占32字节。p->a占1个字节,p->e占8个字节。int c:16。说明c占16位,2个字节。数值在计算机内的存原创 2022-02-03 21:43:35 · 596 阅读 · 0 评论 -
计算机内存的分配区域
计算机内存的分配区域:栈:系统栈和函数栈 栈是会放满的堆:堆的空间要比栈大得多,由用户自己申请,由用户自己释放,寿命由用户自己决定。当指向的内存被释放掉以后,指针依然指着,但是内存已经没了。在函数里使用malloc时,也能返回创建的局部变量。在fun2()函数里malloc申请分配内存后,即使在main()里面free()也是没用的,free()仅仅释放了这个指针,并没有释放函数里的内存空间。静态全局区:静态变量和全局变量全局变量...原创 2022-01-30 13:45:30 · 378 阅读 · 0 评论 -
(C)数组,指针
数组:数组定义:由若干个相同类型的相关数据项按顺序存储在一起,构成数组(array) ;数组实际上是同种类型、有序的数据的集合。同一数组中的元素必须具有相同的数据类型,而且这组数据在内存中将占据一段连续的存储单元。下标值n表示为所在维的数组元素个数,该维的数组下标的上界是n-1;C语言中数组下标下界始终为0。维数是下标的个数。1.数组名后使用方括号括起来的常数表达式,不能用圆括号。int a(10); ×2.常数表达式表示元素的个数,即数组长度,而不是数组的上界。3.常数表达式中可以..原创 2022-01-25 20:49:13 · 510 阅读 · 0 评论 -
(C)参数顺序点,命令行参数,可变参数,递归函数,指针函数,函数指针
1.函数参数顺序点:输出顺序:从左往右求值顺序:从右往左。2.带参数的main函数和命令行参数argc为输入参数的个数,argv为输入参数的存储的地址3.可变参数列表调用参数表以前,定义一个va_list类型变量,对ap进行初始化,初始化完成后,ap指向可变参数表中的第一个参数(由va_start函数实现),获取参数,调用va_arg函数,第一个参数是ap,第二个参数是要获取的参数的指定类型,然后返回这个指定类型的值,并且把ap的位置指向列表的下一个变量位置...原创 2022-01-23 20:55:29 · 237 阅读 · 0 评论 -
(C)关键字const,volatile,struct,union,enum
const:声明只读变量1.const int * a; == int const *a;*a(即所指的值)是不可以改变的,a(即所指值的地址)是可以改变的。在编译时会出错,显示(*a)++为只读变量,不可以修改,当将这条语句注释后,会输出其值。2.int * const a;(对于此类要先进行初始化)*a(即所指的值)是可以改变的,a(即所指值的地址)不可以改变。显示a为只读变量,所以要在一开始要对a进行初始化,且不能写a++。3.int ...原创 2022-01-21 22:02:54 · 1041 阅读 · 0 评论 -
(C)数据类型及范围,运算符,输入输出,变量初始化和存储类型
1.1 数据的表现形式在C中,数据有两种表现形式:常量和变量一.常量1.整型常量:12132.实型常量:1)十进制小数 :1.232)指数形式:1.23E3(1.23*10^3)3.字符常量:1)普通字符:‘d’,‘5’2)转义字符:\n-------换行\t -------空出一个tab键的位置\abc ----------abc为八进制,如\101十进制为65,是A的ASCII码值,则直接输出A\xabc--------abc为16进制,如\x4...原创 2022-01-19 21:24:10 · 551 阅读 · 0 评论