• 四月二十九号日报


    今日学习内容

    Go语言的数组与切片

    1声明和初始化:数组是具有相同 唯一类型 的一组已编号且长度固定的数据项序列

    Go 语言中的数组是一种 值类型,所以可以通过 new() 来创建: var arr1 = new([5]int),这种方式和 var arr2 [5]int 的区别是arr1 的类型是 *[5]int,而 arr2的类型是 [5]int

    package main
    
    import "fmt"
    
    func f(a [3]int) {
    	a[1] = 2
    	fmt.Println(a)
    }
    func fp(a *[3]int) {
    	a[1] = 2
    	fmt.Println(a)
    }
    
    func main() {
    	var ar [3]int
    	f(ar)
    	fp(&ar)
    }
    

    上面函数f并没有修改原数组,想通过传参修改原数组内容,可以通过加操作符&来实现

    1.1数组常量:如果数组值已经提前知道了,那么可以通过 数组常量 的方法来初始化数组

    package main
    
    import "fmt"
    
    func main() {
    	var arrkeyValue = [5]string{3: "Chris", 4: "Ron"}//只有索引3和4被赋值其他置空
    	for i := 0; i < len(arrkeyValue); i++ {
    		fmt.Printf("Person at %d is %s
    ", i, arrkeyValue[i])
    	}
    }
    

    1.2多维数组:用法如下

    package main
    
    const (
    	WIDTH  = 1920
    	HEIGHT = 1080
    )
    
    type pixel int
    
    var screen [WIDTH][HEIGHT]pixel
    
    func main() {
    	for y := 0; y < HEIGHT; y++ {
    		for x := 0; x < WIDTH; x++ {
    			screen[x][y] = 0
    		}
    	}
    }
    

    2切片是对数组一个连续片段的引用,所以切片是一个引用类型,切片也是一个可变长数组。用法如下

    声明格式为:var identifuer []tye

    初始化格式为:vae slice1 []type = arr1[start:end]

    package main
    
    import "fmt"
    
    func main() {
    	var arr1 [6]int
    	var slice1 []int = arr1[2:5]
    	for i := 0; i < len(arr1); i++ {
    		arr1[i] = i
    	}
    	for i := 0; i < len(slice1); i++ {
    		fmt.Printf("Slice at %d is %d
    ", i, slice1[i])
    	}
    }
    

    2.1用make()创建一个切片:make接受2个参数:元素的类型以及切片的元素个数。基本格式如下

    var slice1 []type = make([]type, len)

    package main
    
    import "fmt"
    
    func main() {
    	var slice1 []int = make([]int, 10)
    
    	fmt.Println("the len is ", len(slice1))
    	for i := 0; i < len(slice1); i++ {
    		slice1[i] = 5 * i
    	}
    	for i := 0; i < len(slice1); i++ {
    		fmt.Printf("Slice at %d is %d
    ", i, slice1[i])
    	}
    }
    

    2.2new()make()的区别:

    • new(T) 为每个新的类型T分配一片内存,初始化为 0 并且返回类型为*T的内存地址:这种方法 返回一个指向类型为 T,值为 0 的地址的指针,它适用于值类型如数组和结构体);它相当&T{}`。
    • make(T) 返回一个类型为 T 的初始值,它只适用于3种内建的引用类型:切片、map 和 channel

    3切片重组:slice1 := make([]type, start_length, capacity),其中 start_length 作为切片初始长度而 capacity 作为相关数组的长度。这么做的好处是我们的切片在达到容量上限后可以扩容。改变切片长度的过程称之为切片重组 reslicing,做法如下:slice1 = slice1[0:end],其中 end 是新的末尾索引(即长度)

    4切片的复制与追加:如果想增加切片的容量,我们必须创建一个新的更大的切片并把原分片的内容都拷贝过来。

    package main
    
    import "fmt"
    
    func main() {
    	sl_from := []int{1, 2, 3}
    	sl_to := make([]int, 10)
    
    	n := copy(sl_to, sl_from)
    	fmt.Println(sl_to)
    	fmt.Printf("Copied %d elements
    ", n)
    
    	sl3 := []int{1, 2, 3}
    	sl3 = append(sl3, 4, 5, 6)
    	fmt.Println(sl3)
    }
    

    文件与目录的默认权限与隐藏权限

    3.1文件特殊权限:SUID,SGID,SBIT

    SUID

    • SUID权限仅对二进制程序有效
    • 执行者需要对该程序具有x的访问权限
    • 本权限仅在执行该程序过程中有效

    SGID

    • 用户对于此目录具有r与x的权限时,该用户能进入此目录
    • 用户在此目录下的有效群组将会变成该目录的群组

    SBIT(只针对当前目录有效)

    • 当前用户对于此目录具有w,x权限,亦具有写入的权限时
    • 当用户在该目录下建立文件或目录时,仅有自己与root才有权利删除该文件

    3.2查看文件类型:file命令可以来查看文件类型

    命令与文件查询

    4.1脚本文件名搜寻:通过which命令来查看指令的完整文件名放在哪里

    4.2文件名的查找:whereis(查找特定文件),locate,find

    SQL语法

    5.1词法结构:SQL输入由一个命令序列组成。一个命令由一个记号的序列构成,并由一个分号(“;”)终结。输入流的末端也会标志一个命令的结束。

    --下面是一个(语法上)合法的SQL输入:
    SELECT * FROM MY_TABLE;
    UPDATE MY_TABLE SET A = 5;
    INSERT INTO MY_TABLE VALUES (3, 'hi there');
    

    5.2标识符和关键字:SQL标识符和关键词必须以一个字母(a-z,也可以是带变音符的字母和非拉丁字母)或一个下划线(_)开始。后续字符可以是字母、下划线()*、数字(0-9)或美元符号($)。

    5.3常量:在PostgreSQL中有三种隐式类型常量:字符串、位串和数字。

    5.3.1字符串常量在SQL中,一个字符串常量是一个由单引号(')包围的任意字符序列,例如'This is a string'

    5.3.2位串常量:位串常量看起来像常规字符串常量在开引号之前(中间无空白)加了一个B(大写或小写形式),例如B'1001'。位串常量中允许的字符只有0和1。

    5.3.3数字常量:整数,小数,指数等

    5.4操作符:+ - * / < > = ~ ! @ # % ^ & | ` ?

    • -- 和 /*不能在一个操作符名的任何地方出现,因为它们将被作为一段注释的开始
    • 一个多字符操作符名不能以+或-结尾,除非该名称也至少包含这些字符中的一个:
      ! @ # % ^ & | ` ?
  • 相关阅读:
    实现图片加载时显示百分比思路——serverpush
    我对大项目的看法(定义)
    lucene
    Access常用内置SQL函数
    闰年算法
    DotFuscator使用步骤
    软件加密狗破解思路和方法
    Lucene(.net)学习
    .Net 代码安全保护产品DNGuard HVM使用
    为什么动态创建的控件没有显示出来
  • 原文地址:https://www.cnblogs.com/swtczb/p/11632634.html
Copyright © 2020-2023  润新知