- 博客(314)
- 资源 (17)
- 收藏
- 关注
原创 椭圆曲线密码原理
椭圆曲线密码概述⾃从公钥加密被发明之后,⼀些合适的数学函数被提出,譬如:素数幂和椭圆曲线乘法。这些数学函数都是不可逆的,就是说很容易向⼀个⽅向计算,但不可以向相反⽅向倒推。基于这些数学函数的密码学,使得⽣成数字密钥和不可伪造的数字签名成为可能。⽐特币正是使⽤椭圆曲线乘法作为其公钥加密的基础算法。 在⽐特币系统中,我们⽤公钥加密创建⼀个密钥对,⽤于控制⽐特币的获取。密钥对包括⼀个私钥,和由...
2018-04-03 11:25:14 4847
原创 公钥密码体制RSA算法原理
RSA概述假如你已经了解了对称密码体制,你肯定知道对称密码中存在着密钥分发和管理的难题。为了解决这一问题,Whitefield与Martin Hellman在1976年提出了一个奇妙的密钥交换协议,称为Diffie-Hellman密钥交换协议/算法(Diffie-Hellman Key Exchange/Agreement Algorithm)。这个机制的巧妙在于需要安全通信的双方可以用这个方...
2018-04-03 10:22:47 9781 1
原创 在以太坊上部署第一个去中心化应用Dapp—宠物商店
官方文档:http://truffleframework.com/tutorials/pet-shop 中文翻译:https://learnblockchain.cn/2018/01/12/first-dapp/运行后效果: 注意如果无法显示图片,将src/index.html里面的jquery.min.js路径修改为国内的路径,如:https://apps.bdimg.com/libs/...
2018-03-20 17:26:55 3446 2
转载 用Python从零开始创建区块链
原文地址:https://learnblockchain.cn/2017/10/27/build_blockchain_by_python/ 本文通过python编程实现了区块链的一个原型,通过代码可以形象地理解区块链的工作原理,具体细节请看原文。代码地址:https://github.com/anda0109/pyblockchain 下面是完整代码:import hashlibi...
2018-03-14 17:10:49 694
原创 Ubuntu搭建以太坊开发环境—使用truffle框架
环境ubuntu-14.04 ubuntu-14.04-desktop-amd64.iso ,不多解释。 nodejs用来安装truffle等工具truffle ,目前最好用的以太坊开发框架 ganache ,可以跑开发环境下的私有区块链步骤1、前提是ubuntu已经可以正常使用,包括上网。 2、下载nodejs,按经验apt-get安装的nodejs不可用,估计apt...
2018-03-09 10:33:09 2198
转载 Windows下编译bitcoin
编译windows版的比特币程序,基本上有两种方法,一种是在linux平台(推荐ubuntu 13.10)通过交叉编译的方法来编译,另外一种就是直接在windows平台编译。第一步:安装变编译环境QT和MINGW,msys1、msys是一个在windows平台模拟shell的程序。访问http://sourceforge.net/projects/mingw/files/Install...
2018-03-06 14:55:46 1562
原创 Ubuntu下编译windows版本bitcoin
要编译windows版的比特币程序,基本上有两种方法,一种是在linux平台(推荐ubuntu 13.10)通过交叉编译的方法来编译,另外一种就是直接在windows平台编译。下面就详细介绍一下如何在Ubuntu平台编译比特币程序。官方参考:https://github.com/bitcoin/bitcoin/blob/master/doc/build-windows.mdUbun...
2018-03-06 14:54:53 1497
原创 centos7环境下编译bitcoin
centos7虚拟机安装虚拟机安装完成后需要配置好网络,能连接上互联网后再进行后面操作。vi /etc/sysconfig/network-scripts/ifcfg-ens33 (ens33为网卡名称)TYPE=EthernetBOOTPROTO=static #启用静态IP地址DEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_F...
2018-03-06 09:51:36 1819
原创 10-leveldb repair流程及优化方法
leveldb做为一个单机存储引擎,难免遇到数据损坏的情况:比如意外断电、磁盘坏块等。轻者文件损坏无法读取,严重者则导致数据库无法启动。这个时候就需要进行数据修复了。leveldb提供的修复流程如下:(1) wal日志文件转化为sstable文件(2) 扫描所有的sstable文件(3) 生成MANIFEST文件:由上述流程可知,leveldb修复后会将所有的文件添加到level 0,根据level 0层的规则,由于文件之间key有重叠,读取时会在每个文件都读取一次,速度是很慢的;同时,我们知道Lev
2022-06-13 11:45:00 1155 2
原创 09-leveldb性能优化(三)
本文主要讲述如何设置WriteOptions参数、ReadOptions参数以及compact参数,来提升读写性能。
2022-06-01 22:13:18 811
原创 08-leveldb性能优化(二)
本文主要介绍leveldb写缓冲区大小、块缓存大小、块大小、文件大小等参数的原理,以及如何合理地设置这些参数以达到性能优化的目的。
2022-05-30 12:30:00 1875
原创 07-leveldb性能优化(一)
1-Compaction:清除冗余数据,减少磁盘IOCompaction为什么能提升查询性能,我们从leveldb的原理说起。如图所示,数据写入leveldb的过程如下:数据写入MemtableMemtable达到一定大小后变为Immutable MemtableImmutable Memtable通过Minor Compaction写入0层SSTable数据读取流程如下:从Memtable中查询;从Immutable Memtable中查询;遍历level 0所有文件,若未查找到
2022-05-18 22:01:43 1353
原创 06-Leveldb实现-sstable
本文主要介绍leveldb中sstable文件的组成及格式,数据块、元数据块、元数据索引块、索引块、footer的结构,并结合源码进行分析。
2022-05-14 20:53:26 305
原创 05-Leveldb实现-Memtable
Memtableleveldb数据写入时并非直接落盘,而是先保存在内存中,在内存中的数据按key进行排序。当内存中的数据达到一定大小时,再将这批数据批量写入磁盘。在内存中的数据结构我们称之为Memtable,本节将介绍Memtable的实现。先看代码:class MemTable { public: // MemTables are reference counted. The initial reference count // is zero and the caller must c
2022-05-08 22:13:10 779
原创 04-Leveldb实现-Log
日志文件包含了一系列的32K大小的块。每个块包含了一系列的记录(record):block := record* trailer?record := checksum: uint32 // crc32c of type and data[] ; little-endian length: uint16 // little-endian type: uint8 // One of FULL, FIRST, MIDDLE, LAST data: uint
2022-04-24 12:00:00 535
原创 03-Leveldb原理
01-简介谷歌曾经发布过三篇大名鼎鼎的论文,《GFS-Google FileSystem》、《BigTable》、《MapReduce》,其中BigTable中描述了分布式数据库的实现,而leveldb正是该论文中所描述的tablet的具体实现。同时,leveldb的作者就是《BigTable》论文的作者。leveldb是一个非常简洁且具有代表意义的基于LSM TREE的存储引擎,堪称经典。掌握了LEVELDB,也就掌握了LSM TREE思想的精髓。leveldb存储引擎的原理框架如下图所示:上图简
2022-04-17 08:38:13 659
原创 02-leveldb入门
01-leveldb编译和使用在github下载开源代码:git clone --recurse-submodules https://github.com/google/leveldb.git进入项目根目录,执行以下命令:mkdir -p build && cd buildcmake -DCMAKE_BUILD_TYPE=Release … && cmake --build .以上命令运行之后会编译全部代码包括测试程序,windows下编译生成文件在leveldb
2022-03-20 19:27:48 1568
原创 01-leveldb概述
01-存储背景数据存储是信息时代的一项基础技术,是各种互联网应用背后的重要基石。例如我们每天用到的各种APP,看头条,刷抖音,以及个人的各种电子数据的保存等等,都离不开存储技术。在开发者的角度,数据存储大多是使用数据库,而大家广泛使用的又是比较成熟的关系型数据库,例如mysql、oracle、db2、sqlserver等。一直以来,关系型数据库得到大家的青睐。但随着互联网和信息技术的发展,以及各种新的应用场景的需求,各种数据库不断涌现,也出现了新的数据库类型,比如kv数据库、文档数据库、图数据库、时序数
2022-03-13 19:07:24 1885
原创 Haproxy负载均衡部署
Haproxy安装:useradd haproxy#wget http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.25.tar.gz# tar zxvf haproxy-1.4.25.tar.gz# cd haproxy-1.4.25# make TARGET=linux26 PREFIX=/usr/local/haproxy ARCH=...
2018-10-27 16:10:00 568
原创 ZeroMq的编译及使用
ZeroMq是一个开源的消息队列网络框架,支持进程内和进程间的通信。 源码地址:https://github.com/zeromq/libzmqwindows下的编译: 打开build/msvc,打开工程,编译报错,解决方案如下: 1、添加宏 ZMQ_IOTHREAD_POLLER_USE_SELECT ZMQ_POLL_BASED_ON_SELECT 2、编译成功,链接出错 将...
2018-07-31 17:57:34 3576
原创 ubuntu安装C++ oracle开发环境(oci)
1、oracle官网下载rpm包 http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html 2、安装rpm包 Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb。 sudo apt-get install alien #alien默认没有安装,所以首先要...
2018-07-04 10:07:45 1741
转载 设计模式(十一)——模板方法模式(Template Method Pattern,行为型)
https://blog.csdn.net/k346k346/article/details/60468153
2018-04-12 23:18:39 509
转载 设计模式 (十)——适配器模式(Adapter Pattern,结构型)
https://blog.csdn.net/k346k346/article/details/60465994
2018-04-12 23:08:52 436
转载 设计模式 (九)——外观模式(Facade Pattern,结构型)
https://blog.csdn.net/k346k346/article/details/60462832
2018-04-12 22:35:41 446
转载 设计模式(八)——命令模式(Command Pattern,行为型)
https://blog.csdn.net/k346k346/article/details/60332112
2018-04-12 22:03:39 468
转载 设计模式(七)——单例模式(Singleton Pattern,创建型)
https://blog.csdn.net/k346k346/article/details/60142660
2018-04-10 21:47:41 626
转载 设计模式(六)——抽象工厂模式(Abstract Factory Pattern,创建型)
https://blog.csdn.net/k346k346/article/details/59482370
2018-04-10 21:37:59 313
转载 设计模式 (五)——工厂方法模式(Factory Method,创建型)
https://blog.csdn.net/k346k346/article/details/59119509
2018-04-10 21:32:34 307
转载 设计模式 (四)——简单工厂模式(Simple Factory,创建型)
https://blog.csdn.net/k346k346/article/details/58651682
2018-04-10 16:01:10 316
转载 设计模式 (三)——装饰者模式(Decorator,结构型)
转载自:https://blog.csdn.net/k346k346/article/details/58056854
2018-04-10 15:44:07 250
转载 设计模式 (二)——观察者模式(Observer,行为型)
转载自:https://blog.csdn.net/k346k346/article/details/570804911.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。观察者模式(Observer Pattern)属于行为型模式,在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新。例如,在实际生活中,报纸出版社和订阅者之间存...
2018-04-10 15:36:49 458
转载 设计模式 (一)——策略模式(Strategy,行为型)
转载自:https://blog.csdn.net/k346k346/article/details/552709621.概述使用设计模式可以提高代码的可复用性、可扩充性和可维护性。策略模式(Strategy Pattern)属于行为型模式,其做法是将类所需的行为或者算法一个个封装成单独的类,并将其作为类的数据成员,使得类的行为可以在不改变类设计的情况下灵活变化。2.实例上...
2018-04-10 14:45:12 343
原创 const和staic
constConst:常量类型,被const修饰的部分是不可以修改的,只在声明中使用。Cont int* p,常量指针,即p是一个指向const int的指针,p的值是可以修改的,但是其指向的值是不能修改的。Int* const p,指针常量,即p是一个指向int的指针常量,p的值是不可以修改的,但是p所指向的内容是可以修改的。在类的成员函数后用const修饰,即将成员函数声明为c...
2018-04-10 11:42:26 378
原创 const、static变量在内存中的位置
以下面代码说明各变量的存放位置:static int val_a = 1 ; // 初始化的静态变量 int val_b = 2 ; // 全局变量 const int val_c = 3 ; // const 全局变量 static int val_d ; // 未初始化的静态变量 int val_e ; // 未初...
2018-04-10 10:52:26 1967
原创 主流区块链(公链)项目总结
Bitcoin:比特币项目官网:https://bitcoin.org 发起者:中本聪Ethereum:以太坊项目官网:https://www.ethereum.org/ 发起者:Hyperledger:超级账本项目官网:https://www.hyperledger.org/EOS:柚子项目官网:https://eos.io/QTUM:量子链项...
2018-04-06 14:24:07 5453
转载 什么是拜占庭将军问题
原文:https://learnblockchain.cn/2018/02/05/bitcoin-byzantine/接触区块链的同学,多少都听说过拜占庭将军问题,经常看到或听到某某区块链使用某某算法解决了拜占庭将军问题,那么究竟什么是拜占庭将军问题呢?什么是拜占庭将军问题也被称为“拜占庭容错”、“拜占庭将军问题”。 拜占庭将军问题是Leslie Lamport(2013年的图灵...
2018-03-20 22:40:13 434
原创 ubuntu下搭建Eclipse C++开发环境
ubuntu下使用Eclipse下搭建开发环境基本上网上教程一大堆,但是复杂度太大,因为很多教程都是从JDK开始安装一直到最后,而且很多都是从别的linux发行版上弄来的方法,各种编译直接吓死人有木有,其实ubuntu的方便之处很大程度上在于atp的使用,抹杀了atp-get的ubuntu那就太鸡肋了。 OK,正题,再ubuntu下搭建Eclipse C++开发环境。 ...
2018-03-08 16:53:28 3266
原创 Ionic开发环境搭建
Ionic是基于web技术开发移动应用的跨平台框架,可开发手机web、Ios、Android应用程序。1、Ionic环境安装Ionic开发依赖于Node.js环境,因此需要先安装Node.js,在Node.js环境下执行命令:npm install -g cordova ionicnpm是一个包管理器,这里使用npm安装cordova和ionic,-g表示全局安装,全局安装...
2018-02-09 10:52:29 1667 2
原创 json_encode不对中文进行转码、json_decode解析json字符串返回NULL的处理方法
josn_encode不对中文进行转码用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式。 在PHP5.4及以上, Json新增了一个选项: JSON_UNESCAPED_UNICODE, 故名思议就是, Json不要编码Unicode。代码如下:$json = json_encode($arr, JSON_UNESCAPED_UNICO
2017-10-15 22:09:06 2303
转载 thinkphp5行为扩展实现html静态缓存
参考文章:http://www.yunshare.net/Article/12/7.html 具体方法如下: 1、在application/config.php中添加如下配置: //以下为静态缓存配置 'app_debug' => false,//false为开启静态缓存模式 'html_cache_on' => true, // 开启静态缓存 'html_cache
2017-09-04 15:28:45 6540 1
xulrunner-1.9.0.17.en-US.win32.sdk.zip
2015-12-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人