- 博客(13)
- 收藏
- 关注
原创 无脑在腾讯云服务器搭载宝塔Linux面板
因为刚接触云服务器,结果发现没有很弱智的保姆教程导致浪费了些时间,后面直接让学长远程操控搞好,所以笔者决定写一篇博客。
2025-04-26 23:51:35
288
原创 MMO双端游戏基础架构(七):双端服务器采用的异步日志输出框架
链式调用的日志框架,支持同步,异步,高亮,五种输出优先级,文件,控制台,自定义输出方法等多种强大功能的轻量级日志框(包括Unity客户端,通过继承任务接口即可实现客户端同样功能的日志打印)
2025-03-23 11:37:15
170
原创 MMO基础双端架构(五):如何O(1)的处理心跳消息
吗?不需要,这只会浪费GC开销,链表的节点移动本来就是o(1)的,既然我不用移除那么我直接转换前后指针(引用)即可。
2025-03-23 11:23:18
504
原创 MMO基础游戏服务器架构(三):多线程消息队列
Channel是核心数据结构,线程安全的数据分发,ConcurrentDictionary,线程安全的字典用于处理消息回调,Channel作为消息队列的数据结构载体,CancellationTokenSource用于处理多线程Task的异常终止,workCount是此时工作的线程数量,使用原子操作来保证线程安全。使用值类型Struct降低GC。
2025-03-23 10:47:32
615
原创 MMO基础服务器架构(二):定义连接概念的基础类 BaseConnection
由于计算机底层架构可能采用小端模式(数据的低位字节位存放在内存的低地址端,高位字节存放在内存的高地址端),但是网络传输通常是采用大端存储,所以需要处理大小端模式的问题。类型代表消息有多少个字节,中间存储了消息类型(通过字典把Type类型映射为int再类型转换为ushort),最后包尾存储信息。BaseConnection接收到消息的时候会调用ProtoHelper中的方法获取程序集中的类型数据。原生的BaseConnection并不具有缓存信息的功能,但是通过类的继承,我往外拓展了父类。
2025-03-23 10:36:05
278
原创 MMO基础游戏服务器架构(一):c#异步网络连接全流程
必须传入一个字符串类型的host的IP网址(通常为ipv4),网络端口号码 port,重载了构造函数,允许传入一个网络同时接入客户端数量。,后续可能会重构为效率更高的可靠upd库 - kcp,网络客户端信息接收功能封装在类 - TcpServer中。采用的是异步Socket连接的Tcp连接方式,异步运行能更好的利用线程资源,降低线程空转和线程阻塞带来的卡顿。用于处理当客户端Socket真正连接的时候。监控对象,同时排队连接的最大传入连接数。(默认100个),bool类型的字段。,Socket套接字。
2025-03-23 10:28:52
340
原创 MMO基础游戏服务器架构(一)
/BaseConnection是我自己封装的一个连接类,每一条消息都有一个Protobuf的IMessage和Baseconnection。Log.Information("开始监听端口:" + endPoint.Port);//当有人连入的时候。Log.Information("开始监听端口:" + endPoint.Port);//当有人连入的时候。//我的日志系统是使用Serilog的成熟链式调用的日志框架。if (serverSocket == null) //避免触发空引用异常。
2025-03-23 10:23:50
941
原创 全加法器与半加器
这个应该有常识的都知道计算机底层是二进制,因此计算机硬件操作也是基于0/1的,但是计算机硬件nmos与pmos管可不懂什么是加法,那怎么办呢?来检验此时是不是1+1操作i,如果返回1就是进位,carry+1,多位加法器通过2倍数的半加器实现即可。的效果,这也就是所谓半加器,所以我们只要用一个变量存储这里的进位就可以实现全加了,那么我们就可以使用。当然也可以实现相应的16位甚至更多位的半加器计算,都是一样的,大家有兴趣可以自己实现。),计算机硬件是基于一个个门电路构成的,我们知道。如果看过上一篇博客(
2024-09-18 19:51:00
426
4
原创 计算机组成原理基础-门电路(iverilog实现 Linux环境)
当 a 或 b 其中一个为低电平时,至少有一个 PMOS 晶体管会导通,使得 out 被连接到电源电压(1),因此 out 为高电平(1)当 a 和 b 都为高电平时,两个 NMOS 晶体管会导通,out 会被连接到地(0),因此 out 为低电平(0)。使用两根noms管与两根poms管即可实现。assign语句是表示运算。
2024-09-12 14:59:19
442
原创 保姆级别使用pycharm搭载opencv环境
我们可以下载一下opencv-python然后看看之前在conda中就有的三个cv包是否是蓝色的(搜索即可)import一下我们的cv库输入以下代码,随意选择一个盘中的图片,显示出来就算成功拉完结撒花。
2024-04-26 19:38:42
3139
7
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人