Browsed by
标签:golang

[译] 排序算法入门 — Go 语言实现

[译] 排序算法入门 — Go 语言实现

排序算法是一种采用列表或数组并以特定顺序对其元素进行重新排序的算法。有几十种不同的排序算法,如果你已经学习了计算机科学,那么你至少熟悉了其中的一些算法。 它们也是很受欢迎的面试问题,所以在重要面试前不要因为它而伤心。 这是一个大多数常见的排序算法的小型引擎,实例采用 Golang 实现。 冒泡排序 冒泡排序是最基本的就地排序算法,几乎每个人都很熟悉。 它具有 O(n²) 最坏情况和平均时间复杂度,这使得它在大型列表中效率低下。它的实现非常简单。 在循环中,从第一个元素到第 n 个(n = len(items))迭代数组。比较相邻的值,如果它们的顺序错误,交换它们。 您可以通过在每次迭代后将 n 递减 1 来优化算法。 时间复杂度: * 最坏情况下:O(n²) * 平均情况下:O(n²) * 最好情况下:O(n) 空间复杂度: * 最坏情况下:O(1) 选择排序 选择排序是另一种简单的平均情…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
【译】用Go实现一个静态博客生成器

【译】用Go实现一个静态博客生成器

静态站点生成器是一种工具,给一些输入(例如,markdown),使用HTML,CSS和JavaScript生成完全静态的网站。 为什么这很酷?一般来说,搭建一个静态网站更容易,而且通常运行也会比较快一些,同时占用资源也更少。虽然静态网站不是所有场景的最佳选择,但是对于大多数非交互型网站(如博客)来说,它们是非常好的。 在这篇文章中,我将讲述我用Go写的静态博客生成器。 动机 您可能熟悉静态站点生成器,比如伟大的Hugo,它具有关于静态站点生成的所有功能。 那么为什么我还要来编写另外一个功能较少的类似工具呢? 原因是双重的。 一个原因是我想深入了解Go,一个基于命令行的静态站点生成器似乎是磨练我技能很好的方式。 第二个原因就是我从来没有这样做过。 我已经完成了平常的Web开发工作,但是我从未创建过一个静态站点生成器。 这听起来很有趣,因为理论上,从我的网站开发背景来看,我满足所有先决条件和技…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...
Bitmap 多语言实现及应用

Bitmap 多语言实现及应用

工作中碰到这样一个问题: 有一个文本文件,有上亿行数据,每行数据是 unsigned int。现在需要将其中可能重复的数只保留一个,同时和另外一个或多个这样的文件进行排重(即和它们做差集)。要求尽可能快的筛选出来。 开始实现比较简单粗暴,将数据直接通过 LOAD DATA INFILE 导入 MySQL 表中,然后多表之间做 LEFT JOIN。数据不是特别大,比如几千万,且就要排重的文件不多时,比如一个,速度还可以接受。然而,当数据上亿,且有多个文件需要排重时,性能急剧下降,必须进行优化。而这,正是 Bitmap 的应用场景。 1、Bitmap 概念 Bitmap 是一个十分有用的数据结构。所谓的 Bit-map 就是用一个 bit 位来标记某个元素对应的 Value,而 Key 即是该元素。由于采用了 Bit 为单位来存储数据,因此在内存占用方面,可以大大节省。(《编程珠玑》第一章引入…

阅读全文 阅读全文

1 Star2 Stars3 Stars4 Stars5 Stars (还没有人评分,赶紧评一下)
Loading...