首页 文章 精选 留言 我的

精选列表

搜索[HTTP/2],共10000篇文章
优秀的个人博客,低调大师

2区块链底层技术-逻辑架构

区块链因为比特币而为大家熟知,随之而来衍生出一些优秀的项目,比较有代表性的有以太坊(Ethereum)、锯齿湖(Sawtooth Lake)、超级账本(Hyperledger)、比特股(bitshares)、瑞波(Ripple)、小蚁等,根据不同的应用场景分为应用于公众的公有链,需要授权使用的私有链和联盟链,还有在原有区块链基础上进行扩展的侧链等,随着区块链的发展,相信还会有其他形式的应用出现,任何的应用都不是绝对的,应该按实际的业务需求来定。比特币在牺牲资源和性能的情况下增加了安全和稳定,相较于比特币,新衍生的区块链项目在一定程度上解决了资源浪费和性能这两方面的问题,但安全性有待继续研究,我们经常会看到某某区块链被攻击,发现了某某区块链的漏洞等,这也充分说明了,我们还有很多坑要踩,很多问题需要研究和尝试。从比特币开始,到现在众多新的区块链项目出现,区块链的层次结构基本分为应用层、合约层、激励层、共识层、网络层、数据层。 应用层一般是业务平台或应用平台,通过业务逻辑处理形成需要上链的数据,按照区块链定义的规则,将数据发送给区块链。最终可以是一笔交易,也可以是需要上链的规则数据,还可以是一笔合同等等。对于应用层我们可以理解为各种应用场景或案例。 合约层在比特币的时候是脚本代码,新出现的区块链项目提出了智能合约的概念,智能合约采用图灵完备的编程语言,以期满足更广泛的应用的场景,因为有了智能合约才有了现在各种各样的币,以及针对于不同行业的区块链应用。但是图灵完备具有一定漏洞缺陷,所以智能合约还需要一段时间的尝试。 共识层是区块链中比较重要的环节,区块链是分布式的系统,对于分布式系统来说,分布式一致性是关键的问题,为了使这种分散的节点达成一致,而采用了共识机制。目前论证和使用比较多的共识机制有:工作量证明(Pow)、权益证明(Pos)、股份授权证明机制(DPOS)、验证池(Pool)、实用拜占庭容错(PBFT)、授权拜占庭容错(dBFT)、权威证明(PoA)等,以后会专门讲解这部分内容。 激励层在中本聪的设计中采用全员记账的方式,记录系统中产生的交易,为了使全网节点竞争记账,而采取的奖励措施,是一种奖励的发行和分配机制,奖励包括系统奖励和交易手续费。这种通过竞争记账最终获得奖励的过程就是我们常说的“挖矿”。目前币圈流行的各种币都是激励层的杰作,这种奖励机制在公有链中使用比较普遍,随着区块链的发展和特定业务场景的需求,联盟链也开始尝试使用奖励机制(ibm的超级账本也要加入Token了)。 网络层用于实现区块链各个节点的信息交互,区块链网络是分布式网络,网络中存在多个节点。提到分布式大家可能会想到客户机/服务器模式,这种模式存在“中心化”的弊端,区块链采用的是对等网络架构,是一种在对等者之间分配任务和工作负载的分布式应用架构。网络中的节点彼此共享资源,服务和内容。这种分布式架构具有高度的容错性和抗攻击性,但是性能问题是亟待解决的问题。个人认为分布式架构在区块链应用中是十分重要的存在。 数据层是区块链最终的数据存储,区块链基本数据单位为区块,以hash作为块标识,用来与下一区块相连,最终形成首尾相连的链表式数据结构。区块是信息记录集,记录了被创建时发生的所有事情,区块中的数据采用了密码学技术来保障数据的安全性。需要注意的是,对于区块的容量在设计阶段要做好详细的规划,以免出现比特币的容量限制问题。 总结,对于区块链可能还会存在多种的逻辑应用,以上列出的是目前区块链架构普遍采用的方式,如果大家有什么想法可以互相讨论。 另外,现在区块链火热的点很多都在“币”上,不知道专家,大佬们闲暇之余是否可以考虑一下,用区块链解决一些问题呢,比如保护莘莘学子成绩不被篡改,不被冒名顶替,又比如文艺工作者的确权问题,侵权盗版等。

优秀的个人博客,低调大师

w2 有秒计时的数字时钟

题目内容: 这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。 我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数: public Clock(int hour, int minute, int second); 用hour, minute和second初始化时间。 public void tick(); “嘀嗒”一下,时间走1秒。 public String toString(); 返回一个String的值,以“hh:mm:ss“的形式表示当前时间。这里每个数值都占据两位,不足两位时补0。如“00:01:22"。注意其中的冒号是西文的,不是中文的。 提示:String.format()可以用和printf一样的方式来格式化一个字符串。 另外写一个Main类,它的main函数为下面的样子,注意,必须原封不动地作为Main的main函数: public static void main(String[] args) { java.util.Scanner in = new java.util.Scanner(System.in); Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt()); clock.tick(); System.out.println(clock); in.close(); } 注意!在提交的时候,把Main、Clock和Display三个类的代码合并在一起,其中Main类是public的,而Clock和Display类是没有修饰符的。另外,千万注意第一行不能有package语句。 输入格式: 采用给定的main函数无需考虑输入输出。 输出格式: 采用给定的main函数无需考虑输入输出。 输入样例: 采用给定的main函数无需考虑输入输出。 输出样例: 采用给定的main函数无需考虑输入输出。 import java.util.Scanner; public class Main { public static void main(String[] args) { java.util.Scanner in = new java.util.Scanner(System.in); Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt()); clock.tick(); System.out.println(clock); in.close(); } } class Clock { private Display hour = new Display(24); private Display minute = new Display(60); private Display second = new Display(60); public static void main(String[] args) { java.util.Scanner in = new java.util.Scanner(System.in); Clock clock = new Clock(in.nextInt(), in.nextInt(), in.nextInt()); clock.tick(); System.out.println(clock); in.close(); } public Clock(int hour, int minute, int second) { this.hour.setValue(hour); this.minute.setValue(minute); this.second.setValue(second); } public void tick() { second.increase(); if( second.getValue() == 0 ) { minute.increase(); if( minute.getValue() == 0) { hour.increase(); } } } public String toString() { return String.format("%02d:%02d:%02d", hour.getValue(), minute.getValue(), second.getValue()); } } class Display { private int value = 0; private int limit = 0; public Display(int limit) { this.limit = limit; } public void increase(){ value++; if( value == limit ) { value = 0; } } public int getValue() { return value; } public void setValue(int value) { this.value = value; } public static void main(String[] args) { Display d = new Display(24); for( ; ; ) { d.increase(); System.out.println(d.getValue()); } } }

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册