Initial QSfera import

This commit is contained in:
Курнат Андрей
2026-06-07 10:20:04 +03:00
commit 2315f25754
16485 changed files with 4826827 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
[![Travis](https://travis-ci.org/spacewander/go-suffix-tree.svg?branch=master)](https://travis-ci.org/spacewander/go-suffix-tree)
[![GoReportCard](http://goreportcard.com/badge/spacewander/go-suffix-tree)](http://goreportcard.com/report/spacewander/go-suffix-tree)
[![codecov.io](https://codecov.io/github/spacewander/go-suffix-tree/coverage.svg?branch=master)](https://codecov.io/github/spacewander/go-suffix-tree?branch=master)
[![license](https://img.shields.io/badge/License-MIT-green.svg)](https://github.com/spacewander/go-suffix-tree/blob/master/LICENSE)
[![godoc](https://img.shields.io/badge/godoc-reference-green.svg)](https://godoc.org/github.com/spacewander/go-suffix-tree)
# go-suffix-tree
This "suffix" package implements a [suffix tree](https://en.wikipedia.org/wiki/Suffix_tree).
As a suffix tree, it allows to lookup a key in O(k) operations.
In some cases(for example, some scenes in our production), this can be faster than a hash table because
the hash function is an O(n) operation, with poor cache locality.
Plus suffix tree is more memory-effective than a hash table.
## Example
A simple use case:
```go
import (
suffix "github.com/spacewander/go-suffix-tree"
)
var (
TubeNameTree *suffix.Tree
TubeNames = []string{
// ...
}
)
func init() {
tree := suffix.NewTree()
for _, s := range TubeNames {
tree.Insert([]byte(s), &s)
}
TubeNameTree = tree
}
func getTubeName(name []byte) *string {
res, found := TubeNameTree.Get(name)
if found {
return res.(*string)
}
return nil
}
```
For more usage, see the [godoc](https://godoc.org/github.com/spacewander/go-suffix-tree).