- 博客(42)
- 资源 (2)
- 收藏
- 关注
原创 ubuntu进行apt-get时候出现Package xxx is not available, but is referred to by another package 错误
apt安装软件时遇到问题
2022-06-08 17:37:46
19849
2
原创 算法 -- 排序
冒泡排序(经典中的经典) 前提:从小到大排序 4 6 3 8 5 j 第一趟 4 3 6 5 8 3 N - 1 - i 第二趟 3 4 5 6 2 N - 1 - i 第三趟 3 4 5 1 N - 1 - i 第四趟 3 4 分析: for //确定比较几趟 { for //依次拿出数据,准备进行比较 { if //比较 { //比较出大小,确定是否进行数据交
2022-05-24 14:44:17
185
原创 算法 -- 查找
姓名 年龄 身高小明 13 150小红 12 135例:查找所有身高为150cm的同学的信息顺序查找 - 什么样的数据都可以 typedef struct{ char name[10]; int age; int high; }stu_info; int seq_select(stu_info *s, int n, int h, stu_info *result) { int i; int con = 0; for(i=0; i<n;
2022-05-24 14:21:16
201
原创 队列相关操作
队列特点特点:从队尾的位置进行插入数据从队首的位置进行删除数据先进的数据先出(FIFO)顺序队列 - 顺序存储 - 数组定义 结构体#define MAX_SIZE 100typedef int data_t;typedef struct queue{ data_t data[MAX_SIZE]; int head; //队首的位置 int last; //队尾的位置}queue_t;创建队列 - 普通队列定义一个队列,在堆上分配空间 初始化队列,队首和队尾初始化 -
2022-05-24 13:15:09
127
原创 栈的相关操作
栈特点有一端是固定 - 栈底只能从栈顶的位置进行存/取数据先进的后出(FILO)顺序栈 - 顺序存储 - 数组定义 结构体#define MAX_SIZE 100typedef int data_t;typedef struct stack{ data_t data[MAX_SIZE]; //存储数据 int top; //保存栈顶的位置}stack_t;5.2.2 创建一个空栈//创建一个空栈 定义一个stack_t类型的变量,在堆上分配空间 给栈初始化,初始化栈顶
2022-05-24 11:04:32
108
原创 双向链表(带头结点)
双链表 - 两个方向 带头节点节点的定义typedef int data_t;typedef struct link_node{ data_t data; //数据域,用来保存数据 struct link_node *next; //保存后面一个节点的地址 struct link_node *pre; //用来保存前一个节点的地址}link_node_t;创建带头结点的双链表link_node_t *create_link_list(void){ //定义头结点,在堆上分配
2022-05-24 09:58:05
936
原创 单向循环链表--约瑟夫环
单向循环链表 - 约瑟夫环 //不带头结点的单向循环链表定义实现节点typedef int data_t;typedef struct node{ data_t data; //保存数据 struct node *next; //保存下一个节点的地址}link_node_t;创建空链表//创建空链表link_node_t *create_link_list(data_t x){ //定义头结点,在堆上分配空间 link_node_t *h = NULL; h = (l
2022-05-24 09:23:17
892
原创 线性表--单链表(2)
链表程序设计(链式存储的顺序表)单链表在内存中随机存储,需要通过指针建立数据元素之间的逻辑结构实现 - 节点定义 相关概念typedef int data_t;typedef struct node{ data_t data; //保存数据 struct node *next; //保存下一个节点的地址}link_node_t;//带头结点 - 第一个节点不存储数据 (用的多)//不带头结点 单向链表 - 最后一个节点的指针域为NULL创建空链表 - 带头结点的
2022-05-23 23:09:08
125
原创 数据结构常见笔面
数据结构常见笔试题顺序表和链表的区别顺序表存储(典型的数组)原理:顺序表存储是将数据元素放到一块连续的内存存储空间,相邻数据元素的存放地址也相邻(逻辑与物理统一)。 优点:(1)空间利用率高。(局部性原理,连续存放,命中率高) (2)存取速度高效,通过下标来直接存储。 缺点:(1)插入和删除比较慢,比如:插入或者删除一个元素时
2022-05-23 20:16:15
135
原创 C语言笔面题--高级
c高级常见笔试题枚举与# define宏的区别有哪些?枚举与宏的概述(1) 枚举:是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内(2) # define宏定义是用一个指定的标识符来代表一个字符串枚举与# define宏的区别(1) 在编译器中可以调试枚举变量,不能调试宏常量(2) # define宏常量是在预编译阶段进行简单替换。枚举常量则是在编译的时候才确定其值(3) 枚举可以一次定义大量相关的常量,而# define宏一次只能定义一个空结构体所占的内存是多少?
2022-05-23 20:15:24
124
原创 C语言笔面试题--基础
c基础常见笔试题1.gcc编译器编译的四个流程预处理 、编译 、汇编 、链接gcc –E hello.c –o hello.igcc –S hello.i –o hello.sgcc –c hello.s –o hello.ogcc hello.o –o hello2.静态库和动态库区别a.命名上:静态库文件名的命名方式是“libxxx.a”,库名前加”lib”,后缀用”.a”,“xxx”为静态库名;动态库的命名方式与静态库类似,前缀相同,为“lib”,后缀变为“.so”。所以为“lib
2022-05-23 20:14:21
347
原创 线性表-顺序表(1)
1、基本知识线性表有n个相同类型的数据元素组成的有限序列, 他是最基本、最常用的一种线性结构。 线性表有唯一的开始和结束,除了第一个元素和最后一个元素外, 每个元素都有直接前驱和后继。表的特性:1)非空表第一个元素没有前驱2)非空表最后一个元素没有后继3)非空表中间元素有唯一前驱和唯一后继...
2022-05-23 19:53:52
211
原创 函数指针,指针函数与动态内存分配
函数指针:返回值类型 函数名(参数列表){return xx;}函数实现的时候要求:高内聚,低耦合。指针函数:返回值类型是指针类型的函数char * func(int a,int b){ return 地址;} 函数指针:它是一个指针,它指向一个函数返回值类型 (*函数名)(参数列表);函数指针数组:它是一个数组,数组中的成员是函数指针。 返回值类型 (*函数名[n])(参数列表);常见变量定义举例用变量a给出下面的定义 a) 一个整型数(An integer)
2022-05-23 10:37:35
298
原创 GCC编辑器
GCC编辑器gcc 文件名 编译文件默认生成a.out./a.out 执行程序gcc hello.c -o qq == gcc -o qq hello.c -o后紧跟要生成的文件的名字千万不要 gcc hello.c -o helloc.c 否则会完蛋 千万不能跟前面的文件名一样**gcc 编译步骤**1 预处理 -- 进行头文件展开,宏的替换...
2022-05-23 10:13:33
149
原创 程序的诞生与运行
一 计算机的组成CPU主板内寸硬盘输入设备(键盘、鼠标、触摸屏)输出设备(显示器、扬声器)二 程序是如何产生的代码通过预处理编译汇编链接生成可执行文件三 程序是如何运行的1、起初程序存储在在硬盘之中2、加载程序到内存3、cpu从内存中读取指令和数据4、cpu根据指令和数据调用设备接口,通过显示器等设备进行显示和交互...
2022-01-06 14:07:13
243
原创 TCP通信的 c-s模型及函数(1)
c-s模型1. 循环服务器服务器创建套接字绑定IP地址和端口号启动监听接收客户端的连接请求while(1){处理客户端请求,读写数据}关闭连接客户端创建套接字请求连接while(1){读写数据}关闭连接函数创建套接字#include <sys/types.h>#include <sys/socket.h>int socket(int domain, int type, int protocol);参数1:指定协议族AF_INET参
2020-09-14 18:36:55
235
原创 网络编程 - 网络体系结构 (字节序转化)
网络通信 - 网络中的主机进行数据的交换就像现实生活中的寄快递一样寄快递包裹 – 快递小哥(收件人和寄件人的信息)||快递站点(仓库管理员)||司机(运输)||快递站点||快递小哥(派件)||目的地快递公司管理体系:分职位 协同工作(约定)1、网络体系结构:网络层次结构和每层所使用的协议的集合特点:网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供
2020-09-12 15:37:33
295
原创 Linux(信号,进程间通信)共享内存,信号量,消息队列
信号(signal)1.1 什么是信号?信号是在软件层次上对中断机制的一种模拟,是一种异步通信方式1.2 信号的来源硬件[1] 用户在终端按下某些键时,终端驱动程序会发送信号给前台进程ctrl+c SIGINT 终止进程ctrl+z SIGTSTP 暂停进程ctrl+\ SIGQUIT 终止进程[2] 硬件异常产生信号,这些条件由硬件检测到并通知内核,然后内核向当前进程发送适当的信号。进程执行了除以0的指令 CPU的运算单元(ALU)会产生异常 SIGFPE信号发送.
2020-09-12 15:36:56
518
原创 Linux(进程间的通信)学习笔记
本地进程间通信1)传统的进程间通信方式无名管道(pipe)、有名管道(fifo)和信号(signal)2)system V IPC 进程间通信共享内存(share memory)、消息队列(message queue)和信号灯(semaphore)3)BSD套接字(socket)管道2.1 无名管道(pipe)2.1.1 什么是无名管道 ?一个管道实际上就是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,是个只存在于内存中的文件。类似时空隧道的概念,建立两个进程之.
2020-08-28 20:45:19
211
原创 Linux(线程的同步与互斥)学习笔记
线程的同步与互斥1.1 基本概念【1】临界资源:进程或线程之间共享的资源,但同一时间只能被一段指令序列所占用的资源就是所谓的临界资源。典型的临界资源比如物理上的打印机,或是存在硬盘或内存中被多个进程/线程所共享的一些变量和数据等。这类资源如果不被看成临界资源加以保护,那么很有可能因为访问冲突造成数据错乱的问题。【2】临界区:程序内访问临界资源的代码序列被称为临界区。【3】互斥:是指同时只允许一个访问者对临界资源进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是.
2020-08-28 20:44:12
254
原创 Linux(线程基础)学习笔记
线程(thread)为什么需要引入线程?多进程的频繁切换,切换进程上下文。每次上下文切换都要做这些事,还是很耗资源的。想用一种机制能”减少进程切换带来的资源消耗“,所以很多操作系统中都引入了轻量级的进程的概念。也称之为线程。什么是线程?线程(thread),被称为轻量级进程(Lightweight Process Lwp), “是程序执行调度的最小单位”。线程,是在进程中活动的对象。传统的系统中,一个进程只包含有一个线程。但在现代操作系统中,允许一个进程里面可以同时运行多个线程,这类程序就
2020-08-28 20:43:49
105
原创 Linux(守护进程)学习笔记
守护进程 Daemon守护进程的特点(1)运行方式: 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件(2)生命周期: 守护进程会长时间运行,常常在系统启动时就开始运行,直到系统关闭时才终止(3)守护进程不依赖于终端查看系统中的守护进程ps -ajx-a: 显示所有-x:显示没有控制终端的进程-j:显示与作业有关的信息(显示的列):会话期ID(SID),进程组ID(PGID),控制终端(TTY),终端进程组ID(
2020-08-28 20:43:24
269
原创 Linux-(进程基础)学习笔记
进程的相关基本概念1.1 进程的定义站在用户角度 :进程是一个程序的一次执行过程,在这个过程中,伴随着资源的分配和释放。站在操作系统角度:进程是程序执行时相关资源的总称,当进程结束时所有的资源都会被系统自动回收。“进程是资源分配管理的最小单位。”1.2 进程与程序程序(program):静态的,它是一些保存在磁盘上的指令的有序集合(可执行文件),没有任何执行的概念。进程(process):动态的概念,它是程序执行的过程,包括创建、调度和消亡。在这个过程中,伴随着资源的分配和释放。1.2..
2020-08-28 17:13:58
227
原创 Linux(目录操作及库的制作)
目录的操作1. 打开目录#include <sys/types.h>#include <dirent.h>DIR *opendir(const char *name);参数:打开目录的路径返回值:成功 - 目录流指针失败 - NULL,设置errno2. 读目录struct dirent *readdir(DIR dirp);参数:目录流指针 - opendir的返回值返回值:成功 - 保存文件信息的结构体指针(NULL - 读到目录尾)失败 - NULL,
2020-08-26 20:27:31
133
原创 Linux(文件IO)学习笔记
文件IO - 系统调用man 2 系统调用文件描述符 - 文件的标识符区分在一个进程中打开的文件的预定义的三种文件描述符标准输入 - 0标准输出 - 1标准出错 - 2从0开始,依次递增打开文件#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>int open(const char *pathname, int flags);int open(const char *p
2020-08-26 20:23:30
134
原创 C语言 (控制语句小总结)
分支语句1)、if① if(10 <= weight&&weight <80)/正确的方式///if(10<=weight<80) //同一优先级结合方向从左到右 10 <= 5 为假 =0 0<80;成立建议:每次使用if判断多个条件时不要使用连续的判断多使用 && || 等逻辑运算符,避免出现编译不报告的错误②在没有加花括号的情况下({}),if 默认只控制它后面的一条语句。2)、if else嵌套注意:.
2020-08-22 10:29:17
361
原创 C语言(常规输入输出)
每次一个字符的输入输出输出:#include <stdio.h>int putchar(int c)功能:往终端上打印一个字符c参数:c 要打印的字符返回值:成功返回输出的字符c,失败返回EOF(因为0 ~ 255基本都有对应的字符)输入:#include <stdio.h>int getchar(void);功能:从终端上读一个字符参数:void代表没有参数;返回值:成功返回输出的字符c,失败返回EOF(-1)0~255unsigned char .
2020-08-22 09:38:24
327
原创 Linux - IO(标准IO)
基础知识:内核:负责管理一部分硬件资源系统调用:内核提供给用户访问其内部操作的一些函数接口IO的分类标准IOPOSIX标准:可移植操作系统接口规范POSIX 标准 : 规定 函数功能, 返回值,函数的参文件IO(系统调用)main.c main() { fread(); fwrite(); } ------------------------------------------------------- 标.
2020-08-21 23:27:36
242
原创 C语言(3)运算符及其优先级
运算符1.[] () . ->2.单目运算符+正号-负号++自家–自减& 取地址取值!取非 (非零为真,零为假)~ 取反(类型) 强制类型转换 比较危险,能不用就不用sizeof3.算数运算符/ 除法 取整% 取余 双目运算符 % 操作数(‘int’和‘double’)无效4.移位运算符 右移 <...
2020-08-21 13:44:26
771
原创 C语言(2) 常量与变量
常量字符常量man ascii或者 man ASCII查看ascii值‘A’ ‘!’ ‘1’ ‘C’ ‘Z’记忆’\0’ (0) ‘0’(48) ‘\n’(10) ‘A’(65) ‘a’(97)整形常量36 10 100 -19 0 十进制 0~90b1000 二进制 0 10664 八进制 0~70x123f 十六进制0x或0X 0~15 ==》 0-9 a-f或者0-9 A-F实型常量3.14 1.53.14e8 .
2020-08-20 20:35:52
260
原创 C语言(1) 数据类型以及存储类型
存储大小单位bit 只能用来存储0或1byte (字节)= 8bitKb 1024 byteMb 1024 KbGb 1024 MbTb 1024 Gb数据类型(32位操作系统)基本类型字符类型char 1字节 默认是有符号型 (arm编译器默认是无符号)unsigned char 无符号字符型signed 有符号字符型整形短整型 2字节..
2020-08-20 19:55:29
3305
原创 存储相关,数据类型,常量,变量,变量的存储方式
【1】存储大小的单位bit 只能用来存储0或1byte (字节)= 8bit 1 byte == 8 bitKb 1024 byteMb 1024 KbGb 1024 MbTb 1024 Gb【2】数据类型(32位操作系统)基本类型字符类型char 1 字节 默认是 有符号类型unsigned char 无符号字符型signed char 有符号类型整...
2020-03-31 10:05:15
885
原创 shell笔记
vim编辑器vim 文件名vim 文件名模式之间切换esc1、命令行模式yy 复制一行nyy 复制n行dd 剪切一行(如果不粘贴,那就是删除一行)ndd 剪切n行(如果不粘贴,那就是删除n行)p 粘贴2、插入模式i 在光标前进入插入模式I 在行首进入插入模式a 在光标之后进入插入模式A 在行末进入插入模式o 在下一行进入插入...
2020-03-30 18:08:27
127
原创 linux从头学习笔记-基础命令和简单知识(1)
[1] ubuntu windows mac| | |linux NT unix内核 。 Linux的文件系统中名字不能随便起bin 二进制文件夹boot 启动文件夹dev 设备文件夹home 是保存用户的目录[2]如何打开终端1.点击左键2.右击新终端3.打开新终端 ctrl + alt + t...
2020-03-30 17:47:54
151
原创 GPIO通用和复用
GPIO端口的每个位可以由软件分别配置 成多种模式。─ 输入浮空─ 输入上拉─ 输入下拉─ 模拟输入─ 开漏输出 (通用)─ 推挽式输出 (通用)─ 推挽式复用功能─ 开漏复用功能当作为输出配置时,写到输出数据寄存器上的值(GPIOx_ODR)输出到相应的I/O引脚输入数据寄存器(GPIOx_IDR)在每个APB2时钟周期捕捉I/O引脚上的数据。所有GPIO引脚有一个内部弱上...
2020-03-09 09:21:46
10250
原创 RTC
RTC配置的一般步骤1.使能PWR和BKP时钟 : RCC_APB1PeriphClockCmd();2.使能后备寄存器的访问: PWR_BackupAccessCmd();3.配置RTC时钟源,使能RTC时钟RCC_RTCCLKConflg();RCC_RTCCLKCmd();大多数时候使用的时LSE时钟作为时钟源这时候需要打开LES时钟:RCC_LSEConflg(R...
2020-03-08 23:27:30
534
原创 ADC
STM32 的 ADC 是 12 位逐次逼近型的模拟数字转换器。 它有 18 个通道,可测量 16 个外部和 2 个内部信号源。各通道的 A/D 转换可以单次、连续、扫 描或间断模式执行。ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看 门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。我们选择的 STM32F103ZET 包含有 3 个 ADCSTM32...
2020-03-01 16:40:19
1438
1
转载 USART
串口配置的一般步骤串口时钟使能,GPIO口时钟使能RCC_APB2PeriphClockCmd();RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1|RCC_APB2Periph_GPIOA, ENABLE);串口复位当外设出现异常的时候可以通过复位设置,实现该外设的复位,然后重新配置 这个外设达到让其重新工作的目的。一般在系统刚开始配置外设...
2020-03-01 15:36:03
1904
原创 不使用中间变量交换两个int 型变量的值
怎样不使用中间变量完成两个int 型数据的交换void fun(){int a = 10,b=20;a=a+b;b=a-b;a=a-b}
2020-02-28 15:45:36
273
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人