迎来行业寒冬,记最近的复习情况

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/boom_man/article/details/84837258

对这段时间的工作做一个梳理

一.WebSocket的使用

第一次选型时Spring的WebSocket,后项目转为Netty的WebSocket

在使用过程中,用到了Netty的心跳机制,及自己模仿MVC封装了@PushService,@ProtocolController,@ProtocolService
分别对应服务端推送,服务控制,服务业务处理

2.Google Protocol Buffer的使用

协议为:一个int32代表协议号,剩余内容为协议传输主体。用Google Protocol Buffer进行编码.

后端不采用.proto文件,采用ProtobufIOUtil工具类进行解码

3.用协议号来控制业务,在编写代码的过于丑陋,遂采用注解对执行的方法进行标注,在项目初始化的时候,将所有的Protocol 方法进行标注,在使用时进行注入即可,大大提高开发效率

4.对服务推送的方法进行封装,利用aop将业务方法直接变成协议直接推送到目标用户
在项目中邀请好友功能及时可见,让用户直接知道自己邀请了谁。

5.项目中遇到的问题
对于使用Nginx进行转发之后,channel.remoteAddress()只能获取到127.0.0.1ip,因为被nginx转发了,获取不到真实ip,遂最终采用客服端访问服务器的某个api,获取到真实ip,然后在登陆时发送给服务器

二、留存统计功能制作

因为小游戏对用用户留存统计很关心,还有就是对用户行为进行分析,了解用户需求,看用户是哪里不想玩了,是否需要对难度,关卡进行优化

在留存时,最终设计了一个版本令我自己比较满意。

在这里插入图片描述

根据用户的创建时间和登陆时间及渠道
可以对用户新增,2日,3日,4日,…更多进行分析在这里插入图片描述

还用Echars对用户的数据进行分析
在这里插入图片描述

三、审核管理功能

因为小游戏会有审核人员审核再上线(一些违规行为不能让审核人员看到哈)

遂采用Redis+MySQL进行审核版本控制
当Redis不为空,在mysql中加载可用配置

在这里插入图片描述

大致如图,会有描述字段(必须增加,讲出这个配置什么时候用) 创建时间和修改时间。

四、渠道管理

小游戏会涉及到你找渠道推广,并且统计渠道拉了多少人,但又不能让其他渠道知道别人渠道拉了多少人,反正就是加密

遂采用一个参数为渠道号,一个为密码,密码设计为MD5加盐

五、排行榜设计
游戏排行榜设计,分数设计时要加时间戳,防止分数相同

采用Redis (sorted set),后因排行榜较多,增加到了4-5个,遂抽取出一个模型用于继承

六、Netty的心跳 10s客服端不发心跳断连

防止无效用户占用socket的连接

正常情况下,用户下线或者杀掉进程是主动断连的,但是如果用户网络中断,就不会断开

七、Redisson锁的使用
用到了加锁解锁,因为有一个全服boss,只有第一个击杀才有奖励的问题

复习相关知识:

1.github4万start的大佬:https://cyc2018.github.io/

2.Spring

3.Spring MVC

4.Mybatis

5.Java基础

6.Netty

7.设计模式

8.算法

阅读更多

没有更多推荐了,返回首页