第02组 每周小结 (1/3)
第 02 组 每周小结 (1/3)
基本情况
冲刺情况汇报
过去一周完成了哪些任务?文字/口头描述
前端:
- 修复喜欢标签/忌口标签/菜品/筛选/窗口页面 android 手机样式错误
- 首页食堂拥挤上划刷新
- 部分样式修改
后端
-
做 oos 触发器,设置定时带宽升级
-
修复[窗口星级]的 bug
-
修复[热门模块]后台崩溃的 bug
-
修复部分窗口收藏无法取消的问题
-
修复[管理员模块]相关持久层删除级联的问题(添加触发器)
-
尽可能地美化[管理员模块]的 UI
展示 GitHub 当日代码/文档签入记录
前端
后端
做了哪些优化和迭代
前端
- 修复喜欢标签/忌口标签/菜品/筛选页面 android 手机样式错误
- 首页食堂拥挤上划刷新
- 部分样式修改
后端
-
做 oos 触发器,设置定时带宽升级,做网络 IO 的优化
-
热门排序算法的更新
-
更改管理员相关持久层的级联删除
-
优化[管理员模块]的页面
通过自动化测试测出的 bug(如没有可不填)
解决了哪些 Bug,又是如何解决的(需要写详细)
前端
android 端小程序多个页面的 flex 布局错误,子组件会撑开父组件已经设为"flex: 1 1 0;"的父组件,是 android 端小程序渲染使用了微信自己的浏览器引擎 x5 导致的,然后给父组件设定了 maxHeight 就解决了.
后端
- 修复[窗口星级]的 bug
这个 bug 是在进入窗口页面时,星级非常大,我们满的明明就是 5,但竟然出现了大于 20 的情况,后来发现是方法调用错误,持久层注入后,调用的是计算窗口标签总数,而并非星级计算
原来版本
windowEntry.setStar((double) dishTagMapper.countTagNumByWindowId(windowId));
修改后
windowEntry.setStar(dishCommentMapper.getAvgStarsByWindowId(windowId));
这是粗心大意造成的
- 修复[热门模块]后台崩溃的 bug
之前并不觉得热门的排序会出现什么问题,因为也确实正常运行了,但随着数据量的增大,在没有改动代码的情况下,热门崩溃了!查了一下后台日志,是因为报了这个错:
java.lang.IllegalArgumentException: Comparison method violates its general contract
后来经过一番研究和学习,发现是因为我们 sort()的比较器写的有问题,出现了 ab,bc,但是 a<c 的情况,这非常致命,TimSort 就不知道要怎么排序。想到我们比较时候用的是 double 数据类型,存在精度问题,在把 double 换成 BigDecimal 定点数之后,问题就迎刃而解了
- 修复部分窗口收藏无法取消的问题
由用户反馈桃李园餐厅的收藏无法取消,我们就马上进行了修改
原来版本(updateMarkedWindow()方法中的部分代码片段)
for(Window window : windowList){
if(window.getWindowId()==windowId){
userMapper.removeMarkWindow(userId,windowId);
flag = 0;
break;
}
}
修改后
for (Window window : windowList) {
if (window.getWindowId().equals(windowId)) {
userMapper.removeMarkWindow(userId, windowId);
flag = 0;
break;
}
}
由于我们的 windowId 字段用的是 Integer,是一个对象类型,就可能会存在问题,应该要用 jdk 提供的 equals()方法,而非直接进行等值比较,尽管有拆箱装箱机制,也万万不可把对象拿来做等值比较,很可能比的是地址,而非对象的值,这是致命问题
- 修复[管理员模块]相关持久层删除级联的问题(添加触发器)
create trigger delete_dish before delete on dish
for each row
begin
delete from dish_stars where dish_stars.dish_id = OLD.dish_id;
delete from dish_comment where dish_comment.dish_id = OLD.dish_id;
delete from dish_tag where dish_tag.dish_id = OLD.dish_id;
delete from dish_stars where dish_stars.dish_id = OLD.dish_id;
delete from user_like_dish where user_like_dish.dish_id = OLD.dish_id;
end;
create trigger delete_window before delete on window
for each row
begin
delete from window_stars where window_stars.window_id = OLD.window_id;
delete from dish where dish.window_id = OLD.window_id;
end;
接下来的计划还剩下哪些任务?
前端
后端
-
做标签的优化排序
-
做食堂拥挤程度的可视化
-
做安全相关的事项
遇到了哪些困难?
目前最大的困难可能是在 IO 方面的,后端程序的 IO 做的不是很好,加之带宽也不给力,就存在一些速度问题,导致用户体验不佳
团队有哪些收获和疑问?
收获:得到了很多 debug 能力
疑问:自动化测试整不明白
成果展示
展示组内最新成果
修改了显示一条线的 bug
优化了界面上下移动的问题
修正了标签显示 bug
新增餐厅人数刷新
展示本周自动化测试的结果
由于微信小程序单元化测试比较麻烦,我们采取了 autojs+人工测试的办法,通过不停的点击按钮,跳转页面测试我们小程序的稳定性。现在测试出来的 bug 已在上面给过了。
展示自动化持续集成(加分项,对应自动化测试)
无