自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (1)
  • 收藏
  • 关注

原创 【ESP32】手势识别实现笔记:红外温度阵列 | 双三次插值 | 神经网络 | TensorFlow | ESP-DL

到这一步就可以开发了,为了项目条理更加清晰,还需要引入【自定义组件一般而言,自定义组件可以简单理解为一个目录,里面存放一些功能函数,提供给main函数进行调用。打开终端,切换到待创建的目录,输入;(当然可以手动创建目录和文件)components:创建的组件(目录),位于那个目录下,如果没有这个目录就创建,Cmake管理默认的目录名称叫components,如果起了其它名称,需要用变量进行说明。set(EXTRA_COMPONENT_DIRS ./新名字)led:组件的名称。---Test。

2023-11-30 15:16:57 2387

原创 【Windows & Esp32】基于 libjpeg-9e 编解码库的视频播放器

音视频播放器

2023-01-27 23:29:24 3868 4

原创 【GCC】文件保存/读入/编译时文字编/解码处理

【GCC】关于 -finput-charset= 和 -fexec-charset= 选项

2022-11-09 21:47:03 1714 1

原创 【Arduino & Esp32】SD卡读写

SD卡读写

2022-10-24 15:59:06 7008 1

原创 【C语言】变长数组、函数与数组、GCC对C的扩展、变长数组的实现原理

变长数组使用与原理

2022-08-14 17:49:46 1929 1

原创 【Arduino + Linux】基于 Helix 解码库实现 MP3 音频播放

目录一、MP3 文件结构二、MP3 解码库MP3(Moving Picture Experts Group Audio Layer III,MPEG Audio Layer 3),本身是一种音频编码方式,MPEG 音频文件是 MPEG 标准中的声音部分,根据 压缩质量 和 编码复杂程度 划分为三层,即Layer-1、Layer-2、Layer-3,分别对应MP1、MP2、MP3 这三种声音文件,层次越高,编码器越复杂,压缩率也越高,MP3 压缩率可达到 10:1 至 12:1。MP3 是利用人耳对高频

2022-03-17 13:06:17 8117 6

原创 【Arduino + Linux】基于NodeMCU32实现WAV音频播放

目录一、Arduino环境配置二、音频数据收发2.1、服务器程序2.2、客户端程序三、编写音频驱动3.1、音频基础知识3.2、WAV格式认识3.3、mp3转WAV3.4、硬件连接3.5、I2S使用内部DAC注意事项NodeMCU32S是基于ESP-WROOM-32模块开发的,其内部存储资源比较紧缺,该模块集成 4MB 外部FLASH,但是对于 wav 格式的音频而言是远远不够的,又因为该模块具有比较成熟的无线通信技术,所以就有一个想法:将音乐文件保存到服务器上,NodeMCU32 通过 WiFi 通讯方式

2022-01-07 00:12:09 3609 2

原创 【C语言】强符号与弱符号

目录一、先说结论二、当attribute修饰符号的引用/声明时——不做链接2.1、变量声明2.2、函数声明三、链接.o文件3.1、函数3.1.1、多个强符号3.1.2、一个强符号多个弱符号3.1.3、多个弱符号3.2、变量3.2.1、多个强符号3.2.2、一个强符号多个弱符号3.2.2.1、全部的弱符号在.data中3.2.2.2、弱符号部分在.data中,部分在.common中3.2.2.3、全部的弱符号在.common中3.2.3、多个弱符号3.2.3.1、弱符号全部为在.data中3.2.3.2、弱符

2021-12-22 20:50:42 1883

原创 为什么 ‘ldd’ 和 ‘(gdb) info sharedlibrary’ 显示不同的动态库基地址?

目录一、准备 ????二、疑问 ????三、回答 ????四、总结 ????本文在调试过程中发现 ldd 和 (gdb) info sharedlibrary 显示不同的动态库加载基地址,然后查了一些资料后,找到了这篇帖子【传送门】,现做一下复现,但是还是不知道 ldd <目标文件> 这个命令打印的地址是什么地址,如果有哪位大佬知晓,望不吝相告,谢谢。一、准备 ????/* test.c */#include <stdio,h>int main(int argc, cons

2021-09-19 00:05:15 2196

原创 【C语言】可变参数原理与printf的实现

1、如何知道下一个参数占多少位?对于编译器生成32位可执行目标文件而言,从反汇编程序,调用可变函数时,实参为字符数据、短整形数据的大小小于4字节的数据时,会将其按4字节进行存储,4字节的按4字节的存储,8字节的按8字节存储,那在可变函数中如何知道是4字节还是8字节,还真不好判断,在printf的做法是通过第一个字符串参数中的 ’ l ’ 作为判断,如果有l那么,读取的时候按8字节读取。的可知va_arg...

2021-07-05 16:55:16 1600 3

原创 【ATT 与 Intel】汇编与C语言相互调用及内联汇编

目录一、ATT 与 Intel二、函数调用的约定三、C语言调用汇编程序四、汇编程序调用C语言五、内联汇编一、ATT 与 Intelx86架构的处理器的汇编指令一般使用有两种:ATT 汇编Intel 汇编常用的汇编器:MS VC 编译器:只支持 Intel 格式GNU CC 编译器:支持 ATT 格式和 Intel 格式,一般从 gcc 的上层开始调用像cc、ar 等工具。ATT 与 Intel 汇编代码格式区别如下:Intel 代码省略了指示大小的后缀。我们看到指令 push

2021-05-17 23:08:50 3504 19

原创 《深入理解计算机系统》学习笔记:程序的机器级表示

目录概述一、历史观点二、程序编码2.1、机器级代码概述计算机执行机器代码,用字节序列编码低级的操作,包括处理数据、管理内存、读写存储设备上的数据、以及利用网络通信。编译器基于编程语言的规则、目标机器的指令集和操作系统遵循的惯例,经过一系列的阶段生成机器代码。当我们使用高级语言编程的时候(例如C语言,Java语言更是如此),机器屏蔽了程序的细节,即机器级的实现。相对于采用汇编代码进行编程的时候,最大的优点是,用高级语言编写的程序可以在很多不同的机器上编译和执行,而汇编代码则是与特定机器密切相关的。程

2021-01-24 13:54:05 1430 1

原创 【C语言】0x1F<<11等于0还是0xF800 ?

1、左移运算符格式:a<<b将a这个数的各二进制位左移b位,要求b必须是非负整数,移动过程中,右边空出的位用0填补,高位左移溢出则舍弃该高位。2、右移运算符格式:a>>b将a这个数的各二进制位右移b位,要求b必须是非负整数,移到右端的低位被舍弃。其中,①对于无符号数,高位补0;②对于有符号数,如果采用算术移位,则空出部分用符号位填补,如果采用逻辑移位,则用0填补。b的值相对于32位系统,要求不能超过32位,如果超过了,编译的时候会产生一个警告。疑问:0x1F从字面上

2021-01-08 15:06:06 1627

原创 Ubuntu12.04上安装python3.7、pwntools及出现的问题

Python3.7、python能够使用第三方库,需要安装响应的环境(setuptools)、pip安装教程:Centos7上安装python3.7–步骤,注意事项,以及常见的出错问题一:pip install 包名 ,会弹出 pip is configured with locations that require TLS/SSL, however the ssl module in Python is not avail 的错误,晚上说python编译的时候没有把SSL模块编译进去,后来按照教程编译进

2020-12-12 23:21:25 1164 2

原创 《深入理解计算机系统》学习笔记:信息的表示和处理

目录概述一、信息存储1.1、十六进制表示法1.2、子数据大小1.3、寻址和字节顺序1.4、表示字符串1.5、表示代码1.6、布尔代数简介1.7、C语言中的位级运算(位运算)1.8、C语言中的逻辑运算1.9、C语言中的移位运算二、整数表示2.1、整型数据类型2.2、无符号数的编码2.3、补码编码2.4、有符号数和无符号数之间的转换2.5、C语言中的有符号数和无符号数2.6、扩展一个数字的位表示2.7、截断数字三、整数运算3.1、无符号加法3.2、补码加法3.3、无符号乘法概述整数的表示虽然只能编码一个相对

2020-10-24 10:27:01 927 1

原创 液晶控制器R61509V读取某一坐标点像素

主控芯片:STM32F103ZET6TFTLCD型号:240×400液晶触摸屏液晶控制器:R61509V完整的显示屏由液晶显示面板、电容触摸面板以及PCB底板构成,触摸面板与液晶面板引出的排线连接到 PCB 底板上,根据实际需要, PCB 底板上可能会带有“液晶控制器芯片”。因为控制液晶面板需要比较多的资源,所以大部分低级微控制器都不能直接控制液晶面板,需要额外配套一个专用液晶控制器来处理显示过程,外部微控制器只要把它希望显示的数据直接交给液晶控制器即可。STM32F1 系列的芯片由于没有集.

2020-09-09 00:47:32 1156

原创 python学习笔记:继承(同名问题)、公有与私有、多态、属性与方法、异常(二)

目录一、继承1.1、子类重写父类同名属性和方法1.2、子类调用父类同名属性和方法1.2.1、方式一1.2.2、方式二1.3、多层继承一、参考资料一、继承1.1、子类重写父类同名属性和方法class Master(object): def __init__(self): self.kongfu = "古法" def make_cake(self): print("按照%s制作一份" % self.kongfu)class School(object

2020-06-24 01:26:01 1287

原创 python学习笔记:类与对象、魔法方法、继承(一)

目录一、类与对象1.1、类的定义1.2、对象的定义1.3、给对象添加属性1.4、通过self方法获取对象属性二、魔法方法2.1、类的初始方法——init方法2.2、类的字符信息输出——str方法2.3、类的析构方法——del方法三、继承3.1、单继承3.2、多继承一、类与对象类:类是同一类对象的属性和行为的抽象和总结;类描述同一类对象应包含的数据;类描述同一类对象的行为特征;类是抽象的,是一个概念模型;一个类可以找到多个对象;对象:具有明确的属性和行为;程序是对象的集合,通过消息交

2020-06-21 02:36:11 321

原创 python学习笔记:文件打开、关闭、读写、文件文件夹的相关操作

目录一、什么是文件二、文件的打开与关闭2.1、文件打开2.1.1、方式一:open(name, mode)2.1.1、方式二:with open(name, mode) as file:2.2、文件关闭三、文件的读写3.1、文件的读取3.1、文件的写入3.3、读取与写入位置问题四、文件文件夹的相关操作(os模块)4.1、文件相关操作(rename、remove)4.2、文件夹相关操作(mkdir、getcwd、chdir、listdir、rmdir)一、什么是文件文件:python中文件是对象。Li

2020-05-29 01:16:42 777

原创 python学习笔记:局部变量与全局变量、返回多个返回值、缺省/不定长参数、引用传参、递归函数与匿名函数(二)

目录一、局部变量与全局变量1.1、局部变量1.2、全局变量1.3、修改全局变量二、返回多个返回值三、缺省/不定长参数与引用传参3.1、缺省参数3.2、不定长参数3.3、引用传参3.3.1、可变类型与不可变类型的数据类型3.3.2、a += a 与 a = a + a 的区别3.3.3、引用传参四、递归函数与匿名函数4.1、递归函数4.2、匿名函数五、参考资料一、局部变量与全局变量1.1、局部变量局部变量:定义:局部变量,就是在函数内部定义的变量。特点:不同函数中的局部变量可以是相同的名字,它们

2020-05-27 22:05:19 587

原创 python学习笔记:函数定义与调用、函数参数与返回值、函数嵌套(一)

目录一、函数的定义与调用1.1、定义与调用1.2、函数文档二、函数的参数与返回值2.1、函数的参数2.2、函数的返回值三、函数类型四、函数嵌套使用五、参考资料一、函数的定义与调用1.1、定义与调用定义:具有独立功能的代码块组成的一个模块定义格式:def 函数名(): 代码调用:函数名()示例:def add(): a = 10 b = 20 print("这两个数的和是%s" % (a+b))add()"""运行结果为:这两个数的和是30"""注意

2020-05-26 23:53:46 874

原创 python学习笔记:数据类型的基本操作(增、删、改、查)

目录一、字符串(string)1.1、修改1.1.1、对象.replace1.2、查找1.2.1、对象.find1.2.2、对象.index1.2.3、对象.count1.3、dir和help函数二、列表(list)2.1、增加2.2、删除2.3、修改2.4、查找三、元组(tuple)四、字典(dictionary)五、公用方法python数据变量的学习中主要包含:变量的定义、访问、操作(增、删、改、查)。定义和访问之前记录过(请点击),这里主要记录变量的操作。一、字符串(string)1.1、修改

2020-05-10 00:10:49 837

原创 python学习笔记:条件语句(if、else、elif)、循环语句(while、for、break、continue)及其嵌套

目录一、python条件语句1.1、if功能1.2、else功能1.3、elif功能1.4、if嵌套1.5、猜拳游戏二、python循环语句2.1、while循环2.2、while嵌套2.3、for循环2.4、break与continue一、python条件语句1.1、if功能python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。python...

2020-05-07 00:05:18 6122

原创 python学习笔记:普通输出、格式化输出、输入、运算符及其优先级

目录一、python输出二、python输入三、运算符一、python输出普通输出print("hello world!")格式化输出在程序中,看到了%这样的操作符,这就是python中格式化输出。name = "小明"age = 19print("名字:%s, 年龄:%d" % (name, age))'''运行结果为:名字:小明, 年龄:19'''常见的...

2020-05-02 00:37:54 1530

原创 python学习笔记:注释、续写符、变量(类型、定义、访问)、进制转换、类型转换

目录1、注释2、变量及类型3、标识符和关键字1、注释2、变量及类型3、标识符和关键字

2020-04-30 21:27:01 909

原创 python学习笔记:初识python及运行环境安装

目录1、初识Python2、linux环境下安装python运行环境3、win7环境下安装python运行环境1、初识PythonPython是由Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。1991年,第一个Python解释器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包...

2020-04-29 01:31:56 327

原创 学习笔记:Linux系统的软件管理机制

Linux系统主要支持RPM和Deb两种软件包的管理工具。这里只介绍Deb软件包管理工具。常见的命令行软件包管理工具:dpkg-deb、dpkg、aptDeb软件包Debian Linux首先提出“软件包”的管理机制——Deb软件包,将应用程序的二进制文件、配置文档、man/info帮助页面等文件合并打包在一个文件中,用户使用软件包管理器直接操作软件包,完成获取、安装、卸载、查询等操作。...

2020-04-26 23:26:55 820

原创 超轻量型Http Server(Tinyhttpd)代码阅读

超轻量型http服务器程序是基于TCP/IP协议的应用程序,该应用程序解答了之前写cgi程序的疑惑:(之前用的是boa服务器)1、为什么cgi程序运行结果发送给浏览器时,用printf?(被重定向了)2、为什么cgi程序的参数信息从环境变量中获取,什么时候将参数信息放到环境变量里的?(http服务器中,用putenv将参数信息保存成环境变量)这两个问题的答案都在execute_cgi函数中。...

2020-04-05 12:36:04 402

原创 【C语言】指针变量运算操作

指针变量除了的8种基本操作,还可以使用关系运算符来比较指针。1、赋值赋值:可以把相同类型的地址赋给指针。 例如, 用数组名、 带地址运算符(&) 的变量名、 另一个指针进行赋值。注意, 地址应该和指针类型兼容。也就是说, 不能把double类型的地址赋给指向int的指针, 至少要避免不明智的类型转换。C99/C11已经强制不允许这样做。int a[6] = {0};int b =...

2020-03-31 21:15:47 2826

原创 【C语言】指定初始化器

目录一、数组的初始化器二、结构的初始化器三、初始化器的综合应用四、参考资料一、数组的初始化器C99 增加了一个新特性: 指定初始化器(designated initializer) 。 利用该特性可以初始化指定的数组元素。例如, 只初始化数组中的最后一个元素。 对于传统的C初始化语法, 必须初始化最后一个元素之前的所有元素,才能初始化它:int arr[6] = {0,0,0,0,0,212...

2020-03-31 14:48:57 2423

原创 浮点数:printf(“%d,%d,%f\n“,a,b,c)各输出控制符取值的起始地址

目录一、问题抛出二、printf如何打印的三、回到问题一、问题抛出先看第一个例子:1、若运行时从键盘上输入9876543210l,则该程序在gcc编译器下的输出结果是()int main(){ int a;float b,c; scanf("%2d%3f%4f",&a, &b, &c); printf("\na=%d,b=%d,c=%f\n",a,b,c);...

2020-03-28 23:02:16 2730 1

原创 浮点数:不同的内存存储格式,当整型变量赋值给浮点型变量会发生什么?

问题: 计算机存储中,整型数据是以补码的形式存储在存储介质中,而浮点型数据是遵循IEEE754标准将数据存储在存储介质中。当整型变量赋值给浮点型变量的时候,对于两种不同的存储形式,计算机是怎么完成数据的复制?首先,编一个简单的C程序,通过编译生成的汇编文件看一下计算机是怎么处理的。/*文件名:1.c*/#include <stdio.h>int main(int argc, c...

2020-03-27 21:28:05 3550

原创 umask:文件/目录创建权限掩码(查看/修改)

创建文件时默认的权限是0666,创建目录时默认权限是0777,但是这个不是最终的权限,还需要根据umask值,去掉对应位的权限,最终得到创建的文件/目录的权限。例如:umask的值为0002创建文件的权限为:0666-0002=0664 (-rw-rw-r–)创建文件夹的权限为:0777-0002=0775(drwxrwxr-x)1、umask值查看:# 以数字方式查看掩码linux...

2020-03-24 21:56:55 5153

原创 shell命令(持续)

目录一、认识shell二、shell命令的格式2.1 命令提示符2.2 命令格式三、shell命令3.1 用户系统相关命令3.2 文件、目录相关命令3.3 压缩打包相关命令3.4 文件比较命令diff四、Linux环境变量五、参考资料一、认识shell英文单词shell可直译为“贝壳”,“贝壳”在动物中作为外在保护的一种工具。Linux操作系统的体系结构:内核是操作系统的核心,决定着系...

2020-03-02 00:24:28 9168 1

原创 DNS的解析过程

目录一、DNS简介1.1 域名和URL的区别1.2 什么是DNS1.3 DNS解析记录的分类二、DNS解析过程三、Linux命令查看DNS解析过程四、HTTP操作过程五、参考资料一、DNS简介1.1 域名和URL的区别域名是分等级的,一般分为:三级域名.二级域名.顶级域名.。注意,最后有一个点代表的是根域,是所有域的起点。常见的域名有google.com、baidu.com等。顶级域名TL...

2020-02-28 00:38:05 875

原创 Linux命令行修改配置(待续)

目录一、网络配置二、系统语言一、网络配置不同的linux系统修改网络配置的方法是是不同的。这里以CentOS6.5为例。将动态IP配置成静态IP1、sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0修改BOOTPROTO为:BOOTPROTO=“static”增加:IPADDR=192.168.72.133增加:NETMASK=25...

2020-02-25 21:29:20 1179

原创 【C语言】序列点和副作用

目录一、序列点和副作用二、举例说明2.1 完整表达式2.1 逗号运算符2.1 &&和||2.1 ?:C标准规定,在两个序列点之间,一个对象所保存的值最多只能被修改一次。C标准规定:两个序列点之间的执行顺序使任意的。当然这个任意是在不违背操作符优先级和结合特性的前提下的,这个规定的意义是为编译器的优化留下空间。程序通过序列点将程序分成若干句,程序按序列点的先后顺序,按序依次...

2020-02-19 19:00:55 1955 1

原创 【C语言】运算符以及++的注意事项

目录一、运算符1.1 优先级和结合律1.2 运算符优先级和结合律一览表二、关于++的注意事项1.1 为什么++的代码效率更高?1.2 ++的优先级1.3 一个语句中用太多递增运算符三、参考资料一、运算符1.1 优先级和结合律y = 6 * 12 + 5 * 20;当运算符共享一个运算对象时, 优先级决定了求值顺序。 乘法的优先级最高,所以先进行乘法运算。即,先进行两个乘法运算6 * 12和...

2020-02-18 20:06:29 2963

原创 芯片制造工艺中的衡量指标

目录一、芯片厂商二、制程2.1 最小栅极宽度(栅长)2.2 20nm制程的技术问题2.3 10nm制程的技术问题三、FinFET四、Intel、台积电、三星对制程的定义五、参考资料六、延伸阅读这篇博客主要解决两个问题:1、芯片制造中常见的10nm/7nm/5nm制程是指什么的距离?2、芯片制造工艺的先进行除了制程之外还有其它指标吗?一、芯片厂商目前芯片厂商有三类:IDM、Fabless、...

2020-02-16 21:22:33 14558

原创 计算机网络

网络一、计算机网络1.1 局域网1.2 交换机1.3 路由器二、互联网2.1 信息传递路径2.2 IP2.3 TCP&UDP三、万维网四、参考资料一、计算机网络1.1 局域网计算机静距离构成的小型网络,叫局域网,简称LAN(Local Area Networks)。局域网能小到是同一房间里的两台机器,或大到校园里的上千台机器。尽管开发和部署了很多不同LAN技术,其中最著名和成功的...

2020-02-11 20:06:00 1042

libressl-2.9.1.tar.gz

LibreSSL是OpenSSL加密软件库的一个分支,为一个安全套接层(SSL)和传输层安全(TLS)协议的开源实现。在OpenSSL爆出心脏出血安全漏洞之后,一些OpenBSD开发者于2014年4月创立了LibreSSL,目标是重构OpenSSL的代码,以提供一个更安全的替代品。LibreSSL复刻自OpenSSL库的1.0.1g分支,它将遵循其他OpenBSD项目所使用的安全指导原则。

2020-12-12

空空如也

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

TA关注的人

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