自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(157)
  • 收藏
  • 关注

原创 紫龙游戏服务器面试

9.两个机器同时Tcp连接对方,是同一条链接吗。

2024-07-22 19:28:34 27

原创 Linux 环境.Net程序堆栈查询

【代码】Linux 环境.Net程序堆栈查询。

2024-06-17 16:22:17 299

原创 C#中数组ProtoBuf使用问题

使用 C# 类库 Google.Protobuf 包,进行协议定义,当给数组属性赋值默认值时,出现反序列化以后,数组长度翻倍,多的一部分在最前面,而且都是数组元素的默认值。这个bug如果没有自己观察会以为是逻辑代码的问题,解决办法就是,在定义数组时,不给默认值,用的时候再new。

2024-06-14 15:01:36 317

原创 Ubuntu 安装 Proto 问题

Linux安装proto库问题

2024-05-22 23:11:52 156

原创 C# Mongo 驱动 MongoDB.Bson.BsonSerializationException: Unknown discriminator value

【代码】C# Mongo 驱动 MongoDB.Bson.BsonSerializationException: Unknown discriminator value。

2024-01-12 17:20:27 953

原创 C# typeof 与 示例的GetType()

typeof 输出这个示例的直接 类型 IBagItem, 也就是指向示例的类型。GetType() 源类型。

2024-01-11 20:18:57 567

原创 背包系统设计

这个系统算是所有系统的基础系统,不管是奖励的发放、还是其它业务,都是通过背包来工作的,但是不建议所有系统跟背包进行强关联,否则系统后期会很难维护,就像我们前期为了省事,考虑可能出现的各种交易,将所有的系统DbId跟背包关联,导致后期背包中存在很多无用的数据,而且一个数据存储在两个地方,本身就是违背设计的,但是由于各种原因,我们还是做了,希望大家做的时候想清楚,当然如果遇到一个喜欢应付的合作对象,你会发现,不管你怎样说他总有理由 ^ ^理论上,我们希望,减数据的时候先减 同itemId中 数量最小的;

2023-12-18 20:58:10 177

原创 好友系统设计

申请添加好友的人,动态的修改好友的数据,当然好友在线的话,可以给好友发一条消息,好友在线修改添加,如果离线,我们采取的方案是直接给这个好友添加数据(注意理论上这里会出现,玩家A修改玩家B的数据,玩家B此时刚好上线获取,发现拿的是老数据,导致数据错误),不过这个问题没有被提出来,是后面我自己分析出来了,后面跟做的人说,他感觉这个问题先这样,我相信大家都碰到过这种情况 ^ ^。这种设置可以只修改自己的数据,黑名单可以直接在表里体现,申请状态也可以直接在表里体现,可结合业务情况设计“好友申请”、“黑名单”功能。

2023-12-18 19:48:16 141

原创 红点系统设计

另外,玩家上线后会获取很多数据,只是提示作用,获取完整的数据效率低,大部分情况没有实际意义,使用红点可以很好的解决这个问题,玩家上线时只推送一个数组,表示各个系统的红点状况,如果玩家需要深入查看,则获取详细的信息。一般来说项目前期,基本不会关注红点提示问题,后期提了需求后,做了一部分发现,每做一个模块都需要添加一个协议,不如设计一个系统统一管理这个问题;

2023-12-15 20:56:11 81

原创 奖励Reward系统设计

奖励Reward系统设计

2023-12-15 20:45:22 125

原创 系统邮件、个人邮件系统

这个基本和系统邮件类似,就是奖励的获取建议,建议使用一个至少为byte的字段GotSign表示,如果后期存在 部分领取的情况,将这个字段分成几位,每一位代表奖励的领取情况即可。2.尽量不存储重复信息,比如同步的系统邮件,如果内容固定,个人邮件只需根据MailId即可获取邮件的内容,数据库不用再存储相关的内容字段,当然也要结合实际业务。1.直接获取全部的邮件内容,邮件数目多的时候会比较费,如果可以合理的控制邮件的过期时间,这个方案是可以的。所有人都可以接收的邮件,一般系统发放后,玩家登录时拉取。

2023-12-15 15:28:23 44

原创 条件系统、任务系统设计

这个主要是设置相关的业务触发类型,不同的业务设置不同的值,这里建议将类型至少设置为ushort, 太小后期会出问题 ^ ^这里建议将状态的枚举值设置的大一些,方便后期插入一些特殊的状态,要不然需要改许多已经写好的东西,踩过坑的都懂的为啥 ^ ^一般来说,当任务结束,也就是相应的条件完成,比如常见的主线、支线、每日、每周、委托、成就任务等。激活任务的条件id列表,满足则任务进入 Active 状态,否则 处于 Init 状态。完成或改变特定的条件,触发任务状态的改变,一般由各个系统触发;

2023-12-14 21:00:19 195

原创 设计一个多人在线的匹配系统

实际上,会有很大的可能,玩家会加入匹配再退出,当然写完功能我们也会跑测试,假设我们加入匹配,但是突然取消匹配,但程序已经匹到玩家,这个时候我们就需要处理很多状态,最简单就是,搜索清理所有数据,但这个会把所有任务暂停下来,可想而知,代价是很大的,当上百万人同时取消;3.在每次开始 主流程时 可以记录一个状态,当中间有玩家退出时,改变这个 状态,只有在 主流程开始到结束,这个中间 所记录的状态 依然为每次开始时标记的状态,才清理过期数据,如下代码。1.进入下一个流程,匹配队友,或匹配对手。

2023-12-14 17:28:04 375

原创 C# GC

参考。

2023-12-13 17:52:20 35

原创 数字越界分析

针对int 到 ushort的转换。

2023-12-11 20:24:22 41

原创 Linux查找文件内容

【代码】Linux查找文件内容。

2023-11-24 11:23:47 134

原创 Mysql字符串类型编码问题

A:调查后发现在数据库中使用的 account 编码为 utf8mb4_unicode_ci,而这种其实是不区分大小写的,后面我们根据情况,将编码换为 utf8mb4_bin就可以了。Q: 数据库 Redis 出现 字符比较不一致问题。

2023-11-17 10:59:12 125

原创 Linux Dotnet 程序堆栈监控

【代码】Linux Dotnet 程序堆栈监控。

2023-11-02 15:26:20 166

原创 C#细节问题

【代码】C#细节问题。

2023-11-01 10:34:21 127

原创 C# DateTime类型 直接使用Proto、Bson 问题

默认这里的时区为UTC、DateTimeOffset 为0,参考下面文档可找到;这就会导致设置的时区信息丢失,如下eg.// json08:00",// proto, 没有带时间戳// bson由于DateTime时C#的内建类型,不能使用 RuntimeTypeModel.Default.Add() 中添加查看源码可知,当;时序列化时会带时区。

2023-10-31 16:29:13 247

原创 Linux查找大文件

【代码】Linux查找大文件。

2023-10-25 14:40:41 104

原创 背包系统设计-获取数据量大问题

由于业务需要,灵活的,交易等原因,目前我们将很多不属于背包的功能放入背包,起初感觉这样省了不少事情,很多东西的获取直接走背包就好,不用添加任何协议。

2023-10-21 10:52:43 155

原创 2419. 按位与最大的最长子数组

【代码】2419. 按位与最大的最长子数组。

2023-09-24 18:31:04 77

原创 91. 解码方法

递归、动态规划

2023-08-20 18:49:35 1700 1

原创 权重设计介绍

经常会有许多活动、或则任务、当用户完成后,可以获得相关的奖励,当然可以是提前定死的几个、但如果想要 产出不同的 奖励的话,给每个物件配置相关的权重,就可以实现。之前在阿里的 负载均衡 比赛中,就有这个算法,RocketMQ 中包含多种负载算法,其中 权重 算法就属于其中一种,也是最实用的一种。weight 属于 (10,30] => index = 1。weight 属于 (30,40] => index = 2。weight 属于 (0,10] => index = 0。

2023-08-14 20:56:57 187

原创 347. 前 K 个高频元素

2.放入优先队列(最大堆)1.哈希记录元素出现次数。3.依次出队获取结果。

2023-08-13 18:08:30 45

原创 7022. 限制条件下元素之间的最小绝对差

目前看,最好的办法时,可以改写SortedList,提供一个获取边界的方法,源码中其实已经包含类似的方法(FindNode),只是没有提供外界使用。参考:借助一个有序集合保存可匹配的有序元素集合,再根据当前元素,快速找到这个元素在这个集合中的左右边界。这里使用 GetViewBetween 获取部分的节点遍历,但再最后两个测试数据中超时。问题:这里 查找 边界元素导致超时,需要优化。

2023-08-13 17:29:28 246

原创 230. 二叉搜索树中第K小的元素

中序遍历:左子树 -> 中 -> 右子树。二叉搜索树:中序遍历可以得到有序的序列。

2023-08-13 09:00:36 113

原创 239. 滑动窗口最大值

【代码】239. 滑动窗口最大值。

2023-08-04 21:43:26 35

原创 ..\obj\project.assets.json”。运行 NuGet 包还原以生成此文件。

有时拉取一个新的项目后出现,如标题中的问题,不管用的是Vs 还是Rider都有可能出现;当使用IDE的自动还原生成相关文件时,没有效果,一般第一次打开项目时IDE是会自动生成的。在项目根目录打开cmd,依次运行,就可以解决了。

2023-07-30 21:37:05 1271 2

原创 6929. 数组的最大美丽值

【代码】6929. 数组的最大美丽值。

2023-07-16 11:33:08 71

原创 6893. 特别的排列

【代码】6893. 特别的排列。

2023-06-18 15:03:56 73

原创 修改物理机的DNS

【代码】修改物理机的DNS。

2023-05-22 16:00:39 83

原创 Splunk HTTP Event Collector(http事件收集器)融合 NLog基本使用

Splunk HTTP Event Collector(http事件收集器)

2023-04-17 20:24:58 593

原创 C# List.Sort分析

排序算法

2023-01-13 13:52:34 748

原创 2315. 统计星号

找规律

2022-07-09 12:04:19 146

原创 2316. 统计无向图中无法互相到达点对数

无向图、函数传参

2022-07-09 12:01:38 353

原创 2311. 小于等于 K 的最长二进制子序列

位运算、数学

2022-07-03 20:44:33 94

原创 2310. 个位数字为 K 的整数之和

数学

2022-07-03 20:29:14 99

原创 2309. 兼具大小写的最好英文字母

数组

2022-07-03 20:25:03 103

空空如也

空空如也

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

TA关注的人

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