一去丶二三里
聚焦程序人生,践行终身成长。专注分享 IT 技术「Qt/C++/Python/JavaScript/Linux 等」、学习资料、职场经验、热点资讯,有趣、好玩、靠谱!
展开
-
《Qt 企业级开发》
面向企业级一站式开发,包括:模块化开发、日志输出、打包发布、单元测试、自动化测试、内存检测、崩溃捕获等内容。原创 2020-02-28 17:25:37 · 18311 阅读 · 34 评论 -
一文详解 C++ 日志框架
日志框架 - 一个经过专门设计的实用程序,用于规范应用程序的日志记录过程。原创 2020-10-18 23:28:58 · 7583 阅读 · 5 评论 -
学会这个绝招,让 C++ 崩溃无处可逃!
Breakpad 是 Google 用 C++ 编写的一个开源、跨平台的崩溃报告系统,它支持 Windows、Linux 和 macOS,并提供了一个上传器,可以在进程崩溃时向一个配置好的 URL 提交 minidump 文件。目前,有很多大型项目都在使用 Breakpad,例如:Google Chrome、Firefox、Google Picasa、Camino、Google Earth 等。原创 2021-06-14 21:29:42 · 2079 阅读 · 1 评论 -
掌握这个小技巧,让你的 C++ 编译速度提升 50 倍!
随着 C++ 项目的持续扩大,编译效率越来越是一个问题了。想一想你每天花在这上面的时间,再乘以团队成员的个数,是不是成本很高?那有没有什么办法,在不需要修改源码,也不更换硬件的情况下提升效率呢?一起来看看下面这几个方法,足以让你的编译速度飞起来。原创 2021-05-31 19:19:34 · 3207 阅读 · 21 评论 -
有了它,再也不怕 C++ 内存泄露了!
C/C++ 程序越复杂,内存的管理显得越重要,稍有不慎就会出现泄漏。如果内存泄漏不是很严重,在短时间内对程序不会有太大影响,这也使得内存泄漏问题有很强的隐蔽性,不易被发现。然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的 - 从性能下降到内存耗尽,甚至会影响其他程序的正常运行。原创 2021-05-26 23:40:04 · 3417 阅读 · 22 评论 -
初识 CTK
CTK:支持生物医学图像计算的公共开发包原创 2023-02-17 20:50:28 · 3545 阅读 · 1 评论 -
漫谈 CTK
同样地,在使用 CTK 时,很多小伙伴一定也存在诸多疑问:为什么 CTK Plugin Framework 要借鉴 OSGi?为什么 CTK 要基于 Qt 实现?CTK Plugin Framework 的架构策略是什么?使用 CTK Plugin Framework 的好处是什么?为什么 CTK 不流行?原创 2023-02-17 21:08:48 · 1684 阅读 · 1 评论 -
CTK Plugin Framework 基本原理
CTK Plugin Framework 技术是面向 C++ 的动态模型系统。原创 2023-02-17 21:18:33 · 1618 阅读 · 1 评论 -
编译 CTK
在使用 CTK 之前,首先要进行编译。但要成功编译它,并不是一件很容易的事,这不仅取决于平台、Qt 的版本,也取决于编译器,以及所使用的 IDE。原创 2023-02-17 22:01:45 · 2814 阅读 · 5 评论 -
使用 CTKWidgets
CTKWidgets 包含了一组 Qt 部件,用于生物医学成像应用程序。当然,即使你的程序与医学无关,很多部件也是很有参考意义的。原创 2023-02-17 22:27:10 · 3305 阅读 · 1 评论 -
Hello,CTK!
在接触任何语言时,我们总能看到“Hello,World!",它的中文意思是“你好,世界!”。由于简洁、实用,所以非常著名。原创 2023-02-17 22:51:20 · 2941 阅读 · 6 评论 -
在程序中嵌入 CTK Plugin Framework
如果已经创建了一个应用程序,现在要将 CTK Plugin Framework 嵌入其中,该如何进行呢?原创 2023-02-17 23:23:14 · 2863 阅读 · 0 评论 -
CTK 插件元数据
元数据用于准确描述一个插件的特征,这样才能让 CTK Plugin Framework 适当地对 Plugin 进行各种处理(例如:依赖解析)。原创 2023-02-18 20:22:46 · 2605 阅读 · 0 评论 -
CTK 插件和服务
CTK Plugin Framework 允许每个 Plugin 对外提供一组服务,其它的 Plugin 都可以访问这些服务,这也就是 CTK Plugin 之间的调用方式。原创 2023-02-18 20:38:39 · 1219 阅读 · 0 评论 -
CTK 插件之间的依赖
插件是 CTK Plugin Framework 中的基础元件,不同的插件之间可以相互依赖、引用,这样许多插件可以共同协作,实现一些比较复杂的功能。原创 2023-02-18 20:54:16 · 1172 阅读 · 2 评论 -
CTK 事件管理机制(插件间通信)
事件管理服务规范是 CTK Plugin Framework 规范的一部分,它定义了一个通用的插件间通信机制。该机制遵循流行的发布/订阅模式,并且可以以同步或异步的方式执行。原创 2023-02-18 21:23:54 · 2763 阅读 · 0 评论 -
CTK 事件管理机制(sendEvent/postEvent)
在 CTK Plugin Framework 中,插件间的通信是通过 EventAdmin 来完成的。EventAdmin 是一种基于发布/订阅的方式,一个插件订阅某一主题之后,另一个插件发布一个与该主题相关的事件,从而达到通信的目的。原创 2023-02-18 21:44:09 · 1126 阅读 · 0 评论 -
CTK 事件管理机制(signal/slot)
在《12:高级篇 - CTK 事件管理机制(sendEvent/postEvent)》一文中,我们介绍了如何进行插件间通信 - `sendEvent()/postEvent() + ctkEventHandler`。然而,除了这种方式之外,EventAdmin 还提供了另一种方式 - `signal/slot`,也可以达到相同的效果。原创 2023-02-18 21:54:01 · 2041 阅读 · 0 评论 -
CTK 服务工厂
一般情况下,服务对象在被注册之后,任何其它的 Plugin 在请求该服务时,CTK Plugin Framework 都返回的是同一个对象。倘若要为每一个 Plugin 消费者返回不同的服务对象,或者在真正需要该服务对象时才创建,这时该怎么办?原创 2023-02-18 22:11:51 · 2641 阅读 · 2 评论 -
CTK 事件与监听
在 Plugin 生命周期的不同状态相互转换时,CTK Plugin Framework 会发出各种不同的事件,以供事先注册好的事件监听器处理,这些事件被称为“生命周期层事件”。原创 2023-02-18 22:16:28 · 2013 阅读 · 2 评论 -
CTK 服务追踪
如果构建了一个 LogService 作为服务,并将其注册到服务注册中心。这时要在其它 Plugin 中使用 LogService 来记录日志,你可能会想到这种方式:- 使用 ctkPluginContext::getServiceReference() 获取服务引用- 通过 ctkPluginContext::getService() 获取指定 ctkServiceReference 引用的服务对象原创 2023-02-18 22:32:39 · 1346 阅读 · 6 评论 -
访问 CTK 服务的最佳方式
在使用 CTK 时,必须始终将服务认为是动态的、不稳定的,轻轻地我来了,轻轻地我又走了。。。服务可能随时消失,或变得不可用!所以,在访问服务时,建议使用以下几种方式。原创 2023-02-18 22:53:37 · 982 阅读 · 0 评论 -
CTK 总结篇(FAQ)
经过了几个月的艰苦奋战,终于到了最后一节啦,是不是和我一样,心里有点儿小激动!回顾之前的章节,从初级 -> 进阶 -> 高级,我们针对 CTK 做了详细的分类讲解。希望通过这些知识,大家能对模块化有深入的了解,并能够基于 CTK 快速搭建 C++ 组件化框架。学了这么多知识,想必很多人也有不少问题。下面我将常见的问题进行了整理,并分别对它们进行了详细的解答,希望对大家能有所帮助。原创 2023-02-18 22:59:19 · 1461 阅读 · 2 评论 -
魔改 Qt Creator 插件框架(附源码)
Qt Creator 插件框架 - Qt Extension System原创 2021-08-24 23:58:28 · 3486 阅读 · 0 评论 -
Log4Qt 基本介绍
在项目开发过程中,离不开代码的调试、Bug 的追踪,这时日志便显得尤为重要。原创 2023-08-03 10:26:19 · 1571 阅读 · 0 评论 -
获取 Log4Qt 中的 logger
在 Log4Qt 中,有一个很重要的类 - Logger,用于提供日志服务。那么,如何获取 logger 呢?原创 2023-08-03 10:28:21 · 1003 阅读 · 0 评论 -
深入理解 rootLogger、logLogger、qtLogger
在使用 Log4Qt 时,你会发现有一系列的 logger - rootLogger()、logLogger()、qtLogger(),简直傻傻分不清楚!为什么会有这么多 logger?各 logger 之间有什么关系?它们均适用于哪种场景?原创 2021-04-04 22:24:36 · 1739 阅读 · 0 评论 -
使用环境变量配置 Log4Qt
Log4Qt 定义了一系列环境变量,用于控制初始化过程。原创 2021-05-14 07:00:00 · 778 阅读 · 3 评论 -
使用 QSettings 配置 Log4Qt
在 Log4Qt 的初始化过程中,除了会使用环境变量之外,它还会通过 QSettings 读取配置。也就是说,在使用 Logger 之前,需要针对 QSettings 做一些基本设置。原创 2021-05-29 23:39:55 · 1362 阅读 · 6 评论 -
使用 log4qt.properties 配置 Log4Qt
在 Log4Qt 的初始化过程中,除了会使用环境变量、QSettings 之外,它还会通过默认的配置文件进行配置。原创 2021-06-15 23:39:18 · 1606 阅读 · 3 评论 -
Log4Qt 初始化过程
在前面的章节中,我们分享了三种方式来配置 Log4Qt,它们分别是:环境变量 - LOG4QT_DEBUG、LOG4QT_DEFAULTINITOVERRIDE、LOG4QT_CONFIGURATION应用程序设置 - QSettings默认配置文件 - log4qt.properties原创 2021-08-03 22:16:27 · 981 阅读 · 0 评论 -
Log4Qt 日志级别
Log4Qt 定义了一系列的日志级别,每个级别都对应一种特定类型的消息事件。通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。原创 2023-08-03 10:30:48 · 1211 阅读 · 2 评论 -
Log4Qt 日志格式化(SimpleLayout)
和其它布局一样,SimpleLayout 也派生自 Layout。正如其名所示,SimpleLayout 特别的简单,因为它只包含了日志的级别和消息内容。原创 2021-09-05 22:17:48 · 517 阅读 · 0 评论 -
Log4Qt 日志格式化(PatternLayout)
Log4Qt 提供了各种布局对象,通过使用这些 Layout,我们可以根据自己的喜好来格式化日志输出,自由指定日志级别、线程名称、Logger 名称、日期时间等信息。原创 2021-08-17 23:34:39 · 1018 阅读 · 0 评论 -
Log4Qt 日志格式化(TTCCLayout)
SimpleLayout 对象采用的格式化风格非常简单,在某些情况下可能比较有用,但有时我们希望得到更详细的信息,特别是在多线程应用程序中。原创 2021-09-16 23:24:05 · 2434 阅读 · 0 评论 -
Log4Qt 输出重定向(控制台)
Log4Qt 支持自定义输出,格式化由 Layout 完成,输出地则由 Appender 控制。Appender 表示将日志输出到什么地方,常见的 Appender 有控制台、文件、数据库等。原创 2021-10-11 22:35:54 · 1389 阅读 · 0 评论 -
快速认识 ORM
ORM 全称是 Object Relational Mapping(对象关系映射),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。原创 2020-02-05 22:47:40 · 3934 阅读 · 2 评论 -
QxOrm 介绍、下载、编译
QxOrm 是一个 C++ 库,旨在为 C++/Qt 开发人员提供对象关系映射(ORM)功能(类似于 Java 中的 Hibernate,.Net 中的 NHibernate)。原创 2020-02-06 23:45:57 · 5344 阅读 · 0 评论 -
QxOrm 快速上手
QxOrm 几乎支持所有的主流数据库,比如 SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、MongoDB 等。为了快速了解它的用法,我们以 SQLite 为例,来介绍一些常见的数据库操作(例如:增删改查)。原创 2020-02-07 22:59:45 · 7102 阅读 · 4 评论 -
在 Ubuntu 上安装 MySQL
MySQL 是一个开源的数据库管理系统,通常作为最受欢迎的 LAMP(Linux,Apache,MySQL,PHP/Python/Perl)的一部分进行安装,其通过关系型数据库和 SQL 来管理数据。原创 2020-02-08 22:50:06 · 11252 阅读 · 13 评论