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也需要学习成本,项目工期紧,能解决问题就是好方法。

转载于:https://www.cnblogs.com/littlehb/archive/2013/05/03/3055943.html

作业自动提示功能设计思路相关推荐

  1. python自动答题软件_广东开放大学(广开)线上作业自动答题python-selenium

    今天分享一个自己实现广开线上作业自动答题的思路,使用的是python的第三方库selenium,我是python初学者,因为自己写的代码比较杂乱多,所以代码仅供参考. 准备: 1.下载浏览器驱动,我的 ...

  2. [原创]Flex文本框自动提示(AutoSuggest)、自动完成(AutoComplete)

    做一个小程序要用到Flex文本框自动提示的功能,因为时间不是很紧,所以决定自己动手做这个小组件,花了一个晚上的时间终于完成了.贴出来与大家分享一下. 虽然网上有不少这样的组件,但自己动手做可以锻炼下思 ...

  3. 机器学习课堂笔记-作业二基本实现思路

    机器学习课堂笔记-作业二基本实现思路 作业2-年收入判断 项目描述 数据集介绍 项目要求 数据准备 环境配置/安装 事先说明 一.概率生成模型 1. 读取数据 整理训练数据 2. 协方差矩阵计算 手动 ...

  4. java 输入提示_Java实现输入自动提示与补全功能

    一. 场景与目标 在使用 IDE 开发软件时, IDE 会提供一种"智能提示", 根据所输入的字符列出可能的词组: 在日常Web开发中,根据用户输入进行自动提示和补全,也能很好地改 ...

  5. PHP如何更好的利用PHPstorm的自动提示

    说明 写了一段时间的java之后,特别不习惯PHP本身的弱类型方式,在写代码的时候总觉得不怎么放心,特别本身PHP又是弱类型的语言,所以在编码的时候,很多时候是没有代码提示的. 一个一般例子 clas ...

  6. java培训教程分享:Java编写软件代码自动提示功能

    本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能,很多零基础和初学java的同学们对这一块还不是很了解,Eclipse for android 实现代码自动提示智能提示功能 ...

  7. idel 智能提示_intellij idea设置代码自动提示快捷键的详细方法.

    一些用户们在使用intellij idea的时候,不是很熟悉其中是怎么设置代码自动提示快捷键?今日这篇文章就带来了intellij idea设置代码自动提示快捷键的详细方法. intellij ide ...

  8. eclipse hibernate配置文件(*.hbm.xml)加上自动提示功能

    转自:https://blog.csdn.net/u012217085/article/details/17397843?utm_source=blogkpcl3 1. 标签:hibernate 在编 ...

  9. Eclipse 代码自动提示的设置

    1. eclipse代码自动提示设置.如何配置eclipse的代码自动提示功能(同时解决自动补全变量名的问题)? 2. http://www.iteye.com/topic/1120919 [C++] ...

最新文章

  1. 敏捷个人俱乐部2012年2月线下活动:活出我的最好生活
  2. linux/unix lsof用法
  3. 用户id可以出现在url中吗_下载Google Drive中的文件
  4. 使用myeclipse建立maven项目(重要)
  5. 看图了解RocksDB
  6. Linux ftp传送问题 WARNING! 258831 bare linefeeds received in ASCII mode
  7. 图像处理中各种边缘检测的微分算子简单比较(Sobel,Robert, Prewitt,Laplacian,Canny) 【转】
  8. form表单提交按钮点击事件先触发还是提交数据先触发_如何实现图片上传并保存到数据库?...
  9. 基于matlab的二元幅值光栅设计程序
  10. python 面向对象 烤地瓜实例
  11. 不敢相信!那些真实存在的机器人女友们!
  12. Qt ‘tr‘ was not declared in this scop
  13. GitHub Desktop安装与使用教程
  14. 无机光致变色化合物-过渡金属氧化物WO3/MoO3/TiO2
  15. 使用带有 Moveit 的深度相机来避免碰撞
  16. 计算机实验word,实验六计算机基础——word段落设置
  17. 快手视频艾特实操教学分享,什么是艾特脚本,评论区艾特引流脚本讲解!
  18. commonjs 和esm
  19. S-属性定义与L-属性定义
  20. CAD2020下载AutoCAD2020下载安装教程AutoCAD2020中文下载安装方法

热门文章

  1. [react] 为什么建议setState的第一个参数是callback而不是一个对象呢?
  2. 前端学习(3268):js中this在类中的表现
  3. [css] css的负边距有哪些应用场景?
  4. [vue-element] ElementUI是怎么做表单验证的?在循环里对每个input验证怎么做呢?
  5. 前端学习(1834):前端面试题之从url里面输入网址
  6. Java面试题17 牛客 下面哪个选项正确创建socket连接?
  7. 第十九期:HTTPS虐我千百遍,我却待她如初恋!
  8. 玩转oracle 11g(48):oracle命令窗口执行sql语句
  9. java学习(74):GUL面板
  10. Linux 普通用户和超级用户的切换