四月二十九号日报

今日学习内容

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\n", 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\n", 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\n", 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", 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操作符:+ - * / < > = ~ ! @ # % ^ & | ` ?

  • -- 和 /*不能在一个操作符名的任何地方出现,因为它们将被作为一段注释的开始
  • 一个多字符操作符名不能以+或-结尾,除非该名称也至少包含这些字符中的一个:
    ~ ! @ # % ^ & | ` ?

原文地址:https://www.cnblogs.com/swtczb/p/11632634.html

时间: 2024-11-09 01:12:52

四月二十九号日报的相关文章

四月二十五号日报

今日学习内容 Go语言的控制结构 1.1if-else结构:关键字if和else之后左大括号{必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行.这两条规则都是被编译器强制规定的. if condition { //代码 } else if condition{ //代码 }else{ //代码 } if可以包含一个初始化语句(比如给一个变量赋值)这种写法具有固定的格式(在初始化语句后必须加上分号),但要注意的是,使用简短

四月二十四号日报

今日学习内容 PostgreSQL的高级特性 1.1视图:我们可以在该查询上创建一个视图,这会给该查询一个名字,我们可以像使用一个普通表一样来使用它.如下 create view myview as select city,temp_lo,temo_hi,date,location from weather,cities where city=name select *from myview; 1.2外键:简而言之就是起约束作用,①插入非空值时,如果主键中没有这个值,则不能插入②更新时,不能改变

四月十九号日报

今日学习内容 因为今天要进行考核,主要精力放在了红网云产品知识点的复习上面,然后进行了墙产品的部分测试,学习了解了禅道的使用方法. 1,Go语言的了解与在Linux下开发环境的搭建 2,VSCode下Go语言的安装与配置 3,Go 程序的基本结构和要素 4,Linux文件种类与扩展名 5,对云产品知识进行复习准备考核 这周主要进行了Go语言的初步了解在搭建环境的过程中遇到了问题,找徐伯辰师兄解决了,再就是复习红网云产品知识在星期五对我们实习生进行了一次考核,自己感觉还有一些知识点掌握的不太到位,

winform学习日志(二十九)----------根据标点符号分行,StringBuilder的使用;将字符串的每个字符颠倒输出,Reverse的使用

一:根据标点符号分行,上图,代码很简单 二:代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace Lines { public partial class Fr

Android项目实战(二十九):酒店预定日期选择

原文:Android项目实战(二十九):酒店预定日期选择 先看需求效果图:              几个需求点: 1.显示当月以及下个月的日历 (可自行拓展更多月份) 2.首次点击选择"开始日期",再次点击选择"结束日期" (1).如果"开始日期" "结束日期" 相同  (2).如果"开始日期" "结束日期" 不同,且"结束日期" 晚于 "开始日期&quo

攻城狮在路上(叁)Linux(二十九)--- 完整备份工具:dump以及restore

一.dump命令: 该命令既可以针对整个文件系统进行备份,也可以仅针对目录来备份.还可以指定不同的备份等级(-0~-9共10个等级). dump -W:列出在/etc/fstab中具有dump设置的分区是否备份过. 命令格式: dump [-Suvj] [-level] [-f 备份文件] 待备份数据 参数说明: -S:仅列出后面的待备份数据所需要的磁盘空间大小. -u:将这次dump的时间记录到/etc/dumpdates文件中. -v:将dump的文件过程显示出来. -j:加入bzip2的支

企业搜索引擎开发之连接器connector(二十九)

在哪里调用监控器管理对象snapshotRepositoryMonitorManager的start方法及stop方法,然后又在哪里调用CheckpointAndChangeQueue对象的resume方法获取List<CheckpointAndChange> guaranteedChanges集合 下面跟踪到DiffingConnectorTraversalManager类的相关方法,在该类实现的方法中,调用了监控器管理对象snapshotRepositoryMonitorManager的相

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

[原创]ActionScript3游戏中的图像编程(连载二十九)

2.2.2 Photoshop投影大小的模拟 投影没有之前那么浓了,但是跟Photoshop里的效果差别还挺大,因为在Photoshop里我们还设置了另外一个属性:大小. Flash里似乎找不到它的影子,我们用排除法来进行定位,Photoshop投影样式的大小属性以像素为单位,Flash投影滤镜的选项只有距离和那对被“手铐”扣住的模糊属性符合条件,而Photoshop里也有一个距离,所以我们定位到模糊属性(图 2.15). 图 2.15 Flash投影的模糊属性 分别调整Photoshop的大小