首页   注册   登录

yemenchun1

V2EX 第 71472 号会员,加入于 2014-08-20 20:38:25 +08:00
今日活跃度排名 15518
Year 3 Graduate Looking for a job.
yemenchun1 最近回复了
50 天前
回复了 andj4cn 创建的主题 服务器 Raft 算法相关
@andj4cn 反证的过程可以考虑:没有 committed entry 的 node 因为自己更 up to date 而成为 leader -> leader 会保留自己有的 entries 而删掉自己没有的 entries -> follower 的 committed 的 entry 因为 leader 没有而需要被删掉(!!!!) 那么这个 committed entry 他就不是个 committed entry。
50 天前
回复了 andj4cn 创建的主题 服务器 Raft 算法相关
@andj4cn 有了我在 6L 所说的这个基础,你再看下你的问题,就是说成功的 candidate 必须比 any other node 都更 up to date, 也就是说一个 entry 只要 committed 了,只要还有一个活着的 peer 有这个 entry,那么这个 candidate 就也得有这个 entry,否则他就没有比这个 peer 更 up to date (这里可以考虑下反证)。如果假设所有有这个 committed entry 的 peer 全死了,也就是说 > 1/2 的 peer 都死了,那么这个 candidate 就会得不到足够的投票。在前面两种情况下无论哪种,这个 candidate 都不能成为 leader。如果还有疑问,可以再继续讨论
50 天前
回复了 andj4cn 创建的主题 服务器 Raft 算法相关
@andj4cn 我刚刚又考虑了一下,我发现你有一个地方理解可能有所偏差,Raft 不会说哪个节点 up-to-date 了,而是说某一个节点比另一个节点更 up-to-date,就是说 more up to date than another node 或者说 at least as up to date as another node. 另外也不是说某一个 node 比另一个 node 更 up-to-date 就表示这个 node 有所有 committed entries, 而是说某一个 node 要比 any other node*都*更 up-to-date 才能表示这个 node 有所有 committed entries. 你看下我理解的你的理解和你实际的理解是不是相同?
50 天前
回复了 andj4cn 创建的主题 服务器 Raft 算法相关
@andj4cn 记住你会比较两个 term,第一个 term 是 node 本身的 term,如果这个 term 小了,会被直接拒绝 vote,被拒绝的 node 会 step back as follower。但是,尽管如此,如果这个 node 足够幸运,他还有机会在 update 了自己的 term 之后再次 request vote, 因为他已经把自己的 term 更新成别人比较高的 term 了,所以而后比较的将是第二个 term,即 last_log_entry 的 term,在这里才用到 up-to-date 的比较原则。你看你懂了没?
50 天前
回复了 andj4cn 创建的主题 服务器 Raft 算法相关
我之前说的不清楚,我丢失了一个“最后一个 entry ”,如果我重新说一遍这句话,我会这么说:`其他的包含当前节点没有的 committed 的 log, 那么这些其他节点就要么<最后一个 entry>的 term 比该节点<最后一个 entry>的 term 大,要么与该节点<最后一个 entry>同 term 但<log>比该节点 log 长`。原文:"Raft determines which of two logs is more up-to-date by comparing the index and term of the last entries in the logs. If the logs have last entries with different terms, then the log with the later term is more up-to-date. If the logs end with the same term, then whichever log is longer is more up to date"。你看现在你懂没懂?还没明白的话我再继续解释
51 天前
回复了 andj4cn 创建的主题 服务器 Raft 算法相关
因为假设某节点会 win the election 但是有一些 committed 的 log 它没有,那么根据 committed 的标准,一定会有等于一半总节点数的活着的节点含有了这个 committed 的 log。而因为这些节点有该节点没有的而且 committed 的 log, 那么这些其他节点就要么比该节点 term 大,要么与该节点同 term 但比该节点 log 长,因此则会比该节点更 up-to-date,从而导致有大于等于一半总节点数(有 committed log 的那些节点和失联的 leader 节点)的节点不给他 vote, 使其不能 win the election. 最后会是那些有更多 committed 的 log 的节点 win the election. 因此,win the election 的节点一定是含有所有 committed 的 log 的节点。不知道说的对不对,欢迎讨论。如果这回答写在知乎上,一定会有人说怎么又中英文混写了,不过会说这话的人估计也不会点进来这个问题,23333
237 天前
回复了 happydezhangning 创建的主题 问与答 关于神经网络训练不收敛的问题
weight 0.001 --> 0.00001
我是这样做的:
1. 我用 Jupyter Notebook 写我要调用的功能, 但实现功能的函数本身写在 py 文件里.
2. py 文件用 Jupyter Notebook 的前端文本编辑器编辑, 虽然可以, 但功能有限, 补全, 批量修改都用不了; 用 SSH 和 Vim 虽然也可以, 但是相比常用的 Pycharm, Sublime Text, 少了一些直观的感受. 所以我在 Linux 的机器上开了一个 samba 的服务, 共享 Linux 的文件夹, 再在路由器开端口映射, 最后用 MacBook 的 Finder 连接服务器的功能加载这个远程文件夹, 这样就可以用 MacBook 的 Sublime Text 或其它文本编辑器实时的编辑了.
3. py 文件每次修改了以后, 在 Jupyter Notebook 执行程序块, 但 Jupyter Notebook 导入的还是老的 py 文件, 需要添加一行%load_ext autoreload 和%autoreload 2, 这样只有写新函数的时候才需要重新执行 import 的代码块, 其余时候直接执行 py 文件修改过的函数所在的代码块就可以了.
4. Dropbox 不是不行, 而是做不到实时修改实时变化, 因为 dropbox 的同步需要一定时间, 而 samba 就完美解决了这个问题, 因为你改的代码是在远程机器上的.
5. 代码同步的问题, 你在远程 Linux 机器调好以后, 开启 Dropbox. 这也仅仅是起到备份的功能而已.
2018-09-21 19:38:18 +08:00
回复了 yidinghe 创建的主题 问与答 Java 面试题“变量名很长会不会影响执行效率”很难吗?
C 的话, C 语言连好头文件以后吗, 首先编译成汇编语言, 这里面应该是不会变变量名的, 而后汇编语言转换成二进制, 这里就没有变量名什么事儿了, 执行的时候就不会影响速度. 但是编译的时候大概可能会影响速度, 要看编译器的优化程度了, 据说 Intel 自己的编译器比较牛.
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   870 人在线   最高记录 5043   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.3 · 14ms · UTC 22:05 · PVG 06:05 · LAX 15:05 · JFK 18:05
♥ Do have faith in what you're doing.