自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

smilejiasmile的博客

Coding your imagine

  • 博客(385)
  • 资源 (1)
  • 收藏
  • 关注

原创 这将是一个新的世界

智能社会,互联互通 Part One  这是一个以汇集资源以及共享社区的 HOME. 在这里你可以通过评论的方式跟我互动,或者通过 Email 或者 WeChat 公众号等多种方式联系到我。我们将会共建社区、这将是一个自由、开源、价值共享、信息互惠的年轻人的社区。在这里我们可以真诚的交流想法、分享知识及其见解、消除人性偏见的障碍,构建真正有效的对话模式,让信息在你我的脑中自由的...

2019-05-25 14:38:35 364

原创 Rust 中 Actor 并发模型的实践与使用

Actor模型是一种并行计算模型,提供了一种用于构建并发、分布式系统的形象办法。在Actor模型中,计算被示意为独立的、轻量级的计算单元,称为 Actor,能够发送和接管音讯并进行本地计算。作为一种通用的消息传递编程模型,被广泛用于构建大规模可伸缩分布式系统。其核心思想是独立保护隔离状态,并基于消息传递实现异步通信。

2024-04-21 16:20:34 832 1

翻译 用 Anchor 合约开发框架构建 Solana 合约程序

XRAY 上的 Anchor IDL 示例XRAY 上的 IDL 示例[41]Anchor 通过有效的抽象简化了程序开发。也就是说,Anchor 简化了复杂的区块链编程概念,使其更易于访问和操作。例如,Anchor 使用接口定义语言(IDL)[42] 来定义程序的接口。在构建程序时,Anchor 将生成代表程序 IDL 的 JSON 文件。基本上,这种结构可以在客户端上使用,定义如何与程序的函数和数据结构进行交互。Anchor 还提供了更高级的抽象来处理状态管理。

2024-03-23 17:13:41 78

原创 以太坊的扩容方案之二层网络 L2-Rollup & zkEVM

当前的 ETH POS 时代,当用户向以太坊提交新交易时,连接到网络的计算机(也称为节点)将交易存储在称为内存池的本地数据结构中。内存池负责维护未确认交易的列表,然后随机选择运行节点和抵押 32 ETH 的验证者,通过它们将内存池中的交易批量处理成块。选择将新区块添加到以太坊区块链的验证者有时被称为「提议者」。为了从最大可提取价值 MEV 中获得额外奖励,一些提议者在构建区块时将依赖第三方区块构建器而不是本地内存池。区块按顺序排列,并通过父块(前一个区块头)链接在一起。

2024-03-12 19:28:44 164

原创 Golang高频的一些面试题及回答汇总

我们在回答面试题的时候,不能干巴巴的去背八股文,一定要结合应用场景,最好能结合过去做过的项目,去和面试官沟通。这些场景题虽然不要求我们手撕代码,但是解决思路和关键方法还是要烂熟于心的。这篇文章不仅给出了常见的面试题和答案,并且给出了这些知识点的应用场景、也给出了解决这些问题的思路,并且结合这些思路提供了关键代码。这些代码段都是可以直接CV到本地运行起来的,并且都写清楚了注释,欢迎大家动起手来操练起来,不要死记硬背八股文。

2024-02-29 17:48:20 750 1

原创 音视频流媒体之 IJKPlayer FFmpeg Android 编译

【代码】音视频流媒体之 IJKPlayer FFmpeg Android 编译。

2023-11-20 11:34:48 459

原创 Rust 的四大类型的宏 (元编程)

需要注意的是,属性宏和派生宏都是 Rust 中的过程宏(Procedural Macro)的一种。在 Rust 中,除了属性宏(Attribute Macro)和派生宏(Derive Macro)之外,还存在另外两种常见的宏类型:函数宏(Function Macro)和过程宏(Procedural Macro)。需要注意的是,以上示例只是简单的示范,实际使用属性宏和派生宏可能涉及更复杂的代码转换和生成。这是一个更复杂的示例,展示了派生宏可以用于生成更多的代码,例如构建器模式、序列化和反序列化的代码等。

2023-08-25 09:46:50 2233 2

原创 5. zksnark 几种实现算法性能对比

像 zk-SNARK 这样的零知识证明有很多应用:Zcash利用零知识证明 来保护隐私,Coda和Mir利用零知识证明将整个区块链压缩到只有几K字节,0x和Matter则利用零知识证明将许多交易封装为以太坊 上的单一证明。

2023-05-16 23:35:38 569

原创 4. ZKP 程序实例及其相关资料汇总

By ai suggest: zkp library

2023-05-16 23:33:46 426

原创 3. ZKP 之 Plonk 协议实现

PlonK相比起之前的zkSNARK协议来说,主要区别在于如下三点:首先是在将电路解释为多项式的时候,SNARK 协议一般采用R1CS到QAP的做法,最后要证明的多项式形式L(x)×R(x)−O(x)=H(x)T(x)L(x)\times R(x)-O(x)=H(x)T(x)L(x)×R(x)−O(x)=H(x)T(x)而 PLONK 使用的是 Gate Constraints和 Copy Constraints形式,最后要证明的多项式形式为:QL(x)a(x)+QR(x)b(x)+QO(x)c(x)

2023-05-16 23:30:48 625

原创 3. ZKP 之 zksnark 协议实现

zksnark Origin source SNARKs的基本思路是 Computation→ArithmeticCircuit→R1CS→QAP→SNARKsComputation \to Arithmetic Circuit \to R1CS \to QAP \to SNARKsComputation→ArithmeticCircuit→R1CS→QAP→SNARKs用人话说的话,就是将证明知道一个函数的结果,变成证明知道一个满足某种性质的多项式。下面会简略的过一遍这整个流程,只需要有个大概的理

2023-05-16 23:27:44 400

原创 2. Crypto 行业中 ZK 项目及其生态

零知识技术是密码学的一个分支,可以为许多Layer 1 区块链项目解决扩容和隐私问题。区块链可以利用零知识证明技术提升交易吞吐量,在验证用户身份的同时保护用户数据隐私,实现复杂的计算,并让企业既可以利用区块链技术又能保护自身知识产权。在上述所有应用场景中,零知识证明都是不可或缺的关键技术。什么是?零知识证明可以让用户在不透露信息的前提下证明自己知道或拥有信息。

2023-05-16 23:24:43 320

原创 1. ZKP 研究框架及相关内容概述

最初在1980年提出,由Shafi Goldwasser, Silvio Micali和Charles Rackoff。刚开始叫做交互式证明系统 (Interactive proof system)。Prover 和 Verifier 之间交换信息,让 Verifier 相信某种 statement 是真的。而不透露给 Verifier 过多与证明无关的信息。ZK 是解决了这样一个问题:我知道一个Y ,满足FXYZFXYZ,要怎么在不公开Y 的情况下证明这个式子成立。

2023-05-16 23:21:06 329

转载 零知识证明-Semaphore 源代码导读

Semaphore项目由 js 开发,结合零知识证明(zk-SNARK),在以太坊的智能合约的基础上实现Identity。每个Identity可以发送信号。在external nullifier不变的情况下,每个Identity只能发送一次Signal。本文作者为深入浅出区块链共建者:Star Li,他的公众号星想法有很多原创高质量文章,欢迎大家关注。

2023-05-16 23:16:44 197

原创 DID 去中心化身份原理规范及实现方案

是一个全局键值对数据库,这个数据库要么是某个DID兼容的区块链,要么是某个DID兼容的分布式账本,或者是某个DID兼容的去中心化网络(其实这个数据库的位置就是DID标识符中的 example 字段,目前已经有非常多的。因为在这个应用层中,DID既可以用来标识个体的身份、也可以用来标识组织的身份,甚至标识物品的身份(言外之意是不仅可以改变当前的互联网,还可以改变物联网?身份不是由用户自己控制的。当然IV验证用户的方法也是如此:用Holder(即用户)的DID对应的DID文档里的公钥来验证其数字签名的合法性。

2023-05-15 15:47:03 822 1

转载 Solana全方位介绍——共识、钱包、生态、合约

Solana 的智能合约叫做链上程序(On-chain Program),Solana 官方推荐使用 Rust 和 C 来开发Solanan智能合约。开发者使用工具将合约编译成 Berkley Packet Filter (BPF) 字节码(文件以.so为扩展名),并部署到链上。Solana节点的runtime会加载 这个 BPF字节码并执行其逻辑。state是用来将内容存储到对应的文件时,存储格式的定义,类似一个ORM或者所谓的MVC中Model层。

2023-04-26 15:37:30 2531

转载 Solana 中文白皮书翻译

本文提出了一种新的区块链架构,其基础是一种能够验证链上事件发生的先后顺序及时间间隔的新共识算法,称作工作历史证明PoH算法能够将不可信任的时间间隔数据打包为区块链账本——一种只允许添加数据的数据结构。与工作量证明(Proof of Work,PoW)和权益证明(Proof of Stake,PoS)这些原有的共识算法。

2023-04-26 15:34:17 446

原创 intel SGX Tee 可信执行环境概述

在云计算时代,云上数据按照数据所处状态被分为三大类。它们分别是:对于数据的安全,专家和业界在过去几十年的努力使得传输过程中的数据安全得到了保障,比如数据链路层加密,各种各样的传输协议加密的使用,对于存储中的数据安全,很多数据库,文件系统或者磁盘也是可以直接加密的,但是不管数据是在传输状态中还是在存储的时候加密,数据在最终使用的时候,在CPU和内存里的数据都是明文。对数据在使用状态中的保护,实现机密计算(Confidential Computing),硬件辅助是必要的。说到机密计算, 不得不先说可信执行环境(

2023-04-24 14:16:25 1022

原创 IOTex 区块链技术方案及其运行模式

身份认证管理的直接方式是将 IoTeX 区块链作为去中心化的公钥基础设施 (PKI),其中每一个实体都会分配到一个 TLS 证书形 式的加密身份验证,从而获得隐私保护。这个短生命期的证书由内嵌于设备中的长生命期的证书 签发,并在 IoTex 区块根链或子链上发布。用户或其他实体能够访问并且信任这个锚定在区块链 上的短生命期证书,进而鉴真连接到线上的实物,确保设备、服务与用户间的安全沟通,并且保 证其完整性。子链可定制化,具有图灵完备虚拟机的计算层可以支持复杂的控制。子链通过质押根链,参与整个网络。

2023-03-29 17:11:44 741

原创 IPFS 和 Filecoin 的联系和区别

复制证明是一个时间和计算密集型的过程,涉及到将每个扇区复制多次,并生成一个证明,证明这些副本是独立的,并且存储在不同的介质上。在Filecoin中,扇区是存储提供商存储的数据的最小单位。在Filecoin中,有效数据是指存储提供商(storage provider)实际存储的数据,而无效数据则是指存储提供商没有成功地存储的数据。Filecoin是一个去中心化的数据存储和文件共享网络,它使用一种称为Proof of Storage的共识算法来创建一个安全的、可靠的、弹性的数据存储市场。

2023-02-28 14:56:28 1467

转载 P2P网络NAT穿透原理(打洞方案)

若通讯协议的内容中有IP地址的传递,如FTP协议,NAT在转换时还要把数据包内涉及协议地址交互的地方替换,否则协议就会出现地址混乱。NAT的内外网通讯双方不是平等的,允许内网机器主动发起连接访问外网,当NAT没有对应的地址转换映射表项时,会建立一个映射表项,数据包经过NAT地址转换后发送给外网的服务器,连接建立以后可双向传送数据,但却禁止反方向的主动访问:在没有对应地址映射表项情况下,不允许外网主动访问内网主机,因为没有对应的地址映射表项用于转换地址,外网发送的数据包会被丢弃。

2023-02-22 10:06:02 736

转载 DHT 分布式哈希表 (Kademlia) 和一致性哈希

S/Kademlia 提出以上切实可行的解决方案,使得原有的 Kademlia 更具弹性。首先,通过结合公钥密码术使用加密谜题来限制 nodeId 生成。此外,我们通过兄弟列表扩展 Kademlia 路由表。这降低了桶分裂算法的复杂性,并允许 DHT 以安全复制的方式存储数据。最后,提出了一种查找算法,该算法使用多条不相交路径来提高查找成功率。

2023-02-16 14:50:27 539

原创 IPFS 简介及概述

星际文件系统(InterPlanetary File System). IPFS 是一个分布式的网络文件系统, 点到点超媒体协议. 可以让我们的互联网速度更快, 更加安全, 并且更加开放. IPFS协议的目标是取代传统的互联网协议 HTTP。中心化低效, 成本高 (IPFS 将文件分割为小的块, 从多个服务器同时下载, 速度快)Web文件经常被删除 (IPFS 提供了类似 git 的文件历史版本回溯功能)中心化限制了web的成长, 互联网封锁, 管制, 监控 (IPFS可以克服这些web的缺点)

2023-02-11 22:20:18 1123

转载 LeetCode上买卖股票问题汇总

本文对LeetCode中的买卖股票问题做了一个汇总。

2023-02-02 19:07:24 405

转载 【转】如何理解Go中不要通过共享内存来通信,而应该通过通信来共享内存?

从架构上来讲,降低共享内存的使用,本来就是解耦和的重要手段之一,举几个例子MMORPG 服务器逻辑依赖实时计算 AOI,AOI计算模块需要实时告诉其他模块,对于某个玩家:所有逻辑都依赖上述计算结果,因此角色有动作的时候才能准确的通知到对它感兴趣的人。这个计算很费 CPU,特别是 ARPG跑来跑去那

2022-12-06 14:43:49 444

转载 go-metrics在Go性能指标度量中的应用

metrics 是什么?当我们需要为某个系统某个服务做监控、做统计,就需要用到Metrics五种 Metrics 类型Go语言内置expvar,基于expvar提供的对基础度量的支持能力,我们可以自定义各种度量(metrics)。但是expvar仅仅是提供了最底层的度量定义支持,对于一些复杂的度量场景,第三方或自实现的metrics包必不可少。go-metrics包是Go领域使用较多的是metrics包,该包是对Java社区依旧十分活跃的Coda Hale’s Metrics library的不完全Go移植

2022-06-14 11:24:53 1119 1

转载 Docker bind Mounts和volume及tmpfs对比

本文总结了 bind Mounts 和 volume 及 tmpfs 三种 Docker 管理容器数据方式的区别根据官方文档的介绍:相比功能较为有限,创建一个 bind mount 之后,Host 上的一个文件/文件夹就相当于被挂载到容器里了,该文件/文件夹就被容器通过绝对路径引用了,意味着这个文件/文件夹必须实现存在于 Host 上。而使用使用时,会在 Host 主机上新建一个Docker 存储文件夹,文件夹里的内容由 Docker 管理。映射的文件/文件夹不需要存在于 Host 上,它们是按需生成的。

2022-06-02 10:41:36 741

转载 基于Docker的pulsar集群部署方法

GitHub链接docker-sample/pulsar at master · perayb/docker-sample · GitHub准备工作安装最新版本的docker 拉取pulsar和pulsar-manager镜像docker pull apachepulsar/pulsar:2.7.2docker pull apachepulsar/pulsar-manager:v0.2.0部署流程standalone方式部署启动容器:sh startStandal

2022-05-24 11:07:08 2541

转载 深入golang runtime的调度

深入golang runtime的调度

2022-05-13 23:21:03 1039

转载 利用 Go Tool 下的 PProf 和 trace 对 Go 程序进行性能调优

利用 Go Tool 下的 PProf 和 trace 对 Go 程序进行性能调优

2022-05-13 12:22:35 3510

原创 理解 C++ 的 Memory Order 以及 atomic 与并发程序的关系

为什么需要 Memory Order  如果不使用任何同步机制(例如 mutex 或 atomic),在多线程中读写同一个变量,那么,程序的结果是难以预料的。简单来说,编译器以及 CPU 的一些行为,会影响到程序的执行结果:即使是简单的语句,C++ 也不保证是原子操作。 CPU 可能会调整指令的执行顺序。 在 CPU cache 的影响下,一个 CPU 执行了某个指令,不会立即被其它 CPU 看见。  原子操作说的是,一个操作的状态要么就是未执行,要么就是已完成,不会看见中间状态。例如,在 C

2022-01-27 17:36:51 1096

转载 零知识证明系列概述—从初探到 zk-SNARK 入门【9】

一、初探零知识证明前言区块链的发展可谓是日新月异,分布式账本,哈希函数,merkle tree,公钥算法,p2p网络,共识机制,智能合约等等很高大上的名词相信大家一定都不会很陌生。区块链像一个有机体,融合了各种不同的理论技术。零知识证明是构建信任的重要技术,也是区块链这个有机体中不可缺少的一环。抛砖引玉的小故事大家一定对数独游戏不陌生。数独游戏就是有一个9×9的盘面。我们要根据盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(33)内的数字均含1-9,不能重复。

2022-01-24 15:25:32 1358 1

转载 Linux异步IO实现方案总结

一、glibc aio1、名称由于是glibc提供的aio函数库,所以称为glibc aio。glibc是GNU发布的libc库,即c运行库。另外网上还有其他叫法posix aio,都是指glibc提供的这套aio实现方案。2、主要接口glibc aio主要包含如下接口:函数 功能 int aio_read(struct aiocb *aiocbp); 提交一个异步读 int aio_write(struct aiocb *aiocbp);...

2022-01-13 11:30:13 2005

转载 linux 创建一个垃圾篓防误删及其误删文件恢复

一、创建一个垃圾篓给你的linux创建一个垃圾篓/回收站,防误删创建一个垃圾回收站,保存被删除距今3天的文件,过期则被删除1. 在你的主目录下,创建文件夹 .trashcd ~mkdir .trash2. 在你的常用脚本目录下创建这俩脚本#!/bin/bashTRASH_DIR="/home/lixy/.trash"for i in $*; do STAMP=`date +%s` fileName=`basename $i` if [[ -d

2021-11-05 14:46:29 571

转载 Linux 文件系统之 inode 概述

inode是一个重要概念,是理解Unix/Linux文件系统和硬盘储存的基础。我觉得,理解inode,不仅有助于提高系统操作水平,还有助于体会Unix设计哲学,即如何把底层的复杂性抽象成一个简单概念,从而大大简化用户接口。下面就是我的inode学习笔记,尽量保持简单。理解inode作者:阮一峰一、inode是什么?理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。操作系统读取

2021-11-05 14:41:38 2075

转载 (四)Go 语言编译流程简述

一、概述Go 语言编译的最后一个阶段是根据 SSA 中间代码生成机器码,这里谈的机器码是在目标 CPU 架构上能够运行的二进制代码,中间代码生成一节简单介绍的从抽象语法树到 SSA 中间代码的生成过程,将近 50 个生成中间代码的步骤中有一些过程严格上说是属于机器码生成阶段的。机器码的生成过程其实是对 SSA 中间代码的降级(lower)过程,在 SSA 中间代码降级的过程中,编译器将一些值重写成了目标 CPU 架构的特定值,降级的过程处理了所有机器特定的重写规则并对代码进行了一定程度的优化;在 S

2021-10-14 18:36:07 1367

转载 WebAssembly 系列(五)为什么 WebAssembly 更快?

翻译原文:http://huziketang.com/blog/posts/detail?postId=58c8b98da6d8a07e449fdd25英文原文:What makes WebAssembly fast?本文是关于 WebAssembly 系列的第五篇文章(本系列共六篇文章)。如果你没有读先前文章的话,建议先读这里。如果对 WebAssembly 没概念,建议先读这里。上一篇文章中,我介绍了如何编写 WebAssembly 程序,也表达了我希望看到更多的开发者在自己的工程中同时.

2021-10-14 18:10:11 144

转载 (三)Clang/ LLVM编译流程简述

LLVM概述 LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time) 以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。 传统编译器设计 编译器不同于解释器,解释器可以将高级语言边转译边执行。但是编译器需要将所有的源代码编译成机器代码之后,然后才能执行,所以如图不管传统的还是LLVM都一定是源代码输入,输出是机器代码(..

2021-10-14 18:07:10 2355

原创 (二) GNU/GCC 编译器及其编译流程概述

GNU/GCC编译过程可以被细分为四个阶段:◆ 预处理(Pre-Processing)◆ 编译(Compiling)◆ 汇编(Assembling)◆ 链接(Linking)Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件 进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其它常用的编译器一样,GCC也提供了灵活而强大的代码 优化功能,利用它可以生成执行效率更高的代码。g...

2021-10-14 18:03:59 2542

原创 (Outlook) 详解三大编译器:gcc、llvm 和 clang

编译器一般构成传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对得到的中间代码进行优化,使代码更加高效;后端则是将已经优化的中间代码转化为针对各自平台的机器代码。GCCGCC(GNU Compiler Collection,GNU编译器套装),是一套由 GNU 开发的编程语言编译器。GCC 原名为 GNU C 语言编译器,因为它原本只能.

2021-10-14 17:34:16 2707

机器学习笔记(经典机器算法和大数据算法)

涉及机器学习的各种经典的算法,其中,有 logistics 回归,决策树、随机森林、XGBoost、SVM、主题模型、隐马尔可夫链、贝叶斯网络、聚类算法等等

2018-09-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除