Amp

区块链技术原理、发展历史根由、应用场景

假如想象 提交于 2020-07-26 14:26:52
记账技术历史悠久, 现代 复式记账 系统(Double Entry Bookkeeping)是由意大利数学家卢卡·帕西奥利,1494年在《Summa de arithmetica, geometrica, proportioni et proportionalità》 一书中最早制定 。复式记账法的基石是资产负债表等式,又称为会计恒等式。 即任何一项经济业务的发生,都会引起资产和负债的至少两个项目发生增减变动,而且增减的金额相等 复式记账法对每一笔账目同时记录来源和去向,首次将对账验证功能引入记账过程,提升了记账的可靠性。 从这个角度来看, 区块链是首个自带对账功能的数字记账技术实现 :在所有的交易都是通过一种有序的数据「块」进行登记,这个记录就被成为区块链。区块链是一个公共的分布式总账!更确切的说应该叫分布式的冗余的链式总帐本方案。 包含一个分布式数据库 分布式数据库是区块链的物理载体,区块链是交易的逻辑载体,所有核心节点都应包含该条区块链数据的全副本 区块链按时间序列化区块,且区块链是整个网络交易数据的唯一主体 区块链只对添加有效,对其他操作无效 基于非对称加密的公私钥验证 记账节点要求拜占庭将军问题可解/避免 共识过程(consensus progress)是演化稳定的,即面对一定量的不同节点的矛盾数据不会崩溃。 共识过程能够解决double-spending问题

我的jdk源码(十六):LinkedHashMap类

本秂侑毒 提交于 2020-07-26 13:41:14
一、概述 LinkedHashMap类是继承自HashMap类,但是在HashMap的数据结构基础上,使得每个桶的元素又通过新Entry特殊的结构,组成一条双向链表。有了双向链表的结构,就能保证LinkedHashMap的实例在默认情况下能够保持元素的插入顺序。 二、源码剖析 (1) 类的声明 public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> LinkedHashMap的继承实现结构比较简单,就是继承了HashMap类,然后实现了Map类,让LinkedHashMap拥有Map的特性。 (2) 元素结构 static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; Entry(int hash, K key, V value, Node<K,V> next) { super(hash, key, value, next); } } LinkedHashMap类的结点Entry类实际是继承了HashMap类的结点Node类,并且在此基础上添加了before和after两个引用,用来记录双向链表的前后结点。 (3) 成员变量 //序列化标识ID private static final long

leetcode101(对称二叉树)--C语言实现

不羁岁月 提交于 2020-07-26 11:27:17
求: 给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 进阶: 你可以运用递归和迭代两种方法解决这个问题吗? 解: 思路: 递归: 迭代: /** * Definition for a binary tree node. * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ 递归: bool isMirror( struct TreeNode* left, struct TreeNode* right){ if (left==NULL && right==NULL) return true ; if (left==NULL || right==NULL) return false ; return (left->val==right->val)&&isMirror(left->left,right->right)&&isMirror(left->right,right->left); } bool isSymmetric( struct

报表工具如何生成 word 报告?

天涯浪子 提交于 2020-07-26 06:39:29
1. 报表工具中直接排版 2. 通过 API 将报表插入到 word 在 报表工具中直接排版实现 word 报告 这种方式的 好处 在于可以让数据动态变化,图表设计更加灵活,不会因为数据不同,还要重复修改文件,并且可以随时在 web 端查看, 也可进行打印打出操作。但这种方式也存在 不足之处 ,在报表工具中做 word 报告,相当于在 EXCEL 中实现 word 功能,排版不方便,可能为了实现对应结构的报告样式,会需要大量使用辅助格,导致展现速度变慢。 报表 +API 接口的实现方式 将报表文件和报表工具提供的相应类结合使用,固定部分在 word 中做好,动态图表部分在报表中实现,对应在 word 中插入页签,通过程序将 word 页签替换成报表、图表,这样就将报表动态插入到已有 word 模板中, 避免了硬排版,方便调整样式,提高做报告文档的开发速度,展现更快,用户体验更好 。 关于如何通过 API 实现将报表插入到 word 可以参考这篇文章: 怎样自动把报表插入到 word 文档中 来源: oschina 链接: https://my.oschina.net/u/3651044/blog/4330985

你如何按价值排序字典?

▼魔方 西西 提交于 2020-07-26 06:37:14
问题: I often have to sort a dictionary, consisting of keys & values, by value. 我经常需要按值排序字典,包括键和值。 For example, I have a hash of words and respective frequencies, that I want to order by frequency. 例如,我有一个单词和各自频率的哈希,我想按频率排序。 There is a SortedList which is good for a single value (say frequency), that I want to map it back to the word. 有一个 SortedList 适用于单个值(比如频率),我想将它映射回单词。 SortedDictionary orders by key, not value. SortedDictionary 按键 排序 ,而不是值。 Some resort to a custom class , but is there a cleaner way? 有些人诉诸于 自定义课程 ,但是有更清洁的方法吗? 解决方案: 参考一: https://stackoom.com/question/4f/你如何按价值排序字典 参考二: https:/

vue 跨组件自定义事件调度处理功能

天涯浪子 提交于 2020-07-26 02:01:49
vue 的 emit 和mixins 两个特性是这篇文章的基础,当然抛开vue 也可以直接使用全局调用实现,所以这块不做讨论 先看效果,合并一个mixin 然后就可以处理事件监听了 step 1、编写一个简单mixin 实现事件接收调度处理管理功能 export default { created() { //定义一个自定义事件 toLowerCase 是为了躲避vue的坑 this.$on("NotifyChildComReSize".toLowerCase(), this.EVENT_RESIZE_HANDLE); }, data() { return { events: new Map(),//这里监听自定义事件和回调函数 EVENT_RESIZE: "EVENT_RESIZE"//事件监听名称 类似 CLICK } }, methods: { //这是一个 resize 事件的调度处理函数 EVENT_RESIZE_HANDLE(size) { //获取已经注册的监听事件 let resizeFunS = this.events.get(this.EVENT_RESIZE); if (Array.isArray(resizeFunS)) { resizeFunS.forEach(func => { func.call(this, size);//直接回调 并把

xml中的<![CDATA[]]>

限于喜欢 提交于 2020-07-26 00:55:24
急速工作记录 <![CDATA[]]> 是xml中经常见到的 它的含义是被<![CDATA[]]>这个标记所包含的内容将表示为纯文本 使用情况: 简单理解 比如: <![CDATA[<]]>表示文本内容“<” 此标记用于xml文档中,我们先来看看使用转义符的情况。 我们知道,在xml中,”<”、”>”、”&”等字符是不能直接存入的,否则xml语法检查时会报错,如果想在xml中使用这些符号,必须将其转义为实体,如”<”、”>”、”&”,这样才能保存进xml文档 在使用程序读取的时候,解析器会自动将这些实体转换回”<”、”>”、”&”。 举个例子: <age> age < 30 </age> 值得注意的是: (1)转义序列字符之间不能有空格; (2) 转义序列必须以”;”结束; (3) 单独出现的”&”不会被认为是转义的开始; (4) 区分大小写。 在XML中,需要转义的字符有: (1)&   & (2)<   < (3)>   > (4)"   " (5)'   &apos;  但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可 以合法存在的,但是,把它们都进行转义是一个好的习惯。 不管怎么样,转义前的字符也好,转义后的字符也好,都会被xml解析器解析, 方便起见: 使用<![CDATA[]]>来包含不被xml解析器解析的内容。但要注意的是: (1) 此部分不能再包含

Elasticsearch进阶检索

偶尔善良 提交于 2020-07-26 00:45:18
1.SearchAPI es支持两种基本方式检索 1.通过使用rest request uri 发送搜索参数(uri+检索参数) #查询所有信息,根据用户编号(默认10条记录) GET bank/_search?q=*&sort=account_number:asc 2.通过使用rest request body 来发送他们(uri+请求体) GET bank/_search { "query": { "match_all": {} }, "sort": [ { "account_number": "asc" }, { "balance":"desc" } ] } 2.Query DSL #from,size分页,_source返回部分字段 GET bank/_search { "query": { "match_all": {} }, "sort": [ { "balance": { "order": "desc" } } ], "from": 0, "size": 5, "_source": ["balance","firstname"] } 3.match匹配 #全文检索 GET bank/_search { "query": { "match": { "address": "kings" } } } 4.match_phrase短语匹配 GET bank/_search {

Java工具类——日期相关的类

我们两清 提交于 2020-07-25 18:24:34
前言 在日常的开发工作当中,我们经常需要用到日期相关的类(包括日期类已经处理日期的类),所以,我就专门整理了一篇关于日期相关的类,希望可以帮助到大家。 正文 一、日期类介绍 在 Java 里面,操作日期的类主要有以下几个类: 工具类 所属包 继承关系 实现接口 Date类 java.util包,需要导包 默认继承Object Serializable, Cloneable, Comparable SimpleDateFormat类 java.text包,需要导包 继承DateFormat Serializable, Cloneable Calendar类 java.util包,需要导包 默认继承Object Serializable, Cloneable, Comparable 二、Date类 这是最基础的一个日期类,其中Date类重名的有4个相关的类,这四个类所属的包都不相同,这里我们讲的是位于java.util包下的 Date 类。 1、构造方法 Date 类有6个构造方法,其中后面5个带有 @Deprecated 注解的都已经废弃了(不推荐用),主要用的是前面2个构造方法。 public Date() public Date(long date) @Deprecated public Date(String s) @Deprecated public Date(int

KubeFlow-Pipeline及Argo实现原理速析

China☆狼群 提交于 2020-07-25 16:51:04
Argo是一个开源原生容器工作流引擎用于在Kubernetes上开发和运行应用程序。Argo Workflow流程引擎,可以编排容器流程来执行业务逻辑,在20年4月8日进入CNCF孵化器组。 而KubeFlow的Pipeline子项目,由Google开源,其全面依赖Argo作为底层实现,并增强持久层来补充流程管理能力,同时通过Python-SDK来简化流程的编写。 一. Argo流程引擎 Argo的步骤间可以传递信息,即下一步(容器)可以获取上一步(容器)的结果。结果传递有2种: 1. 文件:上一步容器新生成的文件,会直接出现在下一步容器里面。 2. 信息:上一步的执行结果信息(如某文件内容),下一步也可以拿到。 下面我们就来解读一下,Argo怎么实现“信息”在容器间的传递的,以及它和其他的流程引擎实现传递的区别。 1.1文件怎么从上一个容器跑到下一个容器里的? Argo流程,可以指定2个步骤之间,传递结果文件(Artifact)。即假设流程为:A->B,那么A容器跑完,B容器可以取得上一个容器的输出文件。 如下:A容器生成一个 /tmp/hello_world.txt 文件,Argo将这个文件,放到了B容器里面,并重命名为 /tmp/message文件。 注意:流程上的每个步骤,都对应执行一个容器。 在A跑完后容器就退出了,然后才跑的B(这时候已经没有A容器在运行了)。