golang 线程池及一些总结

先说生产者消费者问题,就是多个生产者生产商品,放到一块缓存中,然后多个消费者从缓存取出并消费商品; 这里就有了三个对象或说实体,就是生产者,消费者,固定大小的缓存; 然后就要说下一些限制条件, 1. 如果缓存满了,生产者就不能生产商品了,只能等着有空间了再生产; 2. 如果缓存空了,消费者就不能消费商品了,只能等以后商品了再消费; 之前用c实现的时候,稍微麻烦一下; 消费者: mutex.lock() while(container.size == 0){ pthread_c...阅读全文

Go语言中文网 2017-11-24 16:37:58 jianzi123

Merkle Tree学习

/*最近在看Ethereum,其中一个重要的概念是Merkle Tree,以前从来没有听说过,所以查了些资料,学习了Merkle Tree的知识,因为接触时间不长,对Merkle Tree的理解也不是很深入,如果有不对的地方,希望各位大神指正*/ Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1] 1. H...阅读全文

博客园 2016-05-27 17:02 fengzhiwu

为Go程序创建最小的Docker Image

本文将会介绍如何使用docker打包一个golang编写的应用程序,最终的产物就是一个Dockerfile文件,可别小瞧这短短几行代码,涉及的知识点可不少,接下来我们就仔细剖析一下吧。 FROM golang:alpine ADD src /go/src RUN go install -v test ENTRYPOINT ["/go/bin/test"] CMD ["-logtostderr"] 1. 基础镜像选择 第一行是指定一个基础镜像,在此基础上创建我们的镜像,此处使用的是golang:a...阅读全文

博客园 2017-11-23 10:35 gaorong

golang编程之我见

golang编程之我见 学习了两个月的golang,语法算是基本掌握了,从一个C++程序员的角度,提出自己的几个看法吧。 1,没有一个好的包管理工具。 我在公司用的是glide的包管理,这个工具的好处就是可以根据git提交的hash值选择不同的版本。 问题有2个: 每次执行完glide init以后,需要在glide.yaml中手动修改版本号,否则可能会有API不兼容的问题。 因为有部分库需要从google官方下载,需要fan qiang,每次都比较慢。 不知道为什么golang不直接像pyth...阅读全文

博客园 2017-11-23 12:39 Dennis-mi

Golang 任务队列策略 -- 读《JOB QUEUES IN GO》

Golang 在异步处理上有着上佳的表现。因为 goroutines 和 channels 是非常容易使用且有效的异步处理手段。下面我们一起来看一看 Golang 的简易任务队列 一种"非任务队列"的任务队列 有些时候,我们需要做异步处理但是并不需要一个任务对列,这类问题我们使用 Golang 可以非常简单的实现。如下: go process(job) 这的确是很多场景下的绝佳选择,比如操作一个HTTP请求等待结果。然而,在一些相对复杂高并发的场景下,你就不能简单的使用该方法来实现异步处理。这时...阅读全文

博客园 2017-11-23 09:58 artong0416

golang实现任意日期格式转换标准日期格式

*Fork了别人一个Repository 日期解析* 这个package的功能很简单就是将一个未知的日期格式转化为标准的日期格式,日常生活中可以作为日期的数据清洗,接下来将开发以此Repository为基础,支持可配置的自动识别日期格式的功能,Repository正在开发中,有兴趣的小伙伴可以随时提PR,共同完善,共同学习。 Repository地址: noaway/dateparse ( http://link.zhihu.com/?target=https%3A//github.com/...阅读全文

知乎专栏 2017-11-17 11:53:25 诺唯

如何在 Linux 中将文件编码转换为 UTF-8

在这篇教程中,我们将解释字符编码的含义,然后给出一些使用命令行工具将使用某种字符编码的文件转化为另一种编码的例子。最后,我们将一起看一看如何在 Linux 下将使用各种字符编码的文件转化为 UTF-8 编码。-- Aaron Kili本文导航-将文件从 ISO-8859-1 编码转换为 UTF-8 编码39%-将多个文件转换为 UTF-8 编码66%在这篇教程中,我们将解释字符编码的含义,然后给出一些使用命令行工具将使用某种字符编码的文件转化为另一种编码的例子。最后,我们将一起看一看如何在 Li...阅读全文

微信公众平台 2016-11-29 译者:StdioA

Goroutine调度实例简要分析

前两天一位网友在微博私信我这样一个问题: 抱歉打扰您咨询您一个关于Go的问题:对于goroutine的概念我是明了的,但很疑惑goroutine的调度问题, 根据《Go语言编程》一书:“当一个任务正在执行时,外部没有办法终止它。要进行任务切换,只能通过由该任务自身调用yield()来主动出让CPU使用权。” 那么,假设我的goroutine是一个死循环的话,是否其它goroutine就没有执行的机会呢?我测试的结果是这些goroutine会轮流执行。那么除了syscall时会主动出让cpu时间外...阅读全文

Tony Bai 十一月 23, 2017 bigwhite

Go 1.10 的pprof的工具将直接支持火焰图

google/pprof是一个性能可视化和分析工具,由Google的工程师开发。虽然自称不是Google官方的工具,但是项目挂在google的team下,而且还在Google其它项目中得到应用,是非常好的一个性能剖析工具。 go tool pprof 复制了一份google/pprof的代码, 封装了一个golang的工具,用来分析Go pprof包产生的剖析数据,也就是最终数据的处理和分析还是通过gogole/pprof来实现的。 这样,你至少就用两种方式来分析Go程序的 pprof数据: g...阅读全文

鸟窝 2017年11月22日 smallnest

Go 语言核心文件调试

程序调试对于检查和理解程序运行过程和状态是非常有用的。 一个核心转储文件( core dump file )中包含程序进程运行时的内存信息和进程状态。它主要用于程序的问题调试,以及在运行过程中理解程序的状态。这些对于我们诊断程序问题原因和分析生产环境中的服务问题有非常大的帮助。 在本文中,我会用一个非常简单的 hello world 网页应用服务举例,实际情况,我们的程序会更加复杂。对核心转储文件的分析意义在于可以帮助我们查看程序当时的运行情况,并可能让我们有机会重现当时的程序问题。...阅读全文

Go语言中文网 2017-11-23 10:04:40 jzhongming

Golang反射

为了验证go语言的反射机制,特谢了以下demo,基本涵盖了go反射的各种用法,由于代码都有注释,我就不分开解说了。 package main import ( "fmt" "reflect" ) type person struct { Name string `json:name` Age int `json:age` } func (this person)GetName() string{ fmt.Println("Call GetPerson") return this.Name } f...阅读全文

开源中国博客 2017-11-23 10:03:08 黑客画家

使用 Ansible Container 构建和测试应用程序

容器是一个日益流行的开发环境。作为一名开发人员,你可以选择多种工具来管理你的容器。本文将向你介绍 Ansible Container,并展示如何在类似生产环境中运行和测试你的应用程序。 入门 这个例子使用了一个简单的 Flask Hello World 程序。这个程序就像在生产环境中一样由 Apache HTTP 服务器提供服务。首先,安装必要的 docker 包: sudo dnf install docker Ansible Container 需要通过本地套接字与 Docker 服务进行通...阅读全文

Linux 中国 2017-11-19 06:11 geekpi

使用 LXD 容器运行 Ubuntu Core

Ubuntu Core 是什么? Ubuntu Core 是完全基于 snap 包构建,并且完全事务化的 Ubuntu 版本。 该系统大部分是只读的,所有已安装的应用全部来自 snap 包,完全使用事务化更新。这意味着不管在系统更新还是安装软件的时候遇到问题,整个系统都可以回退到之前的状态并且记录这个错误。 最新版是在 2016 年 11 月发布的 Ubuntu Core 16。 注意,Ubuntu Core 限制只能够安装 snap 包(而非 “传统” 软件包),并且有相当数量的 snap 包...阅读全文

Linux 中国 2017-11-23 00:42 aiwhj

MongoDB 上市后,带你认识这款非同一般的文档数据库

本文地址:https://linux.cn/article-9006-1.html 2017-10-28 20:18 收藏: 1 10 月 20 日,位于纽约的 MongoDB 在纳斯达克上市,当日收于 32.07 美元,比 24 美元的 IPO 价格高出 34%。MongoDB 首席财务官 Michael Gordon 放言:MongoDB 在数据库系统这个市场大有机会取代 IBM 和 Oracle!如此的霸气,底气哪里来? 大数据和云计算的风被谷歌吹起来的时候,被...阅读全文

Go语言中文网 2017-11-23 09:55:14 meission

软件开发

本文作者肯特·贝克Kent Beck,是最早研究软件开发的模式和重构的人之一,是敏捷开发的开创者之一,更是极限编程和测试驱动开发的创始人,同时还是 Smalltalk 和 JUnit 的作者,对当今世界的软件开发影响深远。现在 Facebook 工作。 本周我一直在整理 Facebook 代码,而且我喜欢这个工作。我的职业生涯中已经整理了数千小时的代码,我有一套使这种整理更加安全、有趣和高效的规则。 整理工作是通过一系列短小而安全的步骤进行的。事实上,规则一就是如果这很难,那就不要去做。我以前在...阅读全文

肯特·贝克:改变人生的代码整理魔法 2017-11-22 15:24 肯特·贝克:改变人生的代码整理 等

Jaeger源码分析——窥视分布式系统实现

原文地址:Jaeger源码分析——窥视分布式系统实现 前言 分析Jaeger源码主要有以下原因: 公司正在使用Jaeger,通过了解其源码,可以更好的把控这套系统。 了解分布式系统的设计 提升对golang的理解 提升个人英语 分析的版本为最新版本0.10.0,时间2017-11-23 Agent ——3部曲  agnet处于jaeger-client和collector之间,属于代理的作用,主要是把client发送过来的数据从thrift转为Batch,并通过RPC批量提交到collector...阅读全文

Segmentfault 2017-11-23 01:04:44 小卜邪

golang的goroutine调度机制

golang的goroutine调度机制 版权声明:本文为博主原创文章,未经博主允许不得转载。 目录(?)[-] 一直对goroutine的调度机制很好奇最近在看雨痕的golang源码分析基于go14 这篇文章是去年整理的记录公司内部wiki上 一直对goroutine的调度机制很好奇,最近在看雨痕的golang源码分析,(基于go1.4) 感觉豁然开朗,受益匪浅; 去繁就简,再加上自己的一些理解,整理了一下 ~~ 调度器 主要基于三个基本对象上,G,M,P(定义在源码的src/runtime/...阅读全文

博客园 2017-11-21 19:27 xuyuan77

zip文件上传解析问题

现在有个需求,服务端需要对上传的的文件进行解析,对于没有包含指定文件夹的zip,需要报错!符合规范的就保存简单的说,如何在不保存上传过来的zip文件的同时,分析文件结构func (p *FileStruct) ValidFile() error {    contentType := p.File.Header.Get("Content-Type")    if contentType != "application/zip" {        return fmt.Errorf("请上传zip...阅读全文

Go语言中文网 2017-11-22 18:48:43 playboy307