Mac M1 Qt连接MySQL
一、软件版本
- Qt 6.5.0
- Qt Creator 10.0.1
- mysql 8.0.31-arm64
二、安装Qt
通过Qt维护工具安装Qt
选择macOS和Source
1 | # 使用Homebrew安装Redis |
使用homebrew安装的Redis,配置文件的路径为:/opt/homebrew/etc/redis.conf
redis默认有16个数据库,编号为0-15,且默认访问0号数据库。
select 数据库编号 | 选择指定数据库 |
---|---|
dbsize | 获取当前数据库键值对数量 |
flushdb | 清空当前数据库 |
flushall | 清空所有数据库 |
save | 将数据保存至磁盘 |
bgsave | 将数据异步保存至磁盘(后台:Background) |
lastsave | 获取最后一次成功保存的unix时间 |
操作范围为当前数据库
set key value | 增加一对键值对,如果key存在,则覆盖key的值 |
---|---|
setnx key value | 仅在key不存在时,添加一个键值对 |
set key value xx | 仅在key存在时,覆盖key的值 |
mset key1 value1 [key2 value2 …] | 批量增加一至多对键值对 |
msetnx key1 value1 [key2 value2 …] | 批量版的setnx |
get key | 查看key的值 |
mget key1 [key2 …] | 批量查看一至多个指定的key的值 |
getset key value | 修改一个键值对并返回原值 |
del key1 [key2 …] | 按key删除一至多个键值对 |
keys 格式 | 查看符合指定格式的key,*为通配符 |
---|---|
exists key1 [key2 …] | 查看是否存在一至多个指定的key |
type key | 按key查看value的数据类型 |
rename key1 key2 | 重命名key1,如果key2已经存在,其值会被覆盖 |
renamenx key1 key2 | key2不存在时重命名key1 |
move key 数据库编号 | 按key将一个键值对移动到指定数据库 |
copy key1 key2 | 将key1的值拷贝给key2 |
append key value | 在原有的value后面追加内容 |
---|---|
strlen key | 查看字符串长度 |
getrange key startindex endindex | 获取范围是[startindex,endindex]的子串 |
incr key | 按key创建值为1的value,或者使value增加1(increase)1 |
---|---|
incrby key 数值 | 按key使value增长(increase)给定数值 |
decr key | 按key创建值为-1的value,或者使value减小1(decrease)1 |
decrby key 数值 | 按key使value减小(decrease)给定数值 |
生存时间time to live,缩写为ttl,指键值对距离被删除的剩余秒数
如果重新set,生存时间ttl将被重置
以下操作支持各种数据类型
expire key 秒数 | 设定一个生存时间 |
---|---|
ttl key | 查看生存时间剩余秒数(key不存在返回-2,永久键值对则返回-1) |
pexpire key 毫秒数 | 毫秒版 |
pttl key | 毫秒版ttl |
persist key | 持久化(取消生存时间) |
以下操作仅支持字符串
set key value ex 秒数 (setex key 秒数 value) | set + expire |
---|---|
set key value px 毫秒数 (psetex key 毫秒数 value) | set + expire |
set key value exat unix秒 | 设置一个unix秒的过期时间 |
set key value pxat unix毫秒 | 设置一个unix毫秒的过期时间 |
set key value keepttl | set时不重置ttl |
hset key field value1 [field2 value2 …] | 添加/修改一个键与一至多对字段和值 |
---|---|
hget key field | 按key和field获取一对value |
事务的ACID原则:
导入依赖
AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
通过动态代理的方式,将需要注入切面的对象进行代理,在进行调用的时候,将公共的逻辑直接添加进去,而不需要修改原有业务的逻辑代码,只需要在原来的业务逻辑基础之上做一些增强功能。
为什么要学习代理模式?因为这是SpringAOP的底层!
代理模式的分类:
角色分析:
通过前一篇的ESP-01S实现智能灯控,我们可以快速上手智能灯控并获得不错的交互体验。但是在一些突发情况下(如:客户端在家庭中删除了设备),此时就要从墙中取出esp-01s重新刷入固件,操作就会非常繁琐。本文分析灯控装置的源码,并优化固件,以便在突发情况下对灯控装置配网与重置。