最新 | 最热门 | 最高评价

+0  在Golang的HTTP请求中共享数据

Tag: Technical | Golang
老王 发于 2019年02月08日 11:30 | 点击: 684 | 展开摘要
首先,我们需要先明确一下问题的描述:本文所要讨论的共享数据可不是指的 cookie、session 之类的概念,它们描述的是在「请求间」共享数据,而我们关注的是在「请求中」共享数据,也就说是,在每个请求中的各个 middleware 和 handler 之间共享数据。

实际上,我之所以关注这个问题源自 httprouter,众所周知,httprouter 是目前 Golang 社区最流行的 HTTP 路由库,不过它有一个问题,其 handler 参数定义如下:

func

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

+0  学习Golang的HTTP中间件机制

Tag: Technical | Golang
老王 发于 2019年01月31日 23:23 | 点击: 824 | 展开摘要
因为 Golang 内置的 net/http 天生就支持 HTTP 中间件机制,所以即便不用 gin 之类的 Web 框架,我们也可以写出扩展性很好的 Web 应用。

假如你不了解 Golang 的 HTTP 中间件机制的话,那么可以把它看成是一个洋葱:

通过洋葱看中间件

每一个中间件都是一层洋葱皮,其中每一个中间件都可以改变请求和响应,我们可以很自然的把不同的逻辑放到不同的洋葱皮里,更代码更符合单一职责原则:

package main

import (
"net

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

+0  Go语言、Docker 和新技术

Tag: Go 语言 | 编程语言 | Docker | Go | golang
陈皓 发于 2017年10月30日 09:24 | 点击: 534 | 展开摘要
上个月,作为 Go 语言的三位创始人之一,Unix 老牌黑客罗勃·派克(Rob Pike)在新文章“Go: Ten years and climbing”中,回顾了一下 Go 语言的发展过程。其中提到,Go 语言这十年的迅猛发展大到连他们自己都没有想到,并且还成为了云计算领域中新一代的开发语言。还提到了,中国程序员对 Go 语言的热爱完全超出了他们的想象,甚至他们都不敢相信是真的。

这让我想起,我在 2015 年 5 月份拜访 Docker 公司在湾区的总部时,Docker

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

+0  通过实例入门Golang

Tag: Technical | Golang
老王 发于 2017年06月09日 19:43 | 点击: 1835 | 展开摘要
如果想学会一门新语言,不仅要多读文档,还要多看别人写的代码,更要强迫自己用新语言多写代码。我在学习 Golang 之前,读过好几本相关的书籍,不过总感觉没真正学会,于是我决定动手用 Golang 写一个能用的工具试试,因为 Golang 最大的优势就是 goroutine 和 channel,所以我觉得实现一个简版的 ab(Web 压力测试工具)应该是一个不错的选择,用 Golang 磕磕绊绊总算实现了预想的功能,能够计算 Requests per second 和 Time

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

+0  Go语言的修饰器编程

Tag: Go 语言 | 程序设计 | 编程语言 | functional | Go | golang | Programming | 函数式
陈皓 发于 2017年06月01日 16:48 | 点击: 1052 | 展开摘要
之前写过一篇《Python修饰器的函数式编程》,这种模式很容易的可以把一些函数装配到另外一些函数上,可以让你的代码更为的简单,也可以让一些“小功能型”的代码复用性更高,让代码中的函数可以像乐高玩具那样自由地拼装。所以,一直以来,我对修饰器decoration这种编程模式情有独钟,这里写一篇Go语言相关的文章。

看过Python修饰器那篇文章的同学,一定知道这是一种函数式编程的玩法——用一个高阶函数来包装一下。多唠叨一句,关于函数式编程,可以参看我之前写过一篇文章《函数式编程

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

+0  Go的50度灰:Golang新开发者要注意的陷阱和常见错误

Tag: Golang
鸟窝 发于 2015年09月10日 09:30 | 点击: 2412 | 展开摘要
原文: 50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs
翻译: Go的50度灰:新Golang开发者要注意的陷阱、技巧和常见错误, 译者: 影风LEY

Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。

如果你花时间

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

+0  如何编写Go代码

Tag: Golang
鸟窝 发于 2015年09月07日 15:38 | 点击: 1081 | 展开摘要
官方原文: How to Write Go Code,
根据最新官方文档翻译。翻译参考wang_yb的如何写 go 代码 。
因为官方文档有更新,我根据新版本的文档重新进行了翻译。

本文演示如何开发一个简单的 go package, 以及 go tool 的使用方法,
即获取(fetch), 编译(build), 安装(install) go package 的标准方法和命令.

go tool 需要你按照一定的标准来组织代码. 请仔细阅读本文.
它介绍了用来构建和运行 G

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

+0  异步编程语言的常见坑

Tag: Computer System | Go | Golang | NodeJS
ideawu 发于 2014年03月12日 22:35 | 点击: 3488 | 展开摘要
天生支持异步编程的语言如 NodeJS, Golang 等, 创建一个异步 routine 的成本非常小, 这确实是一个非常方便的功能. 比如用在网络爬虫程序的开发, 对于每一个要抓取的 URL 就启动一个 routine, 类似启动一个线程, 既能充分利用 CPU 多核, 代码也很简洁.

正因为太方便, 所以常常被滥用, 并引发许多严重坑. 下面分析一下.

1. 拖垮了所依赖的服务

写异步编程的程序员是爽了, 但维护数据库的 DBA 却要哭了. 异步编程程序员每一个查

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

+0  为何Goroutine的栈空间可以无限大?(译)

Tag: Golang | 翻译
youngsterxyf 发于 2014年01月17日 00:00 | 点击: 1132 | 展开摘要
原文:Why is a Goroutine's stack infinite?

译者:youngsterxyf

Go编程新手可能会偶然发现Go语言---与一个Goroutine可用栈空间大小相关---的一个古怪特性。这通常是由于程序员
无意间构造了一个无限递归函数调用而产生的。为了阐明这个特性,以如下代码(有点刻意设计的)为例。

package main

import "fmt"

type S struct {
a, b int
}

/

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

+0  如何实现Golang的http请求处理中间件(译)

Tag: Golang | 翻译 | 中间件
youngsterxyf 发于 2014年01月17日 00:00 | 点击: 2146 | 展开摘要
原文:Golang Http Handlers as Middleware

译者:youngsterxyf

大多数现代Web组件栈允许通过栈式/组件式中间件“过滤”请求,这样就能干净地从web应用中分离出横切关注点(译注:面向方面程序设计中的概念?)。
本周我尝试在Go语言的http.FileServer中植入钩子,发现实现起来十分简便,让我非常惊讶。

让我们从一个基本的文件服务器开始说起:

func main() {
http.ListenAndServe(

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

+0  Go - 以任意类型的slices作为输入参数(译)

Tag: Golang | 翻译
youngsterxyf 发于 2014年01月16日 00:00 | 点击: 988 | 展开摘要
原文:Go – taking slices of any type as input parameters

译者:youngsterxyf

最近参与的一个业余项目,go-linq,让我了解到Go语言的类型系统并不是为任何类面向
对象编程而设计的。没有泛型,没有类型继承,也没有提供任何对这些特性有用的东西。

但是,提供了一个名为interface{}的类型,你可以向其赋予几乎任意类型的值,不会抛出编译错误,就像.NET的Object或Java的Object:

var o

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

+0  仓库作业机器监控系统设计与实现

Tag: 技术 | 总结 | 笔记 | Golang
youngsterxyf 发于 2013年11月29日 00:00 | 点击: 1101 | 展开摘要
近期在参与一个仓库作业机器监控项目。该项目的需求背景是:公司的电商业务在全国各地有多处或大或小的仓库,仓库的作业人员(没有IT技术背景)经常反馈/投诉作业机器断网、断电、连不了服务等问题。实际情况经常与反馈的不一致,但运维侧并没有数据可以证明,所以才有了这个项目的需求。

该项目第一期的目标仅是收集、展示作业机器某些监控指标数据,以便在快速定位解决问题,或至少有数据可查。

为了避免大量监控数据上报影响到生产系统的网络服务,系统采用如下结构:

实现一个agent用于在仓库作

查看全文: http://www.udpwork.com/item/11823.html
|<<<12>>>| 一共2页, 20条记录