On the way

基于生成树的选举算法

论文:An optimal distributed algorithm for failure-driven leader election in bounded-degree networks 算法分为两个步骤: 1) 检测到当前leader故障的节点开始选举,以当前发起选举的节点作为根节点,发送广播消息,最终到达叶子节点,然后从叶子节点开始发送回复,在回复的过程中收集最大权重的节点,最...

Mac 查看java编译后的汇编代码

测试以下代码 // Test.java public class Test { volatile int sum = 0; public static void main(String[] args) { } } 命令行参数的说明:HotSpot/PrintAssembly PrintAssembly 就是 “打印汇编”,开启 PrintAssembly 需要...

java消息中间件

https://www.imooc.com/video/15215 消息中间件的好处 解耦 异步 缓冲 横向扩展:可以同时启动多个客户端来读取消息队列 安全可靠:消息中间件会保存消息队列 顺序保证:比如Kafka 概述 中间件: 将具体业务和底层逻辑解耦的组件。 消息中间件:关注数据的发送和接收。 JMS:Java消息服务(Java Messa...

C++ 输出时精度控制

问题 problem A 在输出的时候没有控制精度, 直接 cout 的话 double 默认保留6位有效数字, 结果 Incorrect 可以设置精度如下: double a = 1.123456789; // 保留10位有效数字 cout << setprecision(10); cout << a << endl; // 也可以这样写 cout ...

C++ 自定义的比较函数

刷题的时候经常需要自定义一些比较函数来排序,这里总结一下。 map vector set priority_queue

Targan算法求割边、割点

https://hihocoder.com/problemset/problem/1183 割边:在连通图中,删除了连通图的某条边后,图不再连通。这样的边被称为割边,也叫做桥。 割点:在连通图中,删除了连通图的某个点以及与这个点相连的边后,图不再连通。这样的点被称为割点。 DFS搜索树:用DFS对图进行遍历时,按照遍历次序的不同,我们可以得到一棵DFS搜索树。 以hihocoder 1...

远程调用-《分布式系统概念与设计》

分布式系统中两个主要的远成方法调用: 远程过程调用(RPC) 远程方法调用(RMI) 注意此处的RMI指普通情形中的远程方法调用,不应该与远程方法调用的某些特例(如Java RMI)混淆。 请求应答协议 远程过程调用 接口定义语言(IDL) 调用语义 幂等操作:反复执行的结果与只执行一次的结果一样。

Mac crontab创建定时任务

通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。 文件格式 分 时 日 月 星期 要运行的命令 第1列分钟0~59 第2列小时0~23(0表示子夜) 第3列日1~31 第4列月1~12 第5列星期0~7(...

取模 10^9+7

算法题中通常会要求对 10^9+7 取模,来避免整数溢出的问题。其中10^9+7是一个比较大的质数。 原因如下: 为什么要取模?数据比较大时,避免整数溢出。 为什么要是质数?能够保证散列后的数尽量随机均匀分布。->延伸问题:散列函数取模为啥用质数?可以尽量避免冲突? ..没找到合适的答案。 参考: https://www.zhihu.com/question/20806...

C/C++ long和long long的区别

C/C++ 里有long和long long。区别如下: 64bit机器上,long和long long都是8byte,32bit机器上,long是4byte,long long是8byte。 所以一般情况下写long就可以了,毕竟现在基本没有32bit的机子了。 sizeof(char) == 1 sizeof(char) <= sizeof(short) <= siz...