20160516-1

1. 交易

1.1 需求

采用拍卖场模式,支持一口价和出价(最低加价5元宝,不设置上限)

1.2 实现

1.2.1 接口

mina监听指定socket端口(数据库设置一个t_server_config表,相关各种配置一并存入)

1.2.2 实现

pixel_character.auction 表

1.2.2.1 添加物品

消息到达后,insert table并返回insert结果,消息中包含底价和一口价

1.2.2.2 出价

消息到达后,update tablewhere字句中应当指定statusprice范围(小于一口价)(where字句中限制新值必须大于旧值)

1.2.2.3 一口价

消息到达后,update tablewhere字句中应当指定status

1.2.2.4 拍卖到期物品发送

启动一个离线线程,每5分钟(?是否合适,其实可以将完成的交易放入队列让异步线程立即处理)扫描一次数据库,并将到期的拍卖物,调用逻辑服务器接口,mail给指定userid

1.2.2.5 查询

t_equipment 装备

t_goods_model 普通物品

 

2. 聊天

2.1 需求

广播:message推送所有逻辑服务器

团队消息:message推送所有团队成员所在的服务器

p2p消息:message推送指定id

2.2 实现

2.2.1 接口

mina监听指定socket端口(与逻辑服的连接可以共用)

2.2.2 实现

2.2.2.1 广播

接到请求后,message转发所有逻辑服务器

2.2.2.2 团队消息

接收到请求后,查询redis中团队成员(最大允许多少人?)所在的逻辑服务器,message转发至团队成员所在的逻辑服务器

2.2.2.3p2p消息

接收到请求后,查询redis中目标所在的逻辑服务器,message转发至于目标所在的逻辑服务器

 

3. 战斗

N/A

 

4. 登录

4.1 需求

loginuser从上一个逻辑服务器下线,并在指定的逻辑服务器上线

logout:将user从指定的逻辑服务器下线

(保证登陆session的唯一性)

4.2 实现

4.2.1 接口

提供两个HTTPServletLoginServletLogoutServlet

还要给逻辑服提供

4.2.2login

查询redisuserid上一个逻辑服务器,调用接口将其从此逻辑服务器下线。

并选择合适的的逻辑服务器(负载最少的?or轮询?策略可动态调整,方便运营倒量+平衡负载)上线,redis中指定逻辑服务器在线人数加1

4.2.3logout

查询redisuserid当前逻辑服务器,调用接口将其从此逻辑服务器下线,,redis中指定逻辑服务器在线人数减1

 

5. 服务器状态Servlet

5.1 需求

可以通过此Servlet获取当前服务器状态信息

包括:

服务器连接信息

线程信息

物品发送队列信息

登录统计信息(登录和注销的用户数量,分逻辑服务器在线人数)

上一分钟的请求数量

 

6. 其他设计

6.1 缓存

reidskeyttl设置为86400

 

6.2 线程控制

ServletContextListener中启动所有线程,包括:

逻辑服务器连接守护线程,每个逻辑服务器一个

拍卖到期物品扫描线程

物品发送线程(与拍卖到期物品扫描线程,通过阻塞队列交互)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以将这段代码封装成一个函数,以便在需要时可以直接调用。以下是一个可能的实现: ```python import pandas as pd def split_dataset(off_train, off_test): # 划分区间 # 训练集历史区间、中间区间、标签区间 train_history_field = off_train[off_train['date_received'].isin(pd.date_range('2016/3/2', periods=60))] # [20160302,20160501) train_middle_field = off_train[off_train['date'].isin(pd.date_range('2016/5/1', periods=15))] # [20160501,20160516) train_label_field = off_train[off_train['date_received'].isin(pd.date_range('2016/5/16', periods=31))] # [20160516,20160616) # 验证集历史区间、中间区间、标签区间 validate_history_field = off_train[off_train['date_received'].isin(pd.date_range('2016/1/16', periods=60))] # [20160116,20160316) validate_middle_field = off_train[off_train['date'].isin(pd.date_range('2016/3/16', periods=15))] # [20160316,20160331) validate_label_field = off_train[off_train['date_received'].isin(pd.date_range('2016/3/31', periods=31))] # [20160331,20160501) # 测试集历史区间、中间区间、标签区间 test_history_field = off_train[off_train['date_received'].isin(pd.date_range('2016/4/17', periods=60))] # [20160417,20160616) test_middle_field = off_train[off_train['date'].isin(pd.date_range('2016/6/16', periods=15))] # [20160616,20160701) test_label_field = off_test.copy() # [20160701,20160801) return (train_history_field, train_middle_field, train_label_field, validate_history_field, validate_middle_field, validate_label_field, test_history_field, test_middle_field, test_label_field) ``` 调用该函数时,需要传入 `off_train` 和 `off_test` 两个数据集作为参数,函数将返回九个数据集,分别对应训练集、验证集和测试集的历史区间、中间区间和标签区间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值