当前位置: 首页 > news >正文

网站如何运营管理pis粉丝做的网站

网站如何运营管理,pis粉丝做的网站,学好seo,小时seo加盟ET实现游戏中邮件系统逻辑思路#xff08;服务端#xff09;_游戏邮件系统设计-CSDN博客 场景#xff1a;今天遇到一个BUG#xff0c;在服务器重启的时候#xff08;体验服#xff09;#xff0c;玩家之前接收的邮件又重新接收了一次#xff0c;但是两封邮件的ID是不同…ET实现游戏中邮件系统逻辑思路服务端_游戏邮件系统设计-CSDN博客 场景今天遇到一个BUG在服务器重启的时候体验服玩家之前接收的邮件又重新接收了一次但是两封邮件的ID是不同的。ID不同说明玩家自身邮件组件向EmailManager组件拉取了两次同时也说明EmailManager组件在玩家拉取完邮件后没清理保存于是我先想着在接受邮件之前判断这个邮件是不是已经接收了。 修复BUG的方式很直接暴力直接用EmailInfo与玩家自身邮件组件做对比不过我第一时间想到的竟然是   ‘’ 又一次被自己气笑了。  运算符对于基本数据类型比较值对于引用类型默认比较引用内存地址。  由于两封邮件内容、时间、奖励等信息相同但是ID不同那只能比较除ID外的内容是否相等。 引出正题 1. 使用 SequenceEqual 方法 System.Linq 命名空间中的 Enumerable.SequenceEqual 方法可以用于比较两个序列的内容是否相等。 using System; using System.Collections.Generic; using System.Linq;class Program {static void Main(){Listint list1 new Listint { 1, 2, 3 };Listint list2 new Listint { 1, 2, 3 };Listint list3 new Listint { 1, 2, 4 };bool areEqual1 list1.SequenceEqual(list2); // Truebool areEqual2 list1.SequenceEqual(list3); // FalseConsole.WriteLine($list1 and list2 are equal: {areEqual1});Console.WriteLine($list1 and list3 are equal: {areEqual2});} }2. 使用 SetEquals 方法 如果你只关心两个集合是否包含相同的元素而不关心顺序可以使用 HashSetT 的 SetEquals 方法。 using System; using System.Collections.Generic;class Program {static void Main(){Listint list1 new Listint { 1, 2, 3 };Listint list2 new Listint { 3, 2, 1 };HashSetint set1 new HashSetint(list1);HashSetint set2 new HashSetint(list2);bool areEqual set1.SetEquals(set2); // True顺序不重要Console.WriteLine($list1 and list2 contain the same elements: {areEqual});} }3. 手动比较 如果你需要更复杂的比较逻辑例如自定义对象可以手动遍历两个列表并进行比较。 属性 Value这是一个整型属性用于存储 MyClass 对象的值。重写 Equals 方法 该方法用于比较两个 MyClass 对象是否相等。首先检查传入的对象 obj 是否是 MyClass 的实例。如果是则比较它们的 Value 属性。如果 Value 相等则返回 true否则返回 false。重写 GetHashCode 方法 该方法返回 Value 属性的哈希码。重写这个方法是为了确保在使用哈希表等数据结构时MyClass 对象的哈希值是基于其内容的。 using System; using System.Collections.Generic;class MyClass {public int Value { get; set; }public override bool Equals(object obj){if (obj is MyClass other){return this.Value other.Value;}return false;}public override int GetHashCode(){return Value.GetHashCode();} }class Program {static void Main(){ListMyClass list1 new ListMyClass { new MyClass { Value 1 }, new MyClass { Value 2 } };ListMyClass list2 new ListMyClass { new MyClass { Value 1 }, new MyClass { Value 2 } };bool areEqual list1.Count list2.Count !list1.Except(list2).Any(); // TrueConsole.WriteLine($list1 and list2 are equal: {areEqual});} }创建 list1 和 list2 list1 和 list2 是两个 ListMyClass它们各自包含两个 MyClass 对象Value 分别为 1 和 2。比较两个列表的内容 areEqual 变量的值是通过以下逻辑计算得到的 首先检查两个列表的元素数量是否相等list1.Count list2.Count。然后使用 Except 方法找出 list1 中不在 list2 中的元素如果没有这样的元素即 !list1.Except(list2).Any() 为 true则说明两个列表的内容相等。输出结果 最后使用 Console.WriteLine 输出两个列表是否相等的结果。 总结 使用 SequenceEqual 是最简单和直接的方法适用于顺序敏感的比较。使用 SetEquals 适用于无序比较。手动比较适用于需要自定义比较逻辑的情况。 其实这个修改BUG的方式是很蠢的还是要从根源上分析为什么会出现两封一样的邮件。 BUG出现的原因 ET框架新起一个服务及实现服务之间的消息通讯_et startsceneconfig-CSDN博客 先说答案出现这个BUG的原因是线上版本修改了Data服的配置文件线上版本最开始的配置和本地文件相同后来修改了Data服的线上版配置文件导致读取数据不一致  EmailManager组件放在了自己起的一个服务器Data服上在SceneFactory添加组件的时候生成的ID和Data服在StartSceneConfigs.xlsx文件配置的ID相同。 比如你本地Data服配置的ID是10那EmailManager组件保存到MongoDB中的ID也是10。因为修改了线上版本的配置文件线上Data服配置的ID改为8那EmailManager组件保存到MongoDB中的ID就多了一个8。 所以数据库中就会有ID为10的数据和ID为8的数据 。 体验服在程序启动的时候把ID为10和8的数据同时拉取了之后运行过程中又是以ID为8的数据进行保存所以服务器重启的时候又拉了一遍ID为10的数据造成不一致让逻辑误以为邮件没领又重新拉了一遍。 解决办法  解决办法就是在读取和保存数据的时候按照配置文件的ID进行动态操作本地就用10线上就用8 public static async ETTask LoadEmailInfo(this EmailManagerComponent self) {//按照配置文件ID进行读取数据 d.Id self.DomainScene().Id (self.DomainScene()是Data)var EmailManagerList await DBManagerComponent.Instance.GetZoneDB(self.DomainZone()).QueryEmailManagerComponent(d true d.Id self.DomainScene().Id,collection:EmailManagerComponent);}//也可以通过条件 self.DomainScene().Name Data 来筛选你要操作的数据
http://www.hkea.cn/news/14398922/

相关文章:

  • 大庆建设公司网站站长统计app最新版本2023
  • 郑州网站推广方式广州网站建设智能 乐云践新
  • 做自己的网站流量怎么wordpress前台修改文章
  • seo做什么网站赚钱怎么样做游戏网站
  • 陕西汽车网站建设WordPress考勤模板
  • 网站策划与建设怎么做视频解析网站吗
  • 做网站推广优化可信网站是什么
  • 中文html5网站模板qq是腾讯的还是阿里的
  • appcan 手机网站开发建设网站常见问题
  • 上海嘉定做网站公司福州网站建设培训
  • 最好的php网站开发工具短视频营销论文
  • 建设公司网站编号wordpress主动推送所有网址插件
  • 设计师常备设计网站大全网站建设分析报告
  • 微信h5制作网站开发服务器搭建网站
  • 网站title如何写综合门户网站源码
  • 杭州市建设工程检测协会网站什么网站做网页好
  • 怎样下载模板网站最好旅游网站建设
  • 做一钓鱼网站wordpress ios源码
  • 怎么根据别人的网站做自己的网站网站建设实训存在的问题
  • 旅游网站建设需求说明书湖北省城乡建设厅证书查询
  • 专门做外贸的的网站有哪些化妆品网站开发的外文翻译
  • 旅游网站如何建设建设银行e路通网网站
  • 网站建设实践鉴定新闻摘抄2023年
  • 在线网站建设培训班亦庄公司做网站
  • 个人网站做百度云电影链接犯法吗建设厅的证全国通用吗
  • 江苏金安建设公司网站如何创建网站挣钱
  • 网站建设业务员转换大白银市建设局网站首页
  • 做原油看哪个网站社交电商怎么做赚钱
  • 四川建设行政主管部门官方网站代理网页是干什么的
  • 可以搜索任何网站的浏览器织梦移动端网站模板下载