java消息机制,观察者模式问题

做一个教务管理的系统,教务人员发布了一条消息,把它存入到数据库中,然后学生打开教务管理的页面时候,系统会提醒有一条未读的教务信息,这个功能得怎么实现。

如果有很多个学生,那不是得有很多个表来保持学生是否有读取过这条消息?这个提醒的功能怎么设计,数据库怎么设计才合理,小白求解。

4个回答

一张表就可以,这张表有四个字段,一个是主键id ,一个是接收消息的学生id,一个是消息内容,一个是消息状态
管理者发送消息后将这三个字段存入数据库,消息状态初始为0.
当学生登录系统,根据学生id及状态为0的条件查询出未读消息个数,可在页面上显示,学生读过消息可点击标记为已读,然后去数据库修改这条状态,改为1即可

直接数据库表中对学生有一个字段表明是否已读这条消息。这样每个学生请求的时候,根据数据库数据返回

简单点的办法就是:
使用一个表,一个消息发送多少个学生,就弄多行记录,每行记录记录对应的学生的id信息,是否读过这条消息弄个flag标志位就行了,后面的逻辑就
根据这个flag来操作。
或者使用2张表,一个消息表,一个消息个学生关联表,关联表存一些对应的状态信息,后面关联查询。

    后面数据量大的话,查询慢的话,可以使用一些内存来缓存数据或者其他消息系统。。。

个人是这样理解的,你这个有点儿像微信朋友圈点赞的,每个人点进来都会看到自己有没有点赞对吧。所以我觉得有三张表,学生表,消息表,消息学生
映射表,这个映射表里面包含消息Id和学生Id,如果学生读了这条消息,就在这张表里面插入一条记录,然后学生登录的时候,根据学生id和消息id去判断
这张表查一下,有记录,表示学生读过了,没有记录则表示没有读

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java消息机制
最近学习java消息相关的内容,整理了下学习内容: 1、问: 什么是 Java 消息服务? 答: Java 消息服务(Java Message Service,JMS) API 是一个用于访问企业消息传递系统的 API。是 Java 2 Platform, Enterprise(J2EE)的一部分。 2、目前流行的消息传送产品有哪些? 答:目前流行的有ActiveMQ、IBM WebSph...
Java的消息机制
最近重新复习一下Android基本的知识点,增加强概念性了解,以及梳理平常使用最多的Android消息处理机制(Handler、Looper、MessageQueue、Message) Android与操作系统Windows一样都是由消息驱动,而Android中实现消息驱动的要素由四点: 1、消息的格式:Message。消息结构体。包含next,next是一个Message实例,可以看出Mes...
观察者模式及如何通过消息机制(观察者模式)实现模块间解耦
1、讲一下什么是观察者模式 什么是观察者模式呢,观察者模式又叫做订阅发布模式,类似这样的例子生活里随处可见,比如公众号,比如微博关注的功能,这都是订阅发布模式,我们对一个公众号感兴趣,就会去关注一个公众号,这个公众号有了什么新的文章,新的内容,就会推送给所有关注了这个公众号的微信号,如果某一天我们对这个公众号不再感兴趣,我们就可以取消对它的关注,后面这个公众号再有什么新的内容,也不会再推送给我们...
java的消息机制
首先解释一下 java消息服务JMS(Java Message Service) 简介: Java 消息服务(Java Message Service,JMS)应用程序接口是一个Java 平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 API。 Java 消息服务的规范包括两种消息模式,
java 消息机制
在java消息机制中rnA 给B发消息,a发送到服务器上,服务器判断b是否在线如果在线就把消息推给b去,rnb怎么接收这个消息,而不是在client才取轮询,rnb怎么去接收服务器发来东西呢???
java观察者模式观察者模式
java观察者模式观察者模式java观察者模式观察者模式java观察者模式观察者模式
接口回调,观察者模式,消息机制3者的区别
接口回调,就是当你要执行一个操作的时候,为了解耦或者组件间的通信,不想在这执行,想在另一处地方执行,所以这个时候就可以创建一个接口,再调用他的方法,而这个接口是在另一个类中声明的,只需要把这个接口传给原来的那个类即可。 所以接口回调简单来说是别处执行代码。 可是消息机制也是别处执行代码啊?实际上,消息机制本质上也是用了接口回调,但是他可以有弄出来一个队列,里面可以每一个队列中的
java观察者模式实现问题
import java.util.* ;rnclass House extends Observablern private float price ;rn public House(float price)rn this.price = price ;rn rn rn public void setPrice(float price)rn rn this.price = price ;rn super.setChanged();rn super.notifyObservers(price) ;rn rn rnclass HousePriceObserver implements Observerrn private String name ;rn public HousePriceObserver(String name)rn this.name = name ;rn rn public void update(Observable o,Object arg)rn if(arg instanceof Float)rn rn System.out.println(this.name +"观察到价格更改为:") ;rn System.out.println(((Float)arg).floatValue()) ;rn rn rn rnrnpublic class ObserDemo01rn public static void main(String args[])rn House h = new House(1000000) ;rn HousePriceObserver hpo1 = new HousePriceObserver("购房者A") ;rn HousePriceObserver hpo2 = new HousePriceObserver("购房者B") ;rn HousePriceObserver hpo3= new HousePriceObserver("购房者C") ;rn h.addObserver(hpo1) ;rn h.addObserver(hpo2) ;rn h.addObserver(hpo3) ;rn h.setPrice(666666) ;rn rnrn上面的程序是一个观察者模式的实现形式,House是观察对象,HousePriceObserver是观察者,这儿运行rn输出的结果是:rn 购房者C观察到价格更改为:rn 666666.0rn 购房者B观察到价格更改为:rn 666666.0rn 购房者A观察到价格更改为:rn 666666.0rn这儿是C先被通知,但是查看java源码时,观察者 hpo1 hpo2 hpo3按顺序加入到Vector向量中,通知rn更新即调用update(Observable o,Object arg)方法时,也是按顺序取向量中的观察者对象,然后观察rn者对象调用update()方法,应该先是购房者A观察到价格更改,这儿怎么是C先??rnrn
java 观察者模式
观察者模式的作用:                  主要用于1:N的通知,当目标对象状态发生改变时, 它需要通知一系列的观察者对象,让观察者对象的状态也发生改变。   //抽象观察者,定义一个改变自身状态的接口,具体观察者实现该接口,目标对象对具体观察者通知,就是通过该接口。 public interface Observer { //改变状态的方法 void upda...
JAVA观察者模式
JAVA观察者模式 通过本文将学习到 1、前言 2、观察者的概念 3、观察者的UM 4、观察者的实现 5、观察者的优缺点及使用场景 6、总结   1、前言 观察者模式可是大名鼎鼎,也许只听观察者不太清楚这是啥啊?但是说一手MVC肯定有人懂。MODEL-VIEW-CONTROLLER。我真的是打死不会忘记,面试的时候特别喜欢问。在软件中对象并不是单独存在的,一个对象的行为发生...
java观察者模式
案例: 定义被观察者 /** * @author Gjing * 抽象被观察者 **/ abstract class AbstractSubject { /** * 观察者对象的集合 */ private List<Listener> listenerList = new ArrayList<>(); /** ...
Java 观察者模式
观察者模式:让你的对象知悉现况 出版者+订阅者=观察者模式 观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时, 它的所有依赖者都会收到通知并自动更新。 关于观察者的一切,主题只知道观察者实现了某个接口。 主题不需要知道观察者的具体类是谁、做了些什么或其他任何细节。 实现气象站: 主题接口: public interface Subject { public voi...
java之观察者模式
观察者模式就是发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。 结构图 以公众号推送消息为例: //抽象观察者 //定义了一个update()方法,当被观察者调用notifyObservers()方法时,观察者的update()方法会被回调。 interface IObserver{ void update(String msg); } //观察者:实...
Java之观察者模式
引子 还记得警匪片上,匪徒们是怎么配合实施犯罪的吗?一个团伙在进行行动的时候,总    有一两个人在门口把风——如果有什么风吹草动,则会立即通知里面的同伙紧急撤退。也许放风的人并不一定认识里面的每一个同伙;而在里面也许有新来的小弟不认识这个放风的。但是这没什么,这个影响不了他们之间的通讯,因为他们之间有早已商定好的暗号。 呵呵,上面提到的放风者、偷窃者之间的关系就是观察者模...
Java 观察者模式
利用气象站监测的例子详细介绍观察者模式的使用方法,具体介绍观察者模式的所适应的场景情况
Java观察者模式
观察者模式定义了一个一对多的依赖关系,让一个或多个观察者对象监察一个主题对象。这样一个主题对象在状态上的变化能够通知所有的依赖于此对象的那些观察者对象,使这些观察者对象能够自动更新。
Java的观察者模式
Java的观察者模式,帮助大家学习设计模式,很简单的例子哈!
java的观察者模式
Java里面的观察者模式,是一个非常经典的模式,经常在开发中被用到,掌握了这个思想,我相信对于一些开发,受益是匪浅的;鄙人也是觉得比较不错,所以发表一点自己的总结,如果对还处于迷茫的你有稍微的帮助的话,鄙人很高兴;下面就让我们共同的理解一下:一、需求:  在开发的过程中我们会遇到比较实际额问题就是比如一个事物某种状态发生了改变,想让其他关心它的事物知道,而不是,其他的事物一直看着它,那么就可以抽出一
JAVA 观察者模式
观察者模式(Observer/Observable)又常常被称为发布-订阅 (Publish/Subscribe) 模式、源-监听器(Source/Listener) 模式,它旨在实现这样一个目标,当 Observable 发生某种变化时,将这种变化通知给一个或多个 Observable ,使得 Observable 可以监测到其变化,并进行相应的操作。例如在 Web 项目中,我们常常使用 Lis
消息机制的问题
我想处理在一个编辑框内的鼠标左键按下事件,于是在一个MFC对话框应用程序中,我继承CEdit生成新的CEditEx,重载了其中的WindowProc,重载的代码如下:rnLRESULT CEditEx::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) rnrn // TODO: Add your specialized code here and/or call the base classrn if (message == WM_LBUTTONDOWN)rn AfxMessageBox("LButtonDown");rnrn return CEdit::WindowProc(message, wParam, lParam);rnrn 然后在对话框的初始化成员函数中生成了CEditEx的一个对象。程序运行的时候,当我在编辑框中按下左键时,弹出了我所需要的消息框,可此后,无论我在计算机屏幕上的任何位置(而不是在编辑框内)按下鼠标左键时,却都会弹出这个消息框,这是什么原因呢,该如何解决?
【Java】观察者模式
本文是《【C++】观察者模式》(点击打开链接)的Java实现,关于什么是观察者模式这里就不将了,只是从类图为视觉重新审视这条2014年上半年的软件设计师的软考题。 题目是这样的: 某实验室欲建立一个实验室的环境监测系统,能够显示实验室的温度、湿度以及洁净度等环境数据,当获取到最新的环境测量数据时,显示的环境数据能够更新,现在采用观察者(Observer)模式来开发该系统,观察者模式的类图如
相关热词 c# 线程结束时执行 c# kb mb 图片 c# 替换第几位字符 c#项目决定成败 c# 与matlab c# xml缩进 c#传感器基础 c#操作wps c# md5使用方法 c# 引用父窗口的组件