分类目录归档:未分类

Qt连接远程数据库的优化方案

Qt内部提供的MySQL连接方案是内部插件QMYSQL的,如果在连接配置不当时长时间空闲时,会导致线程琐死,主要原因mysql_stmt_prepare这个函数阻塞了线程,导致一直不返回.
默认的情况下,以下参数都是0,我们需要设置一个时间,让其超时返回.
MYSQL_OPT_RECONNECT=1;
MYSQL_OPT_CONNECT_TIMEOUT=10;
MYSQL_OPT_READ_TIMEOUT=10;
MYSQL_OPT_WRITE_TIMEOUT=10
此外,我们还需要增加一个定时轮循的健康检查函数,避免长时间空闲而自动断开,从而导致访问超时重连的异常处理.
健康检查的SQL语句是: select 1 as result;这个SQL不涉及表操作,性能很高,能正确返回1即可.

db = QSqlDatabase::addDatabase(driver, connectionName);
        QString hostName = QKgSettings::value("Mysql/hostName", "127.0.0.1").toString();
        int port = QKgSettings::value("Mysql/port", 3306).toInt();
        QString userName = QKgSettings::value("Mysql/userName", "test").toString();
        QString password = QKgSettings::value("Mysql/password", "123").toString();
        QString database = QKgSettings::value("Mysql/database", "woall").toString();
        db.setConnectOptions("MYSQL_OPT_RECONNECT=1;MYSQL_OPT_CONNECT_TIMEOUT=10;MYSQL_OPT_READ_TIMEOUT=10;MYSQL_OPT_WRITE_TIMEOUT=10");
        db.setHostName(hostName);
        db.setPort(port);
        db.setUserName(userName);
        db.setPassword(password);
        db.setDatabaseName(database);
        if(!db.open()) {
            return db;
        }

GoLang的配置

GoLang-2019.3.4的版本

export GOROOT=/go-1.19.12
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOBIN
export GOPATH=/home/working/goapp
export GOPROXY=https://goproxy.cn,https://goproxy.io,direct

export PATH=$PATH:/node-v14.18.2/bin:/cmake-3.24.2/bin
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

修改高版本SDK适配

http://www.kxtry.com/archives/3832

Ubuntu下的MySql组件不能被加载的解决办法

其组件是:libmysqlclient.so.18

必须采用ldd指令确认libmysqlclient.so.18组件是不依赖openssl那些加密组件的,正常情况下,文件大小约9M。

在Qt5.11.2中,不知道为什么LD_LIBRARY_PATH及QCoreApplication::addLibraryPath均无法调用文件,故仅有如下方法可解决。指定文件主动加载,才可能解决。

QLibrary my(QCoreApplication::applicationDirPath() + "/libmysqlclient.so.18");
if(my.load()) {
        qDebug() << "success to load mysql.";
}

安卓模拟器–跨主机连接


测试验证,当前最好用的是【雷电模拟器9】,支持ADB的调试,其它的如网易腾迅等其它均只支持安装应用,但不支持ADB的单步调试。

——————————–

第一步安装bluestacks模拟器。下载地址:https://www.bluestacks.com/或https://www.bluestacks.cn/下载最新版 bluestacts5不要下载bluestactsX,因为bluestactsX更偏重游戏化模式,界面太。

第二步:开启adb远程调试,因为它是监听localhost地址的,故需要利用windows的portproxy机制建立转发通道。

netsh interface portproxy add v4tov4 listenport=5556 listenaddress=0.0.0.0 connectport=5555 connectaddress=127.0.0.1

netsh interface portproxy show all

netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8973
netsh interface portproxy delete v4tov4 listenaddress=0.0.0.0 listenport=8972

Ubuntu22.04解决ch34x串口驱动问题。

apt remove brltty
chmod a+rw /dev/ttyUSB*

——执行上述两条语句后,仍不能解决串口问题,才阅读以下代码。——–

本人的串口,并没有重装驱动,也是可以正常工作的。网上有一些其它教程是需要重新安装驱动,可参考:

https://blog.csdn.net/zym787/article/details/128854952


一、查看串口是否被识别
输入指令:lsusb,如下截图所示,它是能正常识别硬件的:

二、检查串口是否被驱动加载,输入指令ls /dev/ttyUSB*将会列出USB的加载情况。如果提示No such file or directory则是没有被驱动加载。

三、安装minicom串口工具。apt install minicom

四、配置minicom的串口。指令:minicom -s

五、选 择Serial port setup,并修改串口为ttyUSB0

六、最后保存为Save setup as dfl

七、测试,执行minicom -c on

八、因报文件不存在错误,采用dmesg|grep tty命令检查发现,被brltty进程占用。

九、brltty是用于盲人服务的程序,我们是不需要它的,故直接删除它并重新插拔串口设备:apt remove brltty。

十、再次测试验证

十一、下载WoTerm终端工具,打开本地串口找到,确认能通迅。

如果提示没有权限,则chmod a+rw /dev/ttyUSB0即可

十二、如果提示没有权限,则赋预读写权限:chmod a+rw /dev/ttyUSB*

Ubuntu22.04的五笔安装

第一步:安装fcitx5

apt install fcitx5 fcitx5-chinese-addons

第二步:在设置中依次选择地区&语言 -> 管理安装的语言 -> 键盘输入法系统,选择fcitx5

第三步:重启系统,在重进系统后。

CMAKE增加Debug的后缀

set_target_properties(ptyqt-agent PROPERTIES DEBUG_POSTFIX "d")
set_target_properties(ptyqt PROPERTIES DEBUG_POSTFIX "d")
而 set(CMAKE_DEBUG_POSTFIX "d") 仅对add_library这类会增加后缀,而add_executable这种是不行的。