- 博客(34)
- 收藏
- 关注
原创 C++项目在Linux下编译动态库
windows下开发的C++项目,在Linux下跨平台编译动态链接库,并设置ld.so.cache缓存文件,最终能够通过动态库链接进入其他项目中使用。
2024-04-24 17:39:27 788
原创 SGI_STL和Nginx内存池源码剖析--源码移植
源码文件复杂,并且有很多项目中使用不到的宏定义,所以通过改写和移植,可以很好的适应C++的其他项目。将SGISTL内存配置器和Nginx内存池源码,移植到自己的项目中。
2024-04-16 21:34:29 134
原创 Nginx内存池相关源码剖析(六)外部资源释放和内存池销毁
destroy的释放顺序:1、通过回调函数链表,释放外部资源2、释放大块内存3、释放小块内存。
2024-04-16 17:00:07 311
原创 Nginx内存池相关源码剖析(五)重置函数ngx_reset_pool
当内存池中的内存不再需要时,或者当需要重用内存池时,可以使用函数来清理和重置内存池,以便后续再次使用。
2024-04-16 16:27:15 210
原创 Nginx内存池相关源码剖析(四)大块内存分配和释放逻辑
Nginx对于大块内存是调用系统的内存分配函数,然后将内存地址通过信息结构体进行管理。当Nginx不再需要一块大块内存时,它会调用操作系统的内存释放函数(如free)来将内存归还给操作系统。与分配过程类似,Nginx在释放大块内存时也不会进行额外的内存池管理操作。相反,它会依赖于操作系统的内存管理机制来自动处理内存碎片和回收工作。相对于小块内存的只有分配逻辑没有释放逻辑,大块内存两者都有。
2024-04-16 16:00:51 402 2
原创 Nginx内存池相关源码剖析(三)小块内存分配逻辑
Nginx内存池通过一种预分配和复用的方式来管理小块内存。值得注意的是,Nginx没有提供小块内存的释放和回收函数和任何逻辑。这是由Nginx的工作环境所决定的。
2024-04-16 15:43:38 518
原创 Nginx内存池相关源码剖析(二)ngx_create_pool创建函数
【代码】Nginx内存池相关源码剖析(二)ngx_create_pool创建函数。
2024-04-16 15:05:40 125
原创 Nginx内存池相关源码剖析(一)总览
Nginx内存池是Nginx为了优化内存管理而引入的一种机制。在Nginx中,每个层级(如模板、TCP连接、HTTP请求等)都会创建一个内存池进行内存管理。当这些层级的生命周期结束时,整个内存池会被销毁,将分配的内存一次性归还给操作系统。减少频繁的malloc和free操作:通过内存池,避免了频繁的动态内存申请和释放,从而降低了内存管理的开销。防止内存泄漏:内存池可以有效地避免因为申请未释放、二次释放或异常流程未释放而导致的内存泄漏问题。提高内存使用效率。
2024-04-16 14:50:24 534 2
原创 LPA3399Pro搭建Qt开发环境
Qt是一个跨平台的应用程序开发框架,支持多种操作系统和硬件架构,包括ARM架构的Linux。RK3399Pro是一款基于ARM架构的处理器,用于嵌入式系统。可以在RK3399上搭建Qt开发环境,进行项目开发。在ARM架构的Linux系统上安装Qt开发环境,大致需要以下几步:安装交叉编译工具链、下载Qt源代码、编译安装Qt源码。
2024-04-12 11:01:00 932
原创 SGI_STL空间配置器源码剖析(五)_S_chunk_alloc函数、oom和优点
S_chunk_alloc函数源码剖析、oom处理和SGI STL二级空间配置器内存池的实现优点
2024-04-10 22:33:42 508
原创 SGI_STL空间配置器源码剖析(二)辅助接口函数
空间配置器有两个不容易理解的,但是很重要的辅助函数:_S_round_up和_S_freelist_index。
2024-04-10 21:43:06 276
原创 SGI_STL空间配置器源码剖析(一)总览
__STL_DEFAULT_ALLOCATOR通过宏控制有两种实现,一种是,另一种是alloc,这两种分别就是SGI STL的一级空间配置器和二级空间配置器的实现。
2024-04-10 21:23:23 750
原创 C++11 容器的emplace方法分析
经常在学习和开发中听到,vector要少用push_back()方法,而是用emplace_back()方法进行数据插入,会提高性能,但是具体的原理没有深入了解。今天深入了解并进行了源码剖析,在此记录下。
2024-04-02 21:06:16 836
原创 oop对象使用过程中,调用了什么方法
探索类对象定义、声明、初始化、赋值、引用等过程中,调用了什么函数。有带参构造函数,拷贝构造函数,重载赋值运算符,析构函数等。清晰知道对象函数调用过程,对代码优化至关重要!1、Test 只有一个成员变量。2、Test类有两个成员变量。
2024-03-27 20:58:24 288
原创 基于C++的MySQL数据库连接池功能设计
在高并发访问数据库的情况下,大量的 TCP三次握手、MySQL Server连接认证、MySQL Server关闭连接回收资源和TCP四次挥手所耗费的性能时间也是很明显的,增加连接池就是为了减少这一部分的性能损耗。
2024-03-27 19:09:07 690
原创 安卓下的路径问题
和内部私有存储类似,这个目录会随着用户删除app而删除,app访问自己的目录,不需要做权限处理,但不能访问其他的app目录。这个目录会随着用户删除app而删除,app访问自己的目录,不需要做权限处理,但不能访问其他的app目录。程序要访问这个目录,一般需要动态获取存储权限,因时间问题,笔者未测试最新版本的存储权限。Android对内部存储和外部存储不是在物理上区分的,而是在逻辑上区分的。这个目录的位置,就是我们在文件浏览器中常见的存储空间(不同设备不同)android中常用的存储位置。
2024-03-27 18:10:31 205
原创 ubuntu下 Qt开发的程序 实现开机自启动
Ubutnu18.04 LTSQt6.4.0本次使用qt开发了一个需要第三方库的项目,想要在arm嵌入式板子上子启动,就需要首先通过打包将所有第三方ku找到,让项目在启动时自动找到。注意:本文章未能完全打包qt项目,只能在本机上子启动程序,不能够直接移动到其他板子上运行。
2023-10-31 12:50:20 569
原创 jetson nano 安装ubuntu20.04,并编译arm版本的Qt6.4.0
nano板子自带的Ubuntu18,由于cmake版本太低,无法编译Qt6.解决方法有二:1、手动安装cmake高版本2、将系统改为Ubuntu20方法一本人尝试过,安装高版本cmake并配置环境变量,但是编译Qt源码的时候会cmake报错,故采用第二种方法。
2023-10-09 19:12:11 626 1
原创 ubuntu20.04搭建Qt的Android开发环境(qt版本6.0以上适用,以下未知)
打开QtCreator,在顶栏中,选择Tools->External->Configure...,打开配置界面。最后,连接安卓设备后,在上图左侧Kits中,对安卓构建套件选择Build device,选择将要构建的设备。打开安装器后,将依次进行:登录Qt账号,选择个人开发,选择是否提交使用反馈,选择安装目录和安装方式。然后在下图中点击 Browse... ,找到刚才放好的Android_OpenSSL,选中即可。选择Qt版本,并选择要安装的组件。选择左边的Devices,然后选中Android标签。
2023-06-07 20:45:56 1086
原创 QtQuick3D中模型拾取鼠标动作,点击模型进入对应的页面
场景中放置两个3D模型同时进行旋转, 两个模型分别接受鼠标动作,点击模型后进入对应模型指定的页面
2023-03-08 10:37:13 592
原创 利用Qt Quick 3D将Blender中导出的模型资源添加至Quick3D项目中
将Blender中导出的模型资源,添加至Quick3D项目中进行展示。
2023-03-06 16:12:51 942
C++11容器emplace源码剖析
2024-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人