函数是可以递归调用的,这意味着函数可以直接或者间接调用自身。对于一些问题而言,递归是一种非常有用的技术,例如处理递归的数据结构(树形结构),在3.4节中,我们就通过遍历二叉树来实现简单的插入排序,在本节中,将再次使用这种技术来处理HTML文件。 我要晨读

已有478人晨读

 Thrift是一种可伸缩的跨语言服务的发展软件框架。它结合了功能强大的软件堆栈的代码生成引擎,以建设服务。 我要晨读

已有436人晨读

首先我们需要明确一下并行跟并发的区别,并发一般是被内核通过时间片或者中断来控制的,遇到io阻塞或者时间片用完的时会转移线程的使用权。一个核的情况下不可能有并行的情况,因为同一时间只有一个任务在调度。 我要晨读

已有623人晨读

以前用golang做并发处理的时候,很是粗暴,就是利用golang的高级性能,直接fork一个任务,来处理请求,最典型的就是直接 go func,当时是因为用http和socket没觉得什么,今天再次看golang的goroutine的时候,发现这几天写的程序有些问题。 我要晨读

已有465人晨读

反射在计算机的概念里是指一段程序审查自身结构的能力,主要通过类型进行审查。它是元编程的一种形式,同样也是引起混乱的重大来源。 我要晨读

已有442人晨读

依赖注入(Dependency Injection)和控制反转(Inversion of Control)是同一个概念。在传统的程序设计过程中,调用者是自己来决定使用哪些被调用者实现的。但是在依赖注入模式中,创建被调用者的工作不再由调用者来完成,因此称为控制反转;创建被调用者实例的工作通常由注入器来完成,然后注入调用者,因此也称为依赖注入。 我要晨读

已有402人晨读

这篇文章出现的理由是业务上需要创建一个Web Server。创建web是所有语言出现必须实现的功能之一了。在nginx+fastcgi+php广为使用的今天,这里我们不妨使用Go来进行web服务器的搭建。 我要晨读

已有450人晨读

本文为部分翻译、整理。 原文为Go的开发者之一的Dave Cheney所做的 Five things that make go fast 我要晨读

已有606人晨读

fasthttp 是 Go 的一款不同于标准库 net/http 的 HTTP 实现。fasthttp 的性能可以达到标准库的 10 倍,说明他魔性的实现方式。主要的点在于四个方面 我要晨读

已有967人晨读

这一周撸了个懒人通讯协议代码生成器fastbin,这个工具会分析指定的Go代码,提取结构体信息,然后为每个结构体生成二进制序列化和反序列化的方法。 生成出来的代码符合encoding包中定义的BinaryMarshaler和BinaryUnmarshaler接口要求,此外还支持更高效的序列化和反序列化方式。 我要晨读

已有508人晨读

本系统是猎豹移动基于go语言开发的一套消息推送系统,源码地址:https://github.com/Terry-Mao/goim 我要晨读

已有844人晨读

用go写了一个守护进程程序:用于检测redis的存活状态并将结果写到zookeeper中,部署到redis机器上,对于每个redis实例会有一个goroutine每隔固定时间去检测其状态,由主goroutine负责信号处理等,再接收到信号时kill其他的goroutine。程序运行了一段时间发现,有些redis实例的对应zookeeper的信息不更新,通过日志发现对应redis的goroutine挂掉了。阅读源码发现貌似是zk的第三方库抛出一个非预期的异常导致。 我要晨读

已有591人晨读

程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被 导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。 我要晨读

已有591人晨读

反射是元数据编程的一种形式,指的是程序获得本身结构的一种能力。不同语言的反射模型实现不一样,本文中的反射,仅仅指的是Go语言中的反射模型。 我要晨读

已有528人晨读

用logistic regression做ctr预估或则分类的同学,大家应该都知道梯度下降能够求得目标问题的最优解。但是梯度下降迭代太慢,而且不一定能求得最优解。 我要晨读

已有592人晨读

算法是程序的灵魂,而排序算法则是一种最基本的算法。排序算法有许多种,本文介绍4中排序算法:冒泡排序,选择排序,快速排序和插入排序,以从小到大为例。 我要晨读

已有463人晨读

Go1.1更新中最重要的特性之一就是由Dmitry Vyukov开发的全新的调度器。新的调度器能极大的提高Go并行程序的性能并且不需要对程序进行修改,因此我认为应该写一篇文章为大家介绍下新版的调度器特性。 我要晨读

已有469人晨读

《Go语言编程》一书介绍了libtask库,可以认为这个库等同于go的底层goroutine实现。 libtask库的channel的数据结构如下: 我要晨读

已有403人晨读