collection

.net core DI注入

痴心易碎 提交于 2019-12-05 04:03:07
最初使用serilog组件,做日志记录工具,有了以下插件代码: public static class ServiceHostBuilderExtensions { public static IServiceCollection UseSeriLog(this IServiceCollection collection, Serilog.ILogger logger = null, bool dispose = false, LoggerProviderCollection providers = null) { if (providers != null) { collection.AddSingleton<ILoggerFactory>(services => { var factory = new SerilogLoggerFactory(logger, dispose, providers); foreach (var provider in services.GetServices<ILoggerProvider>()) factory.AddProvider(provider); return factory; }); } else { collection.AddSingleton<ILoggerFactory>(services => new

Java中的集合Collection

若如初见. 提交于 2019-12-04 16:22:27
集合的体系: ##Collection 接口 单列集合 ###List 接口 可以重复 存取有序。有索引。 ArrayList LinkedList Vector(已经不用了) ###Set 接口 不可以重复 存取无序 无索引 HashSet TreeSet ##Map 接口 双列集合。 HashMap TreeMap Properties 来源: https://www.cnblogs.com/maomaodesu/p/11873940.html

第十章 Scala 容器基础(十一):使用zip或者zipWithIndex来创建一个循环计数器

杀马特。学长 韩版系。学妹 提交于 2019-12-04 06:51:29
Problem 你要遍历一个有序集合,同时你又想访问一个循环计数器,但最重要的是你真的不需要手动创建这个计数器。 Solution 使用 zipWithIndex活着 zip方法来自动地创建一个计数器,假设你有一个有序集合days,那么 你可以使用zipWithIndex和counter来打印带有计数器的集合元素: scala> val days = Array("Sunday", "Monday", "Tuesday", "Wednesday","Thursday", "Friday", "Saturday") days: Array[String] = Array(Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday) scala> days.zipWithIndex.foreach{case(day,count) => println(s"$count is $day")} 0 is Sunday 1 is Monday 2 is Tuesday 3 is Wednesday 4 is Thursday 5 is Friday 6 is Saturday 同样,你可以使用for循环来打印计数器和集合元素 scala> for((day,count) <- days.zipWithIndex) { |

第十章 Scala 容器(三):使用容器通用方法解决问题

若如初见. 提交于 2019-12-04 06:51:01
1. 综述 Scala的容器类主要提供了下面这些方法来使用它它们:1. 过滤;2. 遍历;3. 分区; 4. 数学统计;5. 其他。我们来详细看看这些方法 2. 容器通用方法(Common methods on Traversable collections) c collect f:返回c中满足f函数条件的元素 scala> (1 to 10) collect { case x if x%2==0 => x*x } res51: scala.collection.immutable.IndexedSeq[Int] = Vector(4, 16, 36, 64, 100) c count p: 返回c中符合条件p的元素个数 scala> (1 to 10) count (_ > 8) res53: Int = 2 c1 diff c2: 返回c1中存在,c2中不存在的元素 scala> (1 to 5) diff (2 to 4) res55: scala.collection.immutable.IndexedSeq[Int] = Vector(1, 5) c drop n:返回c中除前n个元素之外的所有元素 scala> (1 to 5) drop 2 res65: scala.collection.immutable.Range = Range(3, 4, 5) c

第十章 Scala 容器(三):使用可变与不可变容器特有方法

别等时光非礼了梦想. 提交于 2019-12-04 06:50:28
1. 可变容器通用方法(Common operators (methods) on mutable collections) c += x:把x元素添加到集合c中 scala> val a = collection.mutable.ArrayBuffer(1,2,3) a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3) scala> a += 4 res15: a.type = ArrayBuffer(1, 2, 3, 4) c += (x,y,z):把x,y,z添加到集合c中 scala> val a = collection.mutable.ArrayBuffer(1,2,3) a: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3) scala> a += (4,5,6) res16: a.type = ArrayBuffer(1, 2, 3, 4, 5, 6) c1 ++= c2:把集合c2的元素全部添加到集合c1中 scala> val c1 = mutable.ArrayBuffer(1,2,3) c1: scala.collection.mutable.ArrayBuffer[Int] =

FAQ-GC【官方版】

若如初见. 提交于 2019-12-03 11:41:19
This document describes the behavior of the Java( tm) HotSpot( tm) virtual machine. This behavior is not part of the VM specification, however, and is subject to change in future releases. Moreover the behavior described here is generic behavior and will not apply to the execution of all Java applications. How is the generational collector implemented in HotSpot(tm)? The default collector in HotSpot has two generations: the young generation and the tenured generation. Most allocations are done in the young generation. The young generation is optimized for objects that have a short lifetime

第十章 Scala 容器基础(十):使用for循环来遍历一个集合

孤街醉人 提交于 2019-12-03 04:14:04
Problem 我想使用for循环来遍历容器的所有元素,或者通过for yield来创建一个新的集合。 Solution 你可以使用for循环遍历所有的Traversable类型(基本上所有的sequency都可以): scala> val fruits = Traversable("apple", "banana", "orange") fruits: Traversable[String] = List(apple, banana, orange) scala> for (f <- fruits) println(f) apple banana orange scala> for (f <- fruits) println(f.toUpperCase) APPLE BANANA ORANGE 如果你的循环体代码很长,那么你同样可以像正常使用for循环一样,执行多行的代码块: scala> for (f <- fruits) { | val s = f.toUpperCase | println(s) | } APPLE BANANA ORANGE 使用一个计数器当作下标来访问一个集合: scala> val fruits = IndexedSeq("apple", "banana", "orange") fruits: IndexedSeq[String] = Vector

第十章 Scala 容器(一):整体介绍

别来无恙 提交于 2019-12-03 04:11:04
1. 整体架构 Scala容器类是非常丰富的,整体架构也比较复杂,下面我们来根据图(10-2)来认识一下。Scala的容器类都是从Traversable和Iterable这两个trait开始的,然后分为三大类,分别是Seq,Set和Map,然后Seq又分为IndexedSeq和LinearSeq两种。其中IndexedSeq可以理解为数组形式,类似于Java中的ArrayList,而LinearSeq是以链表的形式存储的,类似于Java中的LinkedList。然后我们回来再看一下顶端的两个trait,其中Traversable允许你通过for each来重复遍历容器中的内容,而Iterable允许你使用Iterable遍历整个容器,区别是实用iterable遍历容器时,对于容器内的每个元素只能遍历到一次,这一点鹤Java的Iterable保持一致。 2. Seq 我们来看一下Seq的架构图,刚才已经提到Seq分类IndexedSeq和LinearSeq两大类。 其中IndexSeq允许你通过索引(下标)来随机访问,比如你想获取容器内下标为5000的值,你可以直接使用IndexedSeq(5000)来实现,IndexdSeq的默认实现为Vector。 scala> val x = IndexedSeq(1,2,3) x: IndexedSeq[Int] = Vector(1, 2,

第十章 Scala 容器(二):如何选择一个合适的容器类

走远了吗. 提交于 2019-12-03 04:10:49
1. 解决方案 实际上Scala的容器分为三大类:Seq,Map,Set。Seq容器线性地存储了元素,这些元素或者被以数组加索引的形式存储,或者使用链表的方式存储。Map存储的是键值对,当你想用(key-value)形式时可以使用Map。而Set存储的事不可重复的元素。 2. 选择一个合适的Sequence 当你想选择一个Seq来使用的时候,你需要考虑两件事:1. 使用索引来快速访问你的容器(数组)中的内容,还是使用链表方式;2. 你的容器中的内容是可变的还是不可变的 Scala中对于Seq,针对:数组/链表,可变/不可变的组合,推荐使用以下四种通用容器类。 通过表(10-1)我们可以看出,如果你想使用一个不可变的带索引的容器,你应该选择Vector,如果你想使用一个可变的带索引的容易你应该选择ArrayBuffer。同样的List和ListBuffer为链式存储的不可变和可变容易。 主要的不可变序列选择表,其中List和Vector是我们通常情况下使用的不可变容器。Queue为先进先出的链式结构,Range为一个带索引的序列,Stack为后进先出的链式结构,Stream则是一个懒加载的List。String比较特殊,作为一个字符串类,实际上它是一个不可变的字符序列(index方式存储)。 可变序列选择表,Array和ArrayBuffer的区别是,Array不可改变大小

How create a new array field with the aggregate framework

匿名 (未验证) 提交于 2019-12-03 03:08:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 问题: I'm starting to use mongoDb and I'm stuck with a simple use case. Let's say I've got a collection 'aCollection' with entries such as this: { _id: ObjectId(123), lat: 48,56623, long: 2,56332 } and I want to create a new collection with entries like this: { _id: ObjectId(123), lat: 48,56623, long: 2,56332, geometry : { type: "Point", coordinates: [48,56623, 2,56332] } } I thought about the aggregation framework: db.aCollection.aggregate([{$project: { _id: 1, lat: 1, long: 1, geometry: { type: {$concat: ["Point"]}, coordinates: ["$lat", "$long"