gpt4 book ai didi

c++ - 在服务器应用程序中将客户端信息存储在 map 中的设计模式建议

转载 作者:行者123 更新时间:2023-11-30 05:40:24 25 4
gpt4 key购买 nike

我的应用程序是服务器,我的客户端会给出一些处理请求。客户会多次联系我(服务器)处理同一个请求。

map<clientId,ClientInformation>

通常,我会将一些从客户端收到的信息存储在STL Map中,以便下次处理客户端请求。

一旦客户对我的服务感到满意,我将清除映射中相应客户 ID 的条目。

这是我的示例 ClientInformation 类:

class ClientInformation
{
int NotRequiredForNextTime; // Information Not required for processing the client request next time
int requiredforNextTime; // Information required for processing the client request next time
int requiredforNextTime; // Information required for processing the client request next time
int NotRequiredForNextTime; // Information Not required for processing the client request next time
int NotRequiredForNextTime; // Information Not required for processing the client request next time

UserDefinedClass Class1;
};

Class UserDefinedClass
{
int requiredforNextTime;
int NotRequiredForNextTime;
}

在上面的类中,我只要求将 requiredforNextTime 存储在 map 中。仅在处理当前请求时才需要其他信息。

ClientInformation 类可以有用户定义的类作为成员(UserDefinedClass),一些UserDefinedClass成员下次不需要了.

有没有设计模式,针对这个问题提供优化的解决方案(内存使用)?

最佳答案

在这种情况下,只需在单独的类中将 Required- 和 NotRequired- 字段分开。你可以……

  • 让 NotRequired- 类由 Required 类中的指针保存,这样您就可以简单地删除它,或者

  • 让 Required- 类由 NotRequired- 类中的指针保存,这样您就可以将它移出到某个不同的容器中,或者

  • 从一开始就将它们放在单独的容器中,或者

  • 编写一些代码以从 ClientInformation 类构建 Required 类 - 复制 Required 字段(复制效率低下,但如果您有任何现有代码,这可能需要对现有代码进行较少的更改)。

    • “序列化”是其中一种形式,尽管其中数据在存储期间不一定保存在可访问的结构中,并且需要一个独特的反序列化步骤来重新创建 Required 类,或者可能只重新填充另一个 ClientInformation 的 Required 字段对象

(我不知道任何相关的设计模式名称,但作为程序员,并非您所做的一切都需要通过设计模式名称进行验证 - 培养您对数据建模选项的心理意识意味着您可以应用“常识” ,命名或匿名。)

关于c++ - 在服务器应用程序中将客户端信息存储在 map 中的设计模式建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com