zoukankan      html  css  js  c++  java
  • 作业自动提示功能设计思路

    1、利用现在FLEX项目中的心跳包机制,使用SOCKET心跳包技术获取最新的作业情况。

    2、在现在FLEX项目中有一个:

    核心代码:

    这样我们可以利用这个通道,获取相应的信息。

    具体修改步骤如下:

    1、准备工作

    创建一张表,名称:t_bag_sendmessage

    字段包括:

    id int

    receiver_id char(36) --接收的人员

    create_time datetime --发送的时间

    type_id     int --信息的分类,比如是教师发作业:1 是学生提交作业:2

    message_body varchar(4000) --消息体,内容,是一个JSON串

    have_receive int --是不是用户已收到,1表示接到,0表示是未收到,默认是0

    之所以有这张表,是用来将提示信息持久化使用的,下面将重点说明。

    2、我们在JAVA项目中,接收到FLEX端通过心跳传上来的心跳包,解析JSON串,得到是哪个身份(教师,学生),哪个人员(用户ID),哪种设备(TEACH平台还是PAD),

    以前我们是直接把这个人员ID和PAD设备ID保存到MEMCACHED中,并设置了过期时间为5秒(约值,不准确),现在我们除了做这件事以后,扩展一下,再做另一部分工作:

    HomeWork+Teacher+用户ID (表示是作业,并且接收者是教师)或者

    HomeWork+Student+用户ID(表示是作业,并且接收者是学生)

    为KEY值,到MEMCACHED中去查找是否有需要提示的字符串(也是一个JSON串,可以包括各种信息,具体形式请开发人员自行扩展) 如果没有,返回OK,如果有,返回此字符串,并在MEMCACHED删除此键值,防止下次再次获取到重复的提示信息。

    3、教师留作业

    查询他所教授的任课计划,得到任课班级,获取到所有教授的学生,然后循环向上面提到的数据表中插入数据,并组成JSON中,向MEMCACHED中插入数据,表示这个人,需要提示这个信息。

    插入的键值:

    HomeWork+Teacher+用户ID (表示是作业,并且接收者是教师)或者

    HomeWork+Student+用户ID(表示是作业,并且接收者是学生)

    4、学生提交作业

    JAVA端负责保存时,也要查询到这科作业需要向哪位教师提示,获取到教师的ID,向上面提到的数据表中插入数据,并向MEMCACHED中插入一条以HomeWork+用户ID为KEY值的字符串,提示教师,哪个学生上交了作业。

    5、后期扩展

    现在我们准备的这张数据表,完全 没有使用上,就是说现在是没用的,为什么我们要创建这样一张表呢?主要是防止如果MEMCACHED服务器重启了,再进来时,就没有了消息,而用户还没有消费到这个消息 的时候,会有消息 丢失,我们把数据保存到表中,如果一旦出现了这类问题,我们可以设计在TOMCAT启动时,使用一个SERVLET将数据表中没有被消费掉的记录再次放到MEMCACHED中。

    6、为什么我们不使用ACTIVEMQ?而是重复创建轮子呢?

    原因:1、我们现在系统中有心跳包的机制,而BLAZEDS的推机制从本质上讲也使用了轮询技术,但因没有使用NIO,所以并发量限制在100,不及商业软件LCDS的并发量1000,也就是说我们现在手里就有一把手术刀,没必要再为了去切一个东西再去买一把卷笔刀。贴近系统底层的SOCKET协议的效率是最高的,肯定要优于封装过的其它协议。

    2、处理ACTIVEMQ也需要学习成本,项目工期紧,能解决问题就是好方法。

  • 相关阅读:
    一致性哈希算法
    Discourse 的标签(Tag)只能是小写的原因
    JIRA 链接 bitbucket 提示错误 Invalid OAuth credentials
    JIRA 如何连接到云平台的 bitbucket
    Apache Druid 能够支持即席查询
    如何在 Discourse 中配置使用 GitHub 登录和创建用户
    Apache Druid 是什么
    Xshell 如何导入 PuTTYgen 生成的 key
    windows下配置Nginx支持php
    laravel连接数据库提示mysql_connect() :Connection refused...
  • 原文地址:https://www.cnblogs.com/littlehb/p/3055943.html
Copyright © 2011-2022 走看看