-
用户名自动完成算法
2016-03-29 13:58@flhuoshan 最终改进如下:
public List<JSONObject> getUserNamesByPrefix(final String namePrefix) { final JSONObject nameToSearch = new JSONObject(); nameToSearch.put(UserExt.USER_T_NAME_LOWER_CASE, namePrefix.toLowerCase()); int index = Collections.binarySearch(userNames, nameToSearch, new Comparator<JSONObject>() { @Override public int compare(final JSONObject u1, final JSONObject u2) { String u1Name = u1.optString(UserExt.USER_T_NAME_LOWER_CASE); final String inputName = u2.optString(UserExt.USER_T_NAME_LOWER_CASE); if (u1Name.length() < inputName.length()) { return u1Name.compareTo(inputName); } u1Name = u1Name.substring(0, inputName.length()); return u1Name.compareTo(inputName); } }); final List<JSONObject> ret = new ArrayList<JSONObject>(); if (index < 0) { return ret; } int start = index; int end = index; while (start > -1 && userNames.get(start).optString(UserExt.USER_T_NAME_LOWER_CASE).startsWith(namePrefix.toLowerCase())) { start--; } start++; if (start < index - 5) { end = start + 5; } else { while (end < userNames.size() && end < index + 5 && userNames.get(end).optString(UserExt.USER_T_NAME_LOWER_CASE).startsWith(namePrefix.toLowerCase())) { end++; } } return userNames.subList(start, end); }
二分命中 index 后再向前、向后扩大。
-
关于评论排序的解决方案
2016-03-28 18:03我感觉用户使用实时模式的动机有三点:
- 帖子很热,有人正在评论,想凑个热闹(不管以前的评论内容)
- 看完了以前的评论,想跟上最新的
- 贴主自己方便查看,不用刷新页面
-
基于 Web 的 Go 语言 IDE - Wide 1.4.0 发布!
2016-03-28 17:43用了一个第三方库做文件系统监控,发生改变的时候会收到通知,然后把这个通知通过 [WebSocket] 推送到前端。
-
关于评论排序的解决方案
2016-03-28 17:41分第几次这个感觉不大好,容易造成困扰。
我想的是综合 [1459147603598] 里面的方案:
- 用户配置默认的浏览模式
- 帖子里加入你提的切换按钮
-
社区的评论模块排布讨论
2016-03-28 16:11@Angonger 所有浏览者可以收到一个评论 id,这个时候可以用这个评论 id 发一个请求,然后后端根据这个请求来清除未读。这个场景倒是没有问题,有问题的是刚进入这个帖子的时候如何清除