自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 avalon-2-基于docker的运行

(1).安装docker和docker-compose(2).sudo docker-compose up --buildERROR: Invalid interpolation format for “build” option in service “avalon-shell”: “DISPLAY=${DISPLAY:-}”编辑dock-comose.yaml文件,将DISPLAY=${DISPLAY:-}改为DISPLAY=${DISPLAY}...

2020-11-23 19:06:19 5

原创 git自动补全:WARNING: this script is deprecated, please see git-completion.zsh

Mac OS 中,终端默认使用的shell脚本是zsh,不是bash。会导致报错如下:WARNING: this script is deprecated, please see git-completion.zsh但Git并没有兼容zsh,所以还是得用回bash。解决办法如下:终端 --> 偏好设置 --> 通用 --> Shell的打开方式,选中【命令(完整的路径)】,设置为:/bin/bash然后source,ok...

2020-11-23 17:37:54 28

原创 docker-compose

Compose 使用的三个步骤:使用 Dockerfile 定义应用程序的环境。使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。最后,执行 docker-compose up 命令来启动并运行整个应用程序。yml 配置指令参考version指定本 yml 依从的 compose 哪个版本制定的。build指定为构建镜像上下文路径:例如 webapp 服务,指定为从上下文路径 ./dir/Dockerfile 所构建的镜像:versio

2020-11-17 18:45:39 8

原创 Linux 常用命令

Linux系统信息存放在文件里,文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息,如文件的用户、文件的大小等。文件可以是一封信、一个通讯录,或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容。 Linux文件系统具有良好的结构,系统提供了很多文件处理程序。这里主要介绍常用的文件处理命令。file1.作用file通过探测文件内容判断文件类型,使用权限是所有用户。2.格式file [options] 文件名3.[options]主要参数-v:

2020-11-17 18:17:52 8

原创 YAML入门

YAML 的意思其实是:“Yet Another Markup Language”(仍是一种标记语言)。基本语法大小写敏感使用缩进表示层级关系缩进不允许使用tab,只允许空格缩进的空格数不重要,只要相同层级的元素左对齐即可'#'表示注释数据类型YAML 支持以下几种数据类型:对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)纯量(scalars):单个的

2020-11-17 18:06:21 13 1

原创 国密简介

密码算法是保障信息安全的核心技术,尤其是最关键的银行业核心领域长期以来都是沿用3DES、SHA-1、RSA等国际通用的密码算法体系及相关标准。2010年底,国家密码管理局公布了我国自主研制的“椭圆曲线公钥密码算法”(SM2算法)。为保障重要经济系统密码应用安全,国家密码管理局于2011年发布了《关于做好公钥密码算法升级工作的通知》,要求“自2011年3月1日起,在建和拟建公钥密码基础设施电子认证系统和密钥管理系统应使用国密算法。自2011年7月1日起,投入运行并使用公钥密码的信息系统,应使用SM2算法。”

2020-11-06 23:14:50 20 1

原创 Hyperledger Avalon --01

什么是Hyperledger Avalon?Hyperledger Avalon支持区块链交易中的隐私,将密集处理从主区块链转移到可扩展性和延迟,并支持经过认证的Oracle。什么是链外可信计算规范?链下可信计算规范(TCS)定义了链下计算事务,这些事务可以私下进行计算并且可信。这些交易可能会或可能不会与区块链相关联。Avalon实现了TCS。代理模式和直接模式有什么区别?代理模式是请求者(客户端)在区块链上执行智能合约(或链码或类似代码)的地方。智能合约事件调用Avalon,Avalon通过该区

2020-11-06 20:36:51 70 1

原创 GO_学习_1

//变量声明//第一种,指定变量类型,没有初始化,则取默认值var v_name v_typev_name = v_value//第二种,根据初始化时候的值,自动判定变量类型var v_name = v_value//第三种,省略varv_name := v_value //如果:=左侧若没有声明新的变量,就会产生编译错误//一种因式分解的写法,一般用于声明全局变量var ( a int b bool)//使用&i来获取变量i的内存地址//相同代码块中,不可以再次对于

2020-10-30 09:36:11 4

原创 手动创建fabric网络

# 确保自己在目录下,如我的就是/fabric-samples-release-1.4/first-network##手动生成构件CORE_PEER_GOSSIP_USELEADERELECTION=true../bin/cryptogen generate --config=./crypto-config.yaml #将会生成证书和密钥,保存在crypto-config 文件夹中。# 设置configtxgen 工具运行所需要的 configtx.yaml 文件目录export FABRIC_C

2020-10-29 18:15:29 20

原创 区块链笔记

./byfn.sh generate##### Generate certificates using cryptogen tool ################## Generating Orderer Genesis block ################# Generating channel configuration transaction 'channel.tx' ########## Generating anchor peer update for Org1MSP

2020-10-26 16:12:32 26 1

原创 2020-10-22

要启动一个Fabric 网络,需要遵循如下的主要步骤:生成证书文件 1.生成节点和Orderer对应的证书文件(可以使用cyptogen工具完成)。生成交易相关文件 2. 生成Orderer的创世区块文件、通道的配置交易文件以及需要的锚节点交易文件(使用configtxgen 工具完成)。启动网络节点 3. 使用创世区块文件、证书文件启动Orderer节点。此时Orderer 采用指定的创世区块文件创建了系统通道。 4. 根据组织文件分别启动Peer 节点。这个时候网络中不存在应用通道,Peer 节.

2020-10-22 10:37:57 17 1

原创 2020-10-21

排序服务许多分布式区块链,如以太坊(Ethereum)和比特币(Bitcoin),都是非许可的,这意味着任何节点都可以参与共识过程,在共识过程中,交易被排序并打包成区块。因此,这些系统依靠概率共识算法最终保证账本一致性高的概率,但仍容易受到不同的账本(有时也称为一个账本“分叉”),在网络中不同的参与者对于交易顺序有不同的观点。Hyperledger Fabric 的工作方式不同。它有一种称为排序节点的节点使交易有序,并与其他排序节点一起形成一个排序服务。因为 Fabric 的设计依赖于确定性的共识算法,

2020-10-21 16:36:16 19 1

原创 区块链学习--docker和docker-compose

安装docker和docker-compose

2020-10-21 16:31:16 16

原创 作业、进程、线程、管程

作业:用户在一次解题或一个事务处理过程中要求计算机系统所做工作的集合。它包括用户程序、所需要的数据和控制命令等。作业是由一系列有序的步骤组成的。进程:一个程序在一个数据集合上的一次运行过程。所以一个程序在不同数据集上运行,乃至一个程序在一个数据集合上的多次运行都是不同的进程。线程:线程是进程的一个实体,是被系统独立调度和执行的基本单位。管程:管程实际上是定义了一个数据结构和在该数据结构上的能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。...

2020-10-09 08:46:24 8

原创 C语言试题

What is the output of the following program?#include<stdio.h>main(){ char *s = "Hello, " "World!"; printf("%s", s);}Output:Hello, World!这里的两个"符号之间的内容被忽略掉了#include<stdio.h>main(){ char s[20] = "Hello\0Hi"; printf(

2020-10-08 22:44:07 636 1

原创 C语言中‘*‘和‘&‘

在C语言中,每个变量都是一个内存位置,并且每个内存位置都定义了其地址,可以使用&运算符(&)进行访问,该地址表示内存中的地址。A指针是一个变量,其值是另一个变量的地址,即存储位置的直接地址。像任何变量或常量一样,你必须在使用指针存储任何变量地址之前声明一个指针。int *ip; /* pointer to an integer */double *dp; /* pointer to a double */float *fp; /* pointer to a float */

2020-10-08 14:00:20 12

原创 Shell命令学习

What is Shell?Shell 是一个应用程序,它连接了用户和 Linux 内核,让用户能够更加高效、安全、低成本地使用 Linux 内核,这就是 Shell 的本质。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、Firefox 等其它软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用 Linux,不启动 Shell 的话,用户就没办法使用 Linux。Shell 是如何连接用户和内

2020-10-07 22:26:53 19

原创 C语言--静态局部变量

静态局部变量定义时前面加static关键字。总结:1、静态局部变量和普通局部变量不同。静态局部变量也是定义在函数内部的,静态局部变量定义时前面要加static关键字来标识,静态局部变量所在的函数在多调用多次时,只有第一次才经历变量定义和初始化,以后多次在调用时不再定义和初始化,而是维持之前上一次调用时执行后这个变量的值。本次接着来使用。2、静态局部变量在第一次函数被调用时创造并初始化,但在函数退出时它不死亡,而是保持其值等待函数下一次被调用。下次调用时不再重新创造和初始化该变量,而是直接用上一次留下的

2020-10-05 09:14:29 122 1

原创 C语言--C语言与bool类型

C语言中原生类型没有bool,C++中有。在C语言中如果需要使用bool类型,可以用int来代替。很多代码体系中,用以下宏定义来定义真和假#define TRUE 1#define FALSE 0

2020-10-04 22:21:11 13

原创 C语言--空类型(关键字void)

C语言中的void类型,代表任意类型,而不是空的意思。任意类型的意思不是说想变成谁就变成谁,而是说它的类型是未知的,是还没指定的。void * 是void类型的指针。void类型的指针的含义是:这是一个指针变量,该指针指向一个void类型的数。void类型的数就是说这个数有可能是int,也有可能是float,也有可能是个结构体,哪种类型都有可能,只是我当前不知道。void型指针的作用就是,程序不知道那个变量的类型,但是程序员自己心里知道。程序员如何知道?当时给这个变量赋值的时候是什么类型,现在取

2020-10-04 22:19:27 125

转载 嵌入式C语言面试题库

嵌入式开发—C语言面试题用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长

2020-10-03 23:13:13 761

原创 Git入门学习--(一)

Git简介Git是目前世界上最先进的分布式版本控制系统(没有之一)。集中式vs分布式先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中 央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联 网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟,这还不得把人给憋死啊。那分布式版本控制系统与集中式版本控制系统有何不同呢

2020-10-02 23:03:30 5

原创 网络安全协议(三)--基本安全协议

安全协议是建立在密码体制基础上的一种通信协议,计算机网络或分布式系统中的参与者通过安全协议的消息步,借助于密码算法来达到密钥分配、身份认证、信息保密以及安全地完成电子交易等目的。安全协议的目的安全协议是一种通信协议,它的主要目的是利用密码技术实现网络通信中的密钥分发和身份认证。安全协议是网络通信安全系统的基础,是实现计算机网络安全的关键。安全协议的目标分为认证性、非否认性、可追究性、公平性四种,其中,认证性应用最为广泛和重要。安全协议的分类根据参与者以及密码算法的使用情况进行分类,可以分为七类:

2020-10-02 17:36:39 130 1

原创 网络安全协议(二)--密码学基础

安全协议与密码学的关系安全性——数据安全性、通信安全性、信息安全性等——就像一条链子,整个系统的安全性由最脆弱的连接的安全性所决定。因此链子上每一处都必须安全,才能保证整个链子的安全:加密算法、协议、密钥管理、使用规范等,任何一环出了问题,都会危及整个链子。除了提供对消息的保护外,密码学在网络安全中通常还有其它的作用:认证:消息的接收者应该能够确认消息的来源;入侵者不可能伪装成他人。完整性:消息的接收者应该能够验证在传送过程中消息没有被修改;入侵者不可能用假消息代替合法消息。抗抵赖:发送者事后不可

2020-10-02 16:45:36 50

原创 网络安全协议(一)

网络是由两台以上计算机连在一起组成的“计算机群”,再加上相应“通信设备”组成的综合系统。网络带来的好处主要体现在资源共享、信息交换与及时传递两个方面。网络的分类A.一种分类法:信息(message):文字、数值、图形、声音、图像等发送设备:又称“主机”(host)——各种信息处理设备(计算机等)接收设备:同上通信设备:负责主机间的通信控制和通信处理传输媒介:各种电缆、光缆、无线电波等通信协议:通信规则(无协议的两台设备可以连接但无法通信,如同讲不同语言的两人无法对讲)B.另一种分类法:

2020-10-02 16:02:12 88

原创 Matplotlib绘图库基本操作

Matplotlib是一种2D的绘图库它可以支持硬拷贝和跨系统的交互,它可以在Python脚本、IPython的交互环境下、Web应用程序中使用。该项目是由John Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口。如果结合使用一种GUI工具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能。它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的食量(vector)和光栅(raster)图:PDF、SVG、JPG、PNG、

2020-10-01 21:44:27 21

原创 第一个TensorFlow程序

MNIST数据集MNIST数据集是一个大型的手写体数字数据库,通常用于训练各种图像处理系统,也被广泛用于机器学习领域的训练和测试。MNIST数据库中的图像集是NIST(National Institute of Standards and Technology)的两个数据库的组合:专用数据库1和特殊数据库3。数据集是有250人手写数字组成,50%是高中学生,50%是美国人口普查局。MNIST数据集分为60,000张的训练数据集合10,000张的测试数据集,每张图像的大小为28x28(像素);每张图像都为

2020-10-01 21:01:04 10

原创 Python---NumPy

NumPy简介NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。NumPy 是一个运行速度非

2020-10-01 11:03:52 27

原创 Shell输入\输出重定向

输入\输出重定向的理解UNIX系统通常会从终端中接受输出,并将所产生的输出发送到终端中。一个命令通常从一个叫做标准输入的地方读取输入,这里默认情况下是你的输入;一个命令通常将输入写到标准输出,这里默认也是你的终端。 命令 说明command > file 将输出重定向到 file。command < file 将输入重定向到 file。command >> file 将输出以追加的方式重定向到 file。n > file 将文件描述符为 n 的文件重定

2020-09-29 23:51:52 639

原创 Linux bash命令入门

bash简介基础操作缩写规则就是:删掉元音字幕(A E I O U),保留前 2 到 3 个辅音字母命令 全部写法 缩写创建目录 make directory mkdir删除 remove rm移动/重命名 move mv复制 copy cp罗列 list ls改变目录 change directory cdcd ~/Desktop 进入桌面mkdir demo-1 创建目录,这时你可以切到桌面,看到 demo-1

2020-09-29 22:51:48 62

原创 Linux下C语言嵌入式笔记(九)--面试解析

C语言1、编写统计一个数二进制表示中有多少个1的函数int count_bit1(int m){int count = 0;while(m){m = m & (m-1);//表示将m表示的二进制数的最后一个为1的置0,1111需要四次才能变为0000count++;}return count;}2、编写一个函数判断一个数是否是2的N次方int is_number(int num){if( m & (m - 1) == 0)// 0100 & 0011|

2020-09-27 22:49:35 90

原创 Linux下C语言嵌入式笔记(八)--面试解析

ARM部分1、FIQ比IRQ快的原因:A、FIQ模式的R8–R14寄存器是独有的,FIQ处理程序可以不必执行保存和恢复中断现场的指令。B、FIQ可以将ISR直接放在FIQ后面的地址空间,不需要跳转。2、中断与异常有何区别异常在处理的时候必须考虑与处理器的时钟同步,实际上异常也称为同步中断,在处理器执行到因编译错误而导致的错误指令时,或者在执行期间出现特殊错误,必须靠内核处理的时候,处理器就会产生一个异常;所谓中断是指外部硬件产生的一个电信号从CPU的中断引脚进入,打断CPU的运行。所谓异常是指软件

2020-09-27 20:26:27 19

原创 Linux下C语言嵌入式笔记(二)

数据类型1、基本数据类型数据类型是创建变量的模型。变量名是连续存储空间的别名,程序中使用变量命名存储空间,通过变量可以使用存储空间。变量所占的内存大小取决于创建变量的数据类型。2、有符号和无符号有符号数中数据类型的最高位用于标识数据的符号,最高位为1表示为负数,最高位为0表示为正数。计算机中有符号数通常使用补码表示,正数的补码为正数本身,负数的补码为负数的绝对值的各位取反后加1。计算机中无符号数通常使用原码表示,无符号数默认为正数,没有符号位。对于无符号数来说,MAX_VALUE + 1等于MI

2020-09-27 17:11:55 12

原创 Linux下C语言嵌入式笔记(七)

单链表简介1、单链表的结构单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以节点来表示的,每个节点由两部分构成:一个是数据域,存储数据值,另一个是指针域,存储指向下一个节点的指针。2、单链表的节点单链表节点的数据结构如下:typedef struct data{unsigned int id;//学生身份IDchar name[LENGTH];//学生姓名char subject[LENGTH];//科目unsigned int score

2020-09-27 17:01:10 7

原创 Linux下C语言嵌入式笔记(六)

存储类型C语言中,每个变量和函数都有两个属性:数据类型和数据的存储类型。变量的存储类型是指存储变量值的内存类型。变量的存储类型决定变量何时创建、何时销毁以及它的值将保持多久。计算机中有三个地方可以用于存储变量:普通内存,运行时堆和栈,硬件寄存器。变量的存储类型取决于声明变量的位置。C语言存储类别说明符:1、静态变量在代码块之外声明的变量存储于静态内存中,不属于堆和栈的内存,这类变量称为静态(static)变量。静态变量在程序运行之前创建,是在将可执行文件加载到内存的时候创建,其在程序的整个执行期

2020-09-27 15:02:24 19

原创 Linux下C语言嵌入式笔记(五)

内存字节对齐计算机中内存空间都是按照字节划分的,从理论上讲对任何类型的变量的访问可以从任何地址开始,但是在程序实际编译过程中,编译器会对数据类型在编译过程中进行优化对齐,编译器会将各种类型数据按照一定的规则在空间上排列,而不是顺序的排放,这就是内存字节对齐。内存字节对齐原因不同硬件平台对存储空间的处理是不同的。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如某些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐。其他平台可能没有这种情况,但是最常

2020-09-26 23:15:57 3

原创 Linux下C语言嵌入式笔记(四)

字符串声明声明字符串的方式有三种:字面量、字符数组、字符指针。字符串字面量是用双引号引起来的字符序列,常用来进行初始化,位于字符串字面量池中,字符字面量是用单引号引起来的字符。字符串字面量池是程序分配的一块内存区域,用来保存组成字符串的字符序列。多次用到一个字符串字面量时,字符串字面量池中通常只保存一份副本,一般来说字符串字面量分配在只读内存中,是不可变的,但是当把编译器有关字面量池的选项关闭时,字符串字面量可能生成多个副本,每个副本拥有自己的地址。GCC编译器中字符串字面量是可以改变的,为了将字符

2020-09-26 20:58:06 4

原创 Linux下C语言嵌入式笔记(三)

数组的解读数组的定义:int a[10] = {0,1,2,3,4,5};a[0]:数组的第一个元素,首元素(做左值时表示第0个元素的内存空间)&a:数组的地址,是常量,不能做左值,类型等同int (*)[10](数组指针)。&a[0]:数组第0个元素的地址,与数组名a等价a:a是数组名,不能做左值,做右值时表示数组首元素的地址,与&a[0]相同。数组的地址与数组首元素的地址不是一个概念。数组名可以看作const指针,但数组名作为sizeof操作符的参数和&运算

2020-09-26 20:09:57 11

原创 Linux下C语言嵌入式笔记(二)

一个由C/C++编译的程序占用的内存分为以下几个部分:栈区(stack)— 由编译器自动分配释放 ,存放函数的参数名,局部变量的名等。其操作方式类似于数据结构中的栈。堆区(heap)— 由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。静态区(static)—全局变量和局部静态变量的存储是放在一块的。程序结束后由系统释放。文字常量区—常量字符串就是放在这里的,程序结束后由系统释放 。程序代码区— 存放函数体的二进制代码。堆和栈的

2020-09-26 18:22:23 7

原创 Linux下C语言嵌入式笔记(一)

*基本位操作符:与、或、异或、非(取反)、左移、右移位运算只能对整数;左移运算符<<的移动位数>=类型长度的时候,在GCC环境下编译会有警告,实际移动位数为:左移位数%8。如int i = 1; i = i << 33; ===>i = 2 //i 左移33位,超过类型长度,则移动 33%8 = 1位左移时总是移位和补零(逻辑左移),右移时无符号数是移位和补零,有符号数大多数是移位和补最左边的位;未运算符的运算优先级较低;位操作符的使用:位与运算&amp

2020-09-26 15:00:50 9

空空如也

空空如也

空空如也

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

TA关注的人 TA的粉丝

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