自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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内存池相关源码剖析(七)内存池接口测试

【代码】Nginx内存池相关源码剖析(七)内存池接口测试。

2024-04-16 17:02:50 89

原创 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

原创 SGI_STL空间配置器源码剖析(七)reallocate函数及总结

内存扩容函数。SGI STL二级空间配置器内存池的实现优点

2024-04-12 19:42:34 100

原创 SGI_STL空间配置器源码剖析(六)deallocate函数

SGISTL的deallocate函数是内存释放函数。

2024-04-12 19:34:32 227

原创 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_refill函数

功能是 将新创建的链表节点(chunk)成链。

2024-04-10 22:15:47 220

原创 SGI_STL空间配置器源码剖析(三)allocate内存分配函数

给出源码,功能和解读已经在注释中。

2024-04-10 22:06:28 130

原创 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

原创 SGI_STL和Nginx内存池源码剖析

之前做过的项目并未使用内存池,故最近学习了经典的优秀内存池的实现,进而在自己的项目中使用起来。

2024-04-02 21:12:12 76

原创 C++11 容器的emplace方法分析

经常在学习和开发中听到,vector要少用push_back()方法,而是用emplace_back()方法进行数据插入,会提高性能,但是具体的原理没有深入了解。今天深入了解并进行了源码剖析,在此记录下。

2024-04-02 21:06:16 836

原创 Linux基础命令

包含日常开发能用到的大部分Linux命令。

2024-03-28 15:24:17 900

原创 右值引用 与 拷贝构造和赋值重载函数 的结合

可以省略函数调用返回临时变量时的内存开辟、内存释放和拷贝数据了,提升临时对象操作过程中的效率。

2024-03-28 15:08:28 207

原创 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

原创 智慧警车前后端联调

为了系统交付给组内新成员,特记录系统调试过程

2023-06-21 18:47:51 13

原创 Qt Android设备不识别的解决

Qt识别不到安卓设备,用adb devices命令也检测不到设备。可以用电脑版360手机助手。

2023-06-19 15:10:33 657 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

原创 Qt6.5在线安装及换源

qt安装,更换国内源

2023-06-05 15:36:35 520 1

原创 Qt Quick3D中画线段

在Qt的View3D中添加3D模型,在某一平面上画线

2023-03-27 19:22:24 30

原创 QtQuick3D中模型拾取鼠标动作,点击模型进入对应的页面

场景中放置两个3D模型同时进行旋转, 两个模型分别接受鼠标动作,点击模型后进入对应模型指定的页面

2023-03-08 10:37:13 592

原创 QtQuick3D实现相机的鼠标控制

Quick3D中,鼠标控制相机观察3D模型的demo

2023-03-06 20:14:20 439

原创 利用Qt Quick 3D将Blender中导出的模型资源添加至Quick3D项目中

将Blender中导出的模型资源,添加至Quick3D项目中进行展示。

2023-03-06 16:12:51 942

nginx内存池源码移植

将源码内存池相关进行简化移植,适应自己开发的项目

2024-04-16

SGI-STL源码移植

将源码空间配置器进行简化移植,适应自己开发的项目

2024-04-16

C++11容器emplace源码剖析

自己手动实现的C++11 vector容器,提供简单的push_back操作和emplace_back操作,并通过打印输出两者调用时的区别,进而分析性能差异。

2024-04-02

基于C++的MySQL数据库连接池源代码

基于C++的MySQL数据库连接池源代码

2024-03-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除