自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 某马java类型转换

表示数据范围从小到大

2022-07-11 10:01:48 138 1

原创 java 流程控制语句结构

流程控制语句结构分为:1、顺序结构:从上到下依次执行2、分支结构:多个分支选择其中一个分支执行3、循环结构:重复执行某些代码3.1 顺序结构执行过程:从上到下顺序执行3.1.1 输出语句1、System.out.print(输出内容); #输出内容后不换行2、System.out.println(输出内容); #输出内容后换行#输出常量System.out.print(1);System.out.print('尚');System.out.print(44.4);System.o

2022-02-13 15:59:58 281

原创 java数据类型

2.3.3 进制(了解,可以暂时忽略)1、进制的分类:(1)十进制​ 数字组成:0-9​ 进位规则:逢十进一(2)二进制​ 数字组成:0-1​ 进位规则:逢二进一(3)八进制​ 数字组成:0-7​ 进位规则:逢八进一(4)十六进制​ 数字组成:0-9,af(或AF)​ 进位规则:逢十六进一2、请分别用四种类型的进制来表示10,并输出它的结果:(了解)(1)十进制:正常表示System.out.println(10);(2)二进制:0b或0B开头System.out.pri

2022-02-13 15:52:18 183

原创 java基础语法

第二章 Java的基础语法2.1 标识符简单的说,凡是程序员自己命名的部分都可以称为标识符。即给类、变量、方法、包等命名的字符序列,称为标识符。1、标识符的命名规则(1)Java的标识符只能使用26个英文字母大小写,0-9的数字,下划线_,美元符号$(2)不能使用Java的关键字(包含保留字)和特殊值(3)数字不能开头(4)不能包含空格(5)严格区分大小写2、标识符的命名规范(1)见名知意(2)类名、接口名等:每个单词的首字母都大写,形式:XxxYyyZzz,例如:HelloWor

2022-02-13 15:25:52 109

原创 java概述

java历史Java诞生于SUN(Stanford University Network),09年SUN被Oracle(甲骨文)收购。Java之父是詹姆斯.高斯林(James Gosling)。1996年发布JDK1.0版。我们学习的Java8。1.2 Java语言最主要的特点特点一:面向对象两个基本概念:类、对象三大特性:封装、继承、多态特点二:健壮性吸收了C/C++语言的优点,但去掉了其影响程序健壮性的部分(如指针、内存的申请与释放等),提供了一个相对安全的内存管理和访问机制.

2022-02-13 15:19:48 72

原创 linux库概念及相关编程

树莓派刷机树莓派登录2.1 串口2.1.1设备破解默认情况树莓派的串口和蓝牙连接,想办法断开蓝牙连接,把串口用来数据通信,a, 观看树莓派的启动

2021-12-31 15:00:34 731

原创 线程 id的获取

#include <pthread.h>pthread_t pthread_self(void);// 返回值: 调用线程的id

2021-12-29 16:58:11 2180

原创 linux进程间通信(IPC) --- 共享内存

共享内存概述共享内存允许两个或者多个进程共享给定的存储区域共享内存的特点1.共享内存是进程间共享数据的一种最快的方法一个进程向共享的内存区域写入了数据,共享这个内存区域的所有进程就可以立刻看到其中的内容2.使用共享内存要注意的是多个进程之间对一个给定存储区访问的互斥若一个进程正在向共享内存区写数据,则在它做完这一步操作前,别的进程不应当去读,写这些数据。上面图片讲解:左右两边每一个进程在创建的时候,都会给它分配4G的虚拟内存,所以左右两边的空间叫做虚拟内存,而中间的是物理内存,也就是内存条

2021-12-27 23:46:01 546

原创 linux进程间通信(IPC) ------ 消息队列

消息队列消息队列是消息的链表,存放在内存中,由内核维护IPC对象除了最原始的进程间通信方式,信号,无名管道,有名管道外,还有三种进程间通信方式称之为IPC对象IPC 对象的分类; 消息队列,共享内存,信号灯集IPC对象也是在内核空间开辟区域,每一种IPC对象创建好之后,都会将其设置为全局,并且会给其分配一个编号,只要找到唯一的这个编号,就可以进行通信,所以不相关的进程,也可以通过IPC对象进行通信IPC对象创建好之后,会在当前系统中可见,只要不删除或者不关闭系统,就会一直存在查看已经创建的.

2021-12-27 21:31:01 794

原创 linux进程间通信(IPC)--------- 有名管道

有名管道也称命名管道命名管道(FIFO)和管道基本相同,但也有一些显著的不同其特点是4.FIFO在文件系统中作为一个特殊的文件而存在并且在文件系统中可见,所以有名管道可以实现不相关进程间通信,但FIFO中的内容却存放在内存中7.当使用FIFO的进程退出后,FIFO文件将继续保存在文件系统中以便以后使用8.FIFO有名字,不相关的进程可以通过打开命名管道进行通信通过有名管道所创建的进程间通信方式,最终会在本地给你创建一个p类型的文件就是一个管道文件。linux中文件的类型有7中b .

2021-12-27 14:41:44 250

原创 linux进程间通信(IPC) ---- 文件描述符 dup dup2

文件描述符概述文件描述符是非负整数,是文件的标识用户使用文件描述符(file descriptor)来访问文件利用open打开一个文件时,内核会返回一个文件描述符每个进程都有一张文件描述符的表,进程刚被创建时,标准输入,标准输出,标准错误输出设备文件被打开,对应的文件描述符0, 1, 2记录在表中在进程中打开其他文件时,系统会返回文件描述符表中最小可用的文件描述符,并将此文件描述符记录在表中注意:linux中一个进程最多只能打开NR_OPEN_DEFAULT(即1024)个文件,也就意味着最多

2021-12-25 23:02:39 885

原创 linux进程间通信(IPC) ---无名管道

管道概述管道(pipe)又称无名管道无名管道是一种特殊类型的文件,在应用层体现为两个打开的文件描述符任何一个进程在创建的时候,系统都会,给它分配4G的虚拟内存,分为3G的用户空间和1G的内核空间,内核空间是所有进程公有的。无名管道就是创建在内核空间的,多个进程知道同一个无名管道的空间,就可以利用它来进行通信无名管道虽然是在内核空间创建的,但是会给当前用户进程两个文件描述符,一个负责执行读操作,一个负责执行写操作无名管道的创建#include <unistd.h>int pi

2021-12-25 17:51:58 1002

原创 linux进程间通信(IPC) ---- 信号集 信号阻塞集

信号集概述一个用户进程常常需要对多个信号进行处理,为了方便对多个信号进行处理,在linux系统中引入了信号集,信号集是用来表示多个信号的数据类型信号集数据类型sigset_t定义路径/usr/include/x86_64-linux-gnu/bits/sigset.h(Ubuntu 16.04)信号集相关的操作主要有如下几个函数sigemptysetsigfillsetsigismembersigaddsetsigdelsetsigemptyset函数功能: 初始化一个空的信

2021-12-24 20:51:47 624

原创 linux进程间通信(IPC) ------- 信号 kill alarm raise abort pause signal函数 信号阻塞集

进程间通信进程是一个独立的资源分配单位,不同进程(这里所说的进程通常指的是用户进程)之间的资源是独立的,没有关联,不能在一个进程中直接访问另一个进程的资源,(例如打开的文件描述符)进程不是孤立的,不同的进程需要进行信息的交互和状态的传递等,因此需要进程间通信进程间通信功能数据传输:一个进程需要将发送给另一个进程资源共享;多个进程之间共享同样的资源通知事件:一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件进程控制:有些进程希望完全控制另一个进程的执行(如 debug进程),此时.

2021-12-24 17:05:19 559 1

原创 linux系统编程之进程

进程的定义 程序运行起来就成为了一个进程程序: 是静态的,存放在磁盘上的可执行文件进程: 是动态的,是运行在内存中的程序的执行实例.程序是一些指令的有序集合,而进程是程序执行的过程,是程序的一次执行过程。进程的状态是变化的,其包括进程的创建,调度和消亡只要程序运行,此时就是进程,程序每运行一次 ,就会创建一个进程在linux系统中,进程是管理事务的基本单元进程拥有自己独立的处理环境和系统资源(处理器,存储器,I/O设备,数据,程序)。可使用exec函数由内核将程序读入内存,使其执行起来称.

2021-12-16 23:57:15 902

原创 linux系统编程之系统调用

系统编程概述操作系统的职责操作系统用来管理所有的资源,并将不同的设备和不同的程序关联起来什么是linux系统编程在有操作系统的环境下编程,并使用操作系统提供的系统调用及各种库,对系统资源进行访问,学会了c语言再知道一些系统调用的方法,就可以进行linux系统编程了系统编程概述主要就是为了让用户能够更好的和更方便的操作硬件设备,并且对硬件设备也起到保护作用,我们所写的程序,本质就是对硬件设备的操作,所以操作系统提供接口,可以对硬件进行操作,这就是系统编程系统调用概述本质都是对硬件设备的操作.

2021-12-14 21:59:49 1311

原创 链表(比特)

链表定义链表是一种物理存储上非连续,数据元素的逻辑顺序通过链表中的指针链接次序,实现的一种线性存储结构特点链表由一系列结点(链表中每一个元素称为节点)组成,节点在运行时动态生成(malloc),每个节点包括两个部分:一个是存储数据元素的数据域另一个是存储下一个节点地址的指针域链表的构成链表由一个个节点构成,每个节点一般采用结构体的形式组织,例如typedef int SListDataType;typedef struct SListNode{ SListDataType da.

2021-12-11 23:43:57 239 1

原创 Linux 系统编程 互斥锁 信号量,多任务互斥和同步

多任务互斥和同步互斥和同步概述在多任务操作系统中,同时运行的多个任务可能都需要访问/使用同一种资源,多个任务之间有依赖关系,某个任务的运行依赖于另一个任务,同步和互斥就是用于解决这两个问题的互斥一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源,POSIX标准中进程和线程同步和互斥的方法,主要有信号量和互斥锁两种方式同步两个或两个以上的进程或线程在运行过程中协调步调,按预定的先后次序运行同步就是在互斥的基础上有顺序互斥锁互斥锁的概念:mutex是一种简.

2021-12-11 00:49:38 267

原创 linux 系统编程, 线程 多线程 常用API

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

2021-12-09 16:05:40 1107

原创 linux 信号量 信号量集 api调用

临界资源多道程序系统中存在许多进程,它们共享各种资源,然而有很多资源一次只能供一个进程使用,一次仅允许一个进程使用的资源称为临界资源,许多物理设备都属于临界资源,如输入机打印机,磁带机等信号量信号量(semaphore)与已经介绍过的 IPC 结构不同,它是一个计数器。信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。1、原理2、特点(1)信号量用于进程间同步,若要在进程间传递数据需要结合共享内存。(2)信号量基于操作系统的== PV 操作==,程序对信号量的操作都是原子操作。

2021-12-07 16:41:50 836

原创 linux进程间通信信号(二)(sigaction、sigqueue)

信号博文linux进程间通信信号本文重点是讲解:sigaction、sigqueue两个函数,分别用于信号处理函数的注册、信号处理发送函数是signal和kill的升级版。常用API信号处理函数的注册入门版:函数signal高级版:函数sigaction信号处理发送函数1.入门版:kill2.高级版:sigqueue对于入门版的信号处理API的重点在于动作,但kill 函数发送的信号是无法携带数据。对于高级版的信号处理API的重点信号携带的信息sigaction函数sigactio

2021-12-06 21:21:18 768

原创 linux进程间通信 管道, 消息队列, 共享内存 信号(一)

进程间通信之前进程之间交换信息的方法只能是经由fork或exec传送打开文件,或者通过文件系统。下来将说明进程之间相互通信的其他技术—IPC(interProcess Commumication)进程间通信IPCIPC的方式通常有管道(包括无名管道和命名管道),消息队列,信号量,共享存储,Socket,Streams等,其中Socket和Streams支持不同主机上的两个进程IPC一,管道1.特点它是半双工的(即数据只能在一个方向上流动),具有固定的读端和写端它只能用于具有亲缘关系的进.

2021-12-06 18:25:38 903

原创 linux进程

1.什么是程序,什么是进程,有什么区别2.如何查看系统中有那些进程3.什么是进程标识符4.什么叫父进程,什么叫子进程5.c程序的存储空间是如何分配程序是静态的概念, gcc xxx.c -o pro磁盘中生成pro文件,叫做程序进程是程序的一次运动活动通俗点意思是程序跑起来了,系统中就多了一个进程如何查看系统中有哪些进程a.使用ps指令查看实际工作中,配合grep来查找程序中是否存在某一进程ps -aux 显示所有进程ps -aux|grep init查找进程中是否有init

2021-12-03 11:38:49 1499

原创 linux文件

内容超多如文件系统原理及访问机制文件在内核中的管理机制什么是文件信息节点inode文件的共享文件权限,各种用户对其权限不建议太吃力windows如何手动修改文档**1.打开/创建文档2.编辑文档3.保存文档4.关闭文档**实现文件创建,打开,编辑等自动化执行操作系统提供了一系列的API 如linux系统打开 open读写 write/read光标定位 lseek关闭 close使用open的头文件#include<sys/types.h

2021-11-29 17:30:41 498

原创 vim的命令

编辑器之神 Vimvi的三种模式安装vim sudo apt-get install vim编辑模式,插入模式,命令行模式(最后一行模式)1. 编辑模式,对代码的修改(复制,粘贴,剪切等)2. 插入模式:用户编辑代码3. 命令行模式:保存,退出,另存等(1).插入模式这种模式可以直接编辑文档注意:vi创建一个不存在的文件时(.c文件可以,txt不可以),默认进入插入模式(2).编辑模式在编辑模式下可以敲一些命令,执行例如,复制n行,剪切n行,粘贴等功能注意:vi在打开一个已经存.

2021-11-25 15:53:33 193

原创 Linux常用必备命令

Linux基本命令1.目录结构及文件linux以树状 管理目录结构根目录: /当创建linux用户的时候,系统会自动以用户名在/home/创建一个文件夹进入真正的自己的家里面cd ~ 可以直接进入自己家里面linux命令概述命令 选项 参数//选项和参数可以没有但是命令一定要有命令:具体的linux命令选项:扩展命令的功能参数:命令作用的对象lsls -als默认查看当前目录下 没有隐藏的文件ls -a显示所有文件(包含隐藏文件)比如这里. 表

2021-11-25 12:26:11 1403 1

原创 BIT-0程序环境和预编译 c语言预处理

1.程序的翻译环境2.程序的执行环境3.c语言程序的编译+链接4.预定义符号介绍5.预处理指令#define6.宏和函数的对比7.预处理操作符#和##的介绍8.命令定义9.预处理指令#include10.预处理指令#undef11.条件编译程序的翻译环境和执行环境在ANSI C的任何一种实现中,存在两个不同的环境,第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令,第二种是执行环境它用于实际执行代码详解编译+链接翻译环境程序的编译过程1.组成一个程序的每个源文

2021-11-04 16:59:09 562

原创 c语言文件操作

1.什么是文件2.文件名3.文件类型4.文件缓冲区5.文件指针6.文件的打开和关闭7.文件的顺序读写8.文件的随机读写9.文件结束的判定什么是文件磁盘上的文件是文件但是在程序设计中,我们一般谈的文件有两种:程序文件,数据文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(window环境后缀为.exe)数据文件文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出n内容的文件这次讨论的是数

2021-11-01 11:07:26 314 1

原创 动态分配内存深入理解

动态内存函数的介绍mallocfreecallocrealloc为什么存在动态内存分配呢 int val = 20; 在栈空间上开辟四个字节 char arr[10] ={0}; 在栈空间上开辟10个字节的连续空间 但是上述的开辟空间的方式有两个特点: 1.空间开辟大小是固定的。 2.数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。但是对于空间的需求,不仅仅是上述的情况,有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编译时开辟空间的方式就不

2021-10-29 14:41:01 420

原创 结构体,枚举,联合体

内置类型-c语言自己的数据类型charlongshortintfloatdouble复杂对象,复杂类型,自定义类型: 结构体,枚举,联合体结构体结构体类型的声明结构体的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段(位段的填充&可移植性)枚举枚举类型的定义枚举的优点枚举的使用联合联合类型的定义联合的特点联合大小的计算结构体结构体的声明结构的基础知识:结构是一些值的集合,这些值称位成员变量,结构的.

2021-10-23 23:43:14 127

原创 字符函数和字符串函数的使用

字符函数和字符串函数的使用求字符串长度 strlen长度不受限制的字符串函数 strcpy strcat strcmp长度受限制的字符串函数介绍strncpy strncat strncmp字符串查找 strstr strtok错误信息报告 strerror内存操作函数memcpy memmove memset memcmpc语言中对字符和字符串的处理很是频繁,但是c语言本身是没有字符串类型的字符串通常放在常量字符串中,或者字符数组中,字符串常量,适用于那些对它不做修改的字符串函数.

2021-10-21 22:34:39 450

原创 常见面试题 库函数strcat strncat 简单算法题

下面代码运行结果是什么int main(){ unsigned long pulArray[] = { 6, 7, 8, 9, 10 }; unsigned long *pulPtr; pulPtr = pulArray; *(pulPtr + 3) += 3; /* 6 7 8 9 10 这里的*(pulPtr+3)拿到9这块空间,然后将他加上3改成12 */ printf("%d,%d", *pulPtr, *(pulPtr + 3)); //这里的*pulPtr,是6, *.

2021-10-19 10:27:50 142

原创 指针和数组面试题解析

数组名是首元素的地址,但是有两个例外1.sizeof(首组名) - 数组名表示整个数组2.&数组名 - 数组名表示整个数组除了这两个之外,其他都是表示首元素的地址一维数组整型数组```cint main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n",sizeof(a));//16 //sizeof(数组名) -计算的是数组总大小,单位是字节 4*4 = 16 printf("%d\n",sizeof(a+0));//4 //

2021-10-18 11:08:54 115

原创 指针进阶复习, 回调函数使用实例

指针进阶复习int Add(int x, int y){ return x + y;}int main(){ //指针数组 int* arr[10]; //数组指针 int* (*pa)[10] = &arr;*pa pa前面加一颗星说明pa是指针 指向的是[10]说明指向数组有10个元素pa指向数组arr的每个元素类型是int* 所以前面加上int* 函数指针 int(*paAdd)(int,int) = Add; //函数名就是函数的地址&Add.

2021-10-17 12:16:09 172

原创 指针深度学习 指针的进阶

指针的进阶字符指针数组指针指针数组数组传参和指针传参函数指针函数指针数组指向函数指针数组的指针回调函数指针和数组面试题解析指针是什么1.指针就是个变量,用来存放地址,地址唯一表示一块内存空间2.指针的大小是固定的4/8个字节(32位平台/64位平台)3.指针是有类型,指针的类型决定了指针的±整数的步长,指针解引用操作的时候的权限4.指针的运算int main(){ char arr[] = "abcdef"; char* pc = arr; printf(.

2021-10-15 15:40:58 115

原创 深度迫析数据在内存中的存储

数据类型详细介绍整型在内存中的存储,原码,反码,补码大小端字节序介绍及判断浮点型在内存中的存储解析c语言类型内置类型char 字符数据类型short 短整型int 整型long 长整型long long更长的整型float 单精度浮点数double 双精度浮点数自定义类型(构造类型)以及他们所占存储空间的大小,类型的意义,1.使用这个类型开辟存储空间的大小,(大小决定了使用范围)如何看待内存空间的视角类型的基本归类整型家族:属于内置类型.

2021-10-13 11:45:12 74

原创 结构体基础知识

结构体1. 结构体类型的声明2. 结构体初始化3. 结构体成员访问4. 结构体传参结构的基础知识:结构是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量描述一个学生结构体类型 struct是结构体关键字描述一个学生一些数据名字年龄电话性别结构体类型定义方法一//struct 结构体关键字 Stu结构体标签 struct Stu -结构体类型 struct Stu //这是在定义结构体类型{ //成员变量 char name[20.

2021-09-28 21:06:16 118

原创 笔试题一大片

下面代码结果是什么int main(){ int arr[] = { 1, 2, (3, 4), 5 }; printf("%d\n", sizeof(arr));//16 return 0;}上面代码结果是16,因为(3,4)是逗号表达式,只看最后面的那个数字下面代码运行的结果是什么int main(){ char str[] = "hello bit"; printf("%d %d\n", sizeof(str), strlen(str));//10,9 //s.

2021-09-28 17:10:58 193

原创 指针详解初级

指针初级详解1. 指针是什么 指针是个变量,存放内存单元的地址2. 指针和指针类型3. 野指针4.指针运算5. 指针和数组6. 二级指针7. 指针数组int main(){ int a = 10;//在内存中开辟一块空间 int* p = &a; //在这里我们对变量a,取出它的地址,可以使用&操作符。 //将a的地址存放在p变量中,p就是一个指针变量//总结:指针就是变量,用来存放地址的变量,(存放在指针中的值,都被当成地址处理)总结:指针是用来存放地址.

2021-09-07 20:52:36 277

原创 操作符详解 sizeof ~&<<>>操作符综合使用 前置++和后置++ 传参数组首元素地址 &&逻辑与||逻辑或360的笔试题逗号表达式[]下标引用操作符()函数调用操作符结构体表达式求值整型提升

sizeof 使用int main(){ short s = 0; int a = 10; printf("%d\n", sizeof(s = a + 5));//2 printf("%d\n", s);//0 printf("%d\n", sizeof(int));//4 printf("%d\n", sizeof(short));//2 printf("%d\n", sizeof(long));//4 printf("%d\n", sizeof(char));//1 pr.

2021-09-05 19:07:01 125

空空如也

空空如也

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

TA关注的人

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