本地安装MySQL数据库以及在Qt中的使用
本地安装MySQL数据库以及在Qt中的使用
本地安装 MySQL 过程
1. 安装 MySQL
下载地址:
MySQL 官网:https://dev.mysql.com/downloads/mysql/
Windows 可以选择两种:msi 和 zip,以下过程是 zip 方法:
2. 新建配置文件
1234567891011121314151617181920212223[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录 ----------是你的文件路径-------------basedir=H:\mysql-9.1.0-winx64# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建# 设置 mysql数据库的数据的存放目录,MySQL 8+ 不需要以下配置,系统自己生成即可,否则有可能报错#datadir=H:\mysql-9.1.0-winx64\data# 允许最大连接数max_connections=200# 允许连接失败的次数。max_connect_errors=10# 服务端使用 ...
重装系统后重新配置hexo和docsify环境
重装系统后重新配置hexo和docsify环境
序言
电脑重装系统后 hexo 和 docsify 环境没了,但还留着两个环境的本地目录,就不用重头来过了,只需要配置一下基础环境就可以继续玩耍了。
过程
1. 安装 git bash 和 Node.js
安装 git bash:
Git - Downloading Package (git-scm.com)
安装 node.js
Node.js — 在任何地方运行 JavaScript (nodejs.org)
查看版本:
12node -v npm -v
npm 换镜像源(镜像源找最新可用的):
1npm config set registry https://registry.npmmirror.com
国内npm源镜像(npm加速下载) 指定npm镜像_npm 国内镜像-CSDN博客
2. 安装 hexo 和 docsify
安装 hexo 环境:
1npm install -g hexo
这时候在原来目录即可使用命令运行预览网站:
1hexo c && hexo g && hexo s ...
Qt-Android环境搭建
Qt 安卓环境搭建
序言
Qt 开发 Android 需要 jdk、ndk、sdk 三个包,并且 Qt 的版本要与这些包的版本对应,否则会出现一堆奇怪的 bug,我的环境如下:
qt 版本:5.14.2
JDK:1.8.0_172
NDK:r20b
SDK:24.4.1
安装时注意安装目录不能有中文,这一点不用多说,网上有些说不能带空格,但我是直接使用默认安装目录的,而默认目录是有空格的,所以这个应该不是大问题,最终我使用默认目录也可以成功。
Qt 和 Android 版本依赖关系:
Getting Started with Qt for Android | Qt 5.15
搭建过程
Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤_觉皇不秃头的技术博客_51CTO博客
1. 安装 qt
我选择的版本为:5.14.2,勾上 Android 组件,其他按需选择即可,
下载地址(这个可能需要开梯子,镜像源中没找到这个版本,所以我直接开梯子下载了):
Index of /archive/qt/5.14/5.14.2
2. 安装 JAVA JD ...
搭建TeamSpeak服务器
搭建TeamSpeak服务器
需要一台长时间开机以及拥有公网 IP 的电脑,因为没有公网 IP,所以这里就购买了云服务器进行搭建,经过价格对比最终选择了[腾讯云](腾讯云 产业智变·云启未来 - 腾讯 (tencent.com))服务器,初次购买优惠一年 79 元,2 核 2 G、系统盘 50 G、流量包 300 GB/月、带宽 4 Mbps。
Linux 环境安装服务器
准备工作
考虑到安全性,这里新建一个用户存放服务器文件:
1useradd teamspeak
下载和解压压缩包
123wget https://files.teamspeak-services.com/releases/server/3.13.7/teamspeak3-server_linux_amd64-3.13.7.tar.bz2tar -xvf teamspeak3-server_linux_amd64-3.13.7.tar.bz2
修改下目录名
1mv teamspeak3-server_linux_amd64-3.13.7 teamspeak3
赋予目录给新建的用户权限
12chown -R teamsp ...
Linux内核锁机制
Linux内核锁机制
Linux 并发与竞争
并发:Linux 系统是个多任务操作系统,会存在多个任务同时访问同一片内存空间,这些任务可能会相互覆盖这段内存中数据,造成内存数据混乱。
并发访问带来的问题就是竞争,竞争并发的执行单元对共享资源(硬件资源和软件上的全局变量)的访问而导致的竞争状态。因此我们需要对共享数据进行保护处理,防止多个任务同时访问它。
并发的原因一般有:
多线程并发访问:Linux 是多任务(线程)的系统,多线程访问是最基本的原因。
抢占式并发访问:Linux 内核支持抢占,调度程序可以在任意时刻抢占正在运行的线程,从而运行其他的线程。
中断程序并发访问:硬件中断的优先级很高。
SMP(多核)核间并发访问:多个 CPU 核存在核间并发访问。
临界资源:多个进程访问的资源,共享数据段。
临界区:多个进程访问的代码段。
Linux 内核锁机制
Linux 内核提供解决竞争的手段有如下几个方法:原子操作、自旋锁、信号量、互斥体。
原子操作
原子操作是指不能再进一步分割的操作,一般原子操作用于整型变量或者位操作
例如 C 语言中的整型变量 a 进行赋值操作,C 语言编译转 ...
Linux-V4L2-USB-Camera
Linux-V4L2-USB-Camera
序言
在 Linux 开发板上使用 V4L2 框架驱动 usb 摄像头。
V4L2 简述
V4L2(Video for Linux 2)是 Linux 内核中用于视频捕获设备的一个 API(应用程序编程接口),它提供了一套标准的方法来访问和控制视频捕获硬件,如摄像头、视频编码器等。
市面上有各种型号各种厂商的摄像头,驱动需要一个一个写很麻烦,于是出现了 v4l2 框架。现在大多数摄像头都适配 v4l2 框架,使用 v4l2 框架可以很方便地驱动各种接口的摄像头。
V4L2 在include/uapi/linux/videodev2.h 文件中定义了一些重要的数据结构,在采集图像的过程中,就是通过对这些数据的操作来获得最终的图像数据。
V4L2 支持两种方式来采集图像:内存映射方式(mmap)和直接读取方式(read),前者一般用于连续视频数据的采集,后者常用于静态图片数据的采集,本次是用摄像头进行视频采集所以使用 mmap 的方式。
应用程序通过 V4L2 接口采集视频数据步骤:
打开视频设备文件(/dev/videoX),进行视频采集的参 ...
使用EMQX搭建MQTT服务器
使用EMQX搭建MQTT服务器
序言
早初是使用阿里云和 OneNET 平台作为 MQTT 服务器进行使用,但有些功能需要 money,所以就想着能不能自己搭建个简易的服务器来耍耍,查找资料找到 EMQX 很符合自己的需求。
EMQX 是一款大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器。
作为全球最具扩展性的 MQTT 消息服务器,EMQX 提供了高效可靠海量物联网设备连接,能够高性能实时移动与处理消息和事件流数据,帮助您快速构建关键业务的物联网平台与应用。
EMQX 分为两个版本:开源版和商业版,这里作为学习使用,使用开源版即可,文档如下:
产品概览 | EMQX 5.0 文档
Windows安装EMQX
EMQX 支持多平台安装,这里我使用 Windows 来安装,下载地址:
Release EMQX v5.3.2 · emqx/emqx (github.com)
目前一些较新的版本好像没有 Windows 版本的。
解压得到:
当前目录下打开 Windows PowerShell 命令行窗口,输入命令
1.\bin\emqx start
启动的时候会弹出防 ...
交叉编译QT-MQTT库
交叉编译QT-MQTT库
序言
前置条件:需要有交叉编译好的 arm 环境的 qt 工具,本文不涉及。
交叉编译 qt-mqtt 库在 arm 开发板上运行 mqtt 客户端连接 mqtt 服务器。
交叉编译过程
编译出来的 Qt Mqtt 库,要使用它有两种方式,
一种是直接在项目中导入外部库和头文件
一种是将其以模块的形式部署到 Qt 的安装目录,这里采用这种,不需要每次导入外部库
下载 qt-mqtt 源码,版本需要与 qt 版本相同,下载地址:
qt/qtmqtt: Qt Module to implement MQTT protocol version 3.1 and 3.1.1 http://mqtt.org/ (github.com)
解压得到下列文件:
123router2@ubuntu:~/third_lib/qtmqtt-5.15$ lsdist LICENSE.GPL3 qtmqtt.pro sync.profileexamples LICENSE.GPL3-EXCEPT src tests
复制头文件
先把 ...
Linux-音频驱动
Linux-音频驱动
序言
移植了 mplayer 播放器,播放视频时发现没有声音,原来是音频驱动还没移植。100ask 开发板使用到的音频芯片为 WM8690,Linux 内核已经有该驱动文件了,我们仅仅只需要使能驱动和修改设备树。
音频这一部分对于目前的自己有点困难了,网上齐全的资料也较少,这里最后在开发板上使用 aplay 不能正常播放音频文件,但是使用 mplayer 可以正常播放视频带有音频也能正常单独播放音频,倒也是解决了目前的需求,后续有能力再回头看能不能解决 aplay 的问题。
环境
硬件环境
开发板型号: 100ask_imx6ull_pro 开发板
处理器类型:NXP IMX6ULL
**处理器架构:**恩单核 Cortex-A7
**处理器主频:**800MHZ
内存容量:512 MB DDR3
存储介质:4GB eMMC
本次测试的驱动:音频芯片 WM8690
软件环境
宿主机
宿主机操作系统:Ubuntu 18.04
交叉编译器:100ask 提供的工具链 arm-buildroot-linux-gnueabihf- 支持的最低内核版本:4.9.0
...
autotools自动生成Makefile
autotools 自动生成 Makefile
Makefile 可以大大提高编译程序的效率,手写 Makefile 也比较麻烦,所以比较大的项目都是使用 autotools 工具来自动生成 Makefile。
流程大致如下:
Linux c 开发 - Makefile工具-CSDN博客
Linux中使用autotools自动生成Makefile_automake --add-missing automake: warnings are trea-CSDN博客
automake—configure.in/configure.am和makefile.am编写-CSDN博客