block

孤荷凌寒自学python第九十四天认识区块链008

不打扰是莪最后的温柔 提交于 2020-02-18 22:22:50
【主要内容】 今天开始继续分析从github上获取的开源代码怎么实现简单区块链的入门知识,共用时间38分钟。 (此外整理作笔记花费了约50分钟) 详细学习过程见文末学习过程屏幕录像。 今天完成了【blockchain.py】文件大部分源代码的学习分析,添加了批注,对实现原理有了比较全面的理解。 主要通过以下网络资源进行学习: http://docs.jinkan.org/docs/flask/quickstart.html 密码学部分参看了以下文章: https://www.jb51.net/article/86022.htm 【学习笔记】 一、对【blockchain.py】文件的理解批注第一天 今天的学习笔记都作到了注释文本中(学习分析的思维过程可见我的屏幕录像): 今天主要是从全局实现过程进行研读批注,每个方法函数的内部细节还没有细致思考。 下面是已对【blockchain.py】进行详细注释的源代码 ``` ''' title : blockchain.py description : A blockchain implemenation author : Adil Moujahid date_created : 20180212 date_modified : 20180309 version : 0.5 usage : python blockchain.py

ruby 学习精简笔记

时光毁灭记忆、已成空白 提交于 2020-02-18 07:02:47
============================================================================ 1、控制器中的方法可以相互调用吗 2、控制方法中定义的@变量是不是实例变量,它貌似只能在控制器方法对应的view中应用,不能被其他view使用 3、text_field等的传值方式,表单的传值方式 4、activeRecord的关系映射 ============================================================================ ruby中的代码每个语句放在单独的行数,不需要在每个句子的末尾加上分号 ruby的变量不需要预先声明,可以在使用的时候直接赋值,根据赋值的类型确定变量类型 ruby字符串中含有表达式或者变量用#{表达式},如果是全局变量或实例变量则可以不用花括号 $greeting="helllo" @name="prudence" puts "#$greeting,#@name" 方法以def...end的形式表示 ruby方法所返回的值,是最后一个被求值的表达式的值,可以省略return. ruby使用一种命名惯例来区分名称的用途:名称的第一个字符显示这个名称如何使用, 局部变量、方法参数和方法名称都必须使用小写或者下划线,全局变量都用美元符号($)为前缀;

北大肖甄《区块链技术与应用》

给你一囗甜甜゛ 提交于 2020-02-16 23:36:51
知识点总结二 1.Uncle block : 如上图所示,其中的叔父区块是block 7。他的叔父区块就是block 4 同一级别的block 5和block 6。 最长合法连上面的区块招安叔父区块,可以获得2 1/32*3+3出块奖励;对于叔父区块可以获得7/8 3出块奖励 。叔父区块只能被包含两个。如果存在恶意区块,就会恶意的不去招安特定的叔父区块。 另外如果在最长合法链上继续产生block 8,block 5 和block 6 同样还是区块链8的叔父区块。 以太坊中规定,第一代叔父区块得到7/8的出块奖励;各一代,分子减一;知道得到2/8的出块奖励。合法的叔父只有六个区块。如下图 : 叔父区块获取不到gas fee,只能获得block reward。与比特币不同以太币不会定期减半。 把叔父区块包含进来,要不要执行叔父中的交易 P20 ETH-难度调整 1.以太坊发展的四个阶段 Byzantium:拜占庭。 区块难度D(H) 父区块:当前正在挖的区块。 自适应难度调整 自适应难度调整 x × ζ 2 x\times\zeta_2 x × ζ 2 ​ 难度炸弹 ϵ \epsilon ϵ 目的:以太坊:PoW---->PoS 来源: CSDN 作者: YSS_33521 链接: https://blog.csdn.net/YSS_33521/article/details

symfony中twig的模板载入

百般思念 提交于 2020-02-16 14:26:41
模板 载入模板 {% include ‘sidebar.html’ %} 当前模板的变量也会传递到 被include的模板里,在那里面可以直接访问你这个模板的变量。 {% for comment in comments %} {% set user = users[comment.userId] %} {% include ‘TopxiaWebBundle:CommentWidget:item.html.twig’ %} {% endfor %} 在item.html.twig是可以访问 comment变量的,加入其他参数user可以使被载入的模板只访问部分变量。 你可以给模板添加变量 {% include ‘TopxiaWebBundle:Course:countdown.html.twig’ with {‘course’:course} %} 你也可以使用 only 关键字 来禁止载入的模板使用当前模板的变量,只能使用include 时with的变量 {% include ‘TopxiaWebBundle:Course:countdown.html.twig’ with {‘course’:course} only %} 载入的模板名也可以是一个twig表达式 {% include name==’chapter’? ‘TopxiaWebBundle

iOS -- block

梦想与她 提交于 2020-02-15 10:42:54
Block:一种匿名函数,可以捕获周围的变量 Block是一种匿名函数,Block中可以保存一段代码,它可以作为参数、作为返回值,在需要的时候调用。常用于GCD、动画、各种回调 block 在实现时就会对它引用到的它所在方法中定义的局部变量进行一次只读(const)拷贝,然后在 block 块内使用该只读拷贝 NSString * functionName = @"functionName"; NSString * (^testBlock)(NSString *) = ^NSString * (NSString * name){ myName = @"nana"; // functionName = @"fff"; //报错,不能改变自动变量的值 self.vcName = @"vvvvv"; //没有报错,可以改变变量的值 NSLog(@"%@",name); return name; }; testBlock(@"cc"); 如果想要在block里改变局部变量的值,可以用 __block 修饰符 __block int val = 10; void (^blk)(void) = ^{printf("val=%d\n",val);}; val = 2; blk(); 在Block定义时便是将局部变量的值传给Block变量所指向的结构体

Hadoop HDFS

不羁的心 提交于 2020-02-13 17:20:13
一:HDFS架构图 HDFS:分布式文件系统 Hadoop Distributed File System Block数据块 基本存储单位,一般大小为64M,配置大的块主要是因为: 减少搜寻时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间; 减少管理块的数据开销,每个块都需要在NameNode上有对应的记录; 对数据块进行读写,减少建立网络的连接成本 一个大文件会被拆分成一个个的块,然后存储于不同的机器。如果一个文件少于Block大小,那么实际占用的空间为其文件的大小 基本的读写单位,类似于磁盘的页,每次都是读写一个块 每个块都会被复制到多台机器,默认复制3份 NameNode 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小 一个Block在NameNode中对应一条记录(一般一个block占用150字节),如果是大量的小文件,会消耗大量内存。同时map task的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。因此Hadoop建议存储大文件 数据会定时保存到本地磁盘,但不保存block的位置信息,而是由DataNode注册时上报和运行时维护

一种简单定长管理的内存池实现

痞子三分冷 提交于 2020-02-13 08:18:43
借鉴ucos消息队列中的实现,对内存池只提供信息的管理头部,由用户管理内存的分配与释放。 借用了STL中的管理思路 typedef union object_t { union object_t *next; //下一个对象 char data[1]; }object_t; 注意其为union类型,next和data复用 typedef struct ares_block { size_t object_size; //单个对象的大小 size_t block_size; //占用的空间总数 size_t count; //剩余有多少个对象 object_t * free_list; //空闲的对象块 char *data; //实际指向缓冲区位置 struct list_head list_block;//多个内存块 }mem_block_t; 基本的管理块 mem_block_t的接口函数。 void memblock_init(mem_block_t *block,size_t object_size,size_t buf_len,char *data); void memblock_destroy(mem_block_t *block); char *memblock_alloc(mem_block_t *block,size_t object_size); void

内联元素和行内元素的区别和理解

只谈情不闲聊 提交于 2020-02-11 22:55:38
转载: http://hi.baidu.com/dingo826/blog/item/f69884f44f5394def3d38578.html 块对象默认宽度是100%(继承自父元素),如果没有采用“float:left/right;”样式,相邻的两个块对象就会分排在不同的两行上。 内联对象的宽度取决于其内部元素的宽度与padding样式值之和,不可直接指定其宽度与高度(“display:block;”、“float:left/right;”强行转换后可以定义),相邻的两个内联对象会排在同一行上。 什么是内联对象,什么是块对象? 所有可视的文档对象都是块对象(block element)或者内联对象(inline element)。例如, div 是一个块对象,span 是一个内联对象。 块对象的特征是从新的一行开始且能包含其他块对象和内联对象。从新的一行开始:比如div就是前后断行; 内联对象被呈递时不会从新行开始,能够包含其他内联对象和数据。内联可以这样理解:不从新的一行开始,直接从内容里面,接着往后走。。。是指它能被别的对象内联。。。。 ========================== 相关信息参考:css display参数 block : CSS1 块对象的默认值。将对象强制作为块对象呈递,为对象之后添加新行 none : CSS1 隐藏对象。与

iOS 定时器的比较

荒凉一梦 提交于 2020-02-11 05:57:23
然而,在iOS中有很多方法完成以上的任务,到底有多少种方法呢?经过查阅资料,大概有三种方法:NSTimer、CADisplayLink、GCD。接下来我就一一介绍它们的用法。 一、NSTimer 1. 创建方法 1 NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(action:) userInfo:nil repeats:NO]; TimerInterval : 执行之前等待的时间。比如设置成1.0,就代表1秒后执行方法 target : 需要执行方法的对象。 selector : 需要执行的方法 repeats : 是否需要循环 2. 释放方法 1 [timer invalidate]; 注意 : 调用创建方法后,target对象的计数器会加1,直到执行完毕,自动减1。如果是循环执行的话,就必须手动关闭,否则可以不执行释放方法。 3. 特性 存在延迟 不 管是一次性的还是周期性的timer的实际触发事件的时间,都会与所加入的RunLoop和RunLoop Mode有关,如果此RunLoop正在执行一个连续性的运算,timer就会被延时出发。重复性的timer遇到这种情况,如果延迟超过了一个周期,则 会在延时结束后立刻执行

NSTimer的使用详解

自闭症网瘾萝莉.ら 提交于 2020-02-11 05:24:11
NSTimer fire 我们先用 NSTimer 来做个简单的计时器,每隔5秒钟在控制台输出 Fire 。比较想当然的做法是这样的: @interface DetailViewController () @property (nonatomic, weak) NSTimer *timer; @end @implementation DetailViewController - (IBAction)fireButtonPressed:(id)sender { _timer = [NSTimer scheduledTimerWithTimeInterval:3.0f target:self selector:@selector(timerFire:) userInfo:nil repeats:YES]; [_timer fire]; } -(void)timerFire:(id)userinfo { NSLog(@"Fire"); } @end 运行之后确实在控制台每隔3秒钟输出一次 Fire ,然而当我们从这个界面跳转到其他界面的时候却发现:控制台还在源源不断的输出着 Fire 。看来 Timer 并没有停止。 invalidate 既然没有停止,那我们在 DemoViewController 的 dealloc 里加上 invalidate 的方法: -(void)dealloc