freshMan
conclusion of freshman我突然很想写一个年度总结。但太久没认真审视自己了。
5分钟前,我突然想翻开《阿尔吉侬的花束》。我看着后面几页的主角,沉迷看电视,以便忘记他所有的烦恼。我于是想起了关于阿尔吉侬的一切,一个实验室的聪明老鼠,获得了智慧,于是,于是他就做题,跑好多的迷宫。而用了和阿尔吉侬同款药的主角,从低能智障成为了世界上最聪明的人,却自己研究出了他将要变回那个不认字的智障这个事实。
几个小时前,我像主角一样,躺在椅子上刷视频,脑子里不知道会想什么。
两三天前,室友同他的对象分手了。他和我聊了好多。他说他突然觉得我这个人好孤独。我只好说孤独习惯了也不错。我不知道他到底还会想些什么,但见到一个人在我面前崩溃的出动还是不小。
再一两天前,我做完了我项目的中期答辩。这个项目赛很不顺利,从四月底立项以来,我没有多少时间分在它上面。后来它占用了我好几个周末和快一半的考试周时间,即使如此程序也没有对接好。我们3个人只好按着有问题的程序盲人摸象一样写文档,准备答辩。这个答辩只有5分钟。老师甚至不知道我们的程序来源于快10年前研究的技术,说用的技术这么先进之类的话。。。
结果如同 ...
solanaNotes
solanaNotes账户账户有几种:
program:存储可执行代码,info无状态
data:由program创建,用英语存储和管理程序状态
native program: solana内置的程序
Sysvar: 存储network cluster state的特殊账户
每个账户有一个唯一的地址,以Ed25519格式表示为32字节
1.accountInfo账户最大为10mb,存储的数据结构称为accountInfo
account
data
executable
lamports
owner
type
Bytes
Boolean
Number
Program Address
usage
存储账户状态
标志着该账户是否是程序
账户余额的数字形式
拥有该账户的程序的公钥
2.native program常见的有the System Program和BPF loader
3.System program所有新建账户默认归system program所有
系统程序执行以下关键任务:
New Account Creation
Space Allocation
A ...
rCore-Tutorial follow the riscv trend!!!
rCore-ch1环境执行fn main() { println!("hello,world");}
从修改hello world,使它不用系统自带的依赖开始
修改目标平台目标为裸机平台,没有rust标准库和os支持的系统调用,为了方便换上了rust的core库
# os/.cargo/config[build]target = "riscv64gc-unknown-none-elf"
移除标准库依赖在main.rs中修改如下:
#![no_std]#![no_main]mod lang_items;pub extern "C" fn _start() { loop {}}
同级目录新建一个lang_items.rs
use core::panic::PanicInfo;#[panic_handler]fn panic(_info: &PanicInfo) -> ! { loop{ & ...
solana资料和环境配置
solana!巧合下接触了rust和这个,干了
写这一节废话的原因是这个的中文资料真的又旧又少
资料online关键词:cookbook+solana(对solana的概念有中文版本介绍),anchor(最常用的框架),solana+playground(在线ide,没用过不评价)
环境搭建这节主要参考:Installation - Docs (anchor-lang.com),加了点自己遇到的问题和解决方案
首先要有rust,有的话跳过这步
我的环境:wsl2、ubuntu22.04
Install Rust - Rust Programming Language (rust-lang.org)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
再安装solana命令行工具这里只展示第一个命令,具体看Install the Solana CLI | Solana Validator (solanalabs.com)
sh -c "$(curl -sSfL https://rel ...
diary 1 "Rememberance"
5d6badbe513297e3dc013539ab3eca16d57b4876428741af4b1a414d174794a22be3417b901b498eacd4eeda26a96bae72fe028257e0a030fc2bc9ba9f6132c22607273c0093a024d9722d4218b775505dc45655114b00976c676f25dabaeb843bffb7349d8fb11eaabdda42c98d99ec61b8f8ef8245ea263b65a83160bba8d3b9513546b7ca3534f94d3d1f01ba6abe7c30c94150bd5203a4e9363557b05c16dc7a6ff7c9beac1d62f90dd071ead963d4a5fa4e05d1240e185c098fa90cd3c9fc6917b9fec847bfff2feabe8838910ccaab557475dd1a2e138a16a9ca7c40bbcf78ef5858c3291f1b274ef2c2e3a019fe64d6181dc8c2c71 ...
diary 2 "broken wings"
5d6badbe513297e3dc013539ab3eca16b90af43e7cb7f97c311d1ad74044827a4a082d40e492be15e2d0e946edc0da61e67052e98bd046c357358d9e3dafb71161c19d23f96de0dfe1fecda15bf97b8d1d8fff3ae7cacdf0c3e51808c8e74d2b9803dc14aa8f616ce0dbbe566f503b9f02fb8a3ab6c93967c420484f561f31621490187b0f2ec6b68d5612a19ee7305294b4fe051d6da4b09543f407494d61de7bb8da58fd0c3f6c7eee55e22a1ce4bdcb1574ad4dd3b7a1bce6ba484234f971a5ecc33e8adc53494e074535fb4c6d9a61110d540cd256515f582b764b504643c6eaa75f0ecbae1ca12e045bc81d4a5ee61d030bfb240a64a ...
隐私计算
隐私计算learning从技术层面来说,隐私计算主要有三类主流技术路线:一类是采用密码学和分布式系统,以多方安全计算(Secure Multiparty Compute,MPC)为代表;另一类是采用基于硬件的可信执行环境(Trusted Execution Environment,TEE);最后一类是近年来发展相当火热的**联邦学习(Federated Learning,FL)**。此外,还有零知识证明、同态加密、差分隐私等技术。各类技术路线融合应用趋势凸显。
参考隐私计算介绍https://www.esensoft.com/industry-news/dx-5995.html
对多方学习的介绍和经典应用https://36kr.com/p/1718172828733449
默克尔树的介绍https://yeasy.gitbook.io/blockchain_guide/05_crypto/merkle_trie
多方安全计算
定义
多方安全计算(Secure Multi-Party Computation)是指在无可信第三方的情况下,多个参与方协同计算一个约定函数,除计算结果以 ...
ZombieBlock
follow the Zombies!准备工作:浏览此网站https://cryptozombies.io/,并注册一个账号,从最基础的课程学起。
当然只学这个还是太单薄了,看看登链社区和去remix上编译实操,做些题之类的更好
first Class:build your own zombie factories表面是僵尸工厂,实际上是solidity
内容概括如下:
合约的定义:
pragma solidity ^0.4.19;//必须的一行,表明编译器版本,合约内容一般不可修改contract Helloworld {//合约内部}
变量类型
pragma solidity ^0.4.19;contract ZombieFactory { uint dna = 100;//uint 等效于uint256,256位无符号整数 uint8 num=0;//也有uint8,16,32等,一般直接用uint即可}
数学运算
有加减乘除,以及特殊的乘方:uint x = 5 ** 2;
结构体
struct Zombie & ...
区块链到简单虚拟货币
区块链到简单虚拟货币区块链技术旨在实现并维持一个去中心化的点对点网络系统以及其中附带的功能,虚拟货币就是其中之一。
什么是区块链?区块链根据语义能有不同含义:
一种数据结构
一种算法
一个完整的技术方案
一个完全去中心化的点对点系统
当作为数据结构时,它表现为区块和链等多个形式
//引入一个必要的hash函数const getSha=require("crypto-js/sha256")//区块,仅作演示,具体数据类型和数量可以有很多class EzBlock { constructor(data,previousHash){ this.data=data;//每个区块总会有的数据 this.previousHash=previousHash;//hash是区块链中会用到的算法,它是保证区块链有效性的基础 this.hash=this.createHash();//区块自己的hash和前一个区块的hash值将保证链式结构的独特性质 } createHash(){ ...
x86->4. 中断和动态时钟显示
中断和动态时钟显示中断为了最高效地利用cpu性能,中断将发生在程序之间来回切换的情况。中断分为外中断和内中断。
外中断有非屏蔽中断(NMI)和可屏蔽中断(INTR),通过一根信号线传入对应的芯片引脚。
INTEL规定,NMI信号从0到1后,至少要维持4个始终周期才能被识别。在处理器内不可屏蔽,但在处理器外有NMI的开关。它的触发往往代表着致命的错误,以至于不得不停止所有工作。它的中断号为2,不再进行细分。
对于可屏蔽中断INTR,需要区分中断的类型和来源,因此它需要一个中断处理芯片。INTEL处理器规定的中断号为0~255,而8086使用的8259芯片负责提供其中的15个,但并不固定。软件编写的时候可根据需要访问处理芯片的端口号,用in或out指令改变状态。多年来设备不断更迭,但中断代理芯片的引脚0始终和实时时钟芯片rtc链接。
中断能否被处理,也和IF标志位有关。IF为0时,所有INTR都会被忽略。IF可以通过cli和sti指令改变
中断执行首先引入中断向量表
中断向量表在内存中保存,其中存放着 256个中断源所对应的中断处理程序的入口地址,因而用预制的程序处理中断将成为可能。
综 ...