最新 | 最热门 | 最高评价

+0  再谈谈获取 goroutine id 的方法

Tag: Go
鸟窝 发于 2017年08月04日 18:01 | 点击: 534 | 展开摘要
去年年初的时候曾经写过一篇关于如何获取goroutine id的方法: 如何得到goroutine 的 id?, 当时调研了一些一些获取goid的方法。基本的方法有三种:

通过Stack信息解析出ID

通过汇编获取runtime·getg方法的调用结果

直接修改运行时的代码,export一个可以外部调用的GoID()方法

每个方式都有些问题, #1比较慢, #2因为是hack的方式(Go team并不想暴露go id的信息), 针对不同的Go版本中需要特殊的hack手

查看全文: http://www.udpwork.com/item/16374.html

+0  正态分布为什么常见?

Tag: Algorithm
阮一峰 发于 2017年08月02日 07:33 | 点击: 629 | 展开摘要
统计学里面,正态分布(normal distribution)最常见。男女身高、寿命、血压、考试成绩、测量误差等等,都属于正态分布。

以前,我认为中间状态是事物的常态,过高和过低都属于少数,这导致了正态分布的普遍性。最近,读到了 John D. Cook 的文章,才知道我的这种想法是错的。

正态分布为什么常见?真正原因是中心极限定理(central limit theorem)。

"多个独立统计量的和的平均值,符合正态分布。"

上图中,随着统计量个数的增加,它们和的平

查看全文: http://www.udpwork.com/item/16373.html

+0  Go 1.9 sync.Map揭秘

Tag: Go
鸟窝 发于 2017年07月19日 17:59 | 点击: 495 | 展开摘要
在Go 1.6之前, 内置的map类型是部分goroutine安全的,并发的读没有问题,并发的写可能有问题。自go 1.6之后, 并发地读写map会报错,这在一些知名的开源库中都存在这个问题,所以go 1.9之前的解决方案是额外绑定一个锁,封装成一个新的struct或者单独使用锁都可以。

本文带你深入到sync.Map的具体实现中,看看为了增加一个功能,代码是如何变的复杂的,以及作者在实现sync.Map的一些思想。

有并发问题的map

官方的faq已经提到内建的map

查看全文: http://www.udpwork.com/item/16345.html

+0  求第K个数的问题

Tag: Algorithm & Data Structure | Recommended | PriorityQueue | | 快排
四火 发于 2017年07月14日 13:01 | 点击: 432 | 展开摘要
一道经典的题目。给一堆乱序的数,如果它们从小到大排好,求第k个是多少。假设排列的下标从1开始,而非0开始。

这个问题如此之简单而熟悉,可它却可以是很多现实问题的某一个子问题的抽象。它本身相关的问题其实就不少,而且还可以不断演进,成为不同复杂程度的问题。

看到这个问题,脑海里的第一反应是一左一右红蓝两条分支——堆排序或者快排。Java中快排用Arrays.sort就可以了,如果是堆排序需要用到PriorityQueue。 用Arrays.sort写起来最简单(这里的参数校验

查看全文: http://www.udpwork.com/item/16349.html

+0  神经网络入门

Tag: Algorithm
阮一峰 发于 2017年07月13日 06:33 | 点击: 468 | 展开摘要
眼下最热门的技术,绝对是人工智能。

人工智能的底层模型是"神经网络"(neural network)。许多复杂的应用(比如模式识别、自动控制)和高级模型(比如深度学习)都基于它。学习人工智能,一定是从它开始。

什么是神经网络呢?网上似乎缺乏通俗的解释。

前两天,我读到 Michael Nielsen 的开源教材《神经网络与深度学习》(Neural Networks and Deep Learning),意外发现里面的解释非常好懂。下面,我就按照这本书,介绍什么是神经网络

查看全文: http://www.udpwork.com/item/16346.html

+0  Go语言中 select 和 switch 的比较

Tag: Go
鸟窝 发于 2017年07月07日 19:48 | 点击: 413 | 展开摘要
select 和 switch 是 Go语言中进行分支操作的两个方式,各有各的应用场景。

select

select只能应用于channel的操作,既可以用于channel的数据接收,也可以用于channel的数据发送。

如果select的多个分支都满足条件,则会随机的选取其中一个满足条件的分支, 如语言规范中所说:

If multiple cases can proceed, a uniform pseudo-random choice is made to dec

查看全文: http://www.udpwork.com/item/16339.html

+0  [转]golang concurrency tricks

Tag: Go
鸟窝 发于 2017年07月07日 19:27 | 点击: 410 | 展开摘要
原文地址: Golang Concurrency Tricks

Golang concurrency model based on goroutines and channels is not free from sharp edges.

This page intends both (1) to collect helpful guidelines for writing concurrent code in Go and (2) to bring up well kn

查看全文: http://www.udpwork.com/item/16340.html

+0  [译]参考资料: 地道的GO代码

Tag: Go
鸟窝 发于 2017年07月06日 19:13 | 点击: 544 | 展开摘要
原文: Idiomatic Go

什么样的代码才算最地道的Go代码? 这个问题经常被人问起,但是确不太好回答。部分原因在于我们还在摸索之中,抑或Go还是一个年轻的语言。随着语言和社区的逐渐成熟,老司机们才会对地道的Go代码达成共识。

请注意,地道的代码不是限制你的规则,而是代码指导。工作正常的代码比地道的代码更重要。因为所谓的地道,只是大家达成的一种共识,所以"不地道"的的代码不一定代表着错误。

既然没有确定的答案,我在本文中收集了相关的参考资料,

查看全文: http://www.udpwork.com/item/16334.html

+0  [译]使用os/exec执行命令

Tag: Go
鸟窝 发于 2017年07月03日 11:34 | 点击: 519 | 展开摘要
原文: Advanced command execution in Go with os/exec by Krzysztof Kowalczyk.
完整代码在作者的github上: advanced-exec

Go可以非常方便地执行外部程序,让我们开始探索之旅吧。

执行命令并获得输出结果

最简单的例子就是运行ls -lah并获得组合在一起的stdout/stderr输出。

1
2
3
4
5
6
7
8

func main() {
cmd := exec.Comm

查看全文: http://www.udpwork.com/item/16312.html

+0  了解 Go 1.9 的类型别名

Tag: Go
鸟窝 发于 2017年06月28日 10:58 | 点击: 485 | 展开摘要
如你所知, 类型别名(type aliases) 最终还是加入到Go 1.9中, Go 1.9 beta2今天已经发布了, 正式版预计8月初发布, 是时候深入了解一下它的新特性了,本文介绍的就是它的重要的新特性之一: 类型别名。

当然,如果你想尝试这些新特性,需要安装Go 1.9的版本,目前是beta2版,可以在官方网站下载。

类型别名主要解决什么问题,为什么需要这个特性? Russ Cox 的论文Codebase Refactoring (with help from

查看全文: http://www.udpwork.com/item/16330.html

+0  [译]像牛人一样改进你的Go代码

Tag: Go
鸟窝 发于 2017年06月27日 19:41 | 点击: 457 | 展开摘要
原文: Lint your #golang code like a mad man!, 作者: Arsham Shirvani

我使用下面的工具来改进我的代码,除了vendor文件夹。我的操作系统是GNU/Linux,但是稍微修改一下脚本应该也能运行在你的操作系统上。我使用glide来处理依赖(vendor),但你也可以使用你的包依赖管理工具来替换glide nv, 这个命令列出了所有的文件夹,除了vender (译者按: Go 1.9中可以直接使用./...,它会排除ve

查看全文: http://www.udpwork.com/item/16331.html

+0  [转]Golang 中使用 JSON 的小技巧

Tag: Go
鸟窝 发于 2017年06月22日 17:55 | 点击: 591 | 展开摘要
taowen是json-iterator的作者。 序列化和反序列化需要处理JSON和struct的关系,其中会用到一些技巧。 原文 Golang 中使用 JSON 的小技巧是他的经验之谈,介绍了一些struct解析成json的技巧,以及 json-iterator 库的一些便利的处理。

有的时候上游传过来的字段是string类型的,但是我们却想用变成数字来使用。 本来用一个json:",string" 就可以支持了,如果不知道golang的这些小技巧,就

查看全文: http://www.udpwork.com/item/16317.html
|<<<1234567>>>| 一共50页, 594条记录