示例

以太坊智能合约示例

半世苍凉 提交于 2021-02-10 05:17:43
目前的智能合约基本都是运行在以太坊上。本文将通过一个简单而具体的智能合约实例来帮助大家理解智能合约的编写、部署与调用。这个例子很简单,但通过它你可以了解开发一个以太坊的智能合约的完整过程。 在之后的教程中,我们将结合不同的场景案例,分别举出不同的例子例如投票、众筹、拍卖、ERC20/ERC721代币发行等,并实现相应的solidity示例代码。我们希望你能在实践中逐步理解学习智能合约的开发语言solidity,理解智能合约的运行原理,并掌握必要的以太坊智能合约编程技能。 如果你希望马上开始学习以太坊DApp开发,可以访问汇智网提供的出色的在线互动教程: 以太坊DApp实战开发入门 去中心化电商DApp实战开发 开发语言和开发环境选择 目前智能合约最受欢迎的编程语言为Solidity,但是并不只有Solidity。作为初学者,编写Solidity代码,我们可以使用Remix,它是一个基于浏览器的Soldity IDE,网址为: http://remix.ethereum.org/ 。Remix支持编写、测试和部署智能合约。 编写代码 学一门语言的第一个程序毋庸置疑都是HelloWorld,那么我们就来写一个HelloWorld的智能合约吧。合约代码如下。 pragma solidity ^0.4.21; contract HelloWorld { string hello =

Solidity编程开发实例

北慕城南 提交于 2021-01-12 20:33:10
Solidity 编程开发实例 接下来的智能合约教程非常复杂,但展示了很多Solidity的编程开发特性。它实现了一个入门的投票合约。当然,电子选举的主要问题是如何赋予投票权给准确的人,并防止操纵。我们不能解决所有的问题,但至少我们会展示如何委托投票可以同时做到投票统计是自动和完全透明。 Voting 投票 思路是为每张选票创建一个合约,每个投票选项提供一个短名称。合约创建者作为会长将会给每个投票参与人各自的地址投票权。 地址后面的人们可以选择自己投票或者委托信任的代表人替他们投票。在投票结束后,winningProposal()将会返回获得票数最多的提案。 /// @title Voting with delegation. /// @title 授权投票 contract Ballot { // 这里声明了复杂类型 // 将会在被后面的参数使用 // 代表一个独立的投票人。 struct Voter { uint weight; // 累积的权重。 bool voted; // 如果为真,则表示该投票人已经投票。 address delegate; // 委托的投票代表 uint vote; // 投票选择的提案索引号 } // 这是一个独立提案的类型 struct Proposal { bytes32 name; // 短名称(32字节) uint voteCount; //

libevent 一个简单的event示例

蓝咒 提交于 2020-12-03 14:14:35
本示例程序使用libevent监控一个处于监听状态的tcp服务端socket, 并在有连接进来时打印一条消息。 #include <event.h> int sock_fd; // tcp侦听句柄 // 事件回调函数,当有socket连接时执行 void event_occurs(int fd, short evt, void *arg) { if ( evt == EV_READ && fd == sock_fd ) printf("new connection\n"); else if ( evt == EV_TIMEOUT) printf("event timeout\n"); } int main (int argc, char **argv) { int sock_fd = open_server_socket(); // 调用一个自定义的socket端口侦听函数 // 返回socket句柄。 struct event evt; // 声明一个event struct timeval timeout = {30, 0}; // 设置一次event超时为30秒 event_init(); // 初始化当前libevent, 在调用其他libevent函数之前调用一次 // 将socket句柄、监控的触发事件(EV_READ),事件发生后的回调函数、 // 回调函数参数

Lombok 安装、入门 -spice up your java

时间秒杀一切 提交于 2020-04-12 16:34:07
简介 官网地址: https://projectlombok.org 提供的注解: https://projectlombok.org/features/index.html 下载链接: https://projectlombok.org/download.html 安装方式: 使用 lombok 是需要安装的,如果不安装,IDE 则无法解析 lombok 注解 java -jar lombok-1.16.6.jar 目前最新的版本是: 1.16.6 然后按照提示进行安装,如果不能检测到安装的Eclipse,手工指定Eclipse的安装目录即可。 安装后,会在Eclipse安装目录中增加lombok.jar, 并在eclipse.ini中增加如下一行: -javaagent:lombok.jar 安装截图: 如何在maven项目中引入 注意:代码compile后,会根据lombok的注解,增加指定的代码 比如使用@Data注解,则编译后的字节码中会为所有属性字段增加getter setter方法 <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.6</version> <scope>provided</scope> </dependency>

GMF之Shapes实例Part1:创建一个GMF项目

痴心易碎 提交于 2019-12-10 16:46:32
接触GEF与GMF有一段时间了,感觉它们的功能还是很强大的,只是我学的比较慢。也许每个人的学习方法不一样,我比较习惯做简单的例子。今天下午也不干活了,写几篇关于GMF入门的博客。以后有时间会在该系列的前一篇博客的基础上更新。 GEF与GMF比较经典的例子是Shapes,在这里我自己创建一个Shapes示例,其中包含6种连线(其中两条是后备用的)、5种图形(也有两个是后备的),以后都是在它的基础上更新的。 PS:我的Eclipse已经安装了GMF插件。 1、创建一个GMF项目: File→New→Project,找到New GMF Project, 项目名为org.eclipse.myTest.shapes,并在下一步选中Show dashboard view for the created project : 最后在下一步单击Finish。 2、此时Eclipse打开了Dashboard,如下图,它是一个创建GMF的向导,在图中已经用数字标记了我们接下来的步骤: 3、创建Domain Model (1)点击Dashboard图中1处的Create,打开向导,选择模型目录文件以及输入名称,如下图: 接下来的都保持默认,完成创建。 在Package Explorer中双击打开shapes.ecore,展开platfform,选中展开得到的那个图标,在Properties中设置其属性:

OUYA游戏开发核心技术剖析OUYA游戏入门示例——StarterKit

会有一股神秘感。 提交于 2019-12-09 21:23:51
第 1 章 OUYA 游戏入门示例—— StarterKit StarterKit 是一个多场景的游戏示例,也是 OUYA 官方推荐给入门开发者分析的第一个完整游戏示例。本章会对 StarterKit 做详细介绍,包括此游戏示例的下载、导入、编译、运行,当然还有最最重要的——游戏项目代码解析本文选自 OUYA游戏开发核心技术剖析大学霸内部资料 。 1.1 获取并运行 StarterKit 本节涉及内容包括: StarterKit 示例的下载、导入,示例项目环境的快速配置,以及最后成功运行在 OUYA 主机上查看到效果,这一系列的操作 文选自 OUYA游戏开发核心技术剖析大学霸内部资料 。 1.1.1 创建游戏项目 使用 Unity 创建一个 3D 游戏项目,将此游戏项目命名为 StarterKit ,如图 1-1 所示。 图 1-1 创建游戏项目 1.1.2 下载 StarterKit OUYA 官方提供的 StarterKit 示例的下载地址,如下: https://github.com/ouya/ouya-sdk-examples/releases/tag/Unity-OuyaSDK-StarterKit 打开的页面,如图 1-2 所示。单击页面上最左侧的绿色按钮,下载这个游戏项目的 unitypackage 包即可。 图 1-2 StarterKit 下载页面 提示

图像处理控件ImageGear for .NET教程:C# WPF应用程序创建示例(2)

谁说我不能喝 提交于 2019-12-07 01:19:21
在前面的《 图像处理控件ImageGear for .NET教程: C# WPF应用程序创建示例(1) 》一文中已经讲解了如何在 ImageGear for .NET 中对于C# WPF应用程序创建了项目,本文将继续前文。 设计窗体 一、创建在窗体中的菜单 在Windows Forms工具箱中,拖一个MenuStrip控件到这个窗体中。 创建三个菜单,命名为File、View、Processing。 在File菜单下,添加Load Page 和 Exit。 在View菜单下,添加Zoom In 和 Zoom Out。 在Processing菜单下,添加Rotate 90、Rotate 180、Rotate 270。 对于本次的教程,保持控件默认的名称,并双击每个项目,创建一个控制器。 二、在窗体中添加ImageGear Page View控件 在Windows Forms工具箱中,拖拽ImGearPageView控件到窗体上。 设置imGearPageView1控件的Dock属性为“fill”,这个将会使得控件以窗体来重新调整。 保留默认的控件名称,比如imGearPageView1控件。现在窗体的外观就会如下所示: 开发应用程序 一、首先,添加必要的using语句 >> 示例代码 二、添加下面的域到Form1: >> 示例代码 三、如果你使用的是运行时授权

JBoss 系列八十五: JBoss Modules 简单介绍

佐手、 提交于 2019-12-05 08:22:35
概述 从JBoss AS7开始,Classloader这块开始使用全新的JBoss Modules。本文简单介绍说明JBoss Modules的设计思路,以及给出一个例子说明这一设计思路。 JBoss Modules 介绍 我们都知道,Java一直使用classpath的方式来加载各种class和jar的资源。这样的方式会造成许多问题,比如下面这些经常会遇到的问题: 一个大的项目中,有的classpath当中的资源被加载后可能根本不会被用到,这就造成了系统资源的浪费 同一个classpath当中的资源,可能包含多个不同版本的同一个资源,这就造成了版本冲突,可能会导致整个项目无法运行并且很难进行排错,因为我们的项目可能非常大,里面有成百上千个jar,要想找到相冲突的资源,非常困难 针对这些问题,JBoss Modules都从设计上面给出了解决方案: 通过使用module.xml描述文件定义模块,在这个描述文件中要包含模块的名称,都包含哪些资源(一般一个模块对应一个jar文件,也可以包含多个jar或其它资源),这些资源的版本号,以及这个模块都依赖于哪些模块。 每一个模块都可以实时地加载或卸掉。这样做有很多好处:首先是资源方面的节省,只有需要的模块才被加载(这一点是通过module.xml中定义的模块之间的依赖关系来实现的),这一方式同时来带的好处是:整个系统的加载速度大大提升了

报表开发工具中开放的部分图表js接口列表

纵饮孤独 提交于 2019-12-04 09:23:02
1. . 描述 报表开发工具FineReport 8.0版本中开放了部分图表js接口,在具体应用的过程中很多人都不知道这些接口到底有什么作用,该怎么应用,所以根据我自己的应用在下面归纳了这些新开放js接口可以实现的功能和具体调用方法。 2. 接口属性 2.1 获取chart对象 FR.Chart.WebUtils.getChart("Cells__id") 单元格 FR.Chart.WebUtils.getChart("Float__id") 悬浮元素 FR.Chart.WebUtils.getChart("id") 表单 2.2 chart数据设置 chart.dataRefresh() 重新从数据集取数,并刷新图表(刷新效果与动态刷新一致) chart. setTitleVisible(boolean ) 标题是否可见,参数为true可见,false不可见 chart.setTitleContent() 标题的值设置,可以为参数或者值 chart.setLegendVisible(boolean) 图例是否可见 , 参数为true可见,false不可见 chart.setSeriesInvisible([index]) 设置哪些系列隐藏,数值数组格式,如:chart.setSeriesInvisible([0,1,3])则系列1,2,4隐藏;隐藏的系列图例也同样灰化 chart

编写一个最简单的Nutch插件

旧街凉风 提交于 2019-12-01 16:19:26
nutch是高度可扩展的,他使用的插件系统是基于 Eclipse2.x的插件系统 。在这篇文章中我讲解一下如何编写一个nutch插件,以及在这个过程中我遇到的坑。 请先确保你在eclipse中成功运行了nutch,可以参考 在eclipse中运行nutch 我们要实现的插件的 功能 是接管抓取过程,然后无论抓取什么网址,我们都返回hello world,够简单吧。。。 插件机制 nutch的插件机制大致是这样;nutch本身暴露了几个扩展点,每个扩展点都是一个接口,我们可以通过实现接口来实现这个扩展点,这就是一个扩展。一个插件可以保护多个扩展。 这是nutch官网列举的nutch的几个主要扩展点: IndexWriter -- Writes crawled data to a specific indexing backends (Solr, ElasticSearch, a CVS file, etc.). IndexingFilter -- Permits one to add metadata to the indexed fields. All plugins found which implement this extension point are run sequentially on the parse (from javadoc). Parser --