失踪人口回归...,2022年几乎没怎么好好写博客,一方面原因是因为科研,另一方面...懒了懒了我错了。年底中招奥密克戎,最近也是才缓过劲来,真是坎坷的一年。本科之前其实接触过C语言的网络编程,带课的李金库老师讲的很好,记得当时特别地对I/O多路复用(select)留下了很深的印象。今天复习一下Java中网络编程的相关理论和代码,包括最基础的Sokcet使用以及三种I/O模型。(ps:我gitee的博客由于部分文章没法过审核,因此gitee博客以后可能就不会更新了,我仍然使用github博客为主。
学习一下Numpy库的使用,该库在机器学习领域有不小的用处,可以高效的进行向量、矩阵等之间的运算操作。最近在学习强化学习的部分,代码实现刚好有用到。
Bloom Filter(布隆过滤器)是一种空间利用很高的数据结构,使用一个数据来表示一个集合,用于判断一个元素是否存在于这个集合中。但是也有妥协:在判断一个元素是否属于该集合时有可能会误判(false positive),故不适合于"零错误"的场景,在能够容忍低错误率的场合下,可以通过极少的错误来换取较高的存储空间利用率。google的Guava中就有
BloomFilter
这个类。一个比较常见的应用是缓解Redis等缓存中缓存击穿的问题。
zk-SNARKs即"zero knowledge Succinct Non-interactive Argument of Knowledge",第一次见到是在ZCash的介绍里
Zcash is the first widespread application of zk-SNARKs, a novel form of zero-knowledge cryptography. ...
,他给出了简洁的非交互式零知识证明的办法,属于零知识证明的一种。zk-SNARKs的第一个应用就是Zcash,可以做到毫秒级的验证效果,但是产生这个证明的过程较为复杂。这篇开始学习一下流程。大致上流程如下:
Computation计算问题 -> Arithmetic Circuit代数电路 -> R1CS -> QAP -> zk-SNARK