0%

说明

基本信息:

安装Javafx

一开始尝试过安装最新的Java13版本,但是遇到了各种问题,最终还是选择了Java8版本
如果使用yay作为包管理器的话通过以下命令进行安装(如果不是的话,建议尝试一下yay)

1
yay -S java8-openjfx
阅读全文 »

如何在ArchLinux中安装mssql-server

主要参考youtue视频

依次安装mssql-server, msodbcsql, mssql-tools

若使用yay作为包管理器则输入以下命令即可

1
yay -S mssql-server msodbcsql mssql-tools

进行相关配置,如证书以及密码

  1. 选择证书版本以及配置密码
    1
    $ sudo /opt/mssql/bin/mssql-conf setup

    此处我们选择第二个证书(2) Developer (free, no production use rights)),并同意相关条款(yes),接着设置符合规范的管理员密码
阅读全文 »

Chapter 6

Methods

Methods Declarations

  1. 在函数名前面加上对应的具名类型即可
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    package geometry
    import "math"

    type Point struct{X, Y float64}
    func Distance(p, q Point) float64 {
    return math.Hypot(q.X-p.X, q.Y-p.Y)
    }
    // 方法
    func (p Point) Distance(q Point) float64 {
    return math.Hypot(q.X-p.X, q.Y-p.Y)
    }

    p := Point{1, 2}
    q := Point{4, 6}
    fmt.Println(Distance(p, q))
    fmt.Println(p.Distance(q))
    额外的(p Point)称之为方法的接收者(receiver)
    并不是非要使用this或者self,一般采用对应类型的开头字母的小写(p对应Point)
    两个Distance函数并不会产生名称冲突,他们一个是包级别的函数(geometry.Distance),另一个是具名类型Point的方法(Point.Distance)

    Go中的struct不支持重载,所以不能有两个方法名相同,也不能有成员和方法相同

阅读全文 »

Chapter 5

Functions

Function Declarations

  1. 基本形式
    1
    2
    3
    func name(parameter-list) (result-list) {
    body
    }
    相同类型的参数或者返回值可以进行合并
    1
    2
    3
    // 两者等价
    func f(i, j, k int, s, t string)
    func f(i int, j int, k int, s string, t string)
    一个函数的签名包括参数和返回值的类型,顺序,个数
  2. Go中不存在参数的默认值,也无法根据参数名来传递参数,所以必须严格按照参数的顺序以及类型进行传递
  3. 如果遇到没有函数体的函数,说明这个函数是由非Go语言实现的,而这个只是一个声明
阅读全文 »

Chapter 4

Composite Types

Arrays

由于数组是固定长度的,与切片(slice)相比有诸多不便,所以实际上很少用到,但是要理解切片就需要理解数组

  1. 数组元素被自动初始化为零值
  2. 数组字面量
    1
    2
    var q [3]int = [3]int{1,2,3}
    var r [3]int = [...]int{1,2}
    使用...填充数组长度,表示长度由字面量的个数决定(如果直接留空的话就是切片而不是数组)
  3. 可以直接在字面量初始化的时候指定mouxie下表对应的值
    1
    2
    3
    4
    5
    6
    7
    8
    type Currency int
    const (
    USD Currency = iota
    EUR
    GBP
    RMB
    )
    symbol := [...]string{USD: "$", ....}
    如果没有指定所有下表对应的值,那么其他值将被初始化为零值
    1
    r := [...]int{99: -1} // 长度为100,除了最后一个元素为-1之外,其余全部为0
  4. 如果数组的元素本身是可比(Comparable)的话,那么数组也是可比的
  5. 关于数组的传参。与大多数语言不同,数组作为参数传递的时候也是进行的值传递,也即每一个元素都被复制了一遍,即使会产生效率问题。当然也可以通过手动传递指针来解决
阅读全文 »

Chapter 3

Basic Date Types

  1. basic types
  2. aggregate types
    • arrays
    • structs
  3. reference types
    • pointers
    • slices
    • maps
    • functions
    • channels
  4. interface types

Integers

  1. int类型的细分
    • int8 以及对应的无符号版本uint8
    • int16
    • int32
    • int64
      byteunit8的别名,runeint32的别名. 虽然一般认为int是32位的,但是intint32是两种类型,并且需要显式的转换
  2. 模运算只能用于整数. 而对于负数来说结果的符号始终与被模数相同-5%3-5%-3的结果都是-2
  3. 除法运算当两个操作数均为整数时结果为整数(小数截断),否则为浮点数
  4. &^运算符(AND NOT)与非
  5. 关于无符号整数。一般只用在比特运算或者某些特定场景中,而不会仅仅因为所表达的数据确实是非负的就使用,考虑如下例子
    1
    2
    3
    4
    medals := []string{"gold", "silver", "bronze"}
    for i := len(medals) - 1; i >= 0; i-- {
    fmt.Println(medals[i])
    }
    其中数组的长度确实始终是非负的,但是len()函数依然返回的是有符号整数而不是无符号整数。如果len()函数返回的是无符号整数的话,那么i也将是无符号整数,那么i >= 0将永远为真,当i=0时执行i--将使得i变为int的最大值。
    总之为了避免种种类似这种错误,避免在不必要的地方使用无符号整数
阅读全文 »

The Go Programming Language

本系列将从《The Go Programming Language》的第二章开始,记录一些阅读过程中遇到的值得记录的知识点,也希望可以坚持下去,读完整本书

Chapter 2

Program Structure

Names

  1. 在函数外定义的实体(函数本身或者变量),会根据其首字母大小来决定其访问权限,小写字母开头的实体只能在包内访问,大写字母开头的会被export,也即其他包中可以通过import的方式访问到,如fmt.Printf。包名本身始终是小写的
  2. 使用驼峰式而不是下划线

Declarations

  1. 四种主要的声明

    • var
    • const
    • type
    • func
  2. 函数没有void返回选项,如果什么都不返回,直接为空即可

Variables

  1. 使用var来声明变量

    1
    var name type = expression

    可以省略类型type或者不赋值,省略右侧的expression,省略类型会进行自动的类型推断,省略表达式会自动将变量赋值为其类型所对应的零值,在go中没有所谓的未初始化的变量

  2. 可以在一条声明语句中初始化多个不同类型的变量

    1
    2
    var i, j, k int
    var b, f, s = true, 2.3, "four"
阅读全文 »