草庐IT

Purely-Functional-Structures-Chri

全部标签

data-structures - 在 Go 中实现 Merkle 树数据结构

我目前正尝试在Go中实现merkle-tree数据结构。基本上,我的最终目标是存储一小组结构化数据(最大10MB)并允许这个“数据库”轻松地与分布在网络上的其他节点同步(参见相关资料)。由于没有类型检查,我已经在Node中相当有效地实现了这一点。这就是Go的问题所在,我想利用Go的编译时类型检查,尽管我也想拥有一个可以与任何提供的树一起工作的库。简而言之,我想将结构用作merkle节点,并且我希望拥有一个嵌入所有类型的Merkle.Update()方法。我试图避免为每个结构编写Update()(尽管我知道这可能是唯一/最好的方法)。我的想法是使用嵌入式类型://librarytypeM

data-structures - 在 Go 中使用 TTL 选项映射

我需要构建这样的数据结构:map[string]SomeType但它必须将值存储大约10分钟,然后将其从内存中清除。第二个条件是记录数量——它必须是巨大的。此数据结构必须至少添加每秒2-5K条记录。那么,Go中最正确的实现方式是什么?我正在尝试为每个新元素制作带有超时的goroutine。一个(或多个)垃圾收集器goroutine带有接收超时和清除元素的channel。但我不确定这是最清楚的方法。有数百万个超时等待的goroutine可以吗?谢谢。 最佳答案 您必须创建一个结构来保存您的map并提供自定义的获取/放置/删除函数来访问

git - 如何修复命令控制台中的 "WARNING: terminal is not fully functional"错误?

这个问题在这里已经有了答案:WhydoesgitdiffonWindowswarnthatthe"terminalisnotfullyfunctional"?(7个答案)关闭9年前。我之前使用的是hg,现在我正在转换为Git。但是在安装它之后,每次我执行“gitdiff”或“gitlog”时,我都会收到这个错误:警告:终端功能不全。我该如何摆脱它?

functional-programming - Dart:映射列表(list.map)

我有一个String列表,例如,varmoviesTitles=['Inception','Heat','SpiderMan'];并想使用moviesTitles.map将它们转换为Flutter中的TabWidget列表。 最佳答案 你可以使用moviesTitles.map((title)=>Tab(text:title)).toList()示例:bottom:newTabBar(controller:_controller,isScrollable:true,tabs:moviesTitles.map((title)=>Tab

functional-programming - 使用函数式编程计算每个标签的出现次数

我一直在尝试创建一个返回Map的函数键是某个标签,值是出现次数。我需要从中提取信息的对象(简化):classNote{Listtags}目前的功能:privatefunextractTags(notes:List):Map{returnnotes.map{note->note.tags}.groupBy{it}.mapValues{it.value.count()}}现在编译器给我的返回类型不匹配Map!,Int>而且我不确定我是否得到了预期的结果(因为我仍然无法正确测试)。我期待以下结果:(tag1,1)(tag2,4)(tag3,14)... 最佳答案

functional-programming - Kotlin 中的内存功能

我有一个带有实例方法buildHierarchyUncached的现有类,其签名可以在下面找到。privatefunbuildHierarchyUncached(date:LocalDate):Node{...}我想提供一个公共(public)函数buildHiearchy,它是buildHierarchyUncached的内存版本。我可以接近我想要的:valbuildHiearchy=Memoize({buildHierarchy(it)})可以这样称呼:hierarchyService.buildHiearchy(businessDate)使用:classMemoize(valfu

functional-programming - Kotlin 函数引用

让records成为流/集合和extract函数,该函数将数据转换为此类集合的元素。Kotlin有没有办法写records.map{extract(it)}没有明确应用(it)?例如records.map(extract)或records.map{extract} 最佳答案 如果extract是函数类型(T)->R或T的值(局部变量、属性、参数)。)->R对于一些T和R,那么你可以直接传给map:records.map(extract)例子:valupperCaseReverse:(String)->String={it.toUpp

c++ - 为什么 lambda 表达式不需要 <functional>,而 function<void()> 需要?

我有一些使用lambda表达式的代码:#include#includeintmain(){std::vectorvi={3,1};std::sort(vi.begin(),vi.end(),[](intx,inty){returnx不需要#include编译,但如果我使用变量来存储lambda函数:#include#include#includeintmain(){std::vectorvi={3,1};std::functioncompf=[](intx,inty){returnx那么我需要包含编译,为什么?为什么sort()不包括已经? 最佳答案

data-structures - 带范围的 Golang 并发 map 访问

我有一张map,其中包含需要在清除map之前释放的对象。我很想在遍历map时迭代map并删除/释放对象。这是一个模拟示例https://play.golang.org/p/kAtPoUgMsq由于迭代map的唯一方法是通过范围,我将如何同步多个生产者和多个消费者?我不想读取锁定map,因为这会使迭代期间无法删除/修改键。 最佳答案 有很多方法可以让您从map中清理内容,而无需访问不雅的map。对您的应用程序有效的方法很大程度上取决于它在做什么。0)工作时只需锁定map即可。如果map不是太大,或者您有一些延迟容忍度,它可以快速完成工

data-structures - 有没有提供关联数组功能的 go 库?

我正在寻找类似于python中“字典”的go语言能力,方便一些python代码的转换。编辑:Maps非常适合这个重复数据删除应用程序。我能够在几秒钟内使用具有16字节字符串索引的映射将1.3e6重复项压缩为2.5e5个唯一项。与map相关的代码很简单,因此我将其包含在下面。值得注意的是,预先分配1.3e6元素的map只加快了几个百分点:varm=make(map[string]int,1300000)//mapwithinitialspacefor1.3e6elementsct,ok:=m[ax_hash]ifok{m[ax_hash]=ct+1}else{m[ax_hash]=1}