Based on a immutable persistent Hash Array Mapped Trie (HAMT)
Minimal interface to the core HAMT implementation so that you can easily implement your own structures on top of it.
slidingwindow
Golang implementation of Sliding Window Algorithm for distributed rate limiting.
Installation
$ go get -u github.com/RussellLuo/slidingwindow
Design
slidingwindow is an implement
xxhash
xxhash is a Go implementation of the 64-bit xxHash algorithm, XXH64. This is a high-quality hashing algorithm that is much faster than anything in the Go standard library.
This package provides a straightforw
Downsampling Algorthim
The Golang implemtation for downsampling time series data algorthim
Downsampling Algorthim
Background
Acknowledgement
Usage
Peformance
Profiling
Benchmark
low
low level data type and utils in Golang.
A stable low level function set is the basis of a robust architecture. It focuses on stability and requires high test coverage.
Status
This project has
go-lcss
Fast Longest Common Substring algorithm in Go.
Overview • How To Use • Installation • Contributions • License
Overview
Longest Common Substring (don't confuse with Longest Common Subs
The Algorithms - Go
Algorithms implemented in Go (for education)
These algorithms are for demonstration purposes only. There are many sort implementations in the Go standard library that may have better perfo
go-tsne
A Go implementation of t-Distributed Stochastic Neighbor Embedding (t-SNE), a prize-winning technique for dimensionality reduction particularly well suited for visualizing high-dimensional datasets.
geohashtree
What is it?
This library is designed to construct and use large k/v stores to do super quick point-in-polygon queries. This isn't something that I haven't tried before in go but this time with a m
hashmap
Overview
A Golang lock-free thread-safe HashMap optimized for fastest read access.
Usage
Set a value for a key in the map:
m := &HashMap{}
m.Set("amount", 123)
Read a value for
ppds
Pretty Print Data Structures
Stacks, queues, trees and linked lists are data structures that you might find yourself working with quite often. This library lets you pretty print these with minimum effort. Certa
kmeans
k-means clustering algorithm implementation written in Go
What It Does
k-means clustering partitions a multi-dimensional data set into k clusters, where each data point belongs to the cluster with the
go-algorithms
go-algorithms - implementation of different algorithms and data structures with golang.
Usage
Clone https://github.com/0xAX/go-algorithms.git repo, it must be in your $GOPATH.
hamt
Immutable and Memory Efficient Maps and Sets in Go.
This package hamt provides immutable collection types of maps (associative arrays) and sets implemented as Hash-Array Mapped Tries (HAMTs). All operations o
wikiracer
Finds a path between two Wikipedia articles, using only Wikipedia links.
Approach
Wikiracer runs a one-way parallel BFS (Breadth First Search) from the given start URL to crawl the graph of Wikiped
Clusters
Go implementations of several clustering algoritms (k-means++, DBSCAN, OPTICS), as well as utilities for importing data and estimating optimal number of clusters.
The reason
This library was built
Just write your own map wrappers
mapgen
A tool which generates thread safe maps for Go.
Features:
Supports any key/value pair supported by Go's native maps
Allows complex operations via Lock() and Unlock()
Gen
Features
In-Memory or Redis based storage
Concurrency-safe
Put, Take, Count, DynamicFill, and many more primitives
Designed for distributed systems
Well tested
Well documented
Install
FlipCounter
Data-structure with 5 byte keys and 3 bytes counters (64 bits per entry).
The 3 byte counter (24 bit) uses 23 for counting (guaranteeing 100% accurate counting per key up to (2^23)-1 ==> 8388607 hits.
T
HKSample
An algorithm to sample a complete session by hashing its key, and then we see if the keys fits in one the buckets within the sampling percentage.
Installation
go get github.com/lafikl/hksample
randmap
go get github.com/lukechampine/randmap
randmap provides methods for (efficiently) accessing random elements of maps, and iterating through maps in random order. Here is a blog post that dives deeper into ho
Go Package: iter
Get:
go get -u github.com/cstockton/go-iter
Example:
func Example() {
v := []interface{}{"a", "b", []string{"c", "d"}}
err := iter.Walk(v, func(el iter.Pair) error {
// check for
Go rate limiter
This package provides a Golang implementation of the leaky-bucket rate limit algorithm. This implementation refills the bucket based on the time elapsed between requests instead of requiring an interval
Arithmetic parser
This library parses and solves a mathematical expression.
It uses a Shunting-Yard algorithm (aka Reverse-Polish notation).
Usual mathematic constants and functions are defined in this package (see
LAPJV - Go Implementation
This repository is the Golang implementation of the LAPJV algorithm for assignment problem and includes tools to ease testing and library usage.
Overview
The repository contains
k-means.go
a ready-to-use naive kmeans package for Go
package main
import (
"fmt"
"github.com/salkj/kmeans"
)
func main() {
data := []kmeans.Point{}
data = append(data, kmeans.Point{[]float64{1.0,3.0,5.0,2.0
Gonum Graph
This repository is no longer maintained. Development has moved to https://github.com/gonum/gonum.
This is a generalized graph package for the Go language. It aims to provide a clean, transparen
regression
Multivariable Linear Regression in Go (golang)
installation
$ go get github.com/sajari/regression
Supports Go 1.8+
example usage
Import the package, create a regression and add
Finn is a fast and simple framework for building Raft implementations in Go. It uses Redcon for the network transport and Hashicorp Raft. There is also the option to use LevelDB, BoltDB or FastLog for log persistence.
T