keyValue
2016-04-18 10:27:02 0 举报
keyValue是一种常见的数据结构,通常用于存储和管理键值对。在这种结构中,每个键都与一个唯一的值相关联。这种关联关系使得我们可以快速地通过键来查找对应的值,而无需遍历整个数据集。keyValue结构在许多领域都有广泛的应用,如数据库、缓存系统、配置文件等。它的主要优点是查询速度快,占用空间小,易于实现和维护。然而,由于其简单性,keyValue结构在某些场景下可能无法满足复杂的数据需求,如需要处理多级关系或嵌套结构的情况。总的来说,keyValue是一种非常实用的数据结构,适用于许多常见的应用场景。
作者其他创作
大纲/内容
下面根据服务器格式进行循环
char * pServerDetail = (char *)m_pShareMemory + dwSerInfoDetaiOffset; \t\t\tDWORD dwFinalOffset = *(((DWORD *)pServerDetail) + nTagNum - 1);
DWORD *pdwTmp = (DWORD *)m_pServerInfo;*(pdwTmp + nServerIndex - 1) = dwoffSet;服务器头的偏移,不是数据信息的偏移
\t\tDWORD *pdwTmp = (DWORD* )m_pTLVDataPos;*pdwTmp = nLenth;\t\t*(pdwTmp+1) = dwValue;\t\tm_pTLVDataPos = (char *)m_pTLVDataPos + sizeof(DWORD) + nLenth;
WriteServerInfoMeatData
WriteServerInfoDWORD
WriteServerDetailMetaData
获取表基地址m_pShareMemory,第一项放入总tag数目,得到表头地址,并根据总tag数目计算数据地址
获取服务器头的偏移
SetServerDetailMetaData,根据服务器信息头取出头信息偏移量,把数据偏移量放进对应的位置
GetServerInfoDWORD
把表头偏移量放进服务器信息的头地址m_pServerInfo对应的位置
根据数据地址m_pTLVDataPos和表基地址m_pShareMemory计算第N个服务器头的偏移量
char * pServerFinal = (char *)m_pShareMemory + dwFinalOffset;
GetDWORD
m_pTLVDataPos = (void *)((char *)m_pTLVDataPos + dwServerCount * sizeof(DWORD));
根据表头地址获取第N项数据的偏移量
SetMetaData设置表头信息,放入第20项即服务器信息的偏移量,保存服务器信息地址m_pServerInfo
WriteMetaData
SetServerInfoMetaData
DWORD dwServerIndexOff = *((DWORD *)m_pServerInfo + nServerIndex -1); char * pServerDetail = (char *)m_pShareMemory + dwServerIndexOff;根据服务器头的偏移找到服务器信息头\t\t*(((DWORD *)pServerDetail) + nTagNum -1) = (char *)m_pTLVDataPos - (char *)m_pShareMemory;在服务器为信息头中放入数据偏移
DWORD dwSerInfoDetaiOffset = *(((DWORD *)pServerInfo) + nServerIndex - 1);
WriteDWORD
服务器信息设置和获取
获取对应服务器数据信息
根据偏移量和表基地址获取到数据长度和数据
数据长度和数据内容放入数据地址中,同时移动数据地址m_pTLVDataPos
保存在m_pMetaData和m_pTLVDataPos中
根据每个服务器的数据项数移动m_pTLVDataPos,得到新的m_pTLVDataPos
获取服务器信息地址pServerInfo
根据数据地址m_pTLVDataPos和服务器个数获取新的数据地址
GetDWORD获取服务器总个数
SetMetaData设置表头信息,放入第n项偏移
DWORD dwSerInfoOffset = *(pdwTmp + SM_NOTYPE_SERVERINFO_DETAIL -1);\t\t \t\t\tvoid * pServerInfo = (char *)m_pShareMemory + dwSerInfoOffset;
m_pTLVDataPos = (void *)((char *)m_pTLVDataPos + sizeof(DWORD) * nSerDetailCount);nSerDetailCount是服务器总信息个数20
把数据长度和数据信息放进m_pTLVDataPos地址中,并计算新的m_pTLVDataPos
获取服务器数据信息偏移
0 条评论
下一页