C++ 笔记
C++关于编译器
gcc 主要用作 C 语言编译器,但它实际上可以编译多种语言的代码,包括 C、C++等
g++ 专门用于编译 C++ 代码
在使用gcc编译时,需要添加-lstdc++ -o ,-lstdc++ 选项用于告诉编译器链接 C++ 标准库,-o 选项指定输出文件的名称。
而在使用g++时,则无需,但要在JSON文件里修改编译器(许多软件、工具、框架都使用 JSON 作为配置文件格式)
代码1using namespace std;
需要避免与用户自定义的类或函数名字与 C++ 标准库 大量常用的工具和数据结构(例如 vector、string、map 等)冲突。为了避免每次都写 std:: 前缀在前面声明这样一句话。
for常见的几种使用方式:
传统的循环方式,for(int i = 0;;),如果是循环中初始化的变量,作用域只能在for循环里。
遍历容器或数组,for (declaration : container)
使用引用的范围,for (int& num : numbers)
这里的&表示引用,当函数参数是大对象时,使用值传递会导致对象被复 ...
JAVA 笔记
JAVA简介JAVA三大类:
JAVASE
JAVAME
JAVAEE
主要特性:
安全性
面向对象
跨平台
原理:内部存在一个虚拟机
通过javac将 .java文件编译成.class文件
java工具运行
jdb调试工具
JDK
开源
多线程
简单易用
有许多的库、核心类库
基础知识注释:
单行注释://注释信息
多行注释:/*注释信息*/
文档注释:/**注释信息**/
关键字:class:类 …
数据类型字面量:整数类型、小数类型、字符类型、字符串类型、布尔类型、空类型(null),常量也是有变量名的,只是值不会发生改变
特殊的字面量
\t:制表符,打印时将前面的字符串长度补齐到8或是8的整数倍。最少1个,最多8个
常量使用final关键字修饰常量
整数类型{byte(8位)、shot(16位)、int(32位)、long(64位)}、小数类型{float(32位)、double(64位)}、字符类型{char(16位)}、字符串类型(是通过String类进行表示的)、布尔类型{boolean(只有true和false,默认值是false)}
引用类型 ...
STM32-LCD
LCD显示 SRAM与FLASH最近在玩STM32的LCD显示时,发现了一些关于内存空间的问题。
stm32的FLASH可以类比于ROM(相当于硬盘),SRAM可以类比于RAM(内存),但也有一些区别,先不具体了解了,后面再说。
图片的表示有多种方式:RGB、HSV等。在传输图片时,一般是将图片的RGB转换成三种颜色对应的数字,数字的范围我们一般是采用从0-255,但是这也不是绝对的,可将范围变大变小,有时为了减少数据量,适当牺牲色彩的细腻也是可以接受的。由于采用的芯片STM32F103C8T6的SRAM太小,因此采用16bety的数据对每个像素进行表示,这依然有两种方式:
RGB565:用5位表示红、6位表示绿、5位表示蓝RGB555:16位数据中用5位表示红、5位表示绿、5位表示蓝,浪费一位
这里采用RGB565的方式。
由于我使用的屏幕是128*160分辨率,故需要先对图片进行按比例缩放,同时将图片数据解析为数字信息。采用python实现该功能:
1234567891011121314151617181920212223242526272829303132333435363 ...
STM32F10*系列单片机开发
STM32F10*系列单片机开发开发方式常用于开发STM32的有三种方式:
直接操作寄存器
使用官方库函数
ST官方推出的HAL库
这三者区别在于:操作寄存器过于麻烦,库函数只适合某系列的STM32单片机(比如STM32F1的代码就不能直接移植到STM32F4上去),HAL库则适用于STM32全系列单片机。且目前库函数版本官方已经停止更新,大势所趋是使用HAL库。
不同芯片的开发不同的STM32芯片可以共用同一份HAL库,但是并不意味着代码可以完全不改,不同的芯片引脚数、引脚用处可能不尽相同。比如STM32F103ZET6有144个引脚,STM32F103C8T6只有48个引脚。
在开发时,我们需要查看相应的数据手册和电路板的原理图。
以网上找到的STM32F103C8T6资料为例(方便后续查找):
可以看到虽然引脚数不同,但是对于同一引脚对应的主要功能和额外功能都是相同的。因此我们在将其他芯片的代码迁移过来时,需要额外关注使用的芯片是否具有该引脚,没有则需要寻找合适的引脚替代以实现想要的功能。此外我们还需要关注芯片的外设,以下图为例,正点原子的精英版STM32F1的 ...
RC522
认识RC522模块RC522是一种常用的无线射频识别(RFID)模块,广泛用于门禁系统、身份识别、支付系统等领域。它基于13.56MHz的射频技术,与NFC(近场通信)技术兼容,能够读取和写入符合ISO/IEC 14443 A/MIFARE协议的标签和卡片。
ic卡结构ic卡,比如我们日常使用的校园卡,以最常见的MIFARE Classic IC卡为例:包含16个扇区,每个扇区由4个块组成,每个块可以存储16个字节的数据。每个扇区的最后一个块是尾块,包含了两个密钥(Key A和Key B)以及访问条件。这些密钥和访问条件用于控制对相应扇区的读写权限。
其中扇区0:第一个扇区(扇区0)的第一个块(块0)被称为制造商块,它包含了卡片的唯一标识符(UID)、制造商数据等信息,是出厂时就写入的,而且在大多数情况下无法更改。
其他扇区可用于存放个人信息:姓名、性别、出生日期等;账户信息:余额、最近交易记录等……
因此当你给校园卡充值后,需要通过某种形式的刷卡操作,将新的金额信息写入到卡内,这样卡内保存的金额信息才会更新。
例子:扇区1的布局
**块0 (扇区1的第1块)**: ...
dji Manifold2 C++开发
dji Manifold2 C++开发下载疆官方的onboard-sdk的原始工程项目,并进入示例代码的目录:,使用如下命令将示例代码编译为示例程序:
123mkdir build && cd buildcmake ..` 或 `cmake .. -DADVANCED_SENSING=ON#(使用视觉功能)make
执行示例程序1. 复制配置文件将配置文件UserConfig.txt拷贝到bin文件中:
1cp ../sample/platform/linux/common/UserConfig.txt bin/
2. 输入程序运行命令(如下以运行flight control 示例代码为例)1./djiosdk-flightcontrol-sample UserConfig.txt UserConfig.txt
Cmake的使用在文件的根目录下有一个CMakeLists.txt文件:
12345678910111213141516171819202122232425262728cmake_minimum_required(VERSION 2.8)project( ...
dji妙算2装python3.8
dji妙算2装python3.8去官网下载Python-3.8.1.tar.xzwget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz
如果下载失败 1.将服务器DNS改成 8.8.8.8 2.将源改为清华或者豆瓣源
解压并进入解压文件的目录:12tar -xvJf Python-3.8.1.tar.xzcd Python-3.8.1/
安装依赖(非必要,但建议都装一下,不装可能会在step5 或者 装完跑代码的时候报错)
执行下列命令安装依赖过程中,如有提示,一律输入 y 。
12sudo apt-get install python-dev libffi-dev libssl-devsudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev xz- ...
about labelImg
目标检测自制数据集下载打标工具:labelImg(https://github.com/tzutalin/labelImg/releases或者[labelImg · PyPI](https://pypi.org/project/labelImg/))
Open Dir打开存放待标定图片的文件夹。
选择需要的format(比如yolo或者PascalVOC)。
接下来就可以开始打标签了。
分享好用的快捷键:
w 开始创建矩形框;
d 切换到下一张图;
a 切换到上一张图;
此外还可以通过view的Auto Save Mode自动保存(当切换下一张图片时自动保存),以及Single Class Mode减少工作量。
★ 一定要自定义一下标签,在下载完后会得到windows_v1.8.1这样的文件夹,进去后有一个data的子目录,目录中有一个存放标定标签的文件predefined_classes.txt,里面会有一些初始的标签,要根据自己的需要进行修改。
about server
关于云服务器安装ssh:ubuntu:
1sudo apt-get install ssh
centOS:
1yum -y install openssh
启动服务:
1service sshd start
配置端口:
1vim /etc/ssh/sshd_config
取消root 22和PermitRootLogin yes的注释
远程访问:输入ssh root@120.26.208.83(@后面填写公网IP),再输入密码后可以访问云服务器。
查看服务器端口使用情况
1netstat -nultp
云服务器开放某端口后,服务器可以访问本地服务,但是不能通过公网IP进行访问时,需要修改云服务器提供商的安全组手动添加允许访问的端口。
好用的curl命令,可以检查某端口是否开放了:
1curl IP:端口
设置开机自启动自己写一个shell脚本 将写好的脚本(.sh文件)放到目录 /etc/ ...
云服务器之搭建chatgpt
搭建chatgpt搭建过程比较简单,首先用ssh根据连接自己的服务器,然后
1.安装docker环境:
1apt update && apt install docker.io -y
2.拉取pandora镜像
1docker pull yidadaa/chatgpt-next-web
3.启动容器
这里设置的端口是3000,也可以自己改成其他端口
1234docker run -d -p 3000:3000 \ -e OPENAI_API_KEY=sk-xxxx \ -e CODE=your-password \ yidadaa/chatgpt-next-web
这里推荐使用国内中转网站https://api.chatanywhere.tech,API_KEY可以在https://github.com/chatanywhere/GPT_API_free?tab=readme-ov-file中申请。
12345docker run -d -p 3000:3000 \ -e OPENAI_API_KEY=sk-xxxx \ -e CODE=you ...