自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 Ethereum 源码分析之trie

包位置:go-ethereum/trie该包用New方法在数据库(database)构建一个trie.无论何时trie执行一个commit操作,生成的节点都会在集合中被收集并返回.一旦trie被提交,它就再也不会被使用(Once the trie is committed,it’s not usable anymore.)Callers 不等不在更新的trie database上重新创建一个new root的trie.

2023-10-29 19:49:59 216

原创 Ethereum 源码分析之ethdb

leveldb是最常用和成熟的选项,而memorydb则适用于对速度要求较高且数据不需要持久化的场景.github.com/syndtr/goleveldb/leveldb/batch.go文件。我们从go-etheruem/ethdb/leveldb/leveldb_test.go中。ethdb package 存放在位置 go-ethereum/ethdb中。即go-ethereum/leveldb是对goleveldb的一层封装.,且排序的顺序是可以自定义的.

2023-10-29 19:40:35 251

原创 Ethereum 源码分析之EVM

以太坊虚拟机规定了从一个区块到另一个区块计算新的有效状态的规则. 以太坊的状态是一个大型的数据结构,它不仅保存所有账户和余额.而且还保存一个机器状态,它可以根据预定义的一组规则在不同的区块之间进行更改,并且可以执行任意的机器代码.

2023-10-28 16:29:24 705

原创 Fabric 搭建测试网络并部署智能合约

后,对Go采用Go module包管理器(go mod init),然后在module目录下执行命名(go mod vendor),下载依赖至module的目录下其中Module和Vendor部分我写在。-C:通道名 -n:链码名 --peerAddress:指明背书节点的IP地址和端口号, --tlsRootCertFiles:由于本测试网络中开启了。-ccn:链码命名 -ccp:链码路径 -ccl:如果第一次部署链码,需要安装链码的依赖即语言类型,此处选择的是Go .

2022-11-05 19:31:37 1552 1

原创 快速入门pytorch,建立自己的深度学习模型

的所有张量(tensor)都会被跟踪它们的计算记录和支持梯度计算.但很多时候我们不需要做这些.比如说,我们已经训练完整个模型了,只需要把这个模型应用在一些输入数据上时,​ numpy的维度与轴数一致.以维度(3,4,5)的三维数组为例,它有3个维度,因此,它的轴有3个,即”轴0“,”轴1“,”轴2“长度分别为3,4,5。​ 为了优化我们神经网络的权重参数,我们需要计算我们损失函数中参数的梯度,比如,我们需要固定。numpy数组的某个轴,指的是:该数组的某个维度的方向,其方向从索引号由低到高。

2022-10-28 22:58:41 945

原创 Python基础:列表、元组、字典比较以及API含义

数据结构比较:

2022-10-23 16:52:49 249

原创 Conda(从理论到实践一步到位)

参考:https://code.visualstudio.com/docs/python/environments#_create-a-conda-environment。是本地存放一系列已经安装的conda包的文件夹.conda environment之间是安装或者卸载包是互不影响的.可以快速地启动或者停用环境,并且能够快速地切换.https://repo.anaconda.com/pkgs/ 这个可能需要付费许可证.参考:https://docs.conda.io/en/latest/

2022-10-21 22:59:42 1452

原创 Python Environment & Interpreter

在python中,Interpreter下面有合适的标准包和其他的第三方包.因此必须要选对合适的interpreter路径才能运行python代码。在一个新的终端,你都是运行在那个翻译器的全局环境中.在这个终端中安装或卸载的任何软件包都会影响全局环境,可以通过指定program属性:通常在默认配置中使用的值 ${file} 使用编辑器中当前活动的文件。带有参数**–port 1593**,那么在launch.json中添加如下属性.选择解释器的过程就是设置该工作区的Python扩展将使用哪个解释器.

2022-10-21 20:38:52 927

原创 学会Visual code上调试(debug)以及launch.json

VS内部自带对Node.js runtime的debugger工具可以调试JavaScript,TypeScript以及任何其他被转译为 JavaScript 的语言。请注意 type 属性不能放在特定于平台的部分中,因为 type 间接决定了远程调试场景中的平台,这将导致循环依赖。**复合启动配置列出了应该并行启动的两个或多个启动配置的名称。以下的文档都是以Node.js debugger为例,但是大多数的概念和特点也能运用到其他调试器上.在操作系统特定范围中定义的属性会覆盖在全局范围中定义的属性。

2022-10-21 20:32:52 3105

原创 Cuckoo Filter(布谷过滤器)

当item x 和y有相同的fingerprint时,但item x已经插入到bucket且item y没有插入bucket,如果此时执行delete(y),则会出现删除真实存在的item,出现false negative。如果bucket1和bucket2中没有一个候选桶是empty,则选择其中一个候选桶 b,然后先将该桶的原元素插入到它对应的另外一个候选桶中,如果另外一个候选桶不是空的则递归执行该过程,然后再将x插入到候选桶b中。假设:bucket1:=h1(x),bucket2:=h2(x)

2022-09-07 16:41:02 2255

原创 Linux bash学习一篇即可

对变量赋值且变量的作用域仅局限于该行且make.bash脚本中,如果make.bash脚本中需要引用这些变量则用${}形式引用。在一条命令行中前半部分是变量赋值,后面是一个脚本执行时?格式if[条件表达式];...........................

2022-07-24 19:17:56 1666

原创 Dockerfile Reference(中文手册)

Dockerfile Reference(中文手册),介绍了如何书写Dockerfile,便于Instruction查阅

2022-07-10 22:19:08 1050

原创 Distributed_事务_共识(主从复制共识问题)

《数据密集型系统应用设计》主从复制中的共识问题

2022-07-06 20:53:41 243

原创 Distributed_复制_无主复制(读写quorum)

无主复制系统中,设置w、r的参数保证读取请求可以获得最新值

2022-07-06 16:10:33 501

原创 Distributed_事务_并发控制(隔离性)

《数据密集型应用系统设计》事务章节中并发控制的学习笔记

2022-07-06 14:49:30 379

原创 Makefile入门

关于Makefile

2022-06-10 11:11:22 324

原创 Docker-一篇即可熟悉Docker

Docker基本指令

2022-06-10 10:44:38 403

原创 Distributed_事务_共识(原子提交问题)

关于事务一致性中共识问题中的原子提交问题

2022-06-10 09:45:49 178

原创 Distributed_事务__共识(一致性)

分布式系统中一致性相关理论知识

2022-06-10 09:42:39 352

原创 Go module管理包下如何import

如何import包

2022-06-10 09:35:12 180

原创 Go依赖管理必不可少的文件-go.mod

go.mod文件

2022-06-10 09:25:21 787

原创 Go Module一篇就够

Go module是Go管理依赖包的便捷方法。

2022-06-10 09:19:39 2338 1

原创 git 常见指令

git 常见指令git checkout:创建分支git checkout xxx :转换到xxx分支git checkout -b xxx :将当前分支创建出xxx分支并切换到xxx分支git checkout -b xxx 远程仓库名/远程分支名 :将远程仓库/远程分支的基础上创建出xxx分支(与远程仓库的特定分支建立联系)并切换到xxx分支将某个文件恢复到某个版本git checkout xxx yyy:把yyy文件恢复到commit版本号为xxx的版本把工作区的文件恢复到上一次提

2022-05-16 16:27:18 1322

原创 性能测试(如何合理测量系统最大吞吐量?)

性能测试(如何合理测量系统最大吞吐量?)性能指标:吞吐量、延时以及并发度​ 并发度=延时*吞吐量 :表示在延时时间内可以完成的请求数​ 延时(latency):一般采用的是TP50,TP99。TP50表示处理50%的网络请求所需的最低耗时,TP99表示处理99%的 网络请求所需的最低耗时。由于平均值易受极端数值的影响所以不采用平均延时。=>表征系统的稳定性​ 吞吐量(TPS):表示单位时间内处理请求数.=>表征系统的处理速度​ 只有当系统处于稳定时,吞吐量才有意义.

2022-05-06 15:13:53 5287

原创 Go_crypto_x509标准库源码分析(1)

Go_crypto_x509标准库源码分析(1)_X509证书结构以及各个字段含义X509证书X509证书是CA颁发的一种数字证书标准为什么需要X509证书呢(为什么需要数字证书呢)?X.509证书、ASN.1以及DER编码格式的关系ASN.1是一种标记语言,基于这种标记语言可以进行数据表示、编码、传输和解码DER是一种属于ASN.1的编码格式X.509证书是一种密码学中的公钥数字证书标准,规定了一个数字证书需要哪些信息,而这些信息的编码格式是可以采用ASN.1中的DER编码格式X.

2022-04-19 14:47:23 2694

原创 FabricV2.2_X.509:为什么需要X.509证书?

FabricV2.2_X.509:为什么需要X.509证书?先抛出结论哈!FabricV2.2 X.509证书是直接调用go standard lib crypto/x509包实现的X.509证书是解决:在基础的数字签名模型过程中可能会出现公钥被替换的问题首先了解一下为什么要X.509证书?模型:背景:在基础的数字签名模型下A向B发送消息的过程A用自己的私钥签名生成数字签名(R,S)然后向B发送(Msg,(R,S)),其中Msg为消息B方接受到(Msg,(R,S))时,用

2022-04-18 15:56:33 2234

原创 算法4_对称加密算法之SM4

算法4_国家密码学SM4(对称加密算法)SM算法描述SM4分组密码算法是一个迭代分组密码算法,由加解密算法和密钥扩展算法组成.对称加密算法明文输入(bit)密文输出(bit)初始密钥长度(bit)回合密钥(bit)迭代次数SM412812812812832次迭代运算和1次反序变换AES25612812825612814次(Add Round Key,Sub Byte,Shift Rows,Mix Column)上图摘自:吕述望,苏波展

2022-04-17 20:13:01 9218

原创 算法3_对称加密算法之AES

算法3_AES(对称加密算法之高级加密算法)AES的种类AES种类密钥长度(bit)分组长度(bit)加密轮数明文长度(bit)密文长度(bit)AES-12812812810128128AES-19219212812128128AES-25625612814128128分组长度和明文长度是一样。对于明文以128位为一个分组作为AES对称加密算法的输入.FabricV2.2中AES的密钥长度为32Bytes即256位,所以以

2022-04-17 16:42:21 5277 1

原创 FabricV2.2BCCSP套件之如何具体选择AES、ECDSA、SHA

1.FabricV2.2具体使用的密码学算法虽然FabricV2.2中支持的许多密码学算法,但是实际使用时默认只是分别对对称加密算法、非对称加密算法以及哈希算法的这三种加密算法大类中各自挑选几个小类算法首先Fabric中的代码采用的是factory设计模式来产生具体的BCCSP套件1.1.研究BCCSP中Factory文件夹​ 由于在编译Fabric过程中默认会ignored pkcs11.go和pkcs11factory.go by the build tool because of the

2022-04-17 11:54:51 5695

原创 FabricV2.2中使用的密码学算法和国密算法对应关系

1.国密算法**常用的密码学**可以分为:对称加密、非对称加密以及哈希算法1.1.Fabric密码学算法和国密算法对应关系根据原生Fabric项目中/bccsp/opts文件中可知,原生Fabric支持的密码学算法有对称加密AES,非对称加密ECDSA以及哈希算法SHA:密码学算法分类原生Fabric密码学算法国密算法场景总结对称加密算法AESSM4数据加密加密业务数据非对称加密算法ECDSASM2提案交易、背书交易、创建区块、tls和证书验证提

2022-04-17 11:49:41 6278

原创 分布式唯一ID的生成之雪花算法(Go实现)

分布式唯一ID的生成背景:在分布式架构下,唯一序列号生成是我们在设计一个尤其是数据库使用分库分表的时候会常见的一个问题特性:全局唯一,这是基本要求,不能出现重复数字类型,趋势递增,后面的ID必须比前面的大长度短,能够提高查询效率,这也是从MySQL数据库规范出发的,尤其是ID作为主键时**信息安全,**如果ID连续生成,势必会泄露业务信息,所以需要无规则不规则高可用低延时,ID生成快,能够扛住高并发,延时足够低不至于成为业务瓶颈.雪花算法:​ snowflake是推特开源的分布式

2022-04-16 17:45:03 1972

原创 FabricV2.2测试网络搭建以及开发环境部署

部署测试网络Prerequisites:安装docker、docker-compose git、cURL要求docker版本下载Fabric源码,Binaries和Docker Images### 下载boostrap.sh脚本文件.并执行文件(下载Fabric和Fabric-CA的二进制文件、拉镜像)curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/release-2.2/scripts/bootstrap.

2022-04-16 17:38:00 8884 1

原创 算法2_非对称加密算法之ECDSA(椭圆曲线数字签名算法)

ECDSA(椭圆曲线数字签名算法)AES(高级加密标准): =>对称加密​ 对业务数据进行加密,防止他人可以看见ECDSA(椭圆曲线数字签名算法):=>非对称加密算法(公钥和私钥)​ 验证数据的真实性,防止业务数据被篡改SHA(安全哈希算法)=>哈希算法1. 作用:因为ECDSA椭圆曲线数字签名算法获得公钥和私钥对是一一对应的,不存在"不同私钥但是公钥相同的情况"所有伪造ECDSA签名是根本不可能的2. 解释ECDSAECDSA当中有两个词要注意:Curve(曲线

2022-04-16 17:25:39 10113

后端技术栈_八股文_思维导图_面试

本资源主要是本人自己整理的后端技术栈相关的理论知识,供大家面试使用。 主要包含有:数据结构与算法,操作系统,数据库基本理论,计算机网络,Git,Linux,Makefile,分布式系统相关的基础理论(一致性算法、缓存、死锁和活锁、消息队列)。 以上基础理论主要以思维导图的形式存在,便于后端技术栈体系化以及便于记忆。 分布式系统中包含有ddia《数据密集型应用系统设计》的学习笔记

2022-07-08

空空如也

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

TA关注的人

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