草庐IT

Purely-Functional-Structures-Chri

全部标签

data-structures - 格式良好的查询建议

我正在开发一个自动完成功能,我打算在其中显示类似这样的查询建议:住在{City_name}[City_name可以包含城市列表中的值]的学生example_type1:studentswholiveinNew...[应弹出以下查询建议]:studentswholiveinNewyorkstudentswholiveinNewJersey(查找不同的实体[这里是城市、运动(例如:“打篮球的学生”等...])example_type2:studentswholiveinNewyorkandplayba...[应弹出以下查询建议]:studentswholiveinNewYorkandpla

data-structures - Redis区间查询

我有元组(S,T)形式的数据,其中S是字符串,T是整数。S和T都不是唯一的,而它们的组合是唯一的。我需要获取所有元组S1==S2和|T1-T2|.使用Redis可以高效地完成任务吗? 最佳答案 一种方法是将数据存储在列表中并使用Lua脚本进行检索。首先,对于(Sn,Tn)形式的元组,像这样插入:LPUSHmyKeyS1:T1LPUSHmyKeyS2:T2...andsoon然后,使用下面的Lua脚本:localfunctionsplit(div,str)if(div=='')thenreturnfalseendlocalpos,ar

data-structures - 以原子方式从 Redis 数据结构中弹出多个值?

是否有Redis数据结构,允许弹出(获取+删除)多个元素的原子操作?有众所周知的SPOP或RPOP,但它们总是返回一个值。因此,当我需要集合/列表中的前N​​个值时,我需要调用N次命令,这很昂贵。假设集合/列表包含数百万个项目。是否有类似SPOPM"setName"1000的东西,它会返回并从集合中删除1000个随机项目或RPOPM"listName"1000,它会返回1000个最右边的项目名单?我知道有像SRANDMEMBER和LRANGE这样的命令,但它们不会从数据结构中删除项目。它们可以单独删除。但是,如果有更多的客户端从同一个数据结构读取,有些条目可以被读取不止一次,有些条目可

data-structures - 在 golang 中实现嵌套矩阵的惯用方式

我正在尝试在内存中表示超图。除了嵌套矩阵之外,对于这项任务还有更好的数据结构吗?嵌套矩阵是一个可以包含“native”类型(为简单起见,我们说int)和矩阵元素的矩阵。这是这样一个矩阵的开始。代码中是否有任何粗糙的边缘,以使其看起来更惯用?如何让它看起来更地道?代码:packagemainimport"fmt"typeMatricialinterface{Put(interface{},...int)Get(...int)interface{}}typeMatrixstruct{Matricialvaluesmap[int]interface{}}funcNewMatrix()*Mat

戈朗 : Recursive data structures

我有一个简单的问题...我正在尝试使用slice在Golang中重现这个递归数据结构。typeTriemap[byte]Trie现在我有一些“粗略”的源代码,使用下面的递归数据结构和slice,一切正常,除了我的类型化结构是一个结构而不是结构的一部分。理想情况下,我希望我的类型化递归数据结构是Trie的一部分,其中包含元素Trie{byte,[]Trie}。希望这是有道理的?现在我有一个类型,它是一个Triestruct{byte,[]Trie}。typeTriestruct{elembyteothers[]Trie}也许这会有所帮助。当我现在创建我的sliceTrie时,我使用这个函

data-structures - 了解嵌套结构

我试图理解go中的嵌套结构,所以我做了一个小测试:(playground)typeAstruct{astring}typeBstruct{Abstring}funcmain(){b:=B{A{"aval"},"bval"}fmt.Printf("%T->%v\n",b,b)//BhasanestedAandsomevalues//main.B->{{aval}bval}fmt.Println("b.b->",b.b)//B'sownvalue//b.b->bvalfmt.Println("b.A.a->",b.A.a)//B'snestedvalue//b.a->avalfmt.Pri

regex - 戈朗 : functional programming in Go

我尝试了一些我在Javascript中所做的事情。但它说http://play.golang.org/p/qlWLI03Dnlpackagemainimport"fmt"import"regexp"import"strings"funcswapit(strstring)string{varvalidID=regexp.MustCompile(`[a-z]|[A-Z]`)returnvalidID.ReplaceAllString(str,func(${0},${1},${2})string{return(${1})?strings.ToUpper(${0}):strings.ToLow

api - 客户端去: parse kubernetes json files to k8s structures

我想解析kuberneteslist文件(json/yaml)并能够将它们转换为k8s结构(以便稍后操作它们)我知道有NewYAMLOrJSONDecoder().Decode()函数(https://github.com/kubernetes/apimachinery/blob/master/pkg/util/yaml/decoder.go)可以读取json/yaml文件,但下一步是:如何将它们转换为k8s结构/类型?即例如,如果我读取带有命名空间对象的yaml文件,如何将其转换为核心/v1/命名空间接口(interface)问候, 最佳答案

data-structures - 有没有类似 BidiMap 的东西?

你好,我需要做一些双向锁定,需要一些像map[key][key]这样的map结构,在Go中有这样的想法吗?或者最好的方法是什么? 最佳答案 语言或库(AFAIK)中没有这样的东西,但它们很容易实现:只需将两个映射组合到一个struct中并确保它们保持同步。唯一的问题是很难以通用方式编写这些内容,但是可以使用interface{}来完成:typeBidirMapstruct{left,rightmap[interface{}]interface{}}func(m*BidirMap)Insert(key,valinterface{}){

data-structures - Golang 中的 map 访问瓶颈

我正在使用Golang为具有超过30000个可能标签的数据集实现朴素贝叶斯分类。我已经建立了模型,并且处于分类阶段。我正在对1000条记录进行分类,这最多需要5分钟。我已经使用pprof功能分析了代码;前10名如下所示:Total:28896samples1640856.8%56.8%2412983.5%runtime.mapaccess1_faststr497717.2%74.0%497717.2%runtime.aeshashbody25528.8%82.8%25528.8%runtime.memeqbody14685.1%87.9%2811297.3%main.(*Classif