Golang什么情况下会申请堆内存,由什么决定的,学到堆内存一定会有这样的一个疑问…
栈内存:一般由系统申请和释放。比如函数的入参、局部变量、返回值等
堆内存:一般由程序员申请和释放(malloc/free new/delete等)。使用malloc关键字申请的内存就在堆内存,申请和释放要成对使用,否则会造成内存泄漏。对于Golang系统会自动回收已经不使用的堆内存,这就是GC的工作啦
more >>Golang什么情况下会申请堆内存,由什么决定的,学到堆内存一定会有这样的一个疑问…
栈内存:一般由系统申请和释放。比如函数的入参、局部变量、返回值等
堆内存:一般由程序员申请和释放(malloc/free new/delete等)。使用malloc关键字申请的内存就在堆内存,申请和释放要成对使用,否则会造成内存泄漏。对于Golang系统会自动回收已经不使用的堆内存,这就是GC的工作啦
more >>学习了上2篇Go语言的内存管理的原理(一、TCMalloc原理https://juejin.cn/post/6919005994966056968 二、Go内存管理原理https://juejin.cn/post/6920485540391288839)我们理解源码的流程就非常easy啦。
Golang的内存管理的核心思想就是完成类似预分配、内存池等操作,以避开系统调用带来的性能问题,防止每次分配内存都需要系统调用。
下图是Golang内存管理流程图 PS:如果有什么错请各位大佬指正
/gopath/src/github.com/hyperledger/fabric/fabric-samples/first-network/crypto-config 证书存储路径。下面有很多证书做以解释:
MSP提供的功能:具体的身份格式、用户证书验证、用户证书撤销、签名生成和验证。
sdk访问区块链网络(peer和orderer)会使用tlsca证书
more >>Go内存管理是基于TCMalloc基础上进行设计的,所以在学习Go内存管理之前先学习TCMalloc原理
TCMalloc(Thread Cache Malloc)是线程级别的内存管理模式。
TCMalloc优势:
1、速度快
2、减少锁竞争。对于小对象,只有在对应线程分配的空闲块不足的时候,才会使用到锁;对于大对象,TCMalloc尝试使用有效的自旋锁
总结来说就是:最大化内存使用率,最小化分配时间。
docker提供2种方法对数据卷进行存储。 1、bind mount 2、docker管理数据卷
使用-v 关键字标识容器数据挂载路径。这里一定要指定宿主机地址和容器地址。
1 | # -v <host path>:<container path> |
bind还有其他特性
可以添加单个文件
more >>本文会讲到docker的整体框架和基本原理。以及最主要的镜像(是什么,怎么构建),容器(是什么,怎么运行),在最后说一下容器都有哪些优点。容器基础网络已经在之前的文章分享过,有兴趣的可以查看。https://juejin.cn/post/6904201044390051848
Docker采用的是C/S架构,客户端向服务端发送请求,服务器负责构建、运行和分发容器。这里最常用的Docker客户端就是docker命令。服务端即是Docker daemon,其运行在宿主机上,负责创建、运行、监控容器和构建存储镜像。我们经常改完Docker的配置之后,会执行systemctl daemon-reload,这就是重启服务的作用。下图是查看docker服务。
more >>Endorser背书都干了什么
Peer节点中某些节点会充当背书节点的角色。在SDK发起提案请求之后,背书节点进行响应。
背书节点对请求服务的签名提案消息执行启动链码容器、模拟执行提案、签名背书的流程。Endorser背书节点在链码模拟执行结束后调用ESCC背书管理系统链码,利用本地签名者实体对模拟执行结果进行签名背书,然后将模拟执行结果、背书签名、链码执行响应消息等封装为提案响应消息(ProposalResponse类型),并回复给请求客户端。
defer是一种延迟函数,每增加一个defer函数会将defer函数压栈,所以在执行的时候是后压栈先执行
1、defer触发的场景主要有三
A “defer” statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement, reached the end of its function body, or because the corresponding goroutine is panicking
1)主函数return返回时,在return执行之前
2)主函数执行结束时
3)当前goroutine发生panic
学习Docker,会学习到docker网络,一个网络是一组可以相互联通的端点。Docker在安装时就会创建3个网络
1 | # 查看网络 |
其余2个是自己创建的网络,可以暂时不关注
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true