- 博客(92)
- 资源 (25)
- 收藏
- 关注
原创 链接器查找其他动态库的过程
这将输出所有的调试信息,包括搜索路径、库的加载、符号解析等详细信息。或者通starce去看动态库的加载错误。关闭用unset LD_DEBUG。
2024-11-01 17:57:55
172
原创 PTMalloc介绍
如果topchunk本身还是不够大, 分配程序会重新mmap分配一块内存chunk,并且将top chunk迁移到新的chunk上,如果free()的chunk刚好与top chunk相邻,那么这两个chunk就会合并成新的topchunk,如果topchunk的大小大于某个阈值,才会还给操作系统。当释放一个chunk的时候,ptmalloc会检查它前后的chunk有咩有空闲的chunk,有空闲的chunk就会与其合并并且移动到一个bin也就是unsorted bin中,同时也会把。避免频繁的系统调用。
2024-11-01 17:53:28
470
原创 linux下一个应用是如何被执行的
当一个进程通过for系统调用创建的时候,实际上他是当前进程的一个副本以及大部分资源的复制。当时进程的堆栈不是完全复制的,而是继承了父进程堆栈状态,但会为新进程创建一个新的堆栈顶部, 这是因为fork之后通常紧接着“exec”函数来替换进程执行的上下文,此时进程会加载一个新的程序。打开的文件描述符,环境变量,信号处理程序,进程ID,父进程ID,进程组ID,会话ID, 当前的工作目录,根目录,文件权限掩码,资源限制,终端控制,内存映射。-新程序的堆栈将被初始化,通常是一个比较高的虚拟地址,向下增长。
2024-11-01 17:52:00
557
原创 GlibC线程资源分配与释放-线程栈
然而,需要注意的是,尽管线程有独立的栈,但它们共享相同的全局数据和堆空间。这段内存通常位于进程的虚拟地址空间内,是专门用于存储该线程的局部变量、函数参数以及返回地址等运行时信息的。线程栈的独立性对于多线程编程非常重要,因为它保证了线程间的局部数据不会相互干扰,同时也简化了线程间的同步问题,因为每个线程不需要担心其局部数据会被其他线程修改。这是线程模型的一个基本特性,它确保了每个线程的局部变量和函数调用状态是相互隔离的,从而避免了数据冲突和提高了程序的可预测性。
2024-11-01 17:48:16
252
原创 链接器查找其他动态库的过程
这将输出所有的调试信息,包括搜索路径、库的加载、符号解析等详细信息。或者通starce去看动态库的加载错误。关闭用unset LD_DEBUG。
2024-09-24 11:46:39
153
原创 Qt实现自定义的文件对话框CustomFileDialog
文件对话框的代码结构目录如下:其中文件对话框主要由三个部分组成:主要是负责界面Ui。负责文件数据处理。主要是异步处理刷新文件数据。有需要源码的同学可以私聊我~
2024-09-24 11:42:40
695
原创 Qt中加载资源文件时候遇到的坑
在加载Qt Resource文件时候遇到的坑:添加动态库或者静态库中:1 . 如果想在静态库或者动态库目录下添加Qt资源文件,需要加Q_INIT_RESOURCE去初始化资源文件(如下图:)2.如果把资源文件全部写在生成可执行文件的目录的CMakeLists下面,则不需要加Q_INIT_RESOURCE(如下图:)文件中加载资源的路径问题:1.加载image资源的时候:注意: 文件加载的路径应该是资源前缀+文件名2.加载普通配置文件的时候:...
2022-05-12 14:41:50
1808
1
原创 Qt4 Linux下读写excel
背景最近项目中涉及到excel的读写,因为是在Linux上操作,而且是Qt4的版本,所以相对有些麻烦。之前我们用的是直接通过python去读写excel,把数据存储到中间文件。然后读中间文件进行操作,这次操作比较麻烦。就考虑其他办法。(开发环境:Centos 7.4, GCC:4.8.5 )Linux读写操作excel的库linux下读写excel文件的库了解到的分为以下几种:1. xlsLib 和 libxls(跨平台的C++读写excel)xlsLib是用来写excel, xlsL.
2021-11-16 14:16:06
5013
9
原创 Vscode 远程ssh服务器及远程图形显示
1.vscode下载插件Remote-SSH插件,保证vscode等远程登录服务器终端.2.windows端需要下载X11的软件,vcXsrv 或者xMing,傻瓜式安装,启动,现在Multiple windows, Display number 选中0.3.vscode点击左下角,输入open ssh configration file... 后面添加 ForwardX11 yes ForwardX11Trusted yes ForwardAgent yes保存。4.直...
2021-11-10 16:06:51
5575
2
原创 Centos 升级 CMake gcc 支持c++14以及上
1.CMake版本升级。https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
2021-06-18 09:31:10
3116
原创 Qt原子操作之QBasicAtomicInt和QBasicAtomicInt
Qt之原子操作 QBasicAtomicPointerQBasicAtomicInt原子操作:在多线程操作中,原子操作不会被线程调度机制打断。这种操作一旦开始就一直运行到结束,中间不会有上下文切换。Qt为我们提提供了原子指针模板类,以及原子计数。我们分解介绍这两个类QBasicAtomicPointer不多说上源码template <typename T>class QBasicAtomicPointer{public:#ifdef QT_ARCH_PARISC..
2021-04-23 17:21:21
4928
原创 界面设置基础之复选框和单选按钮
界面设置基础之复选框和单选按钮在我们常用的开关按钮中复选框(CheckBox)和单选按钮(RadioButton)是我们经常会选择使用。实现图片如下:1.单选按钮单选按钮是一种多选一的设置,当下面两个条件成立时,使用单选按钮最合适。- 可选项是固定的,总可选项最好小于5个。- 界面有足够的空间去显示所有选项。单选按钮总是成组出现,一个单选按钮不是一个有效控件。2.复选框复选框可以表示单个开关设置,它可以成组出现,但是每个复选框之间互不影响,相互独立。使用场景.
2021-04-08 22:56:25
2992
原创 界面设计基础之基本窗口
界面设计之基本窗口在界面设计中我们常常要用到窗口,如果说对话框,消息框,应用窗口,那么我们该在什么场景下分别正确的去使用这些窗口呢?接下来我们就介绍这些窗口的特性以及使用场景。基本窗口基本窗口用来表示软件的应用程序或者用户特定的数据对象(或者代表软件的一个特定的功能模块)。基本窗口一般能显示较长时间。基本特性:能最小化成一个桌面图标或任务按钮能显示很长时间一般是无模式的(非模态不影响其他窗口)可以有工具栏,菜单栏以及自定义按钮表示一个特定的功能或者子模块...
2021-04-08 22:22:45
770
原创 界面基础设计之菜单栏
界面设计规则--------菜单栏大部分的GUI应用程序都会提供一个菜单栏,他包含了应用程序的大部分或者全部的命令,把这些命令分类组织。如File(文件),Edit(编辑), View(视图), Tools(工具)。。。。。。window和大多数基于Unix的窗口,菜单栏都位于主窗口的顶部。菜单栏如下图所示:...
2021-04-01 00:11:13
1820
原创 Qt实现反射机制
Qt反射机制的实现Jave C#自带的反射机制极大的方便了开发者,同时也有利的增加了程序的灵活度。开发者可以把类注册到程序中,然后通过配置文件自动生成类,掉用类的相关函数。那么C++不支持反射,我们可不可以自己构造呢?答案是当然。如何通过字符串生成类呢:思路如下把类的构造函数和字符串绑定到map/hashmap中,创建对象的时候通过hash表映射,得到类的构造函数,直接生成对象。不多说,直接上代码。核心代码class ObjectFactory{public: tem.
2021-03-30 22:57:50
1774
原创 Python掉用Qt/C++接口
Python掉用C++接口最近有这么一个需求,需要用Python对开发的应用做二次开发。这可难坏我了,之前也没有相关的经验,网上的资料也比较少。后来深度思考了下,这个问题本质上就是用python调用C++的接口。只要把C++的管理接口封装好,暴露给python,就可以达到我的需求了。所以,问题就聚焦到了如何用C++调用python 即是我们今天的主题。C++调用python的思路现在Python也有很多版本,底层语言也有jave实现的,也有C实现的,但是为我们大众用得比较多的还是CPyth.
2021-03-25 22:27:20
749
原创 算法系列之快速排序
快速排序没啥好说的,算法入门必看。快排时间复杂度nlogn。代码void ::quickSort(int left, int right, std::vector<int>& data){ if(left >= right) { return; } int i = left; int j = right; int ref = data[left]; while(i < j) ...
2021-03-24 21:29:38
135
原创 C++开源项目
值得学习的C语言开源项目- 1. WebbenchWebbench是一个在linux下使用的非常简单的网站压测工具。它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的性能,最多可以模拟3万个并发连接去测试网站的负载能力。Webbench使用C语言编写, 代码实在太简洁,源码加起来不到600行。下载链接:http://home.tiscali.cz/~cz210552/webbench.html- 2. Tinyhttpdtinyhttpd是一个超轻量型Htt
2021-01-22 19:51:12
673
1
原创 滑动界面之slidingSatckWidget
stack滑动窗口界面 窗口滑动界面相对于普通的stackWidget窗口管理多了一些动画效果,可以让界面看起来更加酷炫,如图;滑动窗口的原理&emsp滑动stackwidget的本质就是采用动画效果修饰widget的pos属性,同时移动前后的两个widget的位置,等动画完成之后,最后隐藏前一个widget。整个滑动的效果就达到啦。核心代码如下:void SlidingSta...
2019-12-24 16:15:55
460
原创 QT的事件模型
关于QT事件机制的学习总结 Qt的核心在于QT的事件驱动机制。而整个事件的机制无非三个部分,事件的产生,事件的处理,事件的分发。(只有继承QOBject的类才能接收和使用事件。事件的产生 事件分为操作系统事件和应用内部事件,例如鼠标,键盘。。等属于由操作系统产生,外部输入事件,应用内部产生的事件有resize,paint等, 还有一种是自己子类化QEvent定义的事件。也属于内部事件。...
2019-12-09 15:34:25
421
原创 QPostEvent的源码解读
###Qt中的postEvent过程解析用法 app->postEvent(QObject , QEvent);####1.传递给QCoreApplication的postEvent(QObject , QEvent, int NormalEventPriority);postEvent()```void postEvent(QObject *receiver, QEvent*e...
2019-12-05 10:32:40
1808
原创 QT自定义Layout畸形布局
关于QT的自定义布局自定义的布局形状如下[外链图片转存失败(img-faixCPYI-1567399885458)(https://i.imgur.com/6OLPhkl.gif)]简介 以前觉得自定义布局很难,但是亲手写了一下发现也很简单。就是继承子类化Layout。实现几个虚函数,然后再setGeometry()这个函数中计算各个子item的位置从而实现布局效果就好了。实现 ...
2019-09-02 12:52:09
1254
1
转载 C++11的新特性
1. nullptrnullptr 出现的目的是为了替代 NULL。在某种意义上来说,传统 C++ 会把 NULL、0 视为同一种东西,这取决于编译器如何定义 NULL,有些编译器会将 NULL 定义为 ((void*)0),有些则会直接将其定义为 0。C++ 不允许直接将 void * 隐式转换到其他类型,但如果 NULL 被定义为 ((void*)0),那么当编译char *ch ...
2019-07-10 10:15:36
285
原创 仿照word的界面的滑动菜单(2)(伸缩下拉框)
这里要做两个处理:1.widget的上浮和下层 2.widget的伸缩动画。上浮和下层可以通过设置widget的属性来控制: if(isfloating) { m_is_floating = true; setWindowFlags(Qt::FramelessWindowHint | Qt::ToolTip); } e...
2019-06-04 10:18:08
890
原创 QT仿照Word的滑动菜单以及菜单下拉框(1)(滑动导航条)
仿照work的界面的滑动菜单(1)先上图:这个功能的实现包括两个重要的部分,第一个是菜单条的文字下面的滑动伸缩线。第二个是菜单下拉框的动画效果,以及下拉框的上浮,下沉的效果。MenuBar.h#ifndef MENU_BAR_H#define MENU_BAR_H#include <QWidget>#include <QPaintEvent>#in...
2019-06-04 09:40:59
3025
原创 Log4Qt使用相关使用
简介 前一段时间用过log4Qt,只是零零散散的使用了。没有仔细的深究。抱着能用就行的心态终于遇到坑了。在网上也没有系统的介绍Log4Qt的文章。现在系统介绍下。希望对自己和别人有所帮助。log4Qt是根据Apache的log4j修改过来的,所有里面用的时候也会有jave的影子。需要详细的学习的同学可以搜说log4j的资料。因为log4Qt的资料太少太少了。log...
2019-05-07 00:38:05
1116
原创 QT布局之QSplitter
最近研究了QSplitier的类,发现它做布局的效果很好。不多说,先上图:关于QSpliter,它可以通过insertWidget() 和addWidget()添加小部件到它的布局中去,并且可以通过拖动来改变这些小部件的大小。通过setSize可以设置所有小部件的大小。非常方便。下面就是源码, 有兴趣的同学可以研究下,如果有什么不对的地方请与我联系。splitter.h#ifndef...
2019-04-12 21:18:27
1550
原创 C++前置声明
写代码的时候,代码规范通常会要求头文件尽量使用声明,规范如:为什么要使用前置声明,而不直接使用头文件呢? 难道头文件中使用声明能够是编译的速度加快? 但是编译器在预处理的时候也会将头文件加载到cc文件里面,那这样声明就起不到作用了。其实原因很简单。就是为了方便a.h 和 b.h能够相互调用。a.h 中只加b类的声明。 a.cc 中添加b.h的头文件。同时b.h若想调用a类的时候直...
2019-03-28 10:05:07
243
转载 C++常用的设计模式(超级简洁,清晰)
1、工厂模式:简单工厂模式、工厂方法模式、抽象工厂模式 1)、简单工厂模式:主要特点是需要在工厂类中做判断,从而创造相应的产品,当增加新产品时,需要修改工厂类。typedef enum{ T80 = 1, T99}TankType;class Tank {public: virtual void message() = 0;}...
2019-03-26 10:18:46
1166
原创 QT自定义之滑动开关
写了一个简单的滑动开关, 不多说,上图:代码如下:#ifndef SLIDERBUTTON_H#define SLIDERBUTTON_H#include <QWidget>#include <QMouseEvent>#include <QPaintEvent>#include <QPainter>#include &l...
2019-03-06 19:12:44
1880
1
QT_GoogleMap
2018-03-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人