- 博客(50)
- 收藏
- 关注
原创 pycharm远程连接服务器
2.我自己create的conda虚拟环境里面有3个版本的python,只有python3.9的那个才配了pytorch环境的是能用的。1.学长教的是默认配的conda环境,其他pytorch啥的还是要自己配。3.找pyhon3.9的环境路径。
2022-11-20 15:17:44
605
原创 JAVA学习之继承
语法在java中用extents关键字来表示一个类继承了另一个在JAVA中object类是所有类的父类方法重写:方法重写是指子类可以根据需要对从父类继承来的方法进行改写,是多态机制的前奏方法重写注意点:·重写方法必须和被重写方法具有相同的方法名称、参数列表和返回值·重写方法不能比被重写方法有更严格的访问权限·父类中的私有方法,不能被重写·在子类重写的方法中继续调用父类被重写的方法可以通过super.函数名获取toString();equals();hashcode();clone
2022-04-18 17:42:41
222
原创 java学习之面向对象——封装
面向对象有三大特性:封装、继承、多态。封装的概念:将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体(即:对象)。类内的访问权限:封装的目的:隐藏内部实现细节,对外提供功能接口UML(Unified Modeling Language):是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言。构造函数(构造方法)构造方法负责对象初始化工作, 为对象的属性赋合适的初始值创建对象时,其类的构造方法确保在用户操作对象之前进行。语法规则:方法名与类名一致没有返回类型
2022-04-17 11:03:20
236
原创 JAVA 学习第二课 周边概念理解
JAVA、 SE、 EE、 ME的区别:JAVA SE:(Java Platform,Standard Edition)标准版本。JAVA EE:Java 平台企业版(Java Platform Enterprise Edition)面向企业的开发。多了很多api。主要用于B/S架构开发。Java ME: 称为微型版本(Java Platform,Micro Edition)是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台。JRE、JDK、JVM的区别JRE:(Java R
2022-04-11 15:53:15
116
原创 嵌入式学习Java第一课
嵌入式为什么要学习java首先来看一下传统的嵌入式学习路线:C语言 >> 应用:C51,STM32linux系统编程C++ >> 应用:QTARM开发在系统的UI层面上:无操作系统的裸机开发:用C语言手撕图像像素(优点:响应速度快,对硬件资源要求低。缺点:UI界面丑)带操作系统的(linux):c、MINIGUI、GTK图像库、NCURSE-带操作系统的(linux):C++、QT目前趋势:安卓平台普及(刷卡机、点歌机)鸿蒙系统:内嵌安卓总结:在
2022-04-11 11:14:49
1285
原创 在 制作基于stm32f103的温湿度检测时遇到的问题及解决方法
1、DHT11模块启动不了1.没有做DHT11启动判断(若DHT11启动会出现一段低电平),(硬件启动有点玄学问题),如果一次不行就跳过这次循环,下一次再尝试启动DHT11传感器。或者尝试多次拉高电平然后再根据芯片手册的启动电平信号去改变电平信号。2、屏幕上的数值反应有点慢。。有时候还会卡住。猜想:可能是DHT11在某次数据采集过程中出现问题,然后在某个while循环中阻塞住了。解决办法:在while循环中做延时有效性判断,若延时了很久那就直接return,进入下一次数据采集。3.在DHT11_
2022-04-06 16:22:18
5353
原创 学习c++遇到的问题
1:&在定义时为引用,在当做运算符时为取地址、2.再类内定义有参数的构造函数时,在类外定义该类时应调用该构造函数Person p = Person(10,10);//显示调用Person p1(10,10);//隐式调用
2022-03-06 11:08:58
412
原创 C语言易错点
在子函数定义的数组不能被return,因为在子函数的数组的内存在运行结束后会回收。使用malloc申请内存空间即可。free()函数 只能free malloc创建的内存,free静态创建的变量会导致段错误。
2022-02-07 13:23:25
529
转载 C语言结构体大小计算
我们实际生活中,保存的数据一般不会是同一种类型,所以引入了结构体。而结构体的大小也不是成员类型大小的简单相加。需要考虑到系统在存储结构体变量时的地址对齐问题。由于存储变量地址对齐的问题,结构体大小计算必须满足两条原则:一、结构体成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)二、结构体大小必须是所有成员大小的整数倍下面来具体分析1、简单结构体truct s1{undefined char ch1; char ch2; int i;};这个结构体的大小
2022-02-01 19:51:09
425
原创 KMP算法求next数组
next 数组各值的含义:代表当前字符之前的字符串中,相同前缀后缀长度+1本文仅供本人忘记时复习使用。b站有个老师讲的很好的:https://www.bilibili.com/video/BV16X4y137qw?from=search&seid=8054889486484307163&spm_id_from=333.337.0.0...
2022-01-28 18:46:34
160
原创 字符数组与字符串赋值问题
产生这个错误的原因:[Error] assignment to expression with array type字符数组与字符串赋值问题(1)数组不能直接给数组赋值(2)指针不能直接给数组赋值根本原因:数组名在内存中是一个类似于常量的存在,可以理解为const,在编译的时候就已经给分配的储存位置,在需要使用到数组名时,直接获取的就是一个地址值,因此是不能改变的。char c[3] = a; //错误---》数组不能直接给数组赋值char d[3] = p; //错误---》指针不能
2022-01-26 17:10:44
2388
原创 为什么在printf中 数组名++不行,而数组名+1却可以
#include<stdio.h>int main(){ int arry[3] = {1,2,3}; int *p = arry; printf("%d\n",*p); printf("%d\n",*p++); printf("%d\n",*arry++); printf("%d\n",*(arry+1));} 对上面的代码进行编译发现第三个printf出现报错,错误信息:lvalue required as increment operand个人理解:数组名表示数组首元
2022-01-11 19:06:56
1375
1
原创 关于STM32上电按下复位键时串口输出FF
最近玩stm32,使用串口发送数据在PC端使用串口工具检测接收到的数据,发现STM32串口发送到电脑的数据乱码,按下复位键总是显示FF,配置GPIO的时候先打开GPIO时钟再初始化GPIO和串口问题就解决了(可能是顺序问题)配置串口时尽量按下面的顺序配置1.开启IO和外设USART时钟。2.GPIO_Iinit();3.NVIC_Init();(如果使能中断)4.USART_ITConfig();5.USART_Cmd();2和3一定不能颠倒!!!...
2021-03-05 21:41:53
1725
1
原创 智能家居中 将树莓派摄像头拍摄的图片转为base64流时 libcurl传输时出现的 “产品类型错误”
如视频所示 20210212-202151 这可能是由于拍摄的图片的文件过大从而导致转换成base64流的字符串也特别长将拍摄命令改为`可解决问题raspistill -o img1.jpg -q 5...
2021-02-12 20:36:24
276
转载 Linux环境变量 PATH与LD_LIBRARY_PATH的区别去设置总结
转载自:https://os.51cto.com/art/201703/535881.htmPATH: 可执行程序的查找路径查看当前环境变量:echo $PATH设置:方法一:export PATH=PATH:/XXX 但是退出当前终端后就失效方法二:修改 ~/.bashrc 或 ~/.bash_profile或系统级别的/etc/profile在其中添加例如export PATH=/opt/ActivePython/bin:$PATHsource .bashrc (Source命令
2021-02-05 16:30:04
343
转载 HTTP与 HTTPS相关名词扫盲(面试)
文章目录http协议http之请求请求行http协议的响应响应行响应头响应主体HTTPS密码学基础对称加密非对称加密http协议http协议是建立在TCP/IP协议之上应用层协议,默认端口为80,8080http之请求http协议的报文传输的是ASCII码,在TCP/IP协议之上,主要主要分为三部分:请求行、请求头、请求体请求行第一行,包含三个信息:请求方式,url,http协议版本GET 请求GET /books/?sex=man&name=Professional HTTP/1.
2021-02-03 19:49:57
377
原创 TCP三次握手、四次挥手(面试)
TCP三次握手第一次握手:客户端发送第一个包,其中SYN标志位为1, ACK=0,发送顺序号sequence=X(随机int)。客户端进入SYN发送状态,等待服务器确认。第二次握手:服务器收到这个包后发送第二个包,其中包SYN、ACK标志位为1,发送顺序号seq=Y(随机int),接收顺序号ACK=X+1,此时服务器进入SYN接收状态。第三次握手:客户端收到服务器传来的包后,向服务器发送第三个包,SYN=0, ACK=1,接收顺序号ACK = Y+1,发送顺序号seq=X+1。此包发送完毕,客户端
2021-01-31 15:58:05
261
转载 OSI七层网络模型 (面试重点)
综合图表下面的图表试图显示不同的TCP/IP和其他的协议在最初OSI模型中的位置:7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP6 表示层 例如XDR、ASN.1、SMB、AFP、NCP5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets4 传输层 例如TCP、
2021-01-31 12:05:48
2789
原创 树莓派3B + Pi摄像头+mjpg-streamer操作步骤
步骤1:sudo apt-get install libjpeg8-dev #JPEG支持库sudo apt-get install imagemagicksudo apt-get install libv4l-dev #4l是小写"L"sudo apt-get install cmake #下载编译工具步骤2:sudo apt-get install gitgit clone https://github.com/jacksonliam/mjpg-streamer.gitcd
2021-01-30 18:36:59
169
原创 网络编程1、概念
IPC的几种方式:管道、消息队列、共享内存、信号和信号量。它们都是基于内核来工作的,只能让本机上的进程之间通讯,无法做到多机通讯。多机通讯就是电脑和电脑之间,或者手机和电脑之前的通讯。想要做到多机通讯就要用到网络通讯。IP地址:设备在网络中的地址,而且只有一个端口号:网络服务的端口,起到区分服务的作用 ...
2021-01-27 19:03:16
71
原创 线程学习之互斥锁
互斥锁 当一个进程中存在两个及以上(一个进程本来就有一个线程)的线程时,线程间会互相争夺共享资源,导致单个线程中的执行秩序会被打乱。所以需要用到互斥量来进行秩序控制,保证单个线程中的程序先执行完毕。 所以互斥锁的作用就是使上锁与解锁之间的代码完整的、不受别的线程“打扰”的执行完。而另一个线程必须等到这个锁解开了,才能执行自己的代码。注意互斥锁不能控制多线程的执行顺序,也就是我们加了锁之后,并不知道先执行那个线程.相关API创建互斥锁pthread_mutex_init();函数原型; int
2021-01-27 19:03:01
1369
原创 函数指针与指针函数
函数指针定义: 函数名表示存储空间的首地址,存放着函数首地址的指针变量,简称函数指针。定义方式: 函数返回值类型 (* 指针变量名) (函数参数列表);例子 int(*p)(int, int);使用struct humanlife{ char name[6]; char sex[6]; void (*pborn)(); void (*pgrew)(); void (*pchasedream)
2021-01-16 12:45:22
103
原创 SYStick定时器编写延迟函数
SysTick—系统定时器SysTick—系统定时器有 4 个寄存器,简要介绍如下。在使用 SysTick 产生定时的时候,只需要配置前三个寄存器,最后一个校准寄存器不需要使用。SysTick 寄存器汇总寄存器名称寄存器描述CTRLSysTick 控制及状态寄存器LOADSysTick 重装载数值寄存器VALSysTick 当前数值寄存器CALIBSysTick 校准数值寄存器(不常用到)SysTick 控制及状态寄存器位段名称类型
2021-01-12 12:53:22
1014
原创 STM32配置外部中断
中断概括STM32 中断非常强大,每个外设都可以产生中断,内核水平上搭载了一个异常响应系统, 分为:系统异常和外部中断。NVICNVIC相当于一个中断总开关,总开关打开,相应的中断才能使用。在讲如何配置中断优先级之前,我们需要先了解下 NVIC。 NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的功能,是内核里面的一个外设。代码 17-1 NVIC 结构体定义,来自固件库头文件: core_cm3.h1 typedef struct {2 __IO uint32_t ISER[8];
2021-01-11 11:02:40
325
原创 使用HSE配置系统时钟
配置时钟顺序需要按照时钟树的顺序来配置。 我们使用STM32时基本都是使用 HSE(外部高速时钟),然后 HSE 经过 PLL 倍频之后作为系统时钟。通常的配置是:HSE=8M,PLL 的倍频因子为:9,PLL时钟就设置成:72M,选择PLLCLK为系统统时钟源;则SYSCLK = PLLCLK8M * 9 = 72M。编写代码步骤1. 复位时钟固件库:RCC_DeInit(); 在系统启动时已经将时钟配置好了是开启(enable)的状态,有些时钟寄存器在enable的情况下是不能配置的,所
2021-01-09 22:03:27
1918
原创 使用stm32固件库点亮LED
文章目录创建固件库模板工程实现点亮LED准备工作:编写代码代码解释:创建固件库模板工程首先在此下载固件库文件:固件库在文件夹创建如下几个文件夹 将固件库中的libraries文件导入Lib文件夹中最后模板文件夹的各个文件如下所示Lib文件夹USER文件夹在PROJEECT文件夹中建立新的工程文件。并在工程中建立如下几个文件夹 START UP文件下包含32的启动代码,根据闪存大小的不同,选取的文件也不同。64k—128k的选 结尾为 _md的文件。FW-lib中包含的是固件库中的
2021-01-07 20:04:23
557
原创 linux驱动学习之对树莓派IO操作代码编写
linux地址的概念地址总线:是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。一个 16位元 宽度的位址总线到达 2 的 16 次方 = 65536 = 64 KB 的内存位址;但现在很多计算机内存已经大于4G(windows XP x32位系统最大只能识别3.29G,所以要使用4G以上大内存就要用windows x64位系统)。物理地址:是指处理器芯片发出,来进行地址空间寻址的地址,它与处理器地址引脚上发出的电信号相对应。虚拟地址:程序所操作地
2021-01-01 19:16:02
434
1
原创 驱动学习之代码编写
驱动框架 使用static是为了防止名字重复,让其只作用于当前文件。内核代码量巨大很容易出现重复。#include <linux/fs.h> //file_operations声明#include <linux/module.h> //module_init module_exit声明#include <linux/init.h> //__init __exit 宏定义声明#include <linux/device.h>
2020-12-31 11:04:49
307
原创 驱动学习之概念
文章目录学习的目的Linux设备驱动链表的作用:用户调用驱动的运行机制学习的目的 学习驱动的目的是为了以后,换了块板子,没有相应的wiringPi库调用,你也可以通过编写驱动来实现一些相应的功能,说白了学习驱动就是为了实现 “wiringPi库”。Linux设备 linux一切皆文件 Linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设
2020-12-30 21:00:27
175
原创 Linux内核框架的粗略认知
文章目录内核的作用Linux内核的任务:Linux系统层次结构用户(或应用程序)空间内核空间内核空间的层次系统调用接口内核代码**体系结构的代码**内核中的子系统(1)系统调用接口(2)进程管理(3)内存管理(4)虚拟文件系统(5)网络堆栈(6)设备驱动程序内核的作用 是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和组件进行寻址。Linux内核的任务:1.从技术层面讲,内核是硬件与软件之间的一个中间层。作用是将应用层序的请求传递给硬件,并充当底层驱动程序,对系统中的各种设备和
2020-12-29 18:32:48
148
原创 十一、linux系统文件认知
文章目录1. 什么是文件系统?2.FHS3. 文件系统(文件管理系统的方法)的种类有哪些?4. 什么是分区?虚拟文件系统 Virtual File Systems1. 什么是文件系统? Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所有Linux 用户和程序看到的文件、目录、软连接及文件保护信息等都存储在其中。 以上说的方法:就是文件管理系统(程序),简称文件系统2.FHS Filesystem Hierarchy Standard(文件系统层
2020-12-29 17:15:46
78
原创 十、树莓派Linux源码配置及编译
文章目录配置目的及准备工作2.交叉编译链的获取3.内核源码的获取配置编译环境变量配置内核(config)的方式编译配置目的及准备工作 配置、编译内核的的目的是为了驱动代码的编写而驱动代码的编译需要一个提前编译好的内核,编译内核就必须配置。配置的最终目标会生成 .config文件,该文件指导Makefile去把有用东西组织成内核。注意: 树莓派里安装的系统镜像版本要和kernel代码对应。因为树莓派系统是在不断开发和升级的,如果你的树莓派使用的是某个时间的系统镜像,那么最好也使用当时的kern
2020-12-26 19:33:21
753
原创 九、linux内核相关概念
这里写目录标题树莓派等芯片带操作系统的启动过程单片机windowslinux安卓树莓派Linux源码目录树分析linux内核源码:Linux内核源代码目录树结构树莓派等芯片带操作系统的启动过程单片机 C51,STM32(裸机)》》》》》》C直接操控底层寄存器实现相关业务。 业务流程型的裸机代码 遥控灯: while(1) 垃圾桶:WemosD1 LOOP 恩智浦智能车: stm32windowswindows:X86,Intel 架构处理器Windows启动过程: 电源 -&
2020-12-26 10:11:00
108
原创 八、Vmware安装Ubuntn18
这里写自定义目录标题①显示页面过小②安装vim③安装gcc安装ubuntu18要先卸载vm workstation10,然后再安装vm15vm15下载链接:vm15记录遇到的问题:①显示页面过小解决方法: sudo apt-get install -f:是修复依赖关系(depends)的命令,就是假如你的系统上有某个package不满足依赖条件,这个命令就会自动修复,安装那个package依赖的package。 sudo apt-get update:更新软件列表,apt-get属于apt
2020-12-26 09:45:39
198
2
原创 七、交叉编译
文章目录综述:编译链接编译、本地编译、交叉编译的概念为什么要交叉编译?综述:编译 在程序开发中,使用高级语言编写的代码被称为源代码,比如用C语言编写的后缀名为.c的文件,或者C++编写的后缀名为.cpp的文件。源代码不能被机器执行,必须转换成二进制的机器代码(指令+数据)才能被CPU执行。将源代码转换成机器代码的过程称为编译(Compile),编译的工作需要编译器(Complier)来完成。链接 把经过编译后生成的目标文件,按照其内在引用关系彼此相连接而生成一个完整的、可执行的文件的过程称为链
2020-12-21 21:23:50
189
1
原创 六、树莓派串口通信及相关概念
综述:串口通信多用于多机通信,基于模块化的编程思想,实现模块与Mcu间的通信。通信分为:全双工、半双工、单工。全双工:双方能够同时的进行发送和接收数据 半双工:通信双的数据流是双向的,但是不能同时的进行发送和接收 单工:通信双反的数据流是固定的,只能是从A–>B,或者是从 B—>A。通信协议及格式我们把双方要进行通信,看成两个人讲话。两个想要讲话的前提是:要说的话对方要听的懂(数据的格式),说话的语速对方能够听进去(波特率)。数据的格式:数据位、停止位、奇偶校验位。.
2020-12-21 12:32:46
659
原创 语音模块之学习硬件模块改代码
这里写目录标题1、看语音模块相关资料(与硬件配套)2、source insight使用方法1、看语音模块相关资料(与硬件配套)查看使用手册模块参数着重看红框的参数若下列这部分没有则需要自己分析代码;建议使用2、source insight使用方法软件查看代码,适合多文件代码比Keil查看方便1、在code文件中建立SI文件夹2、打开 S I软件点击 PROject建立新工程,选择SI文件夹为路径;选择code文件夹。点击ADD ALL3.选择View——Panels——Proje
2020-12-20 15:39:29
386
原创 五、树莓派外设开发实战
准备工作硬件:四路继电器,树莓派,杜邦线。(一路继电器突然坏了。。。血亏)原理:IN端若有低电平接入公共端(com)与常闭(NC)连接对应哪路的红灯亮。接线: 继电器 树莓派 VCC—————————————5v GND—————————————GND IN1、2、3、4(任选一个)—————GPIO 7代码编写注意点:relayin 后面的1、2、3、4表示的是GPIO.1\2\3\4不是板子上针脚的序号#include<stdio.
2020-12-18 21:39:42
336
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人