# JavaMQ **Repository Path**: yzdaaa/JavaMQ ## Basic Information - **Project Name**: JavaMQ - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 102 - **Created**: 2018-11-28 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 赛题介绍 题目: <实现进程内消息队列> 开发语言:JAVA 相关知识点: JAVA编程, 多线程, IO 测评环境: 8核机器 16G内存 以正确性, 运行效率为排名标准 # 评测网站: 网址 http:xxx 后续通知 名字要求: 真实姓名(组号) # 代码提交方式 通过git提交, 我们在https://gitee.com/托管代码 代码框架: 你需要: 1 注册一个账号, fork这个项目, 作为你的git地址 2 在管理界面-项目成员管理-开发者-添加项目成员-邀请用户-直接添加, 添加一个开发者:yzd,个性域名为yzdaaa那个 3 在管理-项目设置-基本设置, 是否开源设置为私有的 4 然后在评测网站上设置git地址,然后点"提交评测"来提交(后续通知) # 时间安排 11.29-12.26(11周周四-15周周三) 比赛阶段 14、15周答辩汇报,16周期末复习 13周 12月13日周四会讲解一些常见问题和优化思路,并上线一道附加赛题,给学有余力同学额外比赛,12.26截至 14周 12月19日周三晚上22:00 第一阶段截止排名 选择后50%的组在20号周四的汇报 15周 12月26日周三晚上22:00 第二阶段截止排名 前50%的组在27号进行汇报+附加题汇报 # 汇报内容 10分钟左右,不用介绍赛题背景,以碰到的问题,解决的思路等为主,尽可能详细,可以讨论商量,但严禁抄袭,(提交次数少,成绩特别好,答辩内容一带而过,问题回答不上等),后果会很严重。 # 阶段任务 13周 12月13日22:00前,熟悉git和码云网站,阅读demo代码,至少有一次提交记录(成功失败都算),否则会被扣分。 14周 12月20日22:00前,至少有一次成功提交的记录,否则会被扣分。(当天已有一半同学结束汇报) # 评分标准: 个人成绩按最终排名成绩计算(基准) 每个阶段必须执行完对应任务,否则会有相应扣分 给分都会比较高,即使排名靠后的,但汇报展示出你们的工作量和收获,会比发现抄袭的好得多 最终得分标准=小组最好成绩+PPT汇报+答辩问答情况+阶段任务完成情况+附加题 # 赛题背景 见ppt # 编程目标 你的coding目标是实现以下接口: Producer的createBytesMessageToTopic(topic, body) 创建一个消息, 指定Topic Producer的send(message) 发送消息 Producer的flush(), 发送结束时会调用一次 Consumer的attachQueue(queue, topics) 为Queue绑定Topics Consumer的poll() 拉消息 # 评测逻辑: 1 git clone下载代码 2 push阶段: 四个线程同时push消息 3 kill程序,清理页面缓存 4 pull阶段: 四个线程同时pull消息 5 以push和pull的总时间作为排名依据 push和pull都有时间限制 # 代码结构 ## pku包下面是你要用到的的类: 核心包括: Producer Consume KeyValue ByteMessage MessageHeader 我们的评测程序只需要这5个类就能工作 DefaultKeyValue和DefaultMessage是默认的key-value和message实现, 你完全可以自己自己的版本 ## 此版本是一个内存实现的消息队列 为了方便大家理解题目, 为大家实现了一个内存存储的消息队列 DemoConsumer: 继承Consumer DemoProducer: 继承Producer DemoMessageStore: 消息队列的内存存储实现 DemoTester: 一个测评程序, 里面会开启多个线程进行push与pull, 通过这个类你可以了解到测评程序的运行逻辑