Learning Kotlin: 控制流 - if

条件控制 if-else \ when

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package app

fun main() {
val a = 2
var b = 1
var max = a
if (a < b) max = b

if (a > b) {
max = a
} else {
max = b
}

//作为表达式
max = if (a > b) a else b

// if 的分支可以是代码块,最后的表达式作为该快的值

max = if (a > b) {
println("Choose a")
a
} else {
println("Choose b")
b
}
}

Learning Kotlin: 包

1
2
3
4
5
6
7
package app

import ...

class ... {...}

fun ... {...}

import:

  • 导入类

  • 顶层函数及属性

  • 对象声明 中声明的函数和属性

  • 枚举常量

顶层可见性:

1
2
...
class private constructor(...) {...}

Learning Kotlin: 基本类型 - 字符串

String

字符串是不可变的。

字符串的元素–字符可以使用索引运算符访问。

1
2
3
val str: String = "qwerty"

val str2 = str[0] //q

字符串模板

1
2
val data = "Hello"
println("$data World!")
1
2
3
4
val a = 1
val b = 2

println("a + b = $( a + b)")

分解符

1
2
3
val str = """
{"key":"value"}
"""

Learning Kotlin: 基本类型 - 数组

数组是一种初始化时指定容器大小, 不可以动态调整其大小的容器。元素按顺序存储在一串连续的内存段上。

Array

arrayOf()

必须指定数组的元素,集合中的元素是任意类型。

1
2
3
4
5
val arrayNumber = arrayOf(1, 2, 3, 4)
//或者
val arrayNumber: Array<Int> = arrayOf(1, 2, 3, 4)

val arrayObjects: Array<Any> = arrayOf(1, true, "2", JSONObject())

arrayOfNulls()

创建一个指定大小的、所有原色都为空的数组,必须指定集合中的元素类型

1
2
3
val arrayOfNulls: Array<String?> = arrayOfNulls<String>(5)
arrayOfNulls[0] = "element1"
arrayOfNulls[4] = null

Array(size: Int, fun {})

动态创建数组,用接受数组大小以及一个方法参数的 Array 构造方法,用作参数的方法能够返回给定索引的每个元素初始值

1
2
val asc = Array(5){ i -> (i * i).toString() } //i = 0, 1, 2, 3, 4
asc.forEach { println(it) }

原生类型数组

原生数组类型
ByteArray
ShortArray
IntArray
LongArray
BooleanArray
CharArray
FloatArray
DoubleArray
1
2
3
4
5
6
7
8
9
// IntArray
val intArr = IntArray(5)
intArr[0] = 1

val intArr2 = IntArray(5) { 1000 } // [100, 100, 100, 100, 100]

val intArr3 = IntArray(5) { it -> it *2 }
//或者
val intArr3 = IntArray(5) { it *2 } // it , lambda 表达式专有变量, 这里指的是数组的下标

数组的常见操作

1
2
3
4
5
6
7
8
9
10
for (item in intArr3 ) {}

for (i int intArr3.indices) {}

for((index, item) in intArr3.withIndex) {}


intArr3.forEach { it -> //todo }

intArr3.forEach { ibdex, item -> }

Learnling Kotlin: 基本类型 - 数字

一个字节8位

什么是位宽?

1、在计算机中, 所有数字在存储的时候,都是二进制存储

2、二进制 8 位称为 1 个字节

3、Int 数据类型占 4 个字节, 4 * 8 = 32 位

4、Long 数据类型占 8 个字节, 8 * 8 = 64 位

表示数字的内置类型:

Type Bit width (位宽) 最小值 最大值
浮点 Double 64 toDouble(): Double 小数点后 16 位
浮点 Float 32 toFloat(): Float 小数点后 6 位
整数 Long 64 -2^63 2^63 - 1 toLong(): Long
整数 Int 32 -2^31 2^31 - 1 toInt(): Int
整数 Short 16 -32768 32767 toShort(): Short
整数 Byte 8 -128 127 toByte(): Byte

数字可转化为 Char: toChar(): Char

数字装箱?

Linux crontab 定时任务

crontab 的格式:

分 时 月 星期 要运行的命令

. 第 1 列分钟:0 ~ 59
. 第 2 列小时:0 ~ 23
. 第 3 列日:1 ~ 31
. 第 4 列月:1 ~ 12
. 第 5 列星期:0 ~ 7 (0 和 7 表示星期天)
. 第 6 列要运行的命令

SaaS、PaaS、IaaS

云计算的服务模式分为三种,包括软件即服务(Software as a Service,SaaS)、平台即服务(Platform as a Service,PaaS)、基础设施即服务(Infrastructure as a Service,IaaS)。

IaaS,基础设施即服务。它处于最底层,是指云服务提供商为用户提供计算机基础设施服务。

什么是计算机基础设施服务?就是指支撑所有应用程序所必须的服务器、存储等等一系列硬件设备,它如同地基一般在最底层作为支撑。没有这些基础设施在最底层支撑,上层的系统、应用程序什么的都不可能存在。

IaaS面向的是企业及开发者,交付物具体包括计算、存储及网络。

如今云服务商可以提供给企业用户这些基础设施,公司想要运行一些企业的应用不用再支付高额费用去购买服务器,只需要通过互联网租用这些硬件设施即可。租比买的成本就低得多了,而且企业也不用担心日后设备闲置、利用率低的问题。

PaaS,平台即服务。通常也被称为中间件。

它处于中间层,主要面向对象为开发者,它向开发者提供某种单项能力,如数据分析、人工智能、通信、语音识别及图像识别等等。PaaS企业还会为开发者提供开发应用的方案,一个公司的所有开发项都可以放在PaaS公司提供的这个平台上。另外这个平台还会把多项开发方案集中,这样一来既节省了企业在硬件上的开销,也能让开发者工作更便捷,分散的各个部门合作也更方便。

处于第三层的是SaaS,也就是软件即服务。

SaaS是每个人都能够接触到的,其面向对象不仅包括是企业还包括个人。从网页进入接受服务,不论是娱乐或是商务用,几乎每个人都可以轻松的进入这一层。

SaaS公司向用户交付的是真实可见的软件应用,用户无需购买软件再进行本地安装更新,只需要付出租金就可以开始使用这些基于网络的软件,就能够实现企业的管理以及经营活动。

http://www.tmtpost.com/3712685.html