Kotlin in Action 笔记】的更多相关文章

Kotlin 参考 官网 reference kotlin实战 Try Kotlin Kotlin China Github 简介 Kotlin是一门把Java平台作为目标的新的编程语言.它简洁.安全.优雅而且专注于和Java代码间的互操作性.它几乎可以用于如今Java遍及的所有地方. Kotlin是静态类型的,支持类型推断的,在保持代码精简的同时维持准确性和性能. kotlin同时支持面向对象和函数式编程风格,通过把函数放在一等公民的位置实现更高层次的抽象,通过支持不可变值简化了测试和多线程开…
Solr In Action 笔记(4) 之 SolrCloud Index 基础 SolrCloud Index流程研究了两天,还是没有完全搞懂,先简单记下基础的知识,过几天再写个深入点的.先补充上前文来不及写的内容. 1. Solr.xml的重要配置 Solr.xml的内容如下: <solr> <solrcloud> <str name="host">${host:}</str> <int name="hostPort…
Solr In Action 笔记(3) 之 SolrCloud基础 在Solr中,一个索引的实例称之为Core,而在SolrCloud中,一个索引的实例称之为Shard:Shard 又分为leader和replica. 1. SolrCloud的特质 作为分布式搜索引擎的SolrCloud具有以下几个特质: 可扩展性 所谓的可扩展性就是指可以通过扩大集群的规模来实现性能的提升.有两种方式来实现可扩展性,一种是纵向扩展,即加快CPU速度,增加RAM,提升磁盘I/O性能等,另一种是横向扩展,就是分…
Solr In Action 笔记(2) 之评分机制(相似性计算) 1 简述 我们对搜索引擎进行查询时候,很少会有人进行翻页操作.这就要求我们对索引的内容提取具有高度的匹配性,这就搜索引擎文档的相似性计算,如何准确的选出最符合查询条件的文档. <这就是搜索引擎>里面对相似性计算进行了简单的介绍. 内容的相似性计算由搜索引擎的检索模型建模,它是搜索引擎的理论基础,为量化相关性提供了一种数学模型,否则没法计算.当然检索模型理论研究存在理想化的隐含假设,即假设用户需求已经通过查询非常清晰明确地表达出…
Solr In Action 笔记(1) 之 Key Solr Concepts 题记:看了下<Solr In Action>还是收益良多的,只是奈何没有中文版,只能查看英语原版有点类,第一次看整本的英语书,就当复习下英语并顺便做下笔记吧. 1. Solr的框架 从这张图上看Solr的组件还是很齐全以及清楚明了的,但是当你看Solr源码的时候就会发现,哎呀咋看起来这么类呢. 2. Solr的查询方式 上面两张图分别举例了Solr的几个QueryComponent,比如facet,More li…
前言 本文适合人群 有一定的java基础 变量与方法 变量声明及赋值 var 变量名: 变量类型 val 变量名: 变量类型 这里,var表示可以改变的变量,val则是不可改变的变量(第一个赋值之后,之后都无法改变此变量的数值) PS:在kotlin中,类型首字母都是要大写的,还有,冒号之后有空格 变量声明及赋值 var name ="" var age= 1 val name= "" ... 赋值的话,直接赋值就好,系统会自动的给变量定义类型 变量声明特殊例子 n…
fun main(args: Array<String>) { println("Hello, World!") } 基本语法 声明常量用val,声明变量用var,声明函数用fun.类型修饰采用后置语法,省略时由编译器根据上下文自行推导:声明常量和变量时用冒号指示类型,自带初值时类型修饰可省略.声明函数时用冒号指示返回类型.若函数体采用代码块形式,则没有返回值时返回类型可省略,有返回值时返回类型不能省略.若函数体采用表达式形式,则无论有没有返回值返回类型均可省略.   常量…
kotlin中文文档:http://www.kotlindoc.cn/ClassesAndObjects/Classes-and-Inheritance.html 1. 声明类的构造方法 例如继承FragmentPagerAdapter时声明一个构造方法—— class ViewPagerAdapter(fm: FragmentManager) : FragmentPagerAdapter(fm) { init { //初始化 } } 当声明多个构造方法时,如 public class Load…
类(classes) // 类声明 class Invoice { } // 空的类 class Empty // 主体构造器(primary constructor) class Person constructor(firstName: String) { } // 省略了关键字的主体构造器 class Person(firstName: String) { } // 主体构造器的代码必须写在init(初始化)代码块里面 class Customer(name: String) { init…
运算符重载(Operator overloading) 一元运算符 Expression Translated to +a a.unaryPlus() -a a.unaryMinus() !a a.not() data class Point(val x: Int, val y: Int) operator fun Point.unaryMinus() = Point(-x, -y) val point = Point(10, 20) println(-point) // prints "(-1…
委托模式(Delegation) 类的委托 interface Base { fun print() } class BaseImpl(val x: Int) : Base { override fun print() { print(x) } } class Derived(b: Base) : Base by b fun main(args: Array<String>) { val b = BaseImpl(10) Derived(b).print() // prints 10 } 这里…
Kotlin Koans 心印 Introduction 1.Hello, world! Simple Functions Take a look at function syntax and make the function start return the string "OK". In the tasks the function TODO() is used that throws an exception. Your job during the koans will be…
1.基本数据类型 Kotlin的基本数值类型包括byte,short,int,long,float,double等.字符不属于数值类型,是一个独立的数据类型. 数字类型中不会主动转换.例如,不能给Double变量分配Int.必须做一个明确的类型转换,可以使用众多的函数之一. 2.类型转换 每种数据类型都有下面这些转换: toByte():Byte, toShort():Short, toInt():Int, toLong():Long, toFloat():Float, toDouble():D…
外国人写的一个天气预报的例子,最后有源码下载地址,初学者可以研读一下 http://blog.csdn.net/true100/article/category/6257988 1:Kotlin介绍及项目配置 2:Kotlin与Java简单比较 3:Kotlin中类与函数 4:Kotlin中变量及属性 5:Anko for Android 6:Anko和扩展的函数 7:Anko获取网络数据 8:Kotlin数据类及json解析 9:Kotlin操作符重载 10:Kotlin中Kotlin And…
因为回答百度知道的一个问题,仔细查看了<Struts2 In Action>,深入细致的看了 “数据转移OGNL 和 构建视图-标签”,很多东西才恍然大悟. 一直觉得国外写的书很浮,不具有操作性,但其实,Coding多了,才发现国外的书写的深刻.清晰.能传道解惑. 一.主要收获 1. Struts2 框架的数据流入和流出 使用 Struts2 标签时,所有非字符串属性都被当作 OGNL表达式进行解析. 使用  %{expression} 语法可以强制将字符串属性当作 OGNL表达式解析. 2.…
定义类 class MyObject private constructor(name: String, age: Int) { private var name: String private var age: Int = 0 init { this.name = name this.age = age println("init in MyObject called") } constructor() : this("Null", 111) { println(…
定义函数 fun sum(a: Int, b: Int): Int { return a + b } 该函数中两个参数的类型都是Int,返回类型是Int 也可以做如下简化 fun sum(a: Int, b: Int) = a + b 将表达式作为函数体.返回值类型自动推断 当函数没有返回值时,返回类型是Unit fun printInt(i: Int): Unit { println("The value of i is $i.") } Unit可以省略 定义变量 定义只读局部变量使…
参考资料 官网:https://kotlinlang.org/ 官方文档:https://kotlinlang.org/docs/reference/ Kotlin 源码:https://github.com/JetBrains/kotlin Kotlin 官方博客:https://blog.jetbrains.com/kotlin/ Kotlin 微信公众号:Kotlin Kotlin中文站:https://www.kotlincn.net/ Gradle 文档: https://docs.g…
耦合的两面性     一方面代码耦合难以测试,会出现打地鼠式的bug特性(修复一个bug,引发另一个bug) 另一方面耦合又是必须的,不同的类必须要进行适当的交互,才能实现功能. bean的四种装配方式     byName,byType,constructor,autodetect(首次尝试constructor,失败后采用byType) 注解方式注入:      在使用@Resource或者@Autowired这样的注解自动注入bean的时候,可能会出现spring缺少适合自动装配的bean…
创建数组 初始值为空的String数组 val arrayEmpty = emptyArray<String>() 长度为5,初始值为空的Int数组 val arrayEmpty = emptyArray<Int>(5) 长度为5,初始值为0的Int数组 val array4 = Array(5, {0}) 使用闭包创建数组,x的平方,i从0开始 数组存放为0,1,4,9,16 val array = Array(4, { i -> i * i }) 遍历数组 普通遍历 fo…
数据类(Data Classes) data class User(val name: String, val age: Int) 编译器自动生成的有: equals()/hashCode() toString() 形式为 "User(name=John, age=42)" componentN() 函数 copy() 函数 数据类必须符合以下条件. 主体构造器必须至少有一个参数. 所有主体构造器的参数都必须被标注为var或val. 数据类不可以是 abstract, open, se…
反射 // 反射 val c = MyClass::class val c2 = MyClass::class.java // 获取KClass的引用 val widget: Widget = ... assert(widget is GoodWidget) { "Bad widget: ${widget::class.qualifiedName}" } // 函数引用 fun isOdd(x: Int) = x % 2 != 0 val numbers = listOf(1, 2,…
函数 // 函数定义及调用 fun double(x: Int): Int { return 2*x } val result = double(2) // 调用方法 Sample().foo() // create instance of class Sample and call foo // 参数语法 fun powerOf(number: Int, exponent: Int) { ... } // 缺省参数 fun read(b: Array<Byte>, off: Int = 0,…
netty的数据容器 网络数据的基本单位大多为字节,Java NIO 提供了ByteBuffer 作为它的字节容器,但使用起来过于复杂和繁琐.在Netty中, ByteBuffer 替代品是ByteBuf,一个强大的实现,既解决了JDK API 的局限性,又为网络应用程序的开发者提供了更好的API.由不同的索引分别控制读访问和写访问的字节数组. ByteBuf Netty 的数据处理API 通过两个组件暴露给用户,它们是 abstract class ByteBuf 和interface Byt…
类型检测及自动类型转换 is运算符用于检测一个表达式是否为某类型的一个实例检测出为某类型后,检测后的分支中可以直接当作该类型使用,无需显示转换 fun getStringLength(obj: Any): Int? { if (obj is String) { return obj.length } return null } 循环 for fun main(args: Array<String>) { val items = listOf(1, 2, 3) for (item in item…
原网址 https://lippiouyang.gitbooks.io/gradle-in-action-cn/content/…
摘自:http://makble.com/what-is-term-vector-in-lucene given a document, find all its terms and the positions information of these terms. Index tell us which document matched , term vector tells us how and where its matched. A classic example is search r…
前言 Kotlin Note 是我学习kotlin整理笔记向博客,文章中的例子参考了kotlin in action这本书籍,同时我也极力推荐这本书,拥有Java基础的人可以很快的就使用kotlin来完善自己的编程技巧. 不过我不想让博客变成简单的复制粘贴笔记,因此对内容进行了精简,同时增加了与Java的对比和转换,一些详细内容不会整理出来,详细的内容我觉得查阅api和翻书就可以了. 基础预备知识 博客中的例子需要一些简单的基础知识包括如下 Java8基础 Java8中函数式编程的一些基本知识,…
单例的实现方法,可以通过同伴对象,或者 lazy. 示例: class Hello private constructor() { companion object { val instance = Hello() } } 通过 lazy 实现 class Hello private constructor() { private object Holder { val INSTANCE = Hello() } companion object { val instance: Hello by…
Kotlin 之操作符重载   参考: kotlin in action kotlin 官方参考文档 运算符重载 Kotlin允许我们为自己的类型提供预定义的一组操作符实现(这些操作符都对应的成员函数或扩展函数),他们是一一对应的,如:(+ 对应 plus): 通过这个操作符,如+,可调用plus 方法:如:在Kotlin中,为类定义了一个plus方法,按照约定,可以在该类型实例上通过+运算符,来实现 调用 plus方法: 重载操作符的函数需要用 operator关键字标记: 从以下类开始 da…