笔记
丿与长歌
这个作者很懒,什么都没留下…
展开
-
JAVA的面向对象
一、封装1、概念:将东西包在一起,然后以新的完整形式呈现出来,将方法和字段一起包装到一个单元中,单元以类的形式实现。(类似于C语言的结构体)信息隐藏,隐藏对象的实现细节,不让外部直接访问到,将数据和方法包装进类中,加上具体实现的隐藏(访问修饰符),共同被称作封装,其结果是一个同时带有特征和行为的数据类型。“定义类,定义其属性、方法的过程称为封装类”。信息隐藏是OOP最重要的功能之一,也是使用访问修饰符的原因。信息隐藏的原因包括:①对模块的任何实现细节所作的更改不会影响使用该模块的代码②防止用原创 2022-02-10 03:20:50 · 354 阅读 · 1 评论 -
实现驱动开发
//pin4driver2.c(底层代码)#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h> //class devis原创 2022-02-04 18:03:18 · 967 阅读 · 0 评论 -
Linux内核设备驱动
框架图://pin4driver2.c#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h> //class devis原创 2022-02-04 13:41:51 · 274 阅读 · 0 评论 -
shell
shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,是一个命令解释器。另外,shell编程语言具有普遍编程语言的很多特点,用这种编程语言编写的shell程序与其他应用程序具有同样的效果。...原创 2022-02-04 00:41:38 · 277 阅读 · 0 评论 -
树莓派wiringPi库
wiringPi(特定平台,特定功能接口库)是一个树莓派IO控制库,为开发者提供了丰富的接口:GPIO控制,中断,多线程(用linux的原生线程会比较好)等等。查看是否安装了wiringPi库:硬件初始化函数:int wiringPiSetup(void)//返回执行状态,-1表示失败;当使用这个函数初始化树莓派引脚时,程序使用的是wiringPi引脚编号表。引脚的编号为0~16需要root权限int wiringPiSetupGpio(void)//返回执行状态,-1表示失败;当使用这个函数初始化原创 2022-02-01 21:51:33 · 1497 阅读 · 0 评论 -
Linux网络编程实战
*:在当前目录r:递归查找n:找出来显示行号i:不区分大小写//serverpro.c#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>//#include <linux/in.h>#include <arpa/inet.h>#include <netinet/in.h>#include <stdlib.h>#include.原创 2022-01-28 21:20:42 · 237 阅读 · 0 评论 -
Linux网络编程
Socket服务器和客户端的开发步骤:原创 2022-01-28 15:54:04 · 1489 阅读 · 0 评论 -
Linux线程
线程与进程典型的UNIX/Linux进程可以看成只有一个控制线程:一个线程在同一时刻只能做一件事情,有了多个控制线程后,在程序设计是可以把进程设计成在同一时刻做不止一件事情,每个线程各自处理独立的任务。...原创 2022-01-28 14:02:39 · 1786 阅读 · 0 评论 -
Linux进程间通信(IPC)
进程间通信:进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。其中Socket和Streams支持不同主机上的两个进程IPC。一、管道管道,通常指无名管道,是UNIX系统IPC最古老的形式。1、特点:①是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端。②只能用于具有亲缘关系的进程之间的通信(父子进程或者兄弟进程之间原创 2022-01-14 19:41:55 · 670 阅读 · 0 评论 -
popen函数
popen比system在应用中的好处:可以获取运行的输出结果NAME popen, pclose - pipe stream to or from a processSYNOPSIS #include <stdio.h> FILE *popen(const char *command, const char *type); int pclose(FILE *stream);参数说明:command:是一个指向以NULL结原创 2022-01-07 16:26:15 · 1137 阅读 · 0 评论 -
system函数
NAME system - execute a shell commandSYNOPSIS #include <stdlib.h> int system(const char *command);//运行程序的方法./a.outsh -c ./a.out//Linux中的system源码(可以理解为封装的execl函数)int system(const char * cmdstring){ pid_t pid;原创 2022-01-07 15:34:00 · 1035 阅读 · 0 评论 -
exec族函数配合fork使用
实现功能当父进程检测到输入为1的时候创建子进程把配置文件的字段值改掉//changeData.c#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(int argc,c原创 2022-01-07 14:56:41 · 511 阅读 · 0 评论 -
exec族函数
功能:在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。函数族:exec函数族分别是:exect,execlp,execle,execv,execvp,execvpe。函数原型:#include <unistd.h>extern char **environ;int execl(const char *path,const char *arg,...);//常用int execlp(const char *file,con原创 2022-01-06 23:07:32 · 766 阅读 · 0 评论 -
Linux中进程的退出
正常退出1、Main函数调用return。2、进程调用exit(),标准c库3、进程调用_exit()或者_Exit(),属于系统调用4、进程最后一个线程返回5、最后一个线程调用pthread_exit异常退出1、调用abort2、当进程收到某些信号时,比如ctrl+c3、最后一个线程对取消(cancellation)请求做出响应...原创 2022-01-06 11:22:48 · 1661 阅读 · 0 评论 -
fork、vfork函数及父进程与子进程
进程A创建了进程B,则称进程A为父进程,进程B为子进程#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main(){ pid_t pid; printf("father: id=%d\n",getpid()); pid = fork(); if (pid>0){ printf(原创 2022-01-06 09:40:54 · 839 阅读 · 0 评论 -
C程序的程序空间的分配
原创 2022-01-05 16:51:31 · 180 阅读 · 0 评论 -
Linux中把结构体写入文件
#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>struct Test{ int a; char c;};int main(int argc,cha原创 2022-01-05 15:46:46 · 655 阅读 · 0 评论 -
Liunx中修改配置文件
执行前文件test1的内容#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(int argc,char **argv){ int fdSrc;原创 2022-01-05 12:54:29 · 207 阅读 · 0 评论 -
Ncurse贪吃蛇小游戏
游戏代码#include <stdlib.h>#include <curses.h>#define UP 1#define DOWN -1#define LEFT 2#define RIGHT -2 struct snake{ int hang; int lie; struct snake *next;};struct snake food;struct snake *head = NULL;struct snake原创 2021-04-04 20:32:18 · 176 阅读 · 1 评论 -
关于C语言中结构体大小的计算
在C语言中结构体运用的十分广泛,然而结构体的大小并不是简单的把结构体里面各个成员的大小进行相加,而是应该考虑到结构体地址对齐对结构体大小的影响。结构体的对齐方式确实很浪费时间,可是按照计算机的访问机制,这种对齐方式大大提升了计算机的访问效率。结构体大小的计算方法:从结构体的第一个成员向下开始计算,并遵循以下原则①前面所有成员所占地址空间的大小必须是其后一个成员占地址空间大小的整数倍。(0是任何数的整数倍,或第一个成员除外)②结构体的大小必须是结构体里面各个成员(数组除外,结构中包含结构体,且被包含原创 2021-04-03 00:04:44 · 637 阅读 · 0 评论 -
Linux中的mycp
#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int main(int argc,char **argv){ int fdSrc; int fdDes;原创 2022-01-05 11:29:01 · 344 阅读 · 0 评论 -
二维数组小知识
#include <stdio.h>int main(){ int arr[3][4] = {{11,22,33,44},{51,52,53,54},{61,62,63.64}}; printf("arr is father address: %p,excursion one is %p\n",arr,arr+1); printf("arr[0] is child address: %p,excursion one is %p\n",arr原创 2022-01-03 13:32:46 · 252 阅读 · 0 评论 -
简单选择排序算法
#include <stdio.h>int main(){ int array[] = {38,87,45,26,112,345,1,4,6,6,9,26}; int i; int j; int tmp; int len = sizeof(array)/sizeof(array[0]); for(i=0;i<len-1;i++){ for(j=i+1;j&原创 2022-01-02 14:24:00 · 291 阅读 · 0 评论 -
冒泡排序算法
冒泡排序#include <stdio.h>int main(){ int array[] = {38,87,45,26,112,345,1,4,6,6,9,26}; int i; int j; int tmp; int len = sizeof(array)/sizeof(array[0]); for(i=0;i<len-1;i++){ for(j=0;原创 2022-01-02 13:39:37 · 310 阅读 · 0 评论 -
关于C语言链表和结构体的小测试
一、测试题如下:链表A,每个节点存放一个新的链表B1,B2,B3,B4,B5的头结点。场景:一个年级,相当链表A,该年级5个班,每个班5个人,相当于链表B1~B5要求:做一个学生成绩管理系统(学生成绩有语文、数学、英语)功能:录入成绩,找最三科总分的最高分,最低分,算出平均分二、参考程序如下#include <stdio.h>#include <stdlib.h>#include <unistd.h>struct Great{ struct Stu原创 2021-04-01 22:43:42 · 114 阅读 · 0 评论