PKU-区块链技术与应用
北大肖臻 区块链技术与应用
第一节 密码学基础
crypto-currency 加密货币,加密货币实际上不加密
加密货币用到的密码学算法:哈希函数、签名
哈希函数的三个特性:
collision resistance/free 抗哈希碰撞,碰撞客观存在,但没有高效的方法,能够人为构造哈希碰撞(无法证明,但可以用实践经验)
MD5已经不安全了,可以人为构造哈希碰撞
hiding,哈希函数是单向函数
两者合作实现digital commitment/equivalent of a sealed envelope(封起来的信封)
预测结果不能提前公开 H(result || nonce)
puzzle friendly 谜题友好性
找nonce,要求H(block header || nonce) <= target,落在指定的范围之内,挖矿的过程没有捷径,只能一个个去试,工作量证明(Proof of work)
挖矿很难,但验证很容易 difficult to solve but easy to verify
BTC中用到的哈希函数:SHA-256(Secure Hash ...
全栈学习
全栈学习
Springboot+MyBatisPlus+Vue
MVC模式
Model+View+Controller
Model是模型层,用于数据的持久化存储;View是视图层,用户呈现数据;Controller是控制器层,用于接收用户的请求并进行相应的操作。
代码格式
Java代码需要给每个角色分配一个包,包内的命名格式为:实体+包名
控制器(Controller)
直接在类上加@RestController注解
接收请求可以用@RequestMapping注解,一般的GET请求格式如下:
1@RequestMapping(value = "user", method = RequestMethod.GET)
参数传递时保持一致就行,如果不一致就在参数前添加注解:
1@RequestParam(value = "nickname", required = false)
静态资源访问
将资源放在static目录下,在application.properties中添加过滤规则和静态资源路径
随后用url就可以访问,也可以配置虚拟路径。
文件上传
POST请求,将客户端传过来的文件 ...
Android学习
Android学习
逻辑和视图分离
Application和Activity的区别:
一个应用程序只能有一个Application,而可以有多个Activity
修改UI界面:
在Layout文件夹下添加abc.xml文件
添加Activity类,并在类中重写onCreate方法,方法中调用setContentView方法即可
【AI】人工智能导论汇总
复习汇总
Agent的环境性质:可观测/不可观测、确定的/随机的、已知的/未知的…等等。
完全可观察与部分可观察:如果Agent的传感器在每个时间点上都能获取环境的完整状态(或传感器能够检测所有与行动决策相关的信息),则任务环境是完全可观察的,否则构成部分可观察环境。噪声、不精确传感器或传感器丢失部分数据,都可能导致环境成分部分可观察。
确定性与随机性环境:如果环境的下一个状态完全取决于当前状态和Agent执行的动作,则该环境是确定的;否则,它是随机的。事实上,如果环境是部分可观察的,则一般可以将其建模为随机性环境。
已知和未知:这里指的是Agent的知识状态,比如环境物理法则等。在已知环境中,所有行动的后果是给定的(尽管针对随机环境,其后果呈现出概率特性,但仍然可以看作是已知);如果环境未知,则Agent需要学习环境如何工作,以便做出最好决策。环境的已知与否与可观察性不是一回事,环境已知与否只是对环境的物理规则或知识的刻画,而可观察性是指能否完全对环境状态进行观测获得。
常见的无信息搜索,及其特点。
常见的无信息搜索:广度优先搜索、深度优先搜索、深度受限搜索、迭代加深 ...
【Git】与Git的爱恨情长
与Git的爱恨情长
前言
在我的印象里,上传代码就是鼠标点两下就可以解决的事情。然而,当项目需要把代码上传到Git上时,我发现事情远远没有我想象当中的那么简单。Git的commit、branch、push等功能给了我当头一棒,然后我就把我的一个下午奉献给了这个可爱的Git。那么本文主要是总结Git的一些使用方法和使用步骤,以便未来在项目开发上不会因为不懂Git怎么用而处处撞墙。
Git简介
我们看到Git的第一时间容易联想到Github或者Gitee,然而他们本质上不是一个东西。Git是一个代码版本管理工具,而Github和Gitee属于代码仓库,他们两者的功能存在很大的区别。当我们的代码昨天能跑,今天加了点东西就死了的时候,那Git就能帮我们把代码的版本退回到昨天,乍一看还是非常方便的。所以我认为搞项目开发还是非常有必要学一学Git。
首先就是要学会如何在本地搭建Git的环境。实际上这个网上都有教程,我这里就不详细赘述。问题在于有了Git,我们要怎么把我们的代码上传到代码托管平台?
代码上传
在Github官网上创建一个Repository,进入到这个页面。
跟着它的教程做就可以了 ...
【Base】求职简历以及面试教程
求职简历以及面试教程
求职简历
先放ppt,后面有空整理…
面试
无领导面试模拟
【Chainlink】使用Chainlink预言机获取链下数据
前言
在上一篇博客的基础上,本文将详细介绍Chainlink获取链下数据的方法。
本文需要在Remix上部署三个智能合约,分别是LinkToken.sol、Operator.sol和ATestnetConsumer.sol。而LinkToken合约的部署流程已在上文详细给出,这里我写一下跳转链接:【Chainlink】基于私链运行一个Chainlink预言机节点 | Keike1 (keikei99.github.io)。
区块链上的用户作为数据获取方,需要从链下的数据提供方获取数据,而区块链本身不具备获取现实世界数据的能力,因此需要使用Chainlink预言机作为连接链上和链下之间的桥梁。下面我们将模拟用户获取数据的这个过程。
部署Operator.sol合约
Operator.sol
123// SPDX-License-Identifier: MITpragma solidity ^0.7.6;import "@chainlink/contracts/src/v0.7/Operator.sol";
部署完要记得把合约地址记录下来
1Operator: 0xD ...
【Chainlink】基于私链运行一个Chainlink预言机节点
注意
官方文档:Running a Chainlink Node | Chainlink Documentation
本教程和官方教程的区别在于,本教程基于自己搭建的Geth私有链而非Goerli测试网
建议先在本地创建账户,再创建json文件,然后去metamask添加import account,最后再在启动私链的命令中添加–unlock参数解锁账户,实现交易的打包。这一步,目的是为在Remix上部署LinkToken合约做准备。
在metamask上添加创建的账户是为后续在Remix上部署合约做准备
在Remix上部署LinkToken合约的目的是为后续给预言机节点转账做准备
用Geth搭建私有链
下载Geth
1234apt-get install software-properties-commonadd-apt-repository -y ppa:ethereum/ethereumapt-get updateapt-get install ethereum
随后创建如下的文件目录
1234/myChain├── chainlink└── localChain ├─ ...