自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 智能家居 ..

0.什么是设计模式是代码设计经验的总结,稳定,扩展性更强,一系列编程思想算法不是设计模式,因为算法致力于解决问题而非设计问题。 设计模式通常描述了一组相互紧密作用的类与对象。(Java) 23种,让代码更容易被他人理解、保证代码可靠性、程序的重用性。从建筑设计领域引入到计算机科学中来的。C 面向过程(一门不太友好的面向对象的语言)Java 面向对象 http://www.runoob.com/design-pattern/design-pattern-tutorial.html1.什么是类和对象类是一种用户

2022-06-12 17:16:18 98 1

原创 树莓派零基础

树莓派刷机

2022-01-15 21:42:50 246

原创 Linux--socket 服务端与客户端

一.TCP/UDP对比1.TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前 不需要建立连接2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付3. TCP面向字节流, 实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如P电话,实时视频会议等)4、每一条TCP连接只能是点到点的;U..

2021-09-29 21:04:52 759

原创 Linux--线程

一. 进程与线程  典型的UNIX/Linux进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程后,在程序设计时可以把进程设计成在同一时刻做不止一件事,每个线程各自处理独立的任务。    进程是程序执行时的一个实例,是担当分配系统资源(CPU时间、内存等)的基本单位。在面向线程设计的系统中,进程本身不是基本运行单位,而是线程的容器。程序本身只是指令、数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例。  线程是操作系统能够进行运算调度的最小单位。它被

2021-09-27 21:12:21 73

原创 Linux--信号量

信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。1、特点信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。 信号量基于操作系统的 PV 操作,程序对信号量的操作都是原子操作。 每次对信号量的 PV 操作不仅限于对信号量值加 1 或减 1,而且可以加减任意正整数。 支持信号量组。2、原型最简单的信号量是只能取 0 和 1 的变量,这也是信号量最常见的一种形式,叫做二值信号量(Binary

2021-09-25 23:22:17 130

原创 Linux--信号

1.信号:信号是unix中最古老的进程通信的一种方式,他是软件层次上对中断机制的模拟,是一种异步通信方式,信号可以实现用户空间进程和内核空间进程的交互,内核进程可以利用他通知用户空间进程发生了哪些系统事件,我们可以任何时候给进程发送信号而无需知道进程的状态,如果进程当前并未处于执行态,则信号则会由内核保存起来,如果进程是阻塞状态,那么信号传递会被延迟,直到阻塞结束时才会传递给进程。看一下kill -l列出的各种命令:会发现一个规律,前32种信号会有各种不同的名称,后32种会以“SIGRT...

2021-09-25 22:03:40 49

原创 Linux--共享内存

共享内存共享内存(Shared Memory),指两个或多个进程共享一个给定的存储区。1、特点共享内存是最快的一种 IPC,因为进程是直接对内存进行存取。因为多个进程可以同时操作,所以需要进行同步。信号量+共享内存通常结合在一起使用,信号量用来同步对共享内存的访问。2、原型#include <sys/shm.h>// 创建或获取一个共享内存:成功返回共享内存ID,失败返回-1int shmget(key_t key, size_t size, int flag

2021-09-25 20:40:49 163

原创 Linux--消息队列

一. 消息队列的通信原理消息队列放在链表当中,链表中每一个消息放在结构体当中,(链表中每一项都是一个结构体)。AB使用同一个队列进行通讯消息队列按照消息的类型进行读取二、在Linux中使用消息队列(1)创建或打开消息队列函数int msgget(key_t, key, int msgflg);(2)添加消息函数int msgsnd(int msgid, const void *msg_ptr, size_t msg_sz, int msgflg);如果调用成.

2021-09-24 23:23:31 291

原创 Linux--进程间通信--管道

一.管道通信(无名管道)1.用途:管道主要用于父子进程或者兄弟进程间的数据读写,命名管道则可以在无关联的进程间进行沟通传递数据。2.在Linux系统中的进程通信中,管道某一时刻只能单一方向传递数据,不能双向传递数据,这种工作模式就叫做半双工模式。半双工工作模式的管道通信是只能从一端写数据,从另一端读数据。3. 管道创建和管道关闭管道由Linux系统提供的pipe()函数创建,该函数原型为:#include <unistd.h>int pipe(int filedes[2])

2021-09-23 23:27:38 94

原创 Linux--popen函数

比system在应用中的好处: 可以获取运行中的好处函数原型:  #include <stdio.h>  FILE popen( const char *command, const char* mode )比较system函数与popen函数:system函数下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>//函数原型:int execl(co...

2021-09-21 00:10:48 284

原创 Linux--system函数

一. system()函数的返回值如下:成功,则返回进程的状态值;当sh不能执行时,返回127;失败返向-1;头文件:#include <stdlib.h>原型:int system(const char *command);#include <stdio.h> #include <stdlib.h>#include <sys/types.h> #include <unistd.h>..

2021-09-20 23:40:11 214

原创 Linux--exec族函数

exec族函数作用:我们用fork函数创建新进程后,经常会在新进程中调用exec函数去执行另外一个程序。当进程调用exec函数时,该进程被完全替换为新程序。因为调用exec函数并不创建新进程,所以前后进程的ID并没有改变。功能:在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。原型:#include <unistd.h>extern char **environ;int execl(const char *pat

2021-09-20 19:22:39 124

原创 Linux--vfork函数

1.vfork也可以创建进程,与forkde的区别 1.1 vfork直接使用父进程存储空间,不拷贝 1.2 vfork保证子进程先运行,当子进程调用exit退出后,父进程才执行#include<stdio.h>#include <sys/types.h>#include <unistd.h>#include<stdlib.h>int main(){ pid_t pid; int cnt = 0...

2021-09-18 09:07:20 386

原创 Linux--fork函数

1. 使用fork函数创建一个进程pid t fark(void);fork函数调用成功,返回两次,返回值为0,代表当前进程是子进程,返回值非负数,代表当前进程为父进程,调用失败,返回-1

2021-09-17 12:41:30 54

原创 Linux--进程

1. 程序与进程的区别 进程是程序的一次运行活动2. 如何查看系统中有哪些进程 a. 使用ps指令查看 b. 实际使用中,配合grep查找程序中是否存在某一个进程 eg. ps -aus|grep init3. 什么是进程标识符 每个进程都有一个非负整数表示的唯一ID,叫做pid,类似身份证4.什么是父进程,什么是子进程 程序A创建了程序B,A为父进程,B为子进程5.C程序的存储空间是如何分配的 ...

2021-09-15 20:56:45 55

原创 Linux--标准C库写入文件

一.写入字符//原型: FILE *fopen(const char *path, const char *mode); FILE *fp; char *str = "It is a cat"; char readBuf[128] = {0}; fp = fopen("./Liu.txt","w+");// 原型: size_t fwrite(const void *ptr, size_t size, size_t nmemb,FI

2021-09-15 17:43:23 901

原创 Linux--写入文件

一.写入一个整数具体操作:int fd;int data = 100;int data2 = 0;fd = open("./file1",O_RDWR);int n_write = write(fd,&data,sizeof(int));lseek(fd,0,SEEK_SET);int n_read = read(fd,&data2,sizeof(int));运行显示:read: 100文件(二进制):d^@^@^@a^@^@^@e...

2021-09-13 11:55:46 711

原创 Linux--文件操作

1.文件标识符 0 :标准输入 1 :标准输出 2 :标准错误eg : int fd; char *readbuf; int n_read = read(0,readbuf,6); int n_write = write(1,readbuf,strlen(readbuf));2 .静态文件 和 动态文件 动态文件 --> open静态文件后...

2021-09-12 11:49:51 66

原创 Linux--文件

*头文件#include<>

2021-09-08 21:28:49 100

原创 Linux--遇见的一些小错误

一.问题:linux下运行出现 “sh: 1: pause: not found” 原因:在windows系统下,使用此语句,但linux不认识 system("pause"); 解决方法:删去system("pause");二. 问题: 编程时出现:[Warning] incompatible implicit declaration of built-in function ...

2021-08-21 13:09:42 548

原创 Linux——一些基础操作

一. VI操作 1. 打开操作界面 Ctrl + Alt + t 进入VI:输入vi + 空格 + a.c 2.此时,无法输入,为命令行模式 进入输入界面 :按 i (左下角出现 INSERT :可以编辑代码) 再回到命令行模式:按 Esc 3.退出VI,保存代码 命令行模式下 :输入 :冒号 + wq二. 基本指令 ......

2021-08-16 22:10:04 52

空空如也

空空如也

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

TA关注的人

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