Golang Context控制超时使用

Context是一个树,从父节点可以派生出子的Context,父节点取消后,所有相关连的子节点都会取消 ctx中存在一个2秒后的timer,返回一个channel用于计时,计时到点之后,<-ctx.Done() channel返回。 最后执行defer栈中的cancel,取消定时器 代码如下, main.go package main import ( "fmt" "io/ioutil" "net/http" "time" "golang.org/x/net/context" ) type Re...阅读全文

简书 2020-11-06 14:32:44 FredricZhu

只用200行Go代码写一个自己的区块链!

只用200行Go代码写一个自己的区块链! 区块链是目前最热门的话题,广大读者都听说过比特币,或许还有智能合约,相信大家都非常想了解这一切是如何工作的。这篇文章就是帮助你使用 Go 语言来实现一个简单的区块链,用不到 200 行代码来揭示区块链的原理!高可用架构也会持续推出更多区块链方面文章,欢迎点击上方蓝色『高可用架构』关注。 “用不到200行 Go 代码就能实现一个自己的区块链!” 听起来有意思吗?有什么能比开发一个自己的区块链更好的学习实践方法呢?那我们就一起来实践下! 因为我们是一家从事医...阅读全文

51CTO博客 2020-11-05 10:23:33 高可用架构

200行Go代码实现自己的区块链——区块生成与网络通信

200行Go代码实现自己的区块链——区块生成与网络通信 在第一篇文章[1]中,我们向大家展示了如何通过精炼的Go代码实现一个简单的区块链。如何计算每个块的 Hash 值,如何验证块数据,如何让块链接起来等等,但是所有这些都是跑在一个节点上的。文章发布后,读者反响热烈,纷纷留言让我快点填坑(网络部分),于是就诞生了这第二篇文章。 这篇文章在之前的基础上,解决多个节点网络内,如何生成块、如何通信、如何广播消息等。 流程 第一个节点创建“创始区块”,同时启动 TCP server并监听一个端口,等待其...阅读全文

51CTO博客 2020-11-05 10:19:17 高可用架构

200行Go代码实现区块链 —— 挖矿算法

200行Go代码实现区块链 —— 挖矿算法 在本系列前两篇文章中[1][2],我们向大家展示了如何通过精炼的Go代码实现一个简单的区块链。包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法。 大家都无不惊呼比特币、以太坊及其他加密电子货币的持续狂热,特别是对于刚接触这个领域的新手,不断得听到张三李四通过 GPU “挖矿”而聚集价值数万乃至数百万加密电子货币。那么“挖矿”到底是什么? 它是如何工作的? 相信对于程序员来说,没有什么比自己动手实践一遍“挖矿”算法更好的学习办...阅读全文

51CTO博客 2020-11-05 10:04:23 高可用架构

golang 策略模式之排序算法策略

起源最近在学设计模式,这个东西学起来,总是模模糊糊,看起来懂,又不知该应用到何处,咬着牙学完了之后,准备学习算法,写了两个简单的排序算法,突然灵光一闪,如果我想用不用的算法去排序的时候,完全可以用策略模式,正好学以致用示例我先设计了一个排序接口type sortAlgo interface { sort([]int) }然后,我写了两个算法,一个是冒泡排序,一个是简单选择排序,都实现了这个接口type bubbleSort struct { } func (b *bubbleSort) sort...阅读全文

Segmentfault 2020-11-09 10:32:34 木申

Go+Python双语言混合开发-第1章 【阶段一:Go语言基础】

1-1 Go+Python双语言混合开发-课程导学 (11:35)1-2 课程资源获取方式 - 非常重要!!! (06:07)1-3 课程中需要用到的开发环境介绍 (03:47)1-4 windows中安装centos7虚拟机 (19:16)1-5 xshell的安装和使用 (04:14)1-6 git的安装和配置 (06:22)1-7 docker和docker-compose的安装 (10:31)1-8 mysql和navicat的安装和配置 (10:09)1-9 python的安装和配置 ...阅读全文

Segmentfault 2020-11-09 10:32:34 浅川好孩子

【GO快速入门】使用govendor管理go包

一、安装govendor 1、下载并编译 go get -u -x -v github.com/kardianos/govendor 2、验证一下是否能用: govendor --version //v1.0.9 如果命令找不到,先确认一下$GOPATH/bin目录是否有govendor这个文件,然后再看看$GOPATH/bin有没有加入到PATH全局变量中。 二、克隆项目 1、本文以Data-register项目为例。 git clone git@git.ju3ban.net:artarva/...阅读全文

简书 2020-11-05 15:32:41 海阳之新

面试总是过不了,看完蚂蚁金服6面,顺利征服面试官

前段时间有粉丝来信,说他面试上了蚂蚁金服,这感情好啊,蚂蚁都准备上市了,这不距离财富自由不远了吗?今天小编就来分享一下这位粉丝的面试经历,希望小编的分享能对你有所帮助。 面试前 蚂蚁的面试挺独特,每轮面试都没有 HR 约时间,一般是晚上 8 点左右面试官来一个电话,问是否能面试,能的话开始面,不能就约一个其它时间。 全程 6 面,前五面技术面,电话面试,最后一面是 HR 面,现场面。 一面 介绍一下自己 问项目经历, 聊”数据同步” 接着聊上了 K8S 的项目 有没有什么钻研得比较深得技术? k...阅读全文

简书 2020-11-05 15:32:41 程序员麦冬

Golang中sync.Map的实现原理

前言 前面,我们讲了map的用法以及原理Golang中map的实现原理,但我们知道,map在并发读写的情况下是不安全。需要并发读写时,一般的做法是加锁,但这样性能并不高,Go语言在 1.9 版本中提供了一种效率较高的并发安全的 sync.Map,今天,我们就来讲讲 sync.Map的用法以及原理 使用方法 func main() { var m sync.Map //插入 m.Store("1","a") //取值 fmt.Println(m.Load("1")) //删除 m.Delete("...阅读全文

简书 2020-11-05 15:32:41 书生也爱羊

并发组件 | Go设计模式实战

嗯,Go设计模式实战系列,一个设计模式业务真实使用的golang系列。 前言 本系列主要分享,如何在我们的真实业务场景中使用设计模式。 本系列文章主要采用如下结构: 什么是「XX设计模式」? 什么真实业务场景可以使用「XX设计模式」? 怎么用「XX设计模式」? 本文主要介绍「组合模式」结合Go语言天生的并发特性,如何在真实业务场景中使用。 之前文章《代码组件 | Go设计模式实战》已经介绍了「组合模式」的概念,以及在业务中的使用。今天我们结合Go语言天生的并发特性,升级「组合模式」为「并发组合模...阅读全文

简书 2020-11-05 15:32:41 码农奋斗之路

PHP框架之 Laravel 高并发调优笔记

调整框架本身的配置 编辑.env APP_ENV = production APP_DEBUG = false php artisan route:cache / php artisan config:cache composer dump-autoload --optimize php artisan optimize 其他可能 开启 OPcache php-fpm 配置调优 But..... 压测很容易看出,这些很难看到提高十倍以上性能的效果 如果你正在考虑框架性能优化的问题, 你对 PHP...阅读全文

简书 2020-11-05 14:32:41 it阿布

screego 安装配置教程:一款简单易用的屏幕共享工具

文章首发于个人公众号:「阿拉平平」 screego [1] 是一个由 Golang 开发的屏幕共享工具,我实际测试下来发现显示效果非常好,和大家分享下。 安装 screego 目前最新的版本为 v1.0.7,选择并下载系统对应的安装包: [root@localhost ~]# wget https://github.com/screego/server/releases/download/v1.0.7/screego_1.0.7_linux_amd64.tar.gz 解压后可以得到二进制文件以及...阅读全文

简书 2020-11-05 13:32:43 Xpitz