Go语言中文网 为您找到相关结果 303

golang

GO并发,采用CSP模型(Communication Sequantial Process) 1,csp模型 2,不需要锁、不需要callback 3,并发编程 1,性能保障,可以做系统开发 2,垃圾回收机制 3,灵活的类型、支持函数式编程、异步IO 4,并发处理 package main import "net/http" import "fmt" func main() { http.HandleFunc("/", func(writer http.ResponseWriter, request *http.Request) { fmt.Fprintln(writer, "

Hello world

") }) http.ListenAndServe(":8888", nil...阅读全文

博文 2019-05-05 04:31:42 strideahead

Go 译文之如何使用反射 Part 2

作者:Jon Bodner | 地址:Learning to Use Go Reflection — Part 2 译者前言 这篇博文介绍的内容比较实在,主要是关于两方面的内容。一是介绍 reflection 在 encoding/json 中的应用,另一个是利用反射开发了一个 Cacher 工厂函数,实现函数式编程中的记忆功能,其实就是根据输入对输出进行一定限期的缓存。 这篇文章的翻译没有上一篇那么轻松,因为涉及了一些函数式编程的术语,之前也并没有接触过。为了翻译这篇文章,简单阅读了网上的一篇关于函数式编程的文章,文章地址。望没有知识性错误。 译文如下: 上一篇文章,(阅读英文原版),我们介绍了 Go 的反射包 reflection。并通过一些示例介绍了它的特性。但是,我们还不清楚它究竟有...阅读全文

博文 2019-06-19 10:34:17 波罗学

golang 函数

在golang中,函数不仅可以用于封装代码、分割功能、解耦逻辑,还可以化身为普通的值,在其他函数间传递、赋予变量、做类型判断和转换等等,就像切片和字典的值那样。 函数值可以由此成为能够被随意传播的独立逻辑组件(或者说功能模块)。 demo: package main import "fmt" type Printer func(content string) (n int, err error) func printToStd(content string) (byteNum int, err error) { return fmt.Println(content) } func main() { var p Printer p = printToStd p("something") }  ...阅读全文

分布式从ACID、CAP、BASE的理论推进

创声明作者: 刘丹冰Aceld,微信公众号同名 作为当今互联网后端技术栈工程师、无论Golang、Java或者其他系,分布式的理论概念都逐步成为必备理论基础知识之一, 本文主要讨论分布式的CAP理论的推进,这是你走进分布式大门的第一块敲门砖。 提纲:一、从本地事务到分布式理论二、ACID理论三、CAP理论四、CAP理论“3选2”论证五、BASE理论 附加:分布式概念 分布式实际上就是单一的本地一体解决方案,在硬件或者资源上不够业务需求,而采取的一种分散式多节点,可以扩容资源的一种解决思路。它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终的结果。 那么在了解分布式之前,我们应该从一体式的构造开始说明...阅读全文

博文 2020-03-27 10:32:48 aceld

阿里高级专家应答:各种数据在一个统一计算平台上的融合,才能产生更大的价值

摘要: 阿里巴巴这种超大数据体量上才会遇到的独特挑战,让应答在技术上有了更清晰的认识,一定要夯实分布式系统的基础。“只有把基础夯实了,才能支持上层各种计算场景在大体量上的实现,让各种新的算法在‘阿里体量’上真正发挥潜力。” 《沉淀》是云栖社区展示专家风采的人物栏目。它呈现每个专家独一无二的人生经历、认识和感悟的同时,也能帮助你沉淀技术,收获对技术和人生的判断。我们的想法是:“若你想精进为一个很厉害的人,不妨细细品味这些技术牛人背后的沉淀。”如果你想了解这些云栖专家更多分享时,请点击云栖专家频道,当然我们也欢迎你往前走一步,成为我们的云栖专家(https://yq.aliyun.com/expert),与技术大牛一起“煮酒论英雄”。 “这个没啥好讲的,找XX和XX技术Leader吧...阅读全文

Go gRPC教程-客户端流式RPC(四)

前言 上一篇介绍了服务端流式RPC,客户端发送请求到服务器,拿到一个流去读取返回的消息序列。 客户端读取返回的流的数据。本篇将介绍客户端流式RPC。 客户端流式RPC:与服务端流式RPC相反,客户端不断的向服务端发送数据流,而在发送结束后,由服务端返回一个响应。 情景模拟:客户端大量数据上传到服务端。 新建proto文件 新建client_stream.proto文件 1.定义发送信息 // 定义流式请求信息 message StreamRequest{ //流式请求参数 string stream_data = 1; } 2.定义接收信息 // 定义响应信息 message SimpleResponse{ //响应码 int32 code = 1; //响应值 string value =...阅读全文

博文 2020-04-26 10:25:53 FireworksEasyCool

Go实现海量日志收集系统(一)

项目背景 每个系统都有日志,当系统出现问题时,需要通过日志解决问题 当系统机器比较少时,登陆到服务器上查看即可满足 当系统机器规模巨大,登陆到机器上查看几乎不现实 当然即使是机器规模不大,一个系统通常也会涉及到多种语言的开发,拿我们公司来说,底层是通过c++开发的,而也业务应用层是通过Python开发的,并且即使是C++也分了很多级别应用,python这边同样也是有多个应用,那么问题来了,每次系统出问题了,如何能够迅速查问题? 好一点的情况可能是python应用层查日志发现是系统底层处理异常了,于是又叫C++同事来查,如果C++这边能够迅速定位出错误告知python层这边还好,如果错误好排查,可能就是各个开发层的都在一起查到底是哪里引起的。当然可能这样说比较笼统,但是却引发了一个问题: 当系...阅读全文

Golang 修饰器编程

导读 之前写过一篇《Python修饰器的函数式编程》,这种模式很容易的可以把一些函数装配到另外一些函数上,可以让你的代码更为的简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。所以,一直以来,我对修饰器decoration这种编程模式情有独钟,这里写一篇Go语言相关的文章。 看过Python修饰器那篇文章的同学,一定知道这是一种函数式编程的玩法——用一个高阶函数来包装一下。多唠叨一句,关于函数式编程,可以参看我之前写过一篇文章《函数式编程》,这篇文章主要是,想通过从过程式编程的思维方式过渡到函数式编程的思维方式,从而带动更多的人玩函数式编程,所以,如果你想了解一下函数式编程,那么可以移步先阅读一下。所以,Go语言的修饰器编程模式,其实也就是函数式编程...阅读全文

博文 2017-12-11 05:03:10 问题终结者

cmdr 03 - 用流式接口定义命令行参数处理选项

cmdr 03 - 用流式接口定义命令行参数处理选项基于 v0.2.17 转眼已经来到了 cmdr v0.2.17 了,为了解决此前版本中关于子命令和选项定义语句的太多嵌套的问题,我们实现了流式调用接口(Fluent APIs)。 cmdr 是我发布的一个开源的 golang 命令行参数处理器。它是 golang flags 的替代品。之所以发布它,是因为已有的 command line UI 三方包无法满足我的日常要求,迫不得己自己造一个。如果尚未有了解 cmdr 怎么使用的,不妨抽空浏览我的早前文章,以求获得一些基本概念: 另一个go命令行参数处理器 - cmdr cmdr 02 - 复刻一个 wget 稍后我会继续针对 cmdr 的用法做介绍文章。 至于本文呢 ,只是简单讲述一下如何使...阅读全文

博文 2019-06-01 15:34:38 hedzr

Go语言的浮点型比较大小及其函数式编程魅力

我们在编程中经常需要对两个浮点型比较大小,下面我就来分享一段这样的代码,同时也展示了Go语言函数式编程的独特魅力: import ( "fmt" "math" ) func main() { // 设置精确度为0.00001 var a Accuracy = func() float64 { return 0.00001 } fmt.Println(a.Equal(0.11111222, 0.11111222233333)) //打印结果为:true } type Accuracy func() float64 func (this Accuracy) Equal(a, b float64) bool { return math.Abs(a-b) < this() } func (this ...阅读全文

博文 2016-09-12 12:00:29 henrylee2cn

分布式爬虫对新站的协助

为了保障搜索引擎优化的质量一般在搭建新站的时候,前期会对内容一点点的进行填充,但是到了后期填充量会变得越来越大,所消耗的时间和精力也会逐步的增加,因此很多站长在做新的网站的时候首选分布式爬虫抓取信息进行填充,来保障网站定期更新量。分布式爬虫,可以大体理解为集群爬虫,如果有蜘蛛抓取任务,可以试用多台机器同时运行,很大的提升了工作效率。但是分布式爬虫并不是没有缺陷,也就是说效率提升的越快,那么网站触发反爬虫的机会也就越大。为了保障分布式爬虫的顺利使用,建议站长可以使用代理IP,使用代理IP一定要保障http代理IP的资源充足和http代理ip的上网安全和高匿性...阅读全文

博文 2019-02-27 16:39:39 xiniuxiaoniu

利用zookeeper实现分布式服务故障自动剔除/服务自动注册的思路

目前常见的web常规的负载均衡大多数是通过nginx的upstream配置将流量转发到内部的服务机上,来分担流量过多的情况,但是这里往往出现的一个问题是,nginx上配置服务器的ip是固定的,如果某台机器出现了服务故障,那么流量有概率会打到这台机器导致出现服务不可访问的故障,这时候往往需要人工介入将故障的节点ip剔除掉,那么有没有好的办法发现故障Ip剔除?可以利用zookeeper的特性来干这个事情的 zookeeper是什么? Zookeeper 会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,目前是基于这个思路去考虑的。大体的结构图: 具体思路 看到上面的树状结构大家应该想到了点上面东西了吧!那么服务自动发现具体可以这么做呢,这么利用zookeeper的这个特性去实现服...阅读全文

兄弟连Go语言培训教程带你实战GO案例(6)Go Base64编码

兄弟连Go语言培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。 GoBase64编码 Go提供了对base64编码和解码的内置支持 packagemain //这种导入包的语法将默认的base64起了一个别名b64,这样 //我们在下面就可以直接使用b64表示这个包,省点输入量 importb64"encoding/base64" import"fmt" funcmain(){ //这里是我们用来演示编码和解码的字符串 data:="abc123!?$*&()'-=@~" //Go支持标准的和兼容URL的base64编码。 //我们...阅读全文

Functional Go: 持久化数据结构简介

函数式编程模型因其天生对并发具备良好的支持,近些年来越来越受到重视。从这篇文章开始, 我将以一个系列的博客来记录函数式编程的一个重要组件:持久化数据结构在 Go 语言下的实现。 这篇文章是系列文章的一部分,如果还没有浏览过文章的其它部分请参考: 持久化数据结构简介 (本文) Vector Trie 的实现 Transient 及持久化 函数式编程不是新概念,像 Haskell、Clojure、Scala 等函数式/类函数式编程语言也已经出现和存在了很长时间, 很多函数式编程的概念现今已经被应用在很多其他领域,比如 Facebook 在 React 的基础上提出的 Flux 应用结构抽象就强调了引入持久化数据结构的好处。 事实上,Facebook 还开源了自己的 JavaScript 持久化数...阅读全文

一个实现 Twitter SnowFlake 算法 的 Go 分布式 UID 生成器

goSnowFlake 根据 Twitter SnowFlake 算法, 实现的分布式线程安全 UID 生成器 Feature 线程安全的 UID 生成器 绿色可插拔,无需依赖 Redis,Mysql,无状态 适合分布式系统 实现 Twitter SnowFlake 理论 Description 0 41 51 64 +---------------+----------------+-----------+ |timestamp(ms) | worker node id | sequence | +---------------+----------------+-----------+ id = timestamp | workerid | sequence (eg. 145106344...阅读全文

博文 2017-02-09 08:11:48 zheng_ji

【Golang 基础】 Go 语言 函数式编程

Go 语言函数式编程   在 Go 语言中函数是一等公民,它作为一个变量、类型、参数、返回值,甚至可以去实现一个接口,但是 Go 语言中函数不支持重载、嵌套和默认参数。 通过使用 func 关键字来定义函数 package main func main(){ } 函数支持的特性 作为变量; func test(){ // 函数体 } funcTest := test fmt.Println(funcTest()) 匿名函数 test := func(){ // 函数体 } 作为类型; package main import "fmt" type iAdder func(int, int) int func main(){ var adder iAdder = func(a int, b in...阅读全文

博文 2019-03-29 06:34:40 爱写作的程序猿

小心踩雷!一个小小的正则表达式竟把CPU拖垮......

通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。public static void main(String[] args) { String badRegex ="^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\\\/])+$"; String bu...阅读全文

博文 2018-10-12 18:34:41 西安北大青鸟官微

go 学习笔记之学习函数式编程前不要忘了函数基础

在编程世界中向来就没有一家独大的编程风格,至少目前还是百家争鸣的春秋战国,除了众所周知的面向对象编程还有日渐流行的函数式编程,当然这也是本系列文章的重点. 越来越多的主流语言在设计的时候几乎无一例外都会参考函数式特性( lambda 表达式,原生支持 map,reduce...),就连面向对象语言的 Java8 也慢慢开始支持函数式编程,所以再不学习函数式编程可能就晚了! 但是在正式学习函数式编程之前,不妨和早已熟悉的面向对象编程心底里做下对比,通过对比学习的方式,相信你一定会收获满满,因此特地整理出来关于 Go 语言的面向对象系列文章,邀君共赏. 猜猜看go是不是面向对象语言?能不能面向对象编程? go 学习笔记之详细说一说封装是怎么回事 go 学习笔记之是否支持以及如何实现继承 go 学...阅读全文

博文 2019-09-16 10:02:41 雪之梦技术驿站

Go语言HTTP请求流式写入body

背景 最近在开发一个功能时,需要通过 http 协议上报大量的日志内容,但是在 Go 标准库里的 http client 的 API 是这样的: http.NewRequest(method, url string, body io.Reader) body 是通过io.Reader接口来传递,并没有暴露一个io.Writer接口来提供写入的办法,先来看看正常情况下怎么写入一个body,示例: buf := bytes.NewBuffer([]byte("hello")) http.Post("localhost:8099/report","text/pain",buf) 需要先把要写入的数据放在Buffer中,放内存缓存着,但是我需要写入大量的数据,如果都放内存里肯定要 OOM 了,htt...阅读全文

博文 2020-06-02 15:32:44 mokeyWie

藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率居高不下

藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率居高不下 前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 藏在正则表达式里的陷阱,一个正则表达式导致CPU 利用率居高不下 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。 很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。 public static void main(String[] ...阅读全文

博文 2019-06-19 22:32:46 叶落知深

Go gRPC 系列三:流式客户端和服务端

前言 大家好,我是煎鱼,本章节将介绍 gRPC 的流式,分为三种类型: Server-side streaming RPC:服务器端流式 RPC Client-side streaming RPC:客户端流式 RPC Bidirectional streaming RPC:双向流式 RPC 流 任何技术,因为有痛点,所以才有了存在的必要性。如果您想要了解 gRPC 的流式调用,请继续 图 gRPC Streaming 是基于 HTTP/2 的,后续章节再进行详细讲解 为什么不用 Simple RPC 流式为什么要存在呢,是 Simple RPC 有什么问题吗?通过模拟业务场景,可得知在使用 Simple RPC 时,有如下问题: 数据包过大造成的瞬时压力 接收数据包时,需要所有数据包都接受成...阅读全文

博文 2019-10-06 18:34:42 煎鱼啊

go语言学习(11)--闭包与函数式编程

闭包 通过一个累加器来看闭包的概念 python 闭包 def fun1(): sum = 0 def fun2(v): nonlocal sum sum += v return sum return fun2 a = fun1() for i in range(10): print(a(i)) fun1返回的不是一个值,而是一个函数 fun2,a = fun2,所以 a(i)会打印 sum 的值,为什么 sum 一直在加呢,函数里的值为什么可以带到函数体外呢,这就是闭包的神奇之处,闭包是离散数学的一个概念,可以多看看网上的讲解加深印象 其实可以把闭包看做一个类, sum 就是类里的属性, fun2就是类的方法 所以 fun2可以使用 sum(自由变量) java 闭包 static Fun...阅读全文

博文 2018-08-11 01:34:56 神奇大叶子

Mac下安装golang

前言:越来越多人开始走学习golang之路,包括我身边的一些技术同事给自己“充电”新技术,能在未来工作中更好的生存发展。个人使用Mac环境,下面大概简述一安装过程:一、准备工作官网下载安装包:备注:目前最新稳定版本是v1.9开发工具包又分为安装版和压缩版。安装版是Mac和Windows特有的,他们的名字类似于:go1.9.darwin-amd64.pkggo1.9.windows-386.msigo1.9.windows-amd64.msi安装版,有点傻瓜式安装,环境路径都默认好,操作起来比较简单方便。压缩版的就是一个压缩文件,可以解压得到里面的内容,他们的名字类似于:go1.9.darwin-amd64.tar.gzgo1.9.linux-386.tar.gzgo1.9.linux-amd...阅读全文

兄弟连Go语言培训带你实战GO案例(44)Go 可变长参数列表

兄弟连Go语言培训课程体系设计架构包括了区块链的基础语言Go语言、区块链后端技术体系、区块链公链、区块链分布式应用开发等内容讲解,以及到最后的面试指导和项目实战。课程由清华微软谷歌名师团队精心打造,历时半年时间共同研发而出。 Go可变长参数列表 支持可变长参数列表的函数可以支持任意个传入参数,比如fmt.Println函数就是一个支持可变长参数列表 的函数。 packagemain import"fmt" //这个函数可以传入任意数量的整型参数 funcsum(nums...int){ fmt.Print(nums,"") total:=0 for_,num:=rangenums{ total+=num } fmt.Println(total) } funcmain(){ //支持可变长参数...阅读全文

JS 函数式编程思维简述(二):高阶函数

简述 无副作用(No Side Effects) 高阶函数(High-Order Function) 科里化(Currying) 闭包(Closure) 不可变(Immutable) 惰性计算(Lazy Evaluation) Monad 一等公民 高阶函数(High-Order Function)是函数式编程思维中的重要条件,而满足该条件的编程语言则需要将函数作为该语言的一等公民来看待。符合一等公民的条件是: 函数可以作为一种数据类型的值,赋值于一个变量; 函数可以作为参数,在其他函数中进行传递; 函数可以作为返回值,在其他函数中返回; image 将函数视作一等公民的语言有:JavaScript、Golang、Python、Scala、Lua、Lisp、Scheme等。同时,有着越来越多...阅读全文

golang中的同步对象

线程模型与调度 golang中的线程调度是半协同式调度,只有有阻塞的时候,才会进行goroutine的切换,独立于OS的线程调度。 mutex 通过sync.Mutex访问,具有Lock()与Unlock()方法。与一般的锁对象对应起来。 WaitGroup sync.WaitGroup用于等待多个对象。 wg.Add()用于指定等待多少个对象; wg.Done()用于宣告对象就位; wg.Wait()用于等待; 轻量级的原子操作atomic atomic提供一些原子量的操作。 sync.Once.Do()提供了只做一次的操作...阅读全文

博文 2019-02-11 11:34:45 areece

Go基础之For循环

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhao3132453/article/details/79262375 package main import "fmt" func main() { fmt.Println("For_Simple:\n") For_Simple() fmt.Println("For_Ever:\n") For_Ever() fmt.Println("For_Break_One:\n") For_Break_One() fmt.Println("For_Break_Any:\n") For_Break_Any() } func For_Simple() { //标准For循环,注意表达式不带花括号 sum :...阅读全文

博文 2019-03-16 11:31:03 myruo

藏在正则表达式里的陷阱

前几天线上一个项目监控信息突然报告异常,上到机器上后查看相关资源的使用情况,发现 CPU 利用率将近 100%。通过 Java 自带的线程 Dump 工具,我们导出了出问题的堆栈信息。 我们可以看到所有的堆栈都指向了一个名为 validateUrl 的方法,这样的报错信息在堆栈中一共超过 100 处。通过排查代码,我们知道这个方法的主要功能是校验 URL 是否合法。 很奇怪,一个正则表达式怎么会导致 CPU 利用率居高不下。为了弄清楚复现问题,我们将其中的关键代码摘抄出来,做了个简单的单元测试。public static void main(String[] args) { String badRegex = "^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]...阅读全文

博文 2018-11-05 18:34:44 java菜

GO 2,我们来了——2018/11/29

Go 2, here we come! 29 November 2018 道法自然,学究天人。论英语与Golang的长天一色,得翻译和技术之并驾齐驱。 背景(Background) At GopherCon 2017, Russ Cox officially started the thought process on the next big version of Go with his talk The Future of Go (blog post). We have called this future language informally Go 2, even though we understand now that it will arrive in incremental ...阅读全文

博文 2018-12-12 16:34:43 天地一小儒

一个数据库的开发问题

本人是c++开发者,最近接触Go,非常喜欢,准备转Go。 事情是这样的,目前公司的一个C++项目要使用一个分布式数据库进行数据存储和访问,我在学,能不能用Go的框架进行开发数据库,然后通过C++进行数据库的访问?这样做是否有意义,是否能在短时间内完成呢?请各位大神帮我出点主...阅读全文

【分布式架构】企业级分布式应用服务EDAS使用攻略免费分享

课程介绍 本课程主要讲解企业级分布式应用服务EDAS相关技术和使用方法。 企业级分布式应用服务(EDAS,Enterprise Distributed Application Service)是企业级互联网架构解决方案的核心产品,充分利用阿里云现有资源管理和服务体系,引入中间件成熟的整套分布式计算框架(包括分布式服务化框架、服务治理、运维管控、链路追踪和稳定性组件等),以应用为中心,帮助企业级客户轻松构建并托管分布式应用服务体系。 课程目标 掌握企业级分布式应用服务EDAS的使用 适合人群 云计算开发者 课时列表 • 第1 章 : EDAS介绍 • 课时1:EDAS介绍 • 第2 章 : EDAS...阅读全文

Go语言特性介绍

采用goroutine的方式使多线程编写更加容易、代码可读性更好,可以简单理解为订阅者发布者模式,设计类似于unix管道通信模式, 对于消息队列编程有了解的话很容易理解goroutine的处理模式。 能直接编译成二进制文件没有第三方依赖,因为go是静态编译,包含自己runtime,相对于c会大一些, 但相对java 这种依赖虚拟器的语言编译后的文件小的多。对于docker环境更小的镜像意味着更快的启动速度。 语言简洁高效,相对于python ruby编码负担没有增加多少,运行效率却有大幅度的提升。 golang对新人友好,学习负担小,语法简单,没有多余的语法糖,学习速度快。 c语言易学难用,go易学相对好用,学习和使用达到一个不错的价值平衡。学习和收益比很高,是一个性价比很好的语言。 go难...阅读全文

博文 2019-12-18 12:32:43 王司技术谈

用最小的内存发送大文件 翻译+分析

文: https://medium.com/@owlwalks/sending-big-file-with-minimal-memory-in-golang-8f3fc280d2c 一般我们发送文件 buf := new(bytes.Buffer) writer := multipart.NewWriter(buf) defer writer.Close() part, err := writer.CreateFormFile("myFile", "foo.txt") if err != nil { return err } file, err := os.Open(name) if err != nil { return err } defer file.Close() if _, err...阅读全文

博文 2018-12-12 17:34:47 wwq1988

Go语言开发(六)、Go语言闭包

Go语言开发(六)、Go语言闭包 一、函数式编程 1、函数式编程简介 函数式编程是一种编程模型,将计算机运算看作是数学中函数的计算,并且避免了状态以及变量的概念。在面向对象思想产生前,函数式编程已经有数十年的历史。随着硬件性能的提升以及编译技术和虚拟机技术的改进,一些曾被性能问题所限制的动态语言开始受到关注,Python、Ruby和Lua等语言都开始在应用中崭露头角。动态语言因其方便快捷的开发方式成为很多人喜爱的编程语言,伴随动态语言的流行,函数式编程也开始流行。 2、函数式编程的特点 函数式编程的主要特点如下:A、变量的不可变性: 变量一经赋值不可改变。如果需要改变,则必须复制出去,然后修改。B、函数是一等公民: 函数也是变量,可以作为参数、返回值等在程序中进行传递。 C、尾递归:如果递归...阅读全文

博文 2018-07-02 21:35:13 天山老妖S

兄弟连区块链培训带你实战GO案例(49)Go 时间

Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。不仅可以开发web,可以开发底层,目前知乎就是用golang开发。区块链首选语言就是go,以-太坊,超级账本都是基于go语言,还有go语言版本的btcd. 兄弟连Go全栈与区块链培训课程共计22周学习时长,划分为9个学习阶段,即区块链主流语言-Go语言开发实战、区块链后端技术体系-Go语言高并发和服务器开发、Go开发区块链公链(区块链密码学、分布式编程、共识算法、基本概念,Golan公链开发)、以-太坊与智能合约与DAPP开发、区块链分布式应用开发、区块链系统框架开发-超级账本与区块链3.0EOS、Go与区块链面试...阅读全文

博文 2018-07-30 15:34:54 Delete_88c3

Go语言学习笔记七(协程)

协程机制 Golang 线程和协程的区别 备注:需要区分进程、线程(内核级线程)、协程(用户级线程)三个概念。 进程、线程 和 协程 之间概念的区别 对于进程、线程,都是有内核进行调度,有CPU时间片的概念,进行抢占式调度(有多种调度算法) 对于协程(用户级线程),这是对内核透明的,也就是系统并不知道有协程的存在,是完全由用户自己的程序进行调度的,因为是由用户程序自己控制,那么就很难像抢占式调度那样做到强制的 CPU 控制权切换到其他进程/线程,通常只能进行协作式调度,需要协程自己主动把控制权转让出去之后,其他协程才能被执行到。 goroutine 和协程区别 本质上,goroutine 就是协程。 不同的是,Golang 在 runtime、系统调用等多方面对 goroutine 调度进行...阅读全文

博文 2019-08-11 10:02:41 Jabir_Zhang

ChainDesk : Go 语言入门指南

ChainDesk : Go 语言入门指南第一章:Ubuntu 的安装 http://www.chaindesk.cn/witbook/13/172?20190109meiti第二章:Linux 文件管理和常用命令 http://www.chaindesk.cn/witbook/13/173?20190109meiti 第三章:配置 golang 环境 http://www.chaindesk.cn/witbook/13/174?20190109meiti 第四章:第一个 helloworld 程序 http://www.chaindesk.cn/witbook/13/175?20190109meiti 第五章:安装 goland 集成开发工具 http://www.chaindesk.cn...阅读全文

博文 2019-01-09 14:34:45 ChainDesk

88.合并两个有序数组

Golang语法不支持while循环,自增不能当表达式使用,所以用它写这道题看起来很丑 func merge(a []int, m int, b []int, n int) []int{ tmp := make([]int, m+n) i, j, k := 0, 0, 0 for i < m && j < n { if a[i] < b[j] { tmp[k] = a[i] k++ i++ } else { tmp[k] = b[j] k++ j++ } } for i < m { tmp[k] = a[i] k++ i++ } for j < n { tmp[k] = b[j] k++ j++ } for k := 0; k< m+n;k++ { a[k] = tmp[k] } retur...阅读全文

博文 2019-01-29 17:34:47 一根薯条

进程线程协程的介绍

进程(process): 定义 狭义定义:进程就是一段程序的执行过程例如启动的某个app。 广义定义:进程是一个具有独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程即是基本的分配单元,也是基本的执行单元。 特征 每个进程都有自己的地址空间,一般情况下,包含文本区域、数据区域、堆栈 进程是执行中的程序,程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称之为进程 进程本身不会运行,是线程的容器。线程不能单独执行,必须组成进程 一个程序至少有一个进程,一个进程至少有一个线程 对于操作系统来讲,一个任务就是一个进程,比如开一个浏览器就是启动一个浏览器进程。打开一款app就是打开一个进程,例如打开香哈就是运行了一个...阅读全文

博文 2019-05-18 16:34:37 猫祭司

基于consul构建golang系统分布式服务发现机制

文地址-石匠的Blog: http://www.bugclosed.com/post/5 在分布式架构中,服务治理是一个重要的问题。在没有服务治理的分布式集群中,各个服务之间通过手工或者配置的方式进行服务关系管理,遇到服务关系变化或者增加服务的时候,人肉配置极其麻烦且容易出错。 之前在一个C/C++项目中,采用ZooKeeper进行服务治理,可以很好的维护服务之间的关系,但是使用起来较为麻烦。现在越来越多新的项目采用consul进行服务治理,各方面的评价都优于ZooKeeper,经过几天的研究,这里做一个总结。 zookeeper和consul比较 开发语言方面,zookeeper采用java开发,安装的时候需要部署java环境;consul采用golang开发,所有依赖都编译到了可执行程序...阅读全文

博文 2018-07-26 14:30:00 williamjie

Go36-12-函数

函数 在Go语言中,函数是一等(first-class)公民,函数类型也是一等的数据类型。 函数不但可以用于封装代码、分割功能、解耦逻辑,还可以化身为普通的值,在其他函数间传递、赋予变量、做类型判断和转换等等。函数值可以由此成为能够被随意传播的独立逻辑组件(或者说功能模块)。 一等公民 开头说的,函数是一等公民,函数类型是一等数据类型: package main import "fmt" type calcFunc func(int, int) int func add(x, y int) int { return x + y } func sub(x, y int) int { return x - y } func main() { var f1, f2 calcFunc f1, f2 ...阅读全文

博文 2019-01-08 20:35:14 骑士救兵

分布式从ACID、CAP、BASE的理论推进

作为当今互联网后端技术栈工程师、无论Golang、Java或者其他系,分布式的理论概念都逐步成为必备理论基础知识之一, 本文主要讨论分布式的CAP理论的推进,这是你走进分布式大门的第一块敲门砖。 提纲: 一、从本地事务到分布式理论 二、ACID理论 三、CAP理论 四、CAP理论“3选2”论证 五、BASE理论 附加:分布式概念 分布式实际上就是单一的本地一体解决方案,在硬件或者资源上不够业务需求,而采取的一种分散式多节点,可以扩容资源的一种解决思路。它研究如何把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些部分分配给多个计算机进行处理,最后把这些计算结果综合起来得到最终的结果。 那么在了解分布式之前,我们应该从一体式的构造开始说明。 一、从本地事务到分布式理论 理解第...阅读全文

博文 2020-03-27 11:36:18 aceld

2020 区块链 golang 版本(7)

封面 我们知道比特币的安全性来源 hash 加密和共识机制,所以我们今天聊一聊比特币中的共识机制。 分布式共识 分布式的 hash 表,系统有很多计算机,这些计算机共同来维护一个 hash 表。 Alice -> 12345 下面介绍关于分布式两个结论 关于分布式 FLP impossibility result 在一个异步系统里(网络延时没有上限),即使一个成员是有问题,也就是无法取得共识。 CAP Theorem C(Consistency) A(Availability) P(Partition tolerance) 任何一个分布系统,这个三个性质中最多只能满足两个,无法全部满足以上3性质。 分布式共识一个比较著名协议我 Paxos,Paxos 又能一直没有达到共识。这些理论我们简单了...阅读全文

阿里云文件存储 NAS 使用教程

课程介绍 阿里云文件存储(Network Attached Storage,简称NAS)是面向阿里云ECS实例、HPC和Docker的文件存储服务,提供标准的文件访问协议,用户无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。 产品详情:https://www.aliyun.com/product/nas 课时列表 • 课时1:NAS入门与提高系列之基本概念 • 课时2:NAS入门与提高系列之典型应用场景 • 课时3:NAS入门与提高系列之如何在Windows下使用NAS 开始学习http://click.aliyun.com/m/27883/ ...阅读全文

五分钟学Java:如何才能学好Java Web里这么多的技术

副本_未命名.jpg 原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 系列文章介绍 本文是《五分钟学Java》系列文章的一篇 本系列文章主要围绕Java程序员必须掌握的核心技能,结合我个人三年多的Java学习和工作经历,总结和沉淀下来的方法论,希望能让Java学习这件事变得更简单,作者目前在阿里做Java,忙里偷闲分享一些技术文章,有兴趣看本系列更多文章可以关注我的公众号【Java技术江湖】 系列文章将会把一些技术学习方法、过程、要领与我的学习经验相结合,更加浅显易懂,并且我也会把我学习时用的资料,书籍和文章拿出来分享给大家,节省你我的时间。所谓授人以鱼也要授人以渔,是本系列文章希望达到的目标。 本文思维导图 在这里插入图片描述 什么是Java Web 不知道Java We...阅读全文

博文 2020-03-05 03:32:48 程序员黄小斜