最新 | 最热门 | 最高评价

+0  GOMAXPROCS需要设置吗?

Tag: Go
鸟窝 发于 2017年10月11日 15:41 | 点击: 369 | 展开摘要
自 Go 1.5开始, Go的GOMAXPROCS默认值已经设置为 CPU的核数, 这允许我们的Go程序充分使用机器的每一个CPU,最大程度的提高我们程序的并发性能, 而且,在大部分情况下, 我们并不会去设置这个参数。因为默认值已经足够好了, 以至于fasthttp的作者valyala提议禁止runtime.GOMAXPROCS设置这个数值, 对于所有的case, GOMAXPROCS默认值是否是最好的值呢?

badger的作者Manish Rai Jain就遇到了这样一个

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

+0  badger 一个高性能的LSM K/V store

Tag: Go
鸟窝 发于 2017年10月11日 12:17 | 点击: 351 | 展开摘要
大家好,给大家介绍一下, 新晋的高性能的 K/V数据库: badger。

这是 dgraph.io开发的一款基于 log structured merge (LSM) tree 的 key-value 本地数据库, 使用 Go 开发。

事实上,市面上已经有一些知名的基于LSM tree的k/v数据库, 比如 leveldb、goleveldb、rocksdb、boltdb, 可是为什么还要创造新的轮子呢。我们不妨从LSM说起。

LSM Tree

Log-structu

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

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

Tag: Go
鸟窝 发于 2017年09月30日 22:15 | 点击: 1453 | 展开摘要
去年年初的时候曾经写过一篇关于如何获取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  使用 Go 和 Let's Encrypt 快速配置HTTPS加密

Tag: go
鸟窝 发于 2017年09月30日 17:04 | 点击: 573 | 展开摘要
Let's Encrypt 在2015年秋季推出了免费的数字证书认证计划,旨在消除当前手动创建和安装证书的复杂性,并推广加密的万维网服务,为安全网站提供免费的SSL/TLS证书。
Let's Encrypt 是由互联网安全研究小组(ISRG,一个公益组织)提供的服务。主要赞助商包括电子前哨基金会,Mozilla基金会,Akamai以及思科。2015年4月9日,ISRG与Linux基金会宣布合作。

用以实现这一新的数字证书认证机构的协议被称为自动证书管理环境(

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

+0  [译]使用 bcc/BPF 分析 go 程序

Tag: bbc | trace | Go | 工具
鸟窝 发于 2017年09月22日 18:11 | 点击: 549 | 展开摘要
BCC 是基于 BPF 的 Linux IO 分析、监控、网络工具集合。BPF Compiler Collection (BCC) 是创建高效内核追踪和处理程序的工具包,包含几个有用的工具和用例。BCC 扩展了 BPF (Berkeley Packet Filters) 的用途,BPF 之前被称为 eBPF,是 Linux 3.15 新增的一个新特性。BCC 大部分的功能都要求 Linux 4.1+。

本文翻译自性能分析大牛Brendan Gregg的 2017年中旬的一篇

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

+0  Go Plugin的一个bug

Tag: Go
鸟窝 发于 2017年08月27日 00:27 | 点击: 523 | 展开摘要
Go 1.8中增加了 plugin package,但是仅支持Linux操作系统,并且还有一些已知的bug。可以说,这个插件系统的实现还未达到"产品级"的水平。

The plugin support is currently incomplete, only supports Linux, and has known bugs.

一些已知的bug已经推到 Go1.10甚至以后的版本中修复了。

今天在测试Go 1.9中的功能的时候就遇到了plugin的

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

+0  王者荣耀上分秘籍

Tag: First Category
s5s5 发于 2017年08月24日 17:53 | 点击: 591 | 展开摘要
最近听王者荣耀的策划分享了上分秘籍,记录下:

影响游戏胜负的因素:强度、水平、运气、其它

各类型游戏受因素的影响:你想覆盖的人群决定游戏的因素

随机决定娱乐性

普通玩家与职业选手差距:场次数

推导出秘籍:多练

操作关键:补兵、消耗、走位

法师通用铭文:梦魇、轮回、怜悯 (加粗的先出,通用)

射手通用铭文:鹰眼、狩猎、红月

战士通用铭文:鹰眼、狩猎、异变

坦克辅助通用铭文:调和、虚空、怜悯、宿命

装备理解:前期效率(强化物理或法术或防御 ),中期对抗(补充

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

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

Tag: Algorithm
阮一峰 发于 2017年08月02日 07:33 | 点击: 761 | 展开摘要
统计学里面,正态分布(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 | 点击: 571 | 展开摘要
在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 | 点击: 520 | 展开摘要
一道经典的题目。给一堆乱序的数,如果它们从小到大排好,求第k个是多少。假设排列的下标从1开始,而非0开始。

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

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

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

+0  神经网络入门

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

人工智能的底层模型是"神经网络"(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 | 点击: 466 | 展开摘要
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
|<<<1234567>>>| 一共50页, 597条记录