设计模式,自打我开始学习编程起,这就是一个津津乐道的话题。怎么编写好味道的代码,如何写出合适的设计代码帮助项目更容易理解,代码更简洁,这是我在项目中常常思考的问题。在golang 中有和其他语言不同的区别。例如函数作为一等公民,goroutine , chan 等特性,对于这些特性我思考如何能够编写适用于 golang 中的设计模式,而不是一味的套用着老思想的设计模式,以下是针对开源项目 go-patterns 的理解。
设计模式,自打我开始学习编程起,这就是一个津津乐道的话题。怎么编写好味道的代码,如何写出合适的设计代码帮助项目更容易理解,代码更简洁,这是我在项目中常常思考的问题。在golang 中有和其他语言不同的区别。例如函数作为一等公民,goroutine , chan 等特性,对于这些特性我思考如何能够编写适用于 golang 中的设计模式,而不是一味的套用着老思想的设计模式,以下是针对开源项目 go-patterns 的理解。
TOP-K 问题,从一堆无序数据里面找到前 K 大(当然也可以是前 K 小的数。我可以用堆排序或者快速排序可以做到,但是时间复杂度为 O(NlogN), 这里就不多说了。BFPRT 算法,该算法于1973年由 Blum、Floyd、Pratt、Rivest 和 Tarjan 联合发明,其中蕴含的深刻思想改变了世界。BFPRT 算法解决了这样一个问题,在时间复杂度 O(N)内,从无序的数组中找到第 K 小的数。
Update your browser to view this website correctly. Update my browser now