自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构(1)

集合举例:候车室线性举例:排队问题,随着时间推移,后面不断地有人来,我慢慢往前挪树:图:网络节点,地图路线顺序存储:数组存链式:malloc申请空间,用链表存左边最好,右边最差。

2024-07-22 17:57:28 245 1

原创 linux高级编程(11)网络编程

TCP/IP模型 ==》网际互联模型 ==》分为4层:实用模型 ===》工业标准。1.OSI模型 ===》开放系统互联模型 ==》分为7层:理想模型 ==》尚未实现。物理层: ARP RARP ... ip--->mac。链路层 交换机 数据的格式化 帧 校验。传输层 ====》端口号tcp udp。接口层====》网卡 驱动 1GB。应用层 ====》应用程序。表示层 加密解密 gzip。网络层====》IP地址。

2024-07-22 09:13:50 651

原创 linux高级编程(10)信号通信

进程间通信 ===》信号通信应用:异步通信。中断,,1~64:32应用编程。如何相应:wait发送进程 信号 接受进程1.发送端功能:通过该函数可以给pid进程发送信号为sig的系统信号。参数:pid 要接收信号的进程pidsig 当前程序要发送的信号编号 《=== kill -1返回值:成功 0失败 -1信号发送的过程练习:编写一个自己的kill程序,尽量模拟kill命令的效果。

2024-07-22 09:13:29 589

原创 linux高级编程(9)进程间通信

练习5:cp操作,父进程与子进程,把父进程的内容cp到子进程里面。2的信号量集就是semaphore。练习3:broken操作(管道破裂)

2024-07-02 20:46:47 199

原创 linux高级编程(8)线程

linux下的线程同步===》信号量机制===》semaphore.h posix。信号量的定义===》信号量的初始化==》信号量的PV操作===》信号量的销毁。互斥机制===》互斥锁===》保证临界资源的访问控制。定义互斥锁==》初始化锁==》加锁==》解锁==》销毁。互斥===》在多线程中对临界资源的排他性访问。===》有一定先后顺序的对资源的排他性访问。信号量的类型 信号量的变量。1.无名信号量==》线程间通信。2.有名信号量==》进程间通信。线程的同步===》同步。

2024-07-01 17:54:22 251

原创 linux高级编程(7)线程

优点:比多进程节省资源,可以共享变量概念:线程是轻量级进程,一般是一个进程中的多个任务。进程是系统中最小的资源分配单位。(一般做比较大的任务)线程是系统中最小的执行单位。特征:1.共享资源(只要能传参就能共享)2.效率高30%3.三方库: pthread clone posix3.1 编写代码头文件 :pthread.h3.2编译代码加载库: -lpthread library缺点:1.线程和进程相比,稳定性,稍微差些2.现成的调试gdb,相对麻烦些。*123。

2024-06-28 17:55:56 658

原创 Linux高级编程(6)进程

要用kill -9 pid号杀死儿子。

2024-06-28 01:07:22 271

原创 Linux高级编程(5)进程

pcb 是一个结构体 process control block 进程控制块PID 进程标识符当前工作路径 chdir进程打开的文件列表 fopen...ulimit -a,显示进程资源的上限进程和程序的区别?程序:静态存储在硬盘中代码,数据的集合进程:动态程序执行的过程,包括进程的创建,调度,消亡(1)程序是永存,进程是暂时的(2)进程有程序变化,程序没有(3)进程可以并发,程序无并发(4)进程与进程会存在竞争计算机的资源(5)一个程序可以运行多次,变成多个进程。

2024-06-26 19:46:52 1169

原创 Linux高级编程(4)

文件描述符:操作系统内核对打开的文件的表示方式 //本质是一个整型的数值。O_RDWR //读写。O_RDONLY //只读。O_WRONLY //只写。@pathname 要打开的文件名 --- 字符串形式。@mode 表示文件的权限,只有创建文件时需要指定。单纯创建0_CREAT 就够用了,因为是或的关系。@flags 打开文件的模式。umask是掩码(制定权限用的)用法:umask 000(例子)fopen 库函数。

2024-06-24 18:03:11 660

原创 Linux高级编程(3)

存了多少个字节。

2024-06-21 17:20:53 767

原创 Linux环境编程(高级编程2)

s socket 套接字文件 用于进程间及网络通信。l 软连接文件 类似Windows快捷方式。p pipe管道 进程间通信。b 块设备文件 硬盘。音响 // 识别 字符设备文件。摄像头:字符设备识别文件。自定义的话:出错原因。perror(“自定义的话”);- 常规文件。stream---流//d 目录文件。

2024-06-20 18:04:10 527

原创 Linux环境编程(高级编程)

基于Linux操作系统这个环境,编程。分为以下四个模块:文件编程多任务编程(进程,线程)网络编程网页+数据库例:网易.mp3把歌曲保存成mp3这个文件 //文件编程歌曲从服务器传输到本地 //网络编程听歌的同时,可以聊天,可以玩游戏 //多任务编程目标:实现应用的功能使用Linux 系统提供的一些函数来实现功能学习的方式方法:1.Linux提供的这些函数---该怎么用?

2024-06-19 17:58:28 493

原创 单片机定时器和串口

并行特点:电路要复杂一些,硬件资源使用要多一些,效率高,传输距离短,串行特点:电路简单,节省硬件资源,效率低。数据(信息)的传递和交换。半双工:某一时刻,只能有一端收,一端发。一次性多位数据给到 --- 并行通信。TL0--低八位寄存器(计数初值)TH0--高八位寄存器(计数初值)定时器//计数 --- 脉冲的数。一位一位给数据 --- 串行通信。TCON--计时器开关。TMOD--工作模式。51单片机内部的通信。51单片机外部的通信。

2024-06-14 18:01:42 194

原创 单片机基础3

(bit1)IE0 --- 外部中断的请求标志位 当 外部中断0发生中断时,这一位会被设置1。在执行一个任务的过程中,被另外一个任务打断,处理完这个中断后,返回来继续原先的任务。进行单偏激操作时,有些寄存器的操作,可以直接影响到引脚的变化。中断是cpu提供的一个功能部件//用的时候需要开启这项功能。IT1 = 1//下降沿触发。s3c 2440 //arm----不支持中断嵌套。(bit7)EX0 = 1//开 外部中断0。中断优先级 //多个中断同时来了。(bit7)EA = 1//开总中断。

2024-06-13 17:59:33 98

原创 单片机基础2

检测按键 返回按键的编号。

2024-06-12 17:58:04 86

原创 单片机基础

RAM--random access memory//随机访问存储器。//假设控制p20,p20控制的状态---低电平状态(已经有电源了)ROM--read only memory(记忆体)//搞清楚,电路的基本链接 --- 找到要控制的引脚。//(2).这些引脚控制成什么状态。//(1).要控制那些引脚。

2024-06-11 18:01:38 134

原创 枚举和typedef

写程序---控制寄存器中的某些二进制位--->关联到某些硬件引脚--->电平的变化。//typedef是不是定义了一个新的类型?//此时表示给int型起了一个别名叫a。4.枚举常量,可以给初值,给了初值之后,后面的值会依次影响到。typedef不能定义出一个新的类型,它是给已有类型起别名。//左移n位,相当于乘以2^n。//定义了一个int型变量a。0000 0010//2(左移一位)0000 0100//4(左移两位)操作数2 表示要移动的位数。a

2024-06-05 17:55:09 360

原创 链表和共用体

不足,插入数据 删除数据 不方便。[数据n1] [数据n2] [数据n3]struct Node *next;//保存地址--指向下一个节点。//空链表 --- 只有头节点,但是没有有效的数据节点。数据结构---指的是 数据的组织形式//链表 树 图。//数据域 -- 存储要处理的数据。数组:数据结构体 --- 操作时候的特点,无头--第一个节点数据域为随机值或者无效值。操作://数据结构体 数据的处理 增删改查。

2024-06-04 17:59:46 286

原创 结构体与共用体

/ 成员与成员之间的初始化的值,用逗号隔开。//s变量中,存储的是某一个学生地信息。//初始化,需要按照成员列表的顺序依次初始化。(不能再定义了,因为没有结构体名,因此这种方法只适用于使用一次的变量)3.成员列表//来描述结构体类型中具体的一些数据。2.结构体名//表明这个结构体类型的名称。姓名 |学号 |班级 |分数 | 表头---类型。int---整型数据 学生类型---结构体:提供一种可以让程序员自定义数据类型的方式。声明类型的同时,定义变量,但是结构体名,可以省略。

2024-06-03 17:56:39 430

原创 函数的指针

int (int a,int b)//这表示一类函数---返回值为int型,形参为两个int型的函数。直接使用变量名+()传实参,进行函数调用即可。函数指针变量使用时,可以不进行*p运算。指针数组 //char* s[10]//函数名---代表函数的入口地址。把函数名去掉,剩下的是函数的类型。数组指针 int(*p)[4]回调函数(callback)

2024-05-30 17:53:00 160

原创 指针进阶2

/如果,不希望修改*s1的数据。//*s1和s1本身都不能被修改。//s1的空间开在栈上,但是s1指向的"字符串常量"//基类型int[4]这种类型----数组类型。//存放"字符串常量区"//此时还是*s1不能被修改。//表示将*s1限定为只读。//常量区的数据不能修改。2.const修饰的变量,为只读变量//变量还是变量 只是成了只读的。//s数组名---数组首元素的地址&s[0]//s的空间开在栈上。&a[0]//int [4] *指针类型。const char *s//*s这种方式修改不了数据。

2024-05-29 17:57:26 642

原创 指针的进阶

step6:之后,对比基准值小的一部分继续快速排序,比基准值大的一部分继续快速排序//递归。step5:重复2-4,直到begin与end相遇,将相遇位置上的值与基准位置上的值交换。step1:找一个基准值 k//假设数组的第一个元素为基准值a[0]p-q//想通类型的指针减出来的结果为,地址之间相差的元素个数。step2:从右向左,找比基准值小的值。step3:从左往右,找比基准值大的值。迭代//从上一个推到下一个的过程。p--//往前跳了一个元素。p+q//不能做指针的加法。关系运算(前提两者同类型)

2024-05-28 18:00:15 183

原创 指针的相关

/a是一个float类型的变量,&a表示获得了这块空间的地址,这个值的类型是float*//表示的p中存放的 地址编号所代表的那块空间中要存放的数据的类型。//p指向的数据类型是int类型 //p指向的类型是基类型(目标类型)数组名 ---代表值---首元素的地址(只要知道首元素的地址了后面的地址就都能推出来来)//p的基类型是int(看的是这行开头的int的类型)//指针是一种数据类型 ,p是int型的指针(地址)类型。(1)基类型---表示地址编号所代表的那块空间中要存放的数据的类型。

2024-05-27 18:02:58 234

原创 预处理命令

预处理命令

2024-05-25 17:02:28 316 1

空空如也

空空如也

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

TA关注的人

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