QT 进度条 介绍

需求 最近想了解下 进度条。 解决 QT–进度条 参考

2023-07-05 · 1 min · 6 words · RamLife

多进程,多线程了解

需求 最新希望了解一下,多进程和多线程分别适用的场景 解决 多进程适合 CPU 密集型任务:如果应用程序需要大量的 CPU 计算,并且没有太多的 I/O 操作,则使用多进程可能更加适合。这是因为每个进程都有自己的 CPU 时间片,可以并行执行,从而提高整个应用程序的性能。 隔离性:如果应用程序需要隔离不同的任务或数据,以确保它们不会相互影响,则使用多进程可能更加适合。每个进程都有自己的地址空间和资源,因此不同的进程可以独立运行,互相不会干扰。 多线程适合 I/O 密集型任务:如果应用程序需要大量的 I/O 操作(例如网络通信、磁盘读写等),则使用多线程可能更加适合。这是因为 I/O 操作通常是阻塞的,一个线程被阻塞时,另一个线程可以继续执行,从而提高整个应用程序的性能。 共享性:如果应用程序需要共享数据,并且需要在不同的任务之间共享数据,那么使用多线程可能更加适合。线程可以在同一地址空间内运行,它们可以访问相同的变量和数据结构,从而可以方便地共享数据。 轻量级任务:如果应用程序需要处理大量的轻量级任务,并且创建进程的开销太大,那么使用多线程可能更加适合。 参考 多线程和多进程的适用场景 一文弄懂多进程与多线程 多线程还是多进程的选择及区别

2023-07-03 · 1 min · 26 words · RamLife

消息队列和 socket 速度

需求 选择消息队列或者 socket 来传递信息,速度哪个快? 解决 长连接时, socket 比 queue 慢 10% 短连接时,速度更慢。 建议: 长连接,使用 socket,毕竟方便,效率也没有低太多。 短连接,使用 queue,或者数据库连接池。 参考 【本文已迁移到“程序员文摘” http://programmerdigest.cn/category/lajp】Linux下消息队列和socket绝对速度比拼 【转】Linux下消息队列和socket绝对速度比拼 数据库连接池学习笔记(一):原理介绍+常用连接池介绍 用消息队列和socket实现聊天系统

2023-06-29 · 1 min · 23 words · RamLife

多进程通信几种方式介绍

需求 多进程通信有哪几种方式? 解决 管道 命名管道 FIFO 使用 mkfifo 来创建管道文件。 不相关进程也可以通信。 匿名管道 使用 fork 来创建。只能用于父子进程。 消息队列 queue 保存在内核中的消息列表,如果没有释放,会一直存在。缺点时,不适合大数据的传输,单个消息有长度限制,全部消息总长度也有限制。 共享内存 同一块内存,多个进程都可以读写,可以省去复制的时间。但是如何管理多个进程的读写是个问题。 信号量 信号量可以用来管理共享内存,只有拿到信号量的才能进行读写。 信号 异常工作下的情况,就需要使用信号来进行干预了。比如说 ctrl-c 发出的 SIGINT 用来终止进程。 socket 可以用来本机之间不同进程的通信,也可以用作网络上不同主机之间的通信。 参考 {整理} Linux 进程间通信的方式、应用场景及优缺点 Linux进程间通信(IPC)的六种方式 一文搞懂六大进程通信机制原理(全网最详细) Linux进程间通信详解(最全)

2023-06-28 · 1 min · 36 words · RamLife

localhost, 127.0.0.1, ip 区别

需求 和本级进程通信的时候,使用 localhost, 127.0.0.1, 本级 ip 之间的区别? 解决 localhost 连 IP 都没有,不会有IP报头,只会有 TCP 报头。从上向下,经过 应用层,传输层。 127.0.0.1 有 IP,会有 IP 报头。 从上向下,经过 应用层,传输层,网络层。 参考 【IP/TCP】127.0.0.1和localhost和本机IP三者的区别

2023-06-27 · 1 min · 24 words · RamLife

c++ json 库 nlohmann json 转换异常 [json.exception.type_error.305]

需求 nlohmman 进行 json 转换时,报异常: [json.exception.type_error.305] cannot use operator[] with a string argument with array. 解决 转换为 json 异常 原因可能是,嵌套时,括号不匹配 void to_json(json& j, const VoltageConfigJson& config) { j = json{{"config_name", config.name}}; for (auto & cfg : config.data) { json channel; to_json(channel, cfg); j["config_data"].push_back(channel); } } 上面这个代码中,如果第一句写成下面这样,那么就会是 305 的异常。 j = json{"config_name", config.name}; 参考 {json.exception.type_error.305} cannot use operator{} with a string argument with array Cannot use operator{} with a string argument with string...

2023-06-26 · 1 min · 92 words · RamLife

c++ json 库 nlohmann 中类和 json 转换

需求 尝试使用 nlohmman 把复杂的类转为 json。 解决 复杂的类需要对其中的某些部分单独抽出来进行转换。 用于转换为 json 的类 struct VoltageSetConfigData { float w1; float p1; float w2; float p2; float ref; float pf; }; using VoltageGetConfigData = VoltageSetConfigData; class VoltageConfigJson { public: std::string name; std::vector<VoltageGetConfigData> data; }; 数组单个元素转换 void to_json(json& j, const VoltageGetConfigData& data) { j = json{{"w1", data.w1}, {"p1", data.p1}, {"w2", data.w2}, {"p2", data.p2}, {"ref", data.ref}, {"pf", data.pf}}; } void from_json(const json& j, VoltageGetConfigData& data) { j.at("w1").get_to(data.w1); j....

2023-06-26 · 1 min · 135 words · RamLife

c++ json 库 nlohmann 文件读写

需求 nlohmman 读写 json 配置文件. 解决 写文件 QString fileName = QFileDialog::getSaveFileName(this, tr("save config file"), "./voltage_", tr("Json (*.json)")); qDebug() << fileName << Qt::endl; if (fileName.isEmpty()) return; ofstream file(fileName.toStdString(), ios::out); json j; to_json(j, config_json); file << j << std::endl; 读文件 QString file_name = QFileDialog::getOpenFileName(this, tr("load config file"), "./voltage_", tr("Json (*.json)")); qDebug() << file_name << Qt::endl; if (file_name.isEmpty()) return; ifstream file(file_name.toStdString(), ios::in); json j = json::parse(file); 参考 nlohmann/json 的主要用法 【C++ JSON 开源库】nlohmann入门使用总结 nlohmann/json...

2023-06-26 · 1 min · 72 words · RamLife

QT 线程池 介绍

需求 最近想了解下 线程池。 解决 QT 多线程之线程池QThreadPool(深入理解) 参考

2023-06-26 · 1 min · 7 words · RamLife

QT tcp server 多线程

需求 qt 在 tcp 编程时,希望 server 多线程来处理多个客户端的连接。 解决 多线程来处理连接的时候,还是 override incomingConnection 比较方便。主要是两个方面的工作: 创建新的 TcpSocket 方便处理数据 每个线程用来维护多个客户端 参考 QT的TCP连接多线程实现 QT编写TCP/UDP调试助手之多线程TCP服务器 Qt多线程 TCP 服务端 QT学习:QTcpServer多线程实现 QTcpServer多线程实现 iap_download

2023-06-26 · 1 min · 25 words · RamLife