首页   注册   登录
 wuzhizuiguo 最近的时间轴更新
wuzhizuiguo

wuzhizuiguo

V2EX 第 362887 号会员,加入于 2018-11-13 18:04:52 +08:00
今日活跃度排名 22547
wuzhizuiguo 最近回复了
2 天前
回复了 extra888 创建的主题 分享创造 写了个小程序——鲸图君
很好.
注意,txt 文件名, 和 txt 实际内容是否一致. 我原以为是一致的,但是认证失败. 可以去 nginx 的 error.log(access.log)里去看微信请求的路径,然后对应去复制粘贴. centos7 的是 /var/log/nginx/error.log 里.
当然还可以直接在微信里,或者楼上 "xmumiffy "提到的 http://urlsec.qq.com/complain.html 直接申诉. 我两个都试过, 当然是直接放 txt 快一些.(只要路径对了)
10 天前
回复了 shijingshijing 创建的主题 互联网 抖音日活过 4 亿了
抖音挺好的, 只要别在公共场合外放. 里面的自然风景,饭菜, 英雄联盟, 还有电影推荐.
行, 其实是里面的腿,柰子,腰都很不错... 这种擦边球,很不错
24 天前
回复了 tubimasky 创建的主题 问与答 生成机构树 除了递归还有别的方法吗
@aguesuka 谢谢.是的,我把 Node 类放到外面单独建了, 返回 id 为 2 的菜单 用它的 children 这个方法好.谢谢!
25 天前
回复了 tubimasky 创建的主题 问与答 生成机构树 除了递归还有别的方法吗
@aguesuka 是的,可以改一点. 在你的基础上改了下,去掉了 parent. 传了个 parentId 和 ID 的判断相等的 Function. 对泛型类的比较该怎么实现不懂(怎么取参数,怎么判断大小) , 还有就是 Node::new 是什么意思, 调用 Node 的默认构造方法吗? 还是非默认的 Node(E data)?
下面这个是自己改了老半天的, 可能还是有错误, 请路过的谨慎使用... (compare 是判断是否和 pid 的值相等)


public static <E,ID> List<Node<E>> buildTree(Collection<E> elements, Function<E,ID> getID, Function<E,ID> getParentID,
ID pid, Function<E,Boolean> compare){
Map<ID,Node<E>> idNodeMap = elements.stream().collect(Collectors.toMap(getID,Node::new));
//传进来的集合可能没有包含父类 /最顶级父类
Node<E> root = null;
//返回的列表
List<Node<E>> nodes = new ArrayList<>();
for (E element : elements){
ID selfId = getID.apply(element);
ID parentId = getParentID.apply(element);
Node<E> selfNode = idNodeMap.get(selfId);
//如果这个集合里 有元素有对应的父节点
if (idNodeMap.containsKey(parentId)){
Node<E> parentNode = idNodeMap.get(parentId);
// selfNode.setParent(parentNode); //取消设置父节点,不然看起来很庞大
parentNode.getChildren().add(selfNode);
//如果设置了父节点 pid,而且该节点的父节点也是设置的值 pid
if (pid!=null &&compare.apply(element) && !nodes.contains(selfNode)){
nodes.add(selfNode);
}
}else {
root = selfNode;
//如果设置了父节点 pid,而且该节点的父节点也是设置的值 pid
if (pid!=null &&compare.apply(element) && !nodes.contains(selfNode)){
nodes.add(root);
}

}
}
return nodes;
}


public class Node<E> {
E data;
Set<Node<E>> children;
Node<E> parent;

public Node(E data) {
this.data = data;
children = new HashSet<>();
}

public E getData() {
return data;
}

public void setData(E data) {
this.data = data;
}

public Set<Node<E>> getChildren() {
return children;
}

public void setChildren(Set<Node<E>> children) {
this.children = children;
}

public Node<E> getParent() {
return parent;
}

public void setParent(Node<E> parent) {
this.parent = parent;
}
}

具体调用
List<MenuVO> menuVOList =... 从数据库查出来的结果列表
// 去父节点 pid 为 2 的, 获取该菜单下所有的栏目,
Collection<Node<MenuVO>> nodes = buildTree(menuVOList,e->e.getId(),e->e.getPid(),2,e->e.getPid().intValue() ==2 );
25 天前
回复了 tubimasky 创建的主题 问与答 生成机构树 除了递归还有别的方法吗
@aguesuka 谢谢, 有效,可以直接生成分类数,不过直接返回 root 太长,每个 chidren 里的 parent 都会显示出来,用 @JSONField(serialize = false )返回可以去掉, 不过感觉不太美观(是个 json 字符串,), 如果没有最高的父节点时,会报 root node more than one. 还有答主的 buildTree 方法,感觉很强,第一次看到这种写法, 唉,要学的还有好多啊.
页面优美. 楼主 能讲讲怎么学前端的吗? 也想做个小程序,但是前端的 css 就难住了.
32 天前
回复了 granpa 创建的主题 分享创造 弄咯一个微信小程序 ,看看可以用嘛
楼主这个网易的评论是寻找好的评论存在自己数据库的吗?还是点击了去获取网易云音乐那边获取热评.
已经确认可以按照过期时间发送邮件. 用的是普通前端提交参数(假设,我不会前端, 用的 postman),后台 mysql 储存信息, 同时写入 redis 的 hash 表和 zset 中,设置 score 值为过期时间.接着 spring boot 启动一个定时器,@Scheduled, 设置为上一次结束到到上一次任务开始为 1 秒间隔. 在其中读取 zset 中 0~当前时间的元素(邮件 id), 再去 hash 中找到对应邮件 id 的邮件具体信息,然后删除对应的记录, 接着直接写入消息队列,然后从消息队列里出来, RPC 调用邮件发送接口, 这个地方如果量大了,可以用线程池来 RPC 调用,因为之前其他地方出现过 Hystrix 默认的线程数错误问题.
感谢各位大佬的热心解答,谢谢.
@star7th 好的,谢谢,就是看到了答主的时光树洞.
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1197 人在线   最高记录 5168   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 13ms · UTC 18:55 · PVG 02:55 · LAX 10:55 · JFK 13:55
♥ Do have faith in what you're doing.