自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 Boost 程序库总论

关于Boost . 获取方式. Boost官网下载:Boost C++ Libraries压缩包解压即可目录结构.boost_1_78_0 //下载版本解压总目录|——boost //最重要目录,组件主要源码,开发主要看这里 |——accumulators //累加器库 |——algorithm //算法库 |——align //内存对...

2022-03-06 21:55:43 316

原创 VS2013 下使用Cryptography API: Next Generation (CNG)的环境配置

1、简介: Windows下使用加密API,从Windows Server 2008和Windows Vista开始支持CNG,下一代Windows加密API(CNG),这是对原来CryptoAPI的长期替代。具体介绍细节可见官网:https://docs.microsoft.com/en-us/windows/win32/seccng/cng-portal。这里只要总结一下开发环境的配置。2、配置要点:(1)下载Cryptographic Provider Developmen...

2020-05-25 19:56:01 754

原创 精简Docker心得总结

一、总体认识1、docker容器,类似虚拟机但没有虚拟机那么笨重,占用资源少,启动快。2、一个程序的运行环境打包到image之后,可以直接被docker运行使用,无需再配置运行环境。想象一下,相当于操作系统的一份ghost文件。3、docker pull到的image文件,可以运行多个实例。每个image的运行实例之间互相独立(每个实例相当于一个独立的操作系统环境)。4、微服务思路...

2020-02-13 12:02:42 401

原创 Fabric基本原理

一、Fabric架构二、Fabric网络三、Fabric模块四、Fabric交易流根据Hyperledger Fabric 1.0架构,Fabric交易的整个生命周期可以分为7个阶段。如下图反应了交易的整个生命周期以及交易于账本的交互。(1)在交易的第一阶段,客户端应用发起智能合约A的一个交易请求给背书节点E0。智能合约A配置的背书策略要求...

2019-12-17 18:41:31 1175

原创 Thrift框架干货总结一:总体认识

一、thrift基本点介绍1、是一个通信框架,跨语言(支持28种编程语言),跨平台(win、linux不在话下)。2、灵活(IPC、RPC方式),实现通信的底层可以是通过文件实现通信、通过内存共享实现通信、通过管道实现通信、通过TCP/IP实现通信等等,废话不多说,看下图感受一下灵活的支持程度吧。二、语言参考1、类型系统Thrift类型系统由预定义的基本类型,用户定义的结构...

2019-11-07 12:01:20 623

原创 SNMP简单网络管理协议的介绍以及API使用

一、协议原理要点 SNMP,简单网络管理协议,是TCP/IP协议簇的一个应用层协议。已经有3个版本,SNMPv1、SNMPv2、SNMPv3。 SNMP中定义了五种消息类型:Get-Request、Get-Response、Get-Next-Request、Set-Request和Trap ,这5种消息类型在管理进程和代理进程之间交互(常见的例子如电脑主机上的管理进程与打印机上...

2019-11-05 10:24:21 1102

原创 关于向IO设备发送命令码和接收返回的时机问题

一、背景 在对IO设备(如最近搞的串口读卡器)的操作中,通常是向设备发送命令,然后接收设备的返回。对于程序而言,无非就是向设备(可以理解为文件,linux都说读写皆文件嘛)的写命令,并从设备读结果。二、分析 就设备而言,设备收到命令之后,对于硬件实际处理比较耗时的操作,有两种处理方式: 一种是立即提供结果码给应用程序读,代表我收到了命令并开始...

2019-10-18 11:23:56 325

原创 关于宽字符与多字符、char与string的问题

一、多字符与宽字符1. 电脑发展的初期ASCII编码,每个字符占一个字节,最多只能表示256个字符。汉字等字符采用两个字节共同表示一个汉字的方法。二个字节理论上可以表示65535个字符。因为ASCII标准是用一个字节的7个位表示一个普通字符,最高位为0(如字母“A”的二进制01000001),所以表示汉字就采用最高位为1来表示。如“中”字就是用0xD6、0xD0表示(二进制11010110、...

2019-10-10 13:55:33 387

原创 串口9针数据线的分类:直通、23交叉、全交叉

一、介绍 设备com口与pc接口之间由于并无统一标准,有的提供了公头有的提供了母头。造成从pc的COM口与设备COM口之间可能还需要一根数据线转换拨接的可能。这根拨接的数据线却有可能是直通线、23交叉线、全交叉线中的一种,使用错误将导致设备不能正常工作。二、接线顺序认识三、分类线的接法一般厂家生产数据线时的线芯顺序为:1黑 、 2褐或棕、 3红、 4橙、 ...

2019-09-12 11:13:31 9370

原创 关于C++ 存储类型auto、register、static、extern、mutable

c++ 变量/函数的可见性以及生存期由存储类型来确定,具体规则为:1、auto局部变量、函数的默认存储类型,故该关键字可以不写。如:{ int mount; auto int month;}2、register标明为寄存器存储类型,不在内存中分配存储空间,要求高速读写的变量可声明为register的存储类型,同时要注意声明为register的变量无法被&...

2019-06-26 16:31:09 511 2

原创 GPG的使用

一、简介要了解什么是GPG,就要先了解PGP。1991年,程序员Phil Zimmermann为了避开政府监视,开发了加密软件PGP。这个软件非常好用,迅速流传开来,成了许多程序员的必备工具。但是,它是商业软件,不能自由使用。所以,自由软件基金会决定,开发一个PGP的替代品,取名为GnuPG。这就是GPG的由来。GPG有许多用途,本文主要介绍文件加密。至于邮件的加密,不同的邮件客户端有...

2019-06-19 20:31:16 442

转载 nanomsg(ZeroMQ with C)使用demo

1、应用手册https://github.com/nanomsg/nanomsg% mkdir build % cd build % cmake .. % cmake --build . % ctest . % sudo cmake --build . --target install % sudo ldconfig(if on Linux)2、性能测试dong@ubu...

2019-06-12 23:42:07 1424

原创 以太坊系列七:远程调用JsonRPC操作的注意事项

远程通过JsonRPC接口接入本地geth节点,需要注意开启RPC服务,同时在本地geth启动可能需要加入--rpccorsdomain "*" 参数,否则远程接入会被拒绝。

2019-05-31 10:21:16 495

原创 以太坊系列五:Geth环境下在JsonRPC中的以太坊交互操作

一、简介以太坊的交互操作方式有console和JsonRPC,JsonRPC又有IPC、HTTP、WS等方式,例如开启挖矿操作可以有以下方式: Console:miner.start() IPC:echo '{"jsonrpc":"2.0","method":"miner_start","params":[],"id":1}' | nc -U $datadir/geth.i...

2019-05-28 15:59:01 1034

原创 以太坊系列三:Geth启动以太坊的命令选项

通过geth命令启动以太坊环境,可能根据的启动参数配置合适的以太坊环境,geth命令启动详细选项可参照https://github.com/ethereum/go-ethereum/wiki/Command-Line-Options。$ geth helpNAME: geth - the go-ethereum command line interface Copyright...

2019-05-28 15:11:50 1858

原创 以太坊系列四:Geth环境下在console中的以太坊交互操作

一、前置说明console控制台中对以太坊的交互操作,是通过JavaScript进行的。交互操作前需要确保以太坊已经启动(例如开启本地以太坊接入rinkeby测试网$./geth --rinkeby console)。二、启动交互操作的console在新开的terminal中输入开启console的命令:$./geth attach --datadir "/home/...(存放dat...

2019-05-28 15:06:23 1175

原创 以太坊系列二:以太坊Geth环境搭建以及开启以太坊操作

一、简介使用以太坊可以在多种不同的终端环境中使用,例如你可以在Geth终端(go语言所写)中使用以太坊,也可以在Parity终端(rust所写)、aleth终端(c++写)中使用。本文介绍ubuntu下的Geth终端环境的搭建,Geth终端环境的搭建可以在官网直接下载(https://geth.ethereum.org/downloads/)安装包安装,也可以下在Geth源码编译安装。二、...

2019-05-28 11:53:55 1447 1

原创 以太坊系列一:以太坊账户体系

以太坊的钱包体系涉及的名词:account:一个帐号的总概念,本质上对应着一个唯一私钥key,由这个私钥key可以算出公钥(也就是公开的address)。私钥key代表着帐号的总控制权。address:帐号地址,相当于私钥key算出来的公钥。wallet:钱包,管理着帐号地址以及一个密码对应着的keystore,钱包的作用就是提供方便,让用户只需要记住帐号地址和密码即可。keyst...

2019-05-27 16:46:40 1224

原创 EOS系列十六:EOS连接主网、测试网

一、连接方法:连接EOS主网、测试网的方法有好多种,可以按照不同的应用场合来区分。1、本地节点不接入主网/测试网,仅仅使用本地终端命令cleos。例子:$cleos -u http://peer1.eoshuobipool.com:8181 --wallet-url unix:///home/tgg/eosio-wallet/keosd.sock get accounteo...

2019-05-17 18:02:43 532

原创 EOS系列十五:EOS内存的理解

总结一下对ram的理解:一、一个eos帐号需要eos平台分配对应的ram供其使用,这就是该帐号在EOS平台中所占用的资源,eos平台的总内存是有限的,所以分配给每个帐号的ram就具备了稀缺性质,那就具备的价值,这就是内存炒作的根本原因。二、一个帐号的ram中保存的信息主要有:1、保存帐号的基本信息。2、保存在帐号上部署的代码数据,包括代码本身以及合约运行的结果数据如多索引表数据。...

2019-05-13 17:57:13 1092

原创 EOS系列十四:EOS智能合约中多索引表的高级用法

一、简介多索引表使用的高级功能主要有:1、可以建立多级索引,由不同字段组成的多级索引,方便根据不同字段进行快速操作。2、可以建立只有一行数据的多索引表。3、可以建立体现一对多关系的多索引表,即一个关键字存在多条记录与其对应。如学生表中很多个学生都是同一个班主任,这样根据班主任名字这个关键字可以找到很多条学生记录。二、详解1、建立多级索引的使用方法:(详见https://eo...

2019-05-13 17:29:39 392

原创 Python调用C/C++

一、问题 Python提供的ctypes库,它提供同C语言兼容的数据类型,可以很方便地调用C语言动态链接库中的函数。ctypes 的官方文档可以参考:https://docs.python.org/2/library/ctypes.html二、Python调用C/C++1、Python调用C动态链接库的简单例子:Python调用C库比较简单,不经过任何封装...

2019-05-13 15:36:43 222

转载 Nginx + FastCGI 程序(C/C++) 搭建高性能web service的Demo及部署发布

最近简单研究了下利用高性能web server - Nginx,来发布C/C++编写的fastCGI程序,总结一下:一、介绍 Nginx - 高性能web server,这个不用多说了,大家都知道。FastCGI程序- 常驻型CGI程序,它是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。Nginx要调用F...

2019-04-28 16:53:04 193

原创 EOS系列十三:RPC调用查询多索引表数据

chain/get_table_rowschain/get_table_rows调用指定多索引数据表的数据行。注意,nodeos时需要启用chain_api_plugin插件。调用参数JSON对象,指定数据表查询条件,其成员如下:scope:数据表作用域,字符串 code:合约的托管账号名,字符串 table:数据表名称,字符串 table_key:键名称,字符串,可选...

2019-04-16 11:09:23 569

原创 EOS系列十二:自定义EOS权限新增、修改、删除设置

EOS自定义权限设置通过终端命令行、RPC的方式均可实现,基本沿用通用权限设置命令的方式,例子说明如下:1、设置标准active权限使用如下命令:$cleos set account permission account0 active '{"threshold": 1,"keys": [{"key": "EOS6MRyAjQq8ud7hVNYcfnVPJqcVpscN5So8Bh...

2019-04-15 16:18:59 885

原创 EOS系列十一:RPC调用方式实现EOS权限设置(权限的完整理解)

在系列九中已阐明了EOS帐号权限的关系,并用命令行的方式展示了具体的设置方法。在RPC调用的方式中,实质上是调用了“eosio”这个合约的"updateauth" action。套用RPC方式向EOS提交transaction的交互步骤(系列十介绍的方法),从而达到通过RPC调用方式实现EOS权限设置。举例说明如下:1、命令行下实现account0的帐号权限设置:$cleos set...

2019-04-08 11:52:07 938

转载 SSH 本地到linux服务器文件互传

在linux下一般用scp这个命令来通过ssh传输文件。1、从服务器上下载文件scp username@servername:/path/filename/var/www/local_dir(本地目录)例如scp root@192.168.0.101:/var/www/test.txt #把192.168.0.101上的/var/www/test.txt的文件下载到/va...

2019-03-26 16:59:36 934

原创 C++正则表达式的使用

正则表达式主要作用是简化字符串的处理,C++使用正则表达式只需要#include <regex>即可。主要有三大应用:1、regex_match:比较一个给定源字符串和一个正则表达式模式,如果模式匹配整个源字符串,则返回true,否则返回false。#include <iostream>#include <regex>using namespace...

2019-03-18 11:40:06 411

原创 EOS系列十:RPC方式向EOS提交transaction的交互步骤

EOS客户端开发,主要采用RPC方式对EOS进行操作,核心步骤如下:url地址(http://192.168.1.79:8888/v1/chain/get_info)一、get_info1、从正常的返回json中获得"head_block_id"、"head_block_time"两个字段值和"chain_id"字段2、为get_required_keys组装post请求参数(js...

2019-03-06 14:15:05 1178

原创 Boost库系列:智能指针

合理使用boost智能指针,直接内存释放问题,你只管new,不需考虑delete,甚至new也不用你new(例如由make_shared函数返回shared_ptr智能指针)。1、头文件<boost/smart_ptr.hpp>(智能指针头文件)<boost/smart_ptr/make_unique.hpp> (使用make_unique()函数用到)&...

2019-03-01 11:51:09 422

原创 MongoDB的多线程并行操作

在多线程中对MongoDB进行操作,需要确保各线程之间读写的安全性,需要为每个线程绑定独立的mongocxx::client对象。以下为官方标准例子:Never do this:mongocxx::instance instance{};mongocxx::uri uri{};mongocxx::client c{uri};auto db1 = c["db1"];auto db2...

2019-02-26 15:22:45 6845

转载 MongoDB3.x中添加用户和权限控制

现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限。注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth) 1.在admin库中,添加用户并授权 use admin; db.createUser( {...

2019-02-25 14:47:26 105

转载 Mongodb亿级数据量的性能测试

进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目:(所有插入都是单线程进行,所有读取都是多线程进行)1) 普通插入性能 (插入的数据每条大约在1KB左右)2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多...

2019-02-25 14:34:27 191

原创 EOS系列九:EOS权限设置

在EOS区块链中任何操作都是以账号为发起者,在ADPP智能合约使用过程需要厘清账号权限相关的规则,否则可能没有充分授权导致action调用出错:1)普通账号:调用智能合约操作的账号。2)合约账号:部署合约的账号。一个合约账号accout1仅仅是对于部署其上的合约A而言,才算合约账号,对于部署在账号account2上的合约B而言,account1就是一个普通账号。3)在多个智能合约相互调...

2019-01-21 15:09:24 446

原创 C++连接MongoDB的增删查改

1、前置条件需要安装好MongoDB的驱动(mongocxx),mongo跑起来。2、项目包含相关头文件和库,例如:INCLUDEPATH += "/usr/local/include/mongocxx/v_noabi"INCLUDEPATH += "/usr/local/include/bsoncxx/v_noabi"LIBS += -L/usr/local/lib/ -lbson...

2019-01-11 15:54:09 2469 1

原创 Boost库系列:基于boost::asio的http、https serve实现方式总结

boost官网上的例子(https://www.boost.org/doc/libs/1_67_0/doc/html/boost_asio/examples/cpp03_examples.html)实现了四种httpserver的处理方式:1、http::server,简单的单线程服务器,只有一个主线程;设计思想比较简单:主线程先预先申请一个连接对象connection并使用的accept...

2019-01-09 10:07:09 9846

原创 Boost库系列:asio总结

一、asio的关键点介绍:1、前置使用条件:需包含相应的头文件、注意命名空间的使用。2、核心类io_service,asio的任何操作需要io_service的参与。同步模式下,程序流程一步一步的流水执行,需要io的,等待io完成返回再下一步执行。异步模式下,由io_service提交io异步执行,程序不用等待io返回直接执行下一条语句。异步执行由io_service的run()函...

2019-01-07 16:18:18 2448

原创 EOS系列八:MongoDB的使用

EOS含有mongodb的插件,可以对mongodb友好支持。在此总结一下EOS与mongoDB的交互。一、mongoDB环境搭配。1、下载安装mongoDB,EOS安装时可能已经安装好mongodb。如你的系统未安装或者你不想使用eos默认安装的版本,可以另行安装。安装方法略(最简单方法是命令sudo apt-get install mongodb)。2、新建数据库保存目录以及日志目录...

2018-12-20 18:07:16 991

原创 EOS系列七:智能合约通信模型、transaction、action、限制

1、智能合约间的调用通信模型有内联调用和延迟调用。2、action之间的执行完全独立,无法直接通信,如需在action间交互状态数据,则必须由一个action将数据写入EOSIO database(多索引表),再由另一个action从EOSIO database读取。3、EOS对每个transaction的执行限制在30ms以内,否则事务执行失败。所以在编写智能合约时,一个事务不能包含太多...

2018-12-14 15:26:54 478

原创 ubuntu系统级快捷键对应功能的修改

ubuntu18.04下有个alt+左方向键会切换到前一个控制台终端, 对于习惯QT中使用alt+左方向键来进行快捷操作的人来说,非常不便,于是想把ubuntu系统级的这个功能禁止掉。历经多个坑,终于解决。方法如下。1、导出 键盘与系统tty切换功能的对应关系,命令:$sudo dumpkeys |grep Console > ~/Desktop/map2、备份一下该map的文...

2018-12-05 11:51:12 707

空空如也

空空如也

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

TA关注的人

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