自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Pyaudio非阻塞式录音

问题项目中使用Pyaudio使用4麦AC108模块进行录音,使用官网例程(阻塞模式)录音出现程序卡住bug通过strace -p调试发现,读取不到麦克风数据,解决使用Pyaudio提供非阻塞式,在回调函数中进行数据储存录音部分代码 p = pyaudio.PyAudio() wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb') wf.setnchannels(1) wf.setsampwidth(p.get_sam

2021-01-27 12:01:56 573

原创 函数返回多个值

1.方法一利用结构体,注意函数定义一定要用结构体来定义struct trans{ int chi; int cun;};trans transform(int);int main(){ using namespace std; int a; cin >>a; trans b; b = transform(a); cout << b.chi <<" "<<b.cun; while(true) { }}trans tra

2020-11-05 20:00:44 418

原创 获取枚举类型中值的个数的一种方法

//定义枚举类型如下enum Color{ red = 0, green, blue, ... count};Color::count//即为枚举类型Color中值的个数局限性:枚举值必须从0开始,且枚举值必须连续

2020-11-05 17:20:07 2209

原创 从代码到可执行文件

2020-11-05 17:10:16 70

原创 结构体的三种定义方法

1.单独定义//先定义结构体再定义变量struct students{ int age; string name;};struct studengts s1,s2;2.混合定义struct students{ int age; string name;}s1,s2;3.无类型名定义struct{ int age; string name;}s1;

2020-11-05 17:02:53 930

原创 IIC协议及驱动

1.IIC协议概述由数据线SDA和时钟线SCL构成的串行总线,可收发数据高速IIC总线一般可达400kb/s以上SDA:用来一位一位传送数据。SCL:在通信过程中起控制作用。半双工通信2.通信过程开始信号与停止信号开始信号:SCL为高,SDA高到低的跳变。结束信号:SCL为高,SDA低到高的跳变。********产生I2C起始信号****************1.设置SDA输出******************2.拉高SDA,SCL(空闲状态)********3.

2020-11-03 19:31:04 308

原创 结构体和联合体的区别

1. 什么是联合体在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。使几个不同类型的变量共占一段内存(相互覆盖)union abc{ int i; char m; }//联合体abc中,整型量和字符m共用同一内存位置。//长度为联合体中最大的变量长度2.什么是结构体结构体是类似于名片形式的数据集合

2020-11-03 18:37:40 3960

原创 链表与数组

1.链表分类单向链表双向链表循环链表2.链表与数组的区别空间数组 内存中连续,每个元素占用内存相同,必须事先定义长度链表 内存中顺序存储,通过元素中的指针联系到一起索引数组 通过下标读取,快链表 通过线性移动读取,慢修改数组 增删插入麻烦链表 增删插入方便逻辑数组 必须事先定义固定的长度(元素个数),不能适应数据动态地增减的情况。当数据增加时,可能超出原先定义的元素个数;当数据减少时,造成内存浪费。链表 动态地进行存储分配,可以适应数据动态地增减的情

2020-11-02 23:05:10 219

原创 指针、数组指针、指针数组

int *p; // 指向整形变量或一维数组,指向一个元素int (*ptr)[5];// 数组指针,指向数组首地址int *q[5];// 指针数组,本质就是数组,每个元素是一个指针1.符号表达式分析符号 () > [ ] > *大小sizeof(p) = 4sizeof(ptr) = 4sizeof(q) = 4*5 = 20运算p ptr ++ --q 不支持p移动一个元素 p+1 == p[1];ptr 移动整个数组 ptr+1 == pt

2020-11-02 22:46:00 69

原创 函数指针

怎么定义 int max(int a, int b) { return (a>b?a:b; } int (*fun)(int, int); //将函数头中的函数名替换成(*fun) int (* const fun)(int, int)作用保存地址,保存程序入口的地址指向不同函数,表现不同功能,函数指针的多态性***********地址************fun = max;fun = &max;//上下等价,赋值时类型要一致*******..

2020-11-02 22:16:05 212

原创 冒泡排序

int sort(int *a, int len) { int i, j,temp; for(i=0;i<len-1;i++) for(j=0; j<len-1-i;j++) { if(a[j]>a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } }

2020-11-02 20:26:09 46

原创 线程和进程的区别

什么是进程当一个程序开始运行时,就是一个进程,进程包括运行中的程序所用到的内存和系统资源而一个进程又是由多个线程组成的什么是线程线程是程序中的执行流,每个线程都有自己的专有寄存器,但代码区是共享的,即不同线程可以执行同样的函数。进程结束,线程一定结束。线程结束,进程不一定结束。所有线程都是在进程的基础上并发执行的优缺点线程开销小,但是不利于资源的管理和保护。进程开销大,但是能够很好的进行资源管理和保护。...

2020-11-02 19:52:19 312

原创 堆和栈的区别

堆和栈都是在内存上,堆是一个动态的概念,栈的一个静态的概念,栈在编译时确定,堆在运行时确定。栈的大小在编译时定好,堆大小是动态概念。根据不同需求使用堆或者栈。从访问效率上,栈是静态,堆的速度要慢。从访问权限上,函数调用,数据都在栈上,栈上的数据无法被另一个函数访问,不同函数之间的栈数据不能共享。启动线程实际上就是调用函数,多线程栈上的数据也是不能共享。堆是在进程上的堆,所有的线程都可以访问。当数据大小不确定用堆,考虑到效率用栈,提高运行速度。使用大 内存一般用堆,用完就释放。栈由系统分配,堆由程.

2020-11-02 19:39:43 56

原创 Django:django-redis使用&腾讯云短信

redis腾讯云短信

2020-09-09 14:43:51 112

原创 Django:创建项目环境

1、创建虚拟环境virtualenv sassactivatpip3 install django==1.11.72、创建项目工程3、本地配置创建sass/local_settings.pysettings.py中导入try: from.local_settings import *except ImportError: pass创建 .gitignore# pycharm.idea/.DS_Store__pycache__/*.py[cod

2020-09-09 10:41:30 149

原创 Django:虚拟环境及项目的搭建

一、虚拟环境1.安装pip3 install virtualenv2.创建虚拟环境virtualenv 环境名称virtualenv 环境名称 --python=python3.6//指定版本3.激活、退出虚拟环境cd Scripts //进入目录activate//执行激活deacticate//执行退出4.在虚拟环境中安装模块激活虚拟环境在激活虚环境中安装模块pip3 insrall django==1.11.7二、搭建项目环境(django+虚拟环境

2020-09-06 13:46:16 159

空空如也

空空如也

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

TA关注的人

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