自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 问答 (2)
  • 收藏
  • 关注

原创 智能聊天机器人的实现

ChatGPT近期以强大的对话和信息整合能力风靡全网,可以写代码、改论文、讲故事,几乎无所不能,这让人不禁有个大胆的想法,能否用他的对话模型把我们的微信打造成一个智能机器人,可以在与好友对话中给出意想不到的回应,而且再也不用担心女朋友影响我们 打游(工作)了。

2022-12-18 00:38:03 25007 19

原创 MIT6.828/6.S081 - 2019:Lab2 Shell

Mit6.828/6.S081 fall 2019的Lab2是Simple Shell,内容是实现一个简易的shell程序,本文对该实验的思路进行详细介绍,并对xv6提供的shell实现进行深入解析。准备首先来看实验要求:实现的shell要支持 基础命令执行、重定向 (< >) 处理、管道 ( | ) 处理不能使用malloc()动态分配内存使用"@“代替”$"作为命令行的提示符及时关闭文件描述符;对系统调用的异常进行处理xv6中提供有sh.c的实现,除了重定向和管道,还.

2020-12-10 20:58:28 750

原创 Serverless无服务器架构详解

本文对Serverless架构的基础概念,具体产品,应用场景,工作原理进行详细解析。基础概念Serverless: 无服务器架构,即在无需管理服务器等底层资源的情况下完成应用的开发和运行,是云原生架构的核心组成部分。通俗来说,如果将购买一台物理服务器比作买车,购买云服务器就类似于租车(租赁期间需要驾驶和维护,且即使闲置也需付费),那么Serverless则类似于出租车(只需乘坐,按里程计费)。从技术层面来说,我们可以简单理解为:Serverless = FaaS + BaaS。一个完整的Ser.

2020-08-03 23:21:40 2985

原创 基于云服务的个人博客架构设计

本文介绍如何基于各种云服务优雅且低成本地搭建个人网站,涉及的云产品有云服务器、SSL、企业邮箱、对象存储、CDN、云函数、API网关、云监控等。概述如今云服务提供商们提供了大量涵盖计算、网络、存储等方面的云服务,其中一些云产品功能强大,如果能善加利用可以大幅降低开发和运维的成本。下面以基于腾讯云搭建的个人网站为例,对网站整体的架构进行介绍。网站目前的主要功能是个人博客,后续可以扩展如个人网盘等其他应用。当前架构图如下:一、基础设施1.云服务器CVM云服务器使用的是CVM,1核2G,下行带.

2020-06-23 16:49:28 1692

原创 MIT6.828/6.S081 - 2019:Lab1 Utilities

Mit6.828/6.S081 fall 2019的Lab1是Unix utilities,主要内容为利用xv6的系统调用实现sleep、pingpong、primes、find和xargs等工具。本文对各程序的实现思路及xv6的系统调用流程进行详细介绍。前言在实验之前,推荐阅读一下官网LEC1中提供的资料。其中Introduction是对该课程的的概述,examples则是几个系统编程的样例,这两部分快速浏览一遍即可。对于xv6 book的第一章,则建议稍微细致地阅读一遍,特别是对fork()、.

2020-06-07 13:56:09 2468

原创 MIT6.828/6.S081 - 2019:MacOS下搭建xv6和risc-v环境

本文介绍在MacOS下搭建Mit6.828/6.S081 fall2019实验环境的详细过程,包括riscv工具链、qemu和xv6,对于Linux系统同样可以参考。介绍只有了解底层原理才能写好上层应用,曾经几度想要系统地学习OS课程,尝试去看了《计算机操作系统》、《Operating Systems: Three Easy Pieces》、《UNIX环境高级编程》,均以半途而废告终。被大量的抽象概念所淹没,对操作系统如何工作,用户程序如何运行,与CPU等硬件如何交互等问题完全没有清晰的认识。所以.

2020-05-27 10:15:52 3390 8

原创 Hyperledger Fabric基础概念介绍

Hyperledger fabric是Linux Foundation主办的超级账本项目下的开源项目之一,旨在提供一个模块化的区块链解决方案的支撑平台。概述一、区块链的共有特性**1.分布式存储(Distributed Ledger):**所有节点共同维护完全一致的账本数据,区块以保存前一个区块Hash值的方式顺序相连,组成了链式数据结构,保证了数据的不可篡改。**2.共识机制(Consensus Protocol):**fabric v1.0以后使用的是交易背书、交易排序和交易验证共同构成的.

2020-05-25 10:52:19 1647

原创 Fabric chaincode测试 —— 开发者模式和单元测试

在fabric开发中,chaincode的测试是一个令人比较头疼的问题,一是由于实际情况中chaincode中的存储和查询是依赖于peer节点上的状态数据库的,所以无法在本地直接测试;二是由于chaincode是运行于容器中的,这导致我们很难获取在代码中打印的日志。

2018-12-01 20:12:45 6174 12

原创 Hyperledger fabric修改组织和通道的名称

组织(Org)和通道(Channel)的名称是fabric网络比较重要的两个配置参数,在fabric提供的示例中都已经设置好了这两个参数,一般组织名为&quot;Org1&quot;和&quot;Org2&quot;,通道名为&quot;mychannel&quot;。而在实际应用开发中通常需要自定义组织和通道的名称,这里以最接近实际应用的balance-transfer为例说明如何自定义设置组织和通道名称。##前言Fabric网络在启动前会通过二进..

2018-11-19 16:56:08 1777 3

原创 Hyperledger fabric应用的多机部署(自动化一键部署)

前面关于fabric部署的介绍都是基于单机环境下的,实际生产环境中一般会根据应用场景将节点分开部署在多台物理机上,面临的难题主要是不同主机间的节点如何通过网络进行通信。前言这里仍然以balance-transfer v1.0为例,尝试将两个组织分布到内网中的两台机器上,部署示意图如下:这里使用的是solo模式的排序服务,orderer节点和Org1位于一台机器上,Org2位...

2018-09-08 14:21:00 6169 10

原创 Hyperledger fabric使用SDK动态增加组织

在fabric网络运行过程中动态追加新的组织是相当复杂的,网上的资料也十分匮乏,大多是基于first-network这样的简单示例,而且是使用启动cli容器的方法来增加组织,几乎没有针对实际应用的解决方案。本文介绍了如何在应用程序中调用SDK来进行组织的动态增加。前言首先需要介绍一个配置区块的概念,fabric中的配置信息是作为区块写在链上的,每个配置区块中只有一条配置交易,而且配...

2018-09-08 14:17:35 4481 3

原创 Hyperledger fabric在现有组织中增加节点

fabric网络在创建时就已经确定了初始的节点数量,而在实际应用场景中可能会需要在某个组织中动态增加节点。这里以balance-transfer v1.0为例(2 Org,4 Peer),介绍如何在org1中加入第3个peer节点。一、追加新节点的身份信息首先需要在组织org1的MSP目录中追加新节点的证书和私钥信息,主要是用到cryptogen工具(v1.1.0以上版本)1....

2018-09-08 14:13:41 5445 10

原创 Hyperledger Fabric——balance transfer(六)查询

balance transfer 提供了很多查询接口,包括链码查询,根据区块号查询区块数据,根据交易ID查询交易信息,查询链上的区块数,查询已安装或已实例化的链码,查询通道。源码解析1.调用链码查询:调用指定背书节点上部署的chaincode进行查询操作,该方法只会发送交易提案到目标节点,并不会产生新的交易。...

2018-06-22 16:19:17 3190

原创 Hyperledger Fabric——balance transfer(五)执行交易

链码安装和实例化之后就可以调用chaincode执行交易,下面分析简单的账户转账操作是如何完成的。源码分析1.首先看app.js的路由函数app.post('/channels/:channelName/chaincodes/:chaincodeName', async function(req, res) { var peers = req.body.peers;...

2018-05-15 17:00:34 1529

原创 Hyperledger Fabric——balance transfer(四)安装和实例化chaincode

详细解析blance transfer示例的安装(install)和实例化(Instantiate)链码(chaincode)的过程。安装chaincode会根据本地的链码文件生成chaincode镜像,实例化chaincode则会启动该镜像,使链码在docker容器中运行。安装chaincode1.首先看app.js中的路由函数

2018-05-14 17:17:45 2011

原创 Fabric CA的部署与使用

Fabric CA是Hyperledger Fbric的证书认证中心,提供以下功能:用户信息的登记与注册,数字证书的颁发与管理。前言之前使用CA服务一直是在docker容器中运行下载好的CA镜像,在应用程序中通过Node SDK中集成的接口来访问CA服务器,这次尝试手动部署CA服务;Fabric CA由服务端和客户端组件组成,CA服务端(fabric-ca-server)可...

2018-05-07 12:07:25 9666 2

原创 Hyperledger fabric MSP成员管理

Hyperledger fabric 1.0 基于 PKI(Public Key Infrastructure)体系,引入了MSP模块(Membership Service Provider): 成员管理服务提供商,生成数字证书来标识和管理成员的身份。Fabirc的成员身份基于标准的X.509证书,密钥使用的是ECDSA算法,利用PKI体系给每个成员颁发数字证书,通道内只有相同MSP内...

2018-05-03 11:27:43 4734

原创 Hyperledger Fabric——balance transfer(三)创建和加入Channel

详细解析blance transfer示例的创建通道(Channel)和加入节点到通道的过程。创建Channel1.首先看app.js的路由函数var createChannel = require('./app/create-channel.js');app.post('/channels', async function(req, res) { // 接收...

2018-04-24 17:31:56 3771

原创 Hyperledger Fabric——balance transfer(二)注册用户

详细分析blance transfer示例的用户注册(register)与登录(enroll)功能。源码分析1.首先分析项目根目录的app.js文件中关于用户注册和登录的路由函数。注意这里的token很重要,在之后的请求中,只要在请求头中附上token,js的路由函数就能直接获取其中的参数:req.username,req.orgName// 注册和登录用户app.p...

2018-03-28 19:31:22 4345 5

原创 Hyperledger Fabric——balance transfer(一)启动示例

Blacne transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API,实现了与Fabric网络交互的各种操作。先决条件Docker - v1.12 or higherDocker Compose - v1.8 or higherGit - ...

2018-03-27 09:00:40 2703 4

原创 Hyperledger Fabric Node SDK和应用开发

Hyperledger Fabric 提供了多种语言的SDK版本,其中提出比较早、比较稳定而全面的是Node.js版本的SDK。SDK和Chaincode的关系:SDK存在于客户端层面,主要用于与网络中各组件的交互,包括peer,orderer,event,channel,chaincode,提供丰富的API便于开发者编写应用程序。Chaincode处于更底层,提供Query,...

2018-03-23 21:41:45 1997

原创 Ubuntu下配置Hyperledger Fabric环境

在win10系统的台式机上安装配置Hyperledger Fabric环境安装Ubuntu 16.04 双系统 镜像下载地址:https://www.ubuntu.com/download/desktop 安装教程:http://www.cnblogs.com/Duane/p/5424218.html 注意:这里设置了/boot分区并作为启动引导器以保留win10系统的引导,注...

2018-03-20 18:03:58 2745

原创 解决CentOS无法识别网卡问题

在联想电脑安装CentOS 6.9系统的时候,出现了无法上网问题,记录下这一路的坑。CentOS安装时在设置主机名这一步的下方有配置网络按钮,而此时该按钮点击无效。进入系统后发现没有网络连接。在终端输入ifconfig命令发现只能看见一个lo回环网络接口,没有eth0网卡。此时按照网上教程说的,手动创建ifcfg-eth0文件并写入网络配置信息,发现并不能解决问题,仍找不到网卡设备。经过分析,确

2018-03-17 01:39:07 19539 1

原创 AVL树的创建--C语言实现

AVL树是一种自平衡(Self-balancing)二叉查找树(Binary Search Tree),要求任何一个节点的左子树和右子树的高度之差不能超过1。AVL树的插入操作首先会按照普通二叉查找树的插入操作进行,不同的是在成功插入一个节点后会向上进行回溯,判断路径中的每一个节点左子树和右子树高度之差,如果相差大于1,则进行旋转操作使得树重新达到平衡状态,旋转的本质其实是为当前不平衡的子树选择一

2018-03-08 11:52:04 2163 5

原创 Python创建一个简单的区块链

区块链(Blockchain)是一种分布式账本(listributed ledger),它是一种仅供增加(append-only),内容不可变(immutable)的有序(ordered)链式数据结构,该数据结构由网络中的一系列节点共同维护,并且这些节点之间互不信任。区块链是如今盛行的Bitcoin,Ethereum等数字货币背后的底层技术,本文通过Python从0开始创建一个简单的区块链模...

2018-03-07 16:30:20 1378

原创 Mac更新系统后提示xcrun error

更新mac os后无法运行git,gcc等命令,出现missing xcrun错误.这是因为更新系统后会卸载xcode,重新安装后会缺失xcode的命令行工具(command line tools),所以导致部分工具无法在终端运行。解决方法为运行以下命令:xcode-select --install并下载xcode命令行工具即可。

2018-03-06 21:33:39 967

原创 Hyperledger Fabric开发(二):创建网络

运行fabric-samples项目中的一个例子:first-network,创建第一个网络(Building Your First Network)。 该网络共有4个peer节点,划分为2个组织(organizations),以及1个单独的orderer节点,另外还需要一个容器来执行创建和加入channel、部署和执行chaincode等命令。 运行该例子需要下载的文件有:fa...

2018-03-01 16:54:25 2264 3

原创 Hyperledger Fabric开发(一):环境配置

运行fabric-samples项目中的一个例子:first-network,创建第一个网络(Building Your First Network)。 该网络共有4个peer节点,划分为2个组织(organizations),以及1个单独的orderer节点,另外还需要一个容器来执行创建和加入channel、部署和执行chaincode等命令。 运行该例子需要下载的文件有:fabric

2018-03-01 10:02:48 738

原创 mac OS和win7笔记本实现文件共享

记录下macbook通过共享读取win7笔记本中文件的过程,条件是两台电脑处于同一无线网中win7操作点击网络图标——属性——更改高级共享设置选择公用后选择以下选项:启动网络发现——启动文件和打印机共享——关闭密码保护共享找到需要共享的文件夹或盘符后,右击属性——安全选项卡——编辑——添加——输入everyone共享选项卡——高级共享——勾选共享此文件夹,共享——选择ever

2018-01-22 09:24:53 756

原创 代码行数统计的Java和Python实现

通过编写程序来统计文件的行数,可以在巩固文件IO知识的同时计算出自己的代码量,以下分别提供Java和Python实现的版本。解决思路两种版本的思路几乎相同,每一个文件夹(目录)内的行数都是其所有子文件夹或子文件的行数和,以此类推。即以类似于深度优先搜索的方法来递归遍历整个初始目录,遇到目录就继续向深一层搜索,遇到文件就判断是否为指定后缀的文件,如果是就通过读取文件计算其行数并不断累加。Java实现

2017-12-15 17:38:22 732

原创 编码问题总结

总结下最近遇到的编码问题。字符集和编码 字符集(Character set)是字符的集合,而编码(Encoding)是对于字符集的一种映射规则。 ASCII,GB2312,GBK都是字符集,而他们也正是该字符集的唯一编码方式。 Unicode也是一种字符集,但它的编码方式有多种,如utf-8,utf-16和utf-32。各种字符集和编码简介 ASCII:储存所有英文字符和部分符号

2017-12-12 13:47:35 291

原创 Python实现批量处理文件的缩进和转码问题

最近把很久前的C代码传到Github上的时候,发现全部上百个源文件的代码缩进都变成了8格,而且里面的中文都出现了乱码,所以决定写个程序来批量处理所有文件的格式。问题分析 缩进问题是因为在之前使用vc时没有将制符表设置为4个空格,而Github上的Tab键默认显示八格。中文乱码问题是由于vc++的编码方式,对于全英文文件使用的是utf-8编码,而有中文出现时对文件使用的是gb2312编码方

2017-12-06 22:35:53 2279

原创 Git基本命令总结

Git是一款免费、开源的分布式版本控制系统。这里总结一下最基本最常用的命令。git init 创建仓库git add 添加文件到暂存区 git add . 将所有修改过的文件添加到暂存区git commit -m 将暂存区的文件提交到版本库git status 查看工作区状态git diff 查看文件修改记录

2017-12-04 14:49:07 391

原创 Windows系统下curl的下载和配置

curl的下载和配置简介:用URL规则在命令行下工作的文件传输工具。下载:下载地址为 https://curl.haxx.se/download.html,在最底部找到Windows的版本,我下载的是Win64 x86_64 7zip 7.56.1,解压即可。环境变量配置:为了更方便的在任何路径下都可以使用curl命令,可以以将地址加入环境变量。我的curl可执行文件的路径为E:\tool

2017-11-28 20:16:36 1625

原创 Windows系统下Git的下载和配置

简介:分布式版本管理系统,可记录文件每次改动,便于多人协作编辑下载:git-for-windows下载地址https://git-for-windows.github.io/,具体安装步骤可参见http://blog.csdn.net/zzfenglin/article/details/53147604配置:使用前需要确认用户信息$ git config --global user.name "

2017-11-27 21:29:07 410

原创 Windows系统下pthread环境配置

记录下win7系统,vc6.0++编译器下配置POSIX多线程环境的步骤。配置下载地址 ftp://sourceware.org/pub/pthreads-win32/ 我下载的版本是 fpthreads-w32-2-1-0-release.exe 2005/3/16 运行后点Exract,解压完成后再点Done,可以看到三个文件夹,但只需要用到Pre-built.2文件夹。将Pre-

2017-11-09 09:30:31 1554

原创 PAT-1064 Complete Binary Search Tree(完全二叉树)

A Binary Search Tree (BST) is recursively defined as a binary tree which has the following properties:The left subtree of a node contains only nodes with keys less than the node's key.The right

2017-11-05 16:56:04 266

原创 PAT-1135 Is It A Red-Black Tree(二叉查找树的创建和遍历)

There is a kind of balanced binary search tree namedred-black tree in the data structure. It has the following 5 properties:(1) Every node is either red or black.(2) The root is black.(3)

2017-10-02 16:58:57 361

原创 PAT-1134 Vertex Cover (图的建立 + set容器)

A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at least one vertex of the set. Now given a graph with several vertex sets, you are supposed to tell if e

2017-09-18 09:53:57 1017

原创 PAT-1133 Splitting A Linked List(链表分解)

Cutting an integer means to cut a K digits long integer Z into two integers of (K/2) digits long integers A and B. For example, after cutting Z = 167334, we have A = 167 and B = 334. It is interesting

2017-09-17 21:52:17 534

空空如也

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

TA关注的人

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