ASList

聊聊Election Algorithms

流过昼夜 提交于 2019-12-01 03:40:26
序 本文主要研究一下Election Algorithms Election Algorithms Election Algorithms大致有两类,一类是Garcia-Molina提出的Bully Election,一类是Chang & Roberts's Token Ring Election algorithm;对于大多数的election algorithms通常有如下几个假定: 完整的topology,信息可以在topology的nodes之间传递 每个node有唯一的id,而且对整个topology其他node可见 所有的通信网络是可靠的,只允许node fail,要求消息不丢失,不重复,不损坏 要求已经有fail detector机制来处理node fail的情况 Bully Election 当有node检测到leader fail之后,就发送election request给其他node,election request中带上自己的id 当node接收到election request时判断如果自己的id大于request中的id,则可以"bully"覆盖request中的id,如果小于则不改动,然后发送election request给其他node;当有node接收到election request的id是自己的node id时,则表明自己是leader

《Java开发手册》

≯℡__Kan透↙ 提交于 2019-11-30 18:01:49
一、 编程规约 (一) 命名风格 6. 【强制】抽象类命名使用Abstract或Base开头;异常类命名使用Exception 结尾;测试类 命名以它要测试的类的名称开始,以Test结尾。 【强制】POJO类中布尔类型变量都不要加is前缀,否则部分框架解析会引起序列化错误。 说明:在本文 MySQL 规约中的建表约定第一条,表达是与否的值采用 is_xxx 的命名方式,所以,需要在 <resultMap>设置从 is_xxx到 xxx的映射关系。 反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC框架在反向解 析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。 【参考】各层命名规约: A) Service/DAO 层方法命名规约 1) 获取单个对象的方法用 get 做前缀。 2) 获取多个对象的方法用 list 做前缀,复数形式结尾如:listObjects。 3) 获取统计值的方法用 count 做前缀。 4) 插入的方法用save/insert 做前缀。 5) 删除的方法用remove/delete 做前缀。 6) 修改的方法用update 做前缀。 B) 领域模型命名规约 1) 数据对象:xxxDO,xxx 即为数据表名。 2) 数据传输对象:xxxDTO

无回路有向图的拓扑排序

孤街浪徒 提交于 2019-11-30 07:18:45
因公司业务需要,在表单中每个字段都会配置自动计算,但自动计算公式中会引用到其他字段中的值。所以希望可以根据计算公式,优先计算引用的公式。所以最终使用了无回路有向图的扩扑排序来实现。 直接上代码,后边讲解实现思路。 /** * 无回路有向图(Directed Acyclic Graph)的拓扑排序 * 该DAG图是通过邻接表实现的。 * * @author lyz */ public class FieldListDG { /** * 邻接表中表对应的链表的顶点 */ private class ENode { int ivex; // 该边所指向的顶点的位置 ENode nextEdge; // 指向下一条弧的指针 } /** * 邻接表中表的顶点 */ private class VNode { String data; // 顶点信息 ENode firstEdge; // 指向第一条依附该顶点的弧 } /** * 顶点数组 */ private List<VNode> mVexs; /** * 创建图(用已提供的矩阵) * <p> * 参数说明: * vexs -- 顶点数组 * edges -- 边数组 */ public FieldListDG(List<String> vexs, List<List<String>> edges) { // 初始化"顶点数"和"边数"

java8 新特性精心整理(全)

跟風遠走 提交于 2019-11-30 07:06:00
前言 越来越多的项目已经使用 Java 8 了,毫无疑问, Java 8 是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和 JVM 等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。 **引用:**本文参考了这两篇文章,加以自己的理解,整理成一份最容易理解的 Java8 新特性文章,有少部分章节可能内容一致,但绝对不是抄袭,只是为了文章的完整性,大部分常用的地方加了我自己的理解和示例。 https://blog.csdn.net/yczz/article/details/50896975 https://blog.csdn.net/maosijunzi/article/details/38658095 适合读者及目标 目标人群 适合有用过 lambda 表达式的同学,想彻底了解清楚 学习 Java8 的新特定 目标 了解 java8 的函数式接口和 Lambda 表达式 方法引用的使用 接口的静态方法和默认方法 Date/Time Api 的使用 Stream API 的使用 1. Java 语言的新特性 Java8 的 lambda 的使用确实方便了许多,但也使初次了解的人感觉到难以阅读,其实是你不习惯的原因。很多语言从一开始就支持了 Lambda 表达式,像 Groovy,Scala

java8 新特性精心整理

两盒软妹~` 提交于 2019-11-30 06:07:12
前言 越来越多的项目已经使用 Java 8 了,毫无疑问, Java 8 是Java自Java 5(发布于2004年)之后的最重要的版本。这个版本包含语言、编译器、库、工具和 JVM 等方面的十多个新特性。在本文中我们将学习这些新特性,并用实际的例子说明在什么场景下适合使用。 **引用:**本文参考了这两篇文章,加以自己的理解,整理成一份最容易理解的 Java8 新特性文章,有少部分章节可能内容一致,但绝对不是抄袭,只是为了文章的完整性,大部分常用的地方加了我自己的理解和示例。 https://blog.csdn.net/yczz/article/details/50896975 https://blog.csdn.net/maosijunzi/article/details/38658095 适合读者及目标 目标人群 适合有用过 lambda 表达式的同学,想彻底了解清楚 学习 Java8 的新特定 目标 了解 java8 的函数式接口和 Lambda 表达式,可以自定义函数式接口 方法引用的使用 接口的静态方法和默认方法 相比于以前的版本新加的类及期使用 Stream API 的使用 1. Java 语言的新特性 Java8 的 lambda 的使用确实方便了许多,但也使初次了解的人感觉到难以阅读,其实是你不习惯的原因。很多语言从一开始就支持了 Lambda 表达式,像

从流中的三种求和方式谈起

若如初见. 提交于 2019-11-30 05:46:20
//使用reduce()方法 int reduce = Arrays.asList(ins).stream().reduce(0, Integer::sum); //Collectors类的工厂方法,收集器 int collect1 = Arrays.asList(ins).stream().collect(Collectors.summingInt(t -> t)); //将个Stream<T>转化为数值流,然后求和 int sum = Arrays.asList(ins).stream().mapToInt(t -> t).sum(); 来源: https://my.oschina.net/depeng414/blog/3109073

微服务之间调用控制器注解类型的差异

丶灬走出姿态 提交于 2019-11-30 04:40:12
今天在一个业务服务通过Feign调用文件服务上传文件时遇到了几个问题: 1. 提示http请求头过大的问题; 此时需要修改bootstrap.yml,加入 server: max-http-header-size: 10000000 用以放大尺寸 2. 调用方法时提示404,无返回结果; 解决方法:把控制器的注解由@Controller变为@RestController,就可以 被调用方具体代码如下: @Slf4j @RestController @RequestMapping("/image") public class ImageController { private static List<String> allowUploadSuffixes = new ArrayList<>(Arrays.asList("png", "jpg", "jpeg", "zip", "pdf", "xls", "xlsx", "rar", "doc", "docx")); @Autowired private UploadFileEntityMapper uploadFileEntityMapper; @RequestMapping(value = "/uploadBase64", method = RequestMethod.POST) @ApiOperation(value =

好程序员大数据学习路线之大数据自学路线一

为君一笑 提交于 2019-11-29 23:49:18
好程序员大数据学习路线之大数据自学路线一 System类 exit():终止虚拟机 gc():运行垃圾回收机制 currentTimeMillis():返回以毫秒为单位的当前时间 arraycopy(Object src,int srcPos, Object dest,int destPos,int length): 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束 String 不可变字符串:String String s = "s"; 不可变字符串是一个常量,改变会指向新开辟空间 存储在堆区的字符串常量区 同一个字符串常量在常量区只允许存储一个值 s1 = "1000"; s2 = "1000"; s1==s2;//true a = "00"; s3 = "10"+a; s1==s3;//false s4 = "10"+new String("00"); s1==s4;//false String默认重写了Object的equals()方法,可以进行值的比较 String常用方法 1.boolean contains(CharSequence s):判断是否包含一个子字符串 2.boolean equals(Object anObject):判断两个字符串的内容是否相同 3.boolean equalsIgnoreCase(String

SpringBoot高级篇JdbcTemplate之数据更新与删除

六月ゝ 毕业季﹏ 提交于 2019-11-29 07:17:40
前面介绍了JdbcTemplate的插入数据和查询数据,占用CURD中的两项,本文则将主要介绍数据更新和删除。从基本使用上来看,姿势和前面的没啥两样 <!-- more --> I. 环境准备 环境依然借助前面一篇的配置,链接如: 190407-SpringBoot高级篇JdbcTemplate之数据插入使用姿势详解 或者直接查看项目源码: https://github.com/liuyueyi/spring-boot-demo/blob/master/spring-boot/101-jdbctemplate 我们查询所用数据,正是前面一篇插入的结果,如下图 II. 更新使用说明 对于数据更新,这里会分为两种进行说明,单个和批量;这个单个并不是指只能一条记录,主要针对的是sql的数量而言 1. update 方式 看过第一篇数据插入的童鞋,应该也能发现,新增数据也是用的这个方法,下面会介绍三种不同的使用姿势 先提供一个数据查询的转换方法,用于对比数据更新前后的结果 private MoneyPO queryById(int id) { return jdbcTemplate.queryForObject( "select id, `name`, money, is_deleted as isDeleted, unix_timestamp(create_at) as " +

深入理解Java8 Lambda表达式

一个人想着一个人 提交于 2019-11-29 06:31:50
一、Lambda表达式是什么? Lambda表达式有两个特点:一是匿名函数,二是可传递。 匿名函数的应用场景是: 通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用Lambda表达式。lambda表达式所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。 可传递使用场景是: 就是将Lambda表达式传递给其他的函数,它当做参数,Lambda作为一种更紧凑的代码风格,使Java的语言表达能力得到提升。 二、Lambda表达式语法 Lambda表达式在Java语言中引入了一个新的语法元素和操作符。这个操作符为"->",该操作符被称为Lambda操作符或箭头操作符,它将Lambda分为两个部分: 左侧:指定了Lambda表达式所需要的所有参数 右侧:指定了Lambda体,即Lambda表达式所要执行的功能。 常见的语法格式: 语法格式一:无参,无返回值,Lambda体只需要一条语句。 1 Runnable r = () -> System.out.println("Hello Lambda!"); 语法格式二:Lambda需要一个参数 1 Consumer<String> con = (x) -> System.out.println(x); 语法格式三:Lambda只需要一个参数时,参数的小括号可以省略 1