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

一人千面:谈谈Go语言中的type

世界是复杂的。一个人、一个事物可以有多样的特性,而多个人多个事物又可以表现出一致的特性;从微观角度说,即具体到个体时,要求这个个体是多功能的多样性的,能够完成越多的功能具有越多的特性越好。比如一个人可以同时具有贤妻、慈母、严师和路人甲的身份,比如一个数字可以表示年龄、高度、分数等。从宏观角度说,从管理复杂性的角度出发,又要求许多的个体具有一致性以便进行统一处理以降低管理成本,比如各种机动车都可以“驾驶”,各种食物都可以“食用”,各种书写工具都可以“写”。换而言之:微观上一人千面;宏观上千人一面。 编程本质上是为了解决人类的问题满足人类的需要,所以需要把现实世界映射到编程语言里,即在编程语言中建立对应的模型。在Go语言里,提供了很好的机制来建立这种模型,也就是type和interface。ty...阅读全文

Golang处理大数据时使用高效的Pipeline(流水线)执行模型

Golang被证明非常适合并发编程,goroutine比异步编程更易读、优雅、高效。本文提出一个适合由Golang实现的Pipeline执行模型,适合批量处理大量数据(ETL)的情景。 想象这样的应用情景:(1)从数据库A(MySQL)加载用户评论(量巨大,例如10亿条);(2)根据每条评论的用户ID、从数据库B(MySQL)关联用户资料;(3)调用NLP服务(自然语言处理),处理每条评论;(4)将处理结果写入数据库C(ElasticSearch)。 由于应用中遇到的各种问题,归纳出这些需求:需求一:出现问题时(例如任意一个数据库故障)则中断,使用checkpoint从中断处恢复。需求二:每个流程设置合理的并发数、让数据库和NLP服务有合理的负载(不影响其它业务的基础上,尽可能占用更多资源以...阅读全文

博文 2018-05-09 11:34:47 傅里叶变黄油猫

[go语言]select多路选择的模拟实现

有时候有这样一种应用场景:需要等待多个事件到达,然后返回尽可能多的事件;如果没有事件到达就阻塞等待。例如服务器等待客户端建立连接,或者等待客户端数据等就有这种应用需求。 在go语言里,可以利用select原语和它的非阻塞(default)分支组合实现这个功能: // 从ch获取尽可能多的数据放到events里,并返回实际数量;如果没有数据就阻塞等待 func wait(ch chan int, events []int) int { count := 0 for count < len(events) { select { case x := <-ch: events[count] = x count++ default: if count > 0 { return count } even...阅读全文

博文 2014-10-30 18:07:21 stevewang

[Golang]Select多路选择的模拟实现

有时候有这样一种应用场景:需要等待多个事件到达,然后返回尽可能多的事件;如果没有事件到达就阻塞等待。例如服务器等待客户端建立连接,或者等待客户端数据等就有这种应用需求。 在go语言里,可以利用select原语和它的非阻塞(default)分支组合实现这个功能: // 从ch获取尽可能多的数据放到events里,并返回实际数量;如果没有数据就阻塞等待 func wait(ch chan int, events []int) int { count := 0 for count < len(events) { select { case x := <-ch: events[count] = x count++ default: if count > 0 { return count } eve...阅读全文

博文 2015-06-18 17:05:38 abv123456789

Golang 格式输出符号

%d int变量 %x, %o, %b 分别为16进制,8进制,2进制形式的int %f, %g, %e 浮点数: 3.141593 3.141592653589793 3.141593e+00 %t 布尔变量:true 或 false %c rune (Unicode码点),Go语言里特有的Unicode字符类型 %s string %q 带双引号的字符串 "abc" 或 带单引号的 rune 'c' %v 会将任意变量以易读的形式打印出来 %T 打印变量的类型 %% 字符型百分比标志(%符号本身,没有其他操作...阅读全文

博文 2019-05-05 04:31:50 zhengzizhi

《Golang 入门系列六》golang的控制语句

前言:本文主要阐述golang中的if else、switch语句和for循环的用法。 一、if else语句 1.1 基本语法 在有些情况下,条件语句两侧的括号是可以被省略的;当条件比较复杂时,则可以使用括号让代码更易读。条件允许是符合条件,需使用 &&、|| 或 !,你可以使用括号来提升某个表达式的运算优先级,并提高代码的可读性。 第一种形式: if condition { // do something } else { // do something } 第二种形式: if initialization; condition { // do something } 1.2 示例 package main import "fmt" func main() { // 第一种形式 n :=...阅读全文

博文 2018-04-05 19:33:11 IT--小哥