- 博客(13)
- 收藏
- 关注
原创 Docker 镜像
镜像是 Docker 中重要的概念,Docker 把应用程序及其依赖打包在 Image 文件中。然后 Docker 通过加载 Image 文件载入生成容器实例。Image 文件可以看作是容器的模板。Docker 根据 Image 文件生成实例,同一个 Image 可以生成多个同时运行的容器实例。Image 是一个二进制文件,通常一个 Image 都是通过继承另一个父镜像,加上一些新的个性化设置之后生成的。例如,在一个 Ubuntu 的镜像上可以添加 Nginx 形成新的镜像。[外链图片转存失败,源站可能有
2022-06-04 02:17:29
266
原创 Go 标准库 sync.Atomic
在 Go 语言标准库中,包将底层硬件提供的原子操作封装成了 Go 的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go 语言在 1.4 版本的时候向包中添加了一个新的类型。此类型的值相当于一个容器,可以被用来“原子地"存储(Store)和加载(Load)任意类型的值。我在邮件列表中翻到了14年的这段讨论,有用户报告了包在多核机器上(80-core)上的性能问题,认为之所以不能完全利用到多核的特性是因为它里面使用了大量的互斥锁(mutex)...
2022-06-04 02:14:24
426
原创 Go 的值传递与引用传递
在说 Go 的 与 之前需要先了解一下 Go 的传递方式。首先,Go 的变量有 与 两种类型,某种意义上来说这两种参数传递的方式都是按值传递。为什么这么说呢?当一个变量被声明为 类型。将其作为参数传递时,传递的是变量的副本。你会发现它的内存地址以及引用内存地址与原变量都是不一样的。如果变量被声明为 类型。传递变量时,会创建一个新的指针,同时这个指针会指向原变量的内存地址。所以这种传递方式可以看作是传递了一份变量引用地址的副本。这就是为什么前面说 Go 的参数传递都是按值传递。...
2022-06-04 02:07:25
2420
1
原创 非对称加密与对称加密
加密算法 在网络不可信的大前提下,所有数据传输都是不安全的,都是可篡改、易泄露的。例如,在银行信用卡交易如果不进行加密传输,则所有人都有可能看到这笔交易的详细信息,包括信用卡密码等内容。所以就引入了加密算法,常用加密算法主要分为两类 对称加密 与 非对称加密。先看一下对称加密的主要内容。对称加密 对称加密中,加密解密使用的都是同一个密钥。例如,甲 与 乙通信,甲用密钥对数据加密发送给乙,...
2019-09-27 13:55:32
500
原创 Beego RESTful 小记
什么是 RESTful 这个的话在这里还是不做太多赘述,留等以后再开一篇关于 RESTful 的博客。这里只简单的说明。 RESTful 可以理解为一套接口规范,以资源为核心的一套规范。比如"用户信息"就可以看成是一个资源,针对"用户信息"这个资源就有相应的CURD操作。对应HTTP的Post,Put,Get,Delete请求。HTTP 请求方法与CURD的对应关系POST : 新增...
2019-09-25 14:47:24
736
原创 Shell 参数获取的两种方式
方式一示例 新建一个test.sh文件#!/bin/bashecho "shell 名称 = $0"echo "参数1 = $1"echo "参数2 = $2"echo "参数3 = $3"echo "参数4 = $4"echo "参数5 = $5" 执行脚本 : sh test.sh 5 6 3 6 2 输出结果shell 名称 = test.sh参数1 = 5...
2019-09-25 14:42:50
14033
原创 Golang 中 make 与 new 的区别
make make 内建函数,只能用来作为 slice、map 和 channel 的声明,返回的是类型本身,而不是指针,因为它们本身就是一个引用类型。并且会对其进行一些初始化操作。例如,slice 在创建时,会初始化底层数组,并且初始化 slice 的长度、指针和容量等基础数据。s := make([]int, 0, 5) // 创建 slicem := make(map[string]...
2019-09-25 14:40:16
414
原创 go modules 包管理工具使用
包管理工具 Go 最初使用 GOPATH 模式管理第三方扩展包。但是,项目使用的第三方包多了,依然使用这种方式一个个下载,则显得太过麻烦。随后在 golang 1.5 引入了 vendor 机制。但是,依然需要将文件下载到本地项目中的 vendor 目录中。所以在 go 1.11 版本后推出了 go module 功能,go module 只需要在本地保存 go.mod 文件以及用作校验的 g...
2019-09-25 14:38:26
1475
原创 Golang 中的 Goroutine 调度原理与 Chanel 通信
简介 在 Go 中,每一个并发的活动称为一个 Goroutine 或者 协程。当一个程序启动时,只有一个 Goroutine 来调用 main 函数,称之为 主Goroutine。新的 Goroutine 通过 go 关键字进行创建。例如go f() // 新建一个调用 f() 的 Goroutine 理论上 Goroutine 与其他编程语言的 线程 或 OS线程 做类似。不过 Go...
2019-09-25 14:37:07
762
1
原创 一致性 Hash 原理
一致性哈希是啥? 引用百度百科的一段介绍:一致性哈希算法在1997年由麻省理工学院提出,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。什么情况下我们要用到一致性哈希? 一致性 hash 在分布式系统中应用较为广泛。例如,Redis 集群便是一个典型的例子。常...
2019-09-25 14:35:40
550
原创 Raft共识算法
共识算法 共识是分布式系统容错的基本问题。共识涉及多个服务器数据达成一致。一旦集群中的所有节点就数据做出有效决定之后,该决定就是最终的决定。当大多数节点(超过半数支持)则集群数据进行改变。所以,如过有5台服务器,这当中如果挂掉了2台,那么集群照样运行。但如果有更多的服务器挂掉,集群就会停止运行。什么是Raft 首先,容错和性能方面与 Paxos 相当,不同之处在于它被分解为相对独立的子...
2019-09-25 14:33:56
303
原创 默克尔树 Merkle Tree
基础概述 默克尔树(Merkle Tree),可以被用于验证任何类型的数据的存储。通常被用作与其他节点的计算机之间进行数据转移的数据完整性以及正确性的校验。 在比特币中。每个区块都有自己的 block header 其中包含了上一个区块的 hash 指针、难度 target 以及 nonce 等信息,最重要的是其中包含的 Merkle root hash。这个信息是当前区块中所有包含的交易...
2019-09-25 14:31:19
1199
原创 区块链中的 WIF
说明这里所有的内容都是随便写的,不要往这些地址进行交易。因为你会失去你的钱。WIF WIF(Wallet import format) 钱包导入格式,(也被称为电子钱包的导出格式)是一种私有的 ESCDSA (椭圆曲线签名算法) 秘钥,意在使私钥更容易复制的方式。 下面是一个可以使用的 WIF 加密、解密的测试套件:http://gobittest.appspot.com/Privat...
2019-09-25 14:22:54
1645
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人