自己负责的模块
Posted zjh996
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自己负责的模块相关的知识,希望对你有一定的参考价值。
商品赠品互转的流程实现
-
定义商品赠品互转的数据模型,通常包括以下字段:
- 源商品ID
- 目标商品ID
- 转换条件(例如需要的商品数量和赠品数量)
- 转换时间段(例如开始时间和结束时间)
-
创建商品赠品互转的业务逻辑层,实现商品赠品互转的具体业务逻辑,例如根据用户选择的源商品ID和目标商品ID,查询对应的转换规则,并根据转换条件和转换时间段判断是否可以进行转换。
-
实现商品赠品互转的数据访问层,提供CRUD(创建、读取、更新、删除)操作,实现对转换规则的增删改查功能。
-
创建商品赠品互转的控制器层,提供RESTful API接口,用于接收用户的请求和返回响应数据。
-
实现商品赠品互转的前端界面,用于展示转换规则和操作转换。
-
对商品赠品互转功能进行测试和验证,确保功能的稳定性和安全性。
缓存
1.缓存穿透
当查询一个不存在的数据,缓存中是没有的,将会查询数据库,但是数据库也没有这个数据,并且没有把这次查询的null值存到缓存中,导致每次查询都会到数据层查询,失去了缓存的意义
风险:如果有人利用不存在的数据进行攻击,数据库瞬时压力增大,导致崩溃。
解决:null结果缓存,并加入短暂过期时间
2.缓存雪崩
设置缓存时key采用了相同的过期时间,导致在某一时间同时失效,请求全部到数据库,导致雪崩
解决:在原有的失效时间上增加一个时间随机值,这样每个缓存的过期时间重复率会降低。
3.缓存击穿
对一些设置了过期时间的key,如果此时的key被高频访问(为苹果手机的id),同时此key时间过期,那么所有的请求都会到数据库,导致数据库崩溃,称为缓存击穿
解决:加锁,大量并发只让一个去查,其他人等待,查到之后释放锁,存到缓存中,其他人获取锁,查到缓存中有数据,就不用到数据库中去查
购物车服务
订单服务
Java课程设计---贪吃蛇大作战
目录
一、团队课程设计博客链接
https://www.cnblogs.com/pikaaaqiu/p/12171064.html
二、个人负责模块和任务说明
1.负责实现闯关模式
2.负责实现挑战模式
3.串联GUI与信息代码
4.实现排行榜功能
三、自己的代码提交记录截图
四、自己负责模块或任务详细说明
这是挑战模式的时间线程
this.thread = new Thread(() -> { while (start) { if (count == 0) { break; } if (!pause) { count--; initText(); } try { Thread.sleep(SECOND); } catch (InterruptedException e) { e.printStackTrace(); } } count = 0; });
游戏面板的重绘方法覆写
public void paint(Graphics g) {
clearDraw(g);
if(ground != null&&snake!=null&&food!=null) {
ground.drawMe(g);
food.drawMe(g);
snake.drawMe(g);
}
if(snake!=null&& !snake.isLife()) {
recover(g);
}
}
启动游戏
public void newGame() { try { Thread.sleep(1000); } catch (InterruptedException ignored) { } ground.clear(); ground.generateRocks(); food.newFood(ground.getPoint()); buttonPanel.getMapLevLabel().setText(""); buttonPanel.getMapLevLabel().setText(""+ground.getMapType()); snake.setSleepTime(100); buttonPanel.setScore(0); buttonPanel.repaint();
}
游戏结束核算成绩的弹窗
public void calculate() { String s ="您的成绩为:最终关卡:"+ground.getMapType()+" 最终得分"+snake.getFoodCount(); SkipFrame2 skipFrame = new SkipFrame2(); skipFrame.getLabel().setBounds(100,50,600,40); int flag=information.compare1(ground.getMapType(), snake.getFoodCount()); skipFrame.getLabel().setText(s); if(flag>0) { skipFrame.successful(); skipFrame.visible(); skipFrame.getButton().addActionListener(e -> { String name=skipFrame.getNameText().getText(); skipFrame.shutdown(); information.addList1(flag, name, ground.getMapType(), snake.getFoodCount()); }); }else { skipFrame.visible(); skipFrame.getButton().addActionListener(e -> skipFrame.shutdown()); } }
五、课程设计感想
经过这次的课程设计,让我对多线程以及面向对象编程有了更加深刻的理解,并且感受到了团队合作的重要性,Java通常是要团队分工进行的,所以一些命名的规范,接口之类的就变得非常重要了,此次课程设计也让我对java编程有了更深一层的掌握,并且对游戏的创作有了一点了解。
以上是关于自己负责的模块的主要内容,如果未能解决你的问题,请参考以下文章