github源码指引:共享内存、数据结构与算法:基于共享内存的散列存储hash

本文主要是介绍github源码指引:共享内存、数据结构与算法:基于共享内存的散列存储hash,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。


        相关专题:共享内存、数据结构与算法_初级代码游戏的博客-CSDN博客

        相关文章:20、基于共享内存的散列存储hash-CSDN博客

        基础操作:github源码指引:共享内存、数据结构与算法-CSDN博客 

目录

一、运行示例

二、示例代码


一、运行示例

        在shmfc目录运行run.sh,显示命令表:

----------------------------------------
命令表:(q=exit)
0 管理
1 test_BinaryPool
3 test_CMultiProcessServer
4 test_CMultiProcessServer_view
5 test_CMultiProcessServer_speed
6 test_CMultiProcessServer_direct
7 test_RebuildSet
12 UDP测试客户端
13 UDP测试服务端
14 CStressTesting
15 CTestCSimpleMultiProcess_mutex atomic
16 CTest_hash
17 T_SHM_HASH
88 test_CMyRWMutex
89 test_T_SHM_SET_GROUP
90 test_shm_IActiveObject
91 test_ShmMultiMap
99 test_ParseFromXml
........................................
----------------------------------------
请选择命令:(q=exit default=17):

         输入17执行基于共享内存的hash的测试:

[08-26 08:39:22][应用][2516][信息] 用户输入的是:17
[08-26 08:39:22][2516-15][信息][shmArray.h              : 960(AttachToShm)][  0.59]test 连接共享内存成功 PI_N 1 PART 0 shmid = 622602 p 0x7f2cd2cf9000
[08-26 08:39:22][2516-16][信息][shmArray.h              : 960(AttachToShm)][  0.59]test_D 连接共享内存成功 PI_N 2 PART 0 shmid = 655371 p 0x7f2cd2cf4000
[08-26 08:39:22][应用][2516][信息][shmIActiveObject.h      :1059(RunCmdUI)][  0.59]
当前对象:test 子项[test test_D ]b:返回上一层 child:选择子项操作 默认显示子项列表和最后操作状态
1:创建 2:连接(只读) 3:连接(可写) 4:断开 5:禁用互斥 6:清除数据 7:创建私有 8:删除共享内存 9:显示 10:数据
11:从数据库加载 12:保存到数据库
21:从目录加载 22:保存到目录 23:导出为文本文件
31:从目录加载到私有内存 32:销毁私有内存
97:repair 98:check 99:ToDo 100:shell(q=exit ):

        输入b继续运行程序:

[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65426 65526
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65527 65427
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65427 65527
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65528 65428
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65428 65528
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65529 65429
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65429 65529
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65530 65430
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65430 65530
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65531 65431
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65431 65531
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65532 65432
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65432 65532
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65533 65433
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65433 65533
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65534 65434
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65434 65534
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  87(ReportData)][  0.88]------------ 65535 65435
[08-26 08:39:54][应用][2516][信息][shmHash.h               :  91(ReportData)][  0.88]               65435 65535
[08-26 08:39:54][应用][2516][信息][shmIActiveObject.h      :1059(RunCmdUI)][  0.88]
当前对象:test 子项[test test_D ]b:返回上一层 child:选择子项操作 默认显示子项列表和最后操作状态
1:创建 2:连接(只读) 3:连接(可写) 4:断开 5:禁用互斥 6:清除数据 7:创建私有 8:删除共享内存 9:显示 10:数据
11:从数据库加载 12:保存到数据库
21:从目录加载 22:保存到目录 23:导出为文本文件
31:从目录加载到私有内存 32:销毁私有内存
97:repair 98:check 99:ToDo 100:shell(q=exit ):

        插入了很多数据,可以输入9查看一下:

[08-26 08:41:39][应用][2516][信息] 用户输入的是:9
[08-26 08:41:39][应用][2516][信息][shmArray.h              :1401(Report)][  1.18]
test 开始报告T_ARRAY......
pHead=0x7f2cd2cf9000 pData=0x7f2cd2cf9ad8 isPrivate=0 shmid=622602 sizeof(T)=8
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8    byteorder= 10 =   2776  1 =     24  2 =      8  3 =      0  4 =    998  5 =    9996 =   1000
name=test part=0 capacity=65536,size=65536(100.00%) bytes=527064
地址映射表: GET_PP_SET=(nil)
分块数 7
0 : shm_id=622602 handle[0,1024) 容量=1024 连接信息: shm_id=622602 addr=0x7f2cd2cf9ad8
1 : shm_id=753678 handle[1024,2048) 容量=1024 连接信息: shm_id=753678 addr=0x7f2cd2cf2000
2 : shm_id=819216 handle[2048,4096) 容量=2048 连接信息: shm_id=819216 addr=0x7f2cd2cee000
3 : shm_id=884754 handle[4096,8192) 容量=4096 连接信息: shm_id=884754 addr=0x7f2cd2ce6000
4 : shm_id=950292 handle[8192,16384) 容量=8192 连接信息: shm_id=950292 addr=0x7f2cd2cd6000
5 : shm_id=1015830 handle[16384,32768) 容量=16384 连接信息: shm_id=1015830 addr=0x7f2cd2cb6000
6 : shm_id=1081368 handle[32768,65536) 容量=32768 连接信息: shm_id=1081368 addr=0x7f2cd2c76000
--------------------------------------------
bucket_count 65536(32768 of 32768)
[08-26 08:41:39][应用][2516][信息][shmMultiList.h          : 282(Report)][  1.18]test_D 开始报告T_ARRAY......
pHead=0x7f2cd2cf4000 pData=0x7f2cd2cf4ad8 isPrivate=0 shmid=655371 sizeof(T)=16
GUID = 8AA20E2E-4891-4df1-A87E-E5A23CB8D076
sizeof short= 2 int= 4 long= 8    byteorder= 10 =   2776  1 =     24  2 =     16  3 =      0  4 =    998  5 =    9996 =   1000
name=test_D part=0 capacity=131072,size=100000(76.29%) bytes=2099928
地址映射表: GET_PP_SET=(nil)
分块数 8
0 : shm_id=655371 handle[0,1024) 容量=1024 连接信息: shm_id=655371 addr=0x7f2cd2cf4ad8
1 : shm_id=688140 handle[1024,2048) 容量=1024 连接信息: shm_id=688140 addr=0x7f2cd2c72000
2 : shm_id=720909 handle[2048,4096) 容量=2048 连接信息: shm_id=720909 addr=0x7f2cd2c6a000
3 : shm_id=786447 handle[4096,8192) 容量=4096 连接信息: shm_id=786447 addr=0x7f2cd2c5a000
4 : shm_id=851985 handle[8192,16384) 容量=8192 连接信息: shm_id=851985 addr=0x7f2cd2c3a000
5 : shm_id=917523 handle[16384,32768) 容量=16384 连接信息: shm_id=917523 addr=0x7f2cd068e000
6 : shm_id=983061 handle[32768,65536) 容量=32768 连接信息: shm_id=983061 addr=0x7f2cd060e000
7 : shm_id=1048599 handle[65536,131072) 容量=65536 连接信息: shm_id=1048599 addr=0x7f2cd050e000
--------------------------------------------
free_size=0 free_head=-1 0h  NEXT |      N
----- ----- - ------0    -1 |    1001    -1 |    1012    -1 |    1023    -1 |    1034    -1 |    1045    -1 |    1056    -1 |    1067    -1 |    1078    -1 |    1089    -1 |    109...
99990 34454 | 100090
99991 34455 | 100091
99992 34456 | 100092
99993 34457 | 100093
99994 34458 | 100094
99995 34459 | 100095
99996 34460 | 100096
99997 34461 | 100097
99998 34462 | 100098
99999 34463 | 100099
----- ----- - ------

        输入b继续运行程序:

[08-26 08:40:31][应用][2516][信息] 用户输入的是:b
[08-26 08:40:31][应用][2516][信息][shmfc_t.cpp             : 945(main)][  0.88]命令 17 返回 0

二、示例代码

        示例代码很简单:

		static int T_SHM_HASH_test(int argc, char** argv, char const* name, int version){G_IS_DEBUG = false;try{T_SHM_HASH<T_DATA, PI_HASH, PI_DATA> a(name, version);if (a.Attach(false) || (a.CreateShm() && a.Attach(false) && a.m_mutex.Reset())){a.RunCmdUI();a.clear();long count = 100000;CDemoData data;CDemoData* data_from_shm;for (int i = 0; i < count; ++i){DEBUG_LOG << i << endi;data.n = i + 100;if (!a.AddData(data, data_from_shm))return __LINE__;}for (int i = 0; i < count; ++i){data.n = i + 100;if (!a.GetData(data, data_from_shm))return __LINE__;}a.ReportData();a.Extend();a.ReportData();a.RunCmdUI();a.Detach();//a.DestoryShm();return 0;}else{return __LINE__;}}catch (char const* e){thelog << e << ende;abort();}}

        实际功能代码shmHash.h。


(这里是文档结束)

这篇关于github源码指引:共享内存、数据结构与算法:基于共享内存的散列存储hash的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1108224

相关文章

MySQL存储过程之循环遍历查询的结果集详解

《MySQL存储过程之循环遍历查询的结果集详解》:本文主要介绍MySQL存储过程之循环遍历查询的结果集,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言1. 表结构2. 存储过程3. 关于存储过程的SQL补充总结前言近来碰到这样一个问题:在生产上导入的数据发现

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

MySQL 存储引擎 MyISAM详解(最新推荐)

《MySQL存储引擎MyISAM详解(最新推荐)》使用MyISAM存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要... 目录mysql 5.5 之前默认的存储引擎️‍一、MyISAM 存储引擎的特性️‍二、MyISAM 的主

Linux lvm实例之如何创建一个专用于MySQL数据存储的LVM卷组

《Linuxlvm实例之如何创建一个专用于MySQL数据存储的LVM卷组》:本文主要介绍使用Linux创建一个专用于MySQL数据存储的LVM卷组的实例,具有很好的参考价值,希望对大家有所帮助,... 目录在Centos 7上创建卷China编程组并配置mysql数据目录1. 检查现有磁盘2. 创建物理卷3. 创

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

8种快速易用的Python Matplotlib数据可视化方法汇总(附源码)

《8种快速易用的PythonMatplotlib数据可视化方法汇总(附源码)》你是否曾经面对一堆复杂的数据,却不知道如何让它们变得直观易懂?别慌,Python的Matplotlib库是你数据可视化的... 目录引言1. 折线图(Line Plot)——趋势分析2. 柱状图(Bar Chart)——对比分析3

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

java变量内存中存储的使用方式

《java变量内存中存储的使用方式》:本文主要介绍java变量内存中存储的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍2、变量的定义3、 变量的类型4、 变量的作用域5、 内存中的存储方式总结1、介绍在 Java 中,变量是用于存储程序中数据