作者归档:xinlu

比特大陆的双网口动静态IP配置

linaro@bm1684:~$ cat /etc/network/interfaces.d/eth0
auto eth0
iface eth0 inet dhcp
iface eth0 inet static
      address 192.168.4.168
      netmask 255.255.254.0

linaro@bm1684:~$ cat /etc/network/interfaces.d/eth1
auto eth1
iface eth1 inet static
      address 192.168.4.169
      netmask 255.255.254.0
      gateway 192.168.4.1 这个可能会干扰上网
      dns-nameservers 192.168.4.1

CLion2019.3.x远程调试

因为调试比特大陆的盒子,故玩一波远程调试。
1.在Toolchains新增一个工具链。

2.在Deployment找到上图上添加的RemoteHost的配置。

3.在CMake的选项,Toolchain的选项中,选择之前的Remotehost配置。

在构建选项中,选择se5的选项,至此完成远程调试的全部配置。

Ubuntu关闭休眠模式

查看休眠模式的情况。

systemctl status sleep.target
如果显示sleep的状态为loaded,表示休眠是处于开启状态。

systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target
关闭休眠模式。

systemctl status sleep.target查看是否休眠

安装lightdm后,无法快捷键锁屏问题

因为向日葵必须是lightdm环境,故自安装lightdm后,发现无法快捷健锁屏,可有以两种方法解决。

1.切换回gdm3的桌面环境。

sudo dpkg-reconfigure gdm3

2.在系统中增加自定义快捷键。

Name: dm-tool lock
Command: dm-tool lock
ShortCut: Window+L

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.";
}