numba
numba是一个python的JIT编译器,用numba加速的Python函数可以达到接近于机器码的运行速度。只用在python函数上加上 @jit的装饰器,就可以将该函数编译到本地机器码运行。numba甚至还支持cuda目标,将python代码编译到cuda平台。 numba效果 12345678910111213141516171819202122232425import numbaimport numpy as np# 普通的 Python 函数 - 计算数组平方和def sum_squares(arr): result = 0.0 for i in range(len(arr)): result += arr[i] ** 2 return result# 使用 Numba JIT 加速@numba.njit # 使用 "no-python" 模式获得最大速度def sum_squares_numba(arr): result = 0.0 for i in range(len(arr)): ...
Python基础语法拾遗
Python装饰器 装饰函数 Python装饰器类似与Rust的过程宏(Procedural Macro),用于动态生成代码。其基础语法如下: 1234567891011121314151617def decorator_function(original_function): def wrapper(*args, **kwargs): # 这里是在调用原始函数前添加的新功能 before_call_code() result = original_function(*args, **kwargs) # 这里是在调用原始函数后添加的新功能 after_call_code() return result return wrapper# 使用装饰器@decorator_functiondef target_function(arg1, arg2): pass #...
机器学习简介
...
Axum
axum是一个rust的现代web框架,具有API简单,与tokio异步生态兼容性强等优点。 要使用Axum,你至少需要现在项目依赖中添加一下几个依赖: 1234[dependencies]axum = "<latest-version>"tokio = { version = "<latest-version>", features = ["full"] }tower = "<latest-version>" 然后你可以使用以下Axum代码启动一个HTTP服务器: 123456789101112131415use axum::{ routing::get, Router,};#[tokio::main]async fn main() { // build our application with a single route let app =...
Tokio Cheating Sheet
创建异步运行时环境 使用默认运行时环境: 12// 创建默认多线程异步运行环境let runtime = tokio::runtime::Runtime::new().unwarp(); 使用Builder,提供更多可配置选项: 123456789101112// 创建带有线程池的runtimelet rt = tokio::runtime::Builder::new_multi_thread() .worker_threads(8) // 8个工作线程 .enable_io() // 可在runtime中使用异步IO .enable_time() // 可在runtime中使用异步计时器(timer) .build() // 创建runtime .unwrap();// 或者创建单线程的runtimelet rt = tokio::runtime::Builder::new_current_thread() .build() .unwrap(); 使用注解 annotation...
共识协议
介绍 共识协议是保证区块链中保证多台计算机(分布式系统)在存在网络延迟的情况下,仍然能保证状态一致的算法。分布式系统中的共识协议根据解决问题的不同可以分为两大类,一种是崩溃容错协议(Crash Fault Tolerance, CFT),另一种是拜占庭容错协议(Byzantine Fault Tolerance,...
二层扩展
...
以太坊
以太坊诞生于2014年。2014年,19岁的Vitalik Buterin率先在一片文章中提出针对比特币的改进以及对区块链未来的构想。这篇文章中提出可以针对比特币的脚本验证中所使用的栈虚拟机做出改进,以建造一个图灵完备的虚拟机。这样,区块链中的虚拟机将不再局限于脚本的验证,而是可以执行任何计算机能完成的程序。这样的区块链可以作为其他区块链应用的载体,还可以支持一条链上不同区块链应用之间的互相操作。这个想法得到了Gavin Wood的支持,并且在同年2014年上半年,Gavin Wood发表了一份详细的关于新区块链的技术规范,并且在2014年下半年,Gavin...
比特币
密码学基础 现代密码学中,我们通常要求一个加密的系统满足一下几点要求(CIA): Confidentiality,保密性,及信息不能泄露给不应该知道这个信息的人。 Integrity,完整性,及数据在传输的过程中不能被篡改,如果被篡改,通信双方应该立马能发现。 Accessiblity,可通达性,及系统应该免于DDos等攻击,通信双方可以保持通信畅通。 (也有说Authority的,权威性,及保证信息来源真实可信) 现代密码学和密码加密技术通常被分为两类:对称加密和非对称加密。对称加密是指用于加密和解密的密钥是一样的,对称加密中加密和解密通常是“对称”的操作。非对称加密中,加密和解密的密钥是不一样的。非对称加密中,存在一对密钥,其中一个用于加密,另一个用于解密。用其中一个密钥加密的信息,只能用另一个密钥解密,而反过来用另一个密钥加密的信息,也只能由当前密钥解密。 对称加密中又通常分为流加密(stream cipher)和块加密(block cipher),常见的流加密算法有chacha20。chacha20 中,通过一段固定的伪随机 2...