Go圣经-map
Map
创建1234567891011// 第一种c:= make (map[string]int)// 第二种c := map[string]int{"ok":1,"error":-1}// 第三种var c map[string]int// 万能好用写法: 使用空接口可以实现连键值都是类型不一样的c := map[string]interface{}{ "ok":"ok", "err":"-1"}
增加直接通过索引增加(同数组)
删除使用内置的delete()函数
12delete(ages, "alice")// 第一个写变量名,第二个写键
查询直接通过索引查询(同数组)
比较不能使用== 来比较
用for range 一个个比较(同切片)
复制不能直接复制
用for range 一个个复制(同切片)
修改直接用索引来修改(同数组 ...
Go圣经-slice
变量-常量-字面量
1234a := 1const b int = 1// a 变量 b 常量 1 字面量// 综上所述 字面量就是等号后面的数据
数组
Go内置的函数**len()**可以返回数组的元素个数
[…]int “…”省略号出现在数组长度的位置,数组的长度就由初始化数组的元素个数决定
[3]int与[4]int是不同的类型,并且 数组长度的位置必须是常量表达式
[…]int{99:-1},表示总共由一百个元素,第九十九个为-1,其他都为0
[5]string{1: “ok”, 2: “o” } 这里的起始位置就是索引为1的地方
数组作为形参的时候,是另外创建一个副本,是值传递的形式,要与其他语言分开来
要实现地址传递,直接使用数组指针,*[9]int
slice
slice表示一个拥有相同类型原始的可变长度的类型
指针 长度 容量
长度和容量切片的长度就是它所包含的元素个数。
切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。
切片可以按需自动增长和缩小,增长一般使用内置的 append 函数来实现,而缩小则是通过对切片再次 ...
图解HTTP-网络基础
Web
web(world wide wed) 是全球广域网,也成为万维网,它是基于超文本,HTTP协议,全球性的分布式图形信息系统,一般来说Web也可以认为是浏览器
TCP/IP协议簇
TCP/IP协议簇 并不是单单指的是 TCP和IP协议
它是一个四层协议系统,自顶向下分别是应用层,传输层,链路层和物理层
应用层应用层决定了向用户提供应用服务时通信的活动
传输层传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输
网络层网络层用来处理网络上流动的数据包。
链路物理层处理连接网络的硬件部分
通信大致过程
数据的封装
IP协议
IP(Internet Protocol),就是那么高大上,其作用就是把各种数据包传送给对方。
要确保数据包能够确实传送到对方,需要IP地址和MAC地址(Media Access Control Address)
ARP协议IP间的通信依赖MAC地址,在通信中转的情况中,会利用中转设备的MAC地址搜索下一个中转目标,这是就会采用ARP协议(Address Resolution Protocol),ARP是一种解析地址的协议,根据通 ...
数组
今天开始刷题,记录一下 23.12.28
二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。
示例 1:
123输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4
示例 2:
123输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1
解题12345678910111213141516func search(nums []int, target int) int { length := len(nums) left := 0 right := length - 1 for(left<= right){ middle := (left+right)/2 if nums[middle]>target{ ...
Go圣经-字符串
字符串
字符串不可改变
s[0]=’L’ 这种操作是不行的
但是可以通过 s += “, right foot”改变
原生的字符串字面量的书写形式是 一对反引号,而不是双引号。
原生的字符串字面量可以展开多方,但是回车符会被删除
适用于HTML模板,JSON字面量,命令行提示信息
就可以解释JSON结构体的tag字段了。
ASCII 字符集
为美国人而设计的字符集,包含了英文字母和一些其他字符,用一个字节代表一个字符,第一个数一定为零,其余七位总共有一百二十八个选择
GBK字符集
中国人加入战场,用两个字节代表一个字符,同时还兼容ASCII字符集,因为它第一个数字是一就代表了GBK字符集,如果第一个字符是0,就代表是ASCII码,也好分辨
Unicode字符集
囊括了世界上所有文书体系的全部字符
UTF-32的编码方式:用4个字节表示一个字符(不合适),占内存
UTF-8的编码方式:采取可变长变化反感,共分为四个长度区,1,2,3,4字节
英文,数字字符占一个字节,汉字字符占用三个字节
一个文字字符符号编码的首字节的高位知名了后面还有多少 ...
Go圣经-类型转换
Go语言中的类型转换有四种
显示转换:强制转换
隐式转换:数值的初始化赋值传参时会完成,或者接口结构体的使用中
类型断言:接口的类型断言,必须时接口
Unsafe.pointer:–
显示转换123//最简单的var a int //设置了a的类型为int 哈哈哈
12345// 同类型的转换 数字类型之间的转换,切片和字符串的转换是允许的var a int64var b int32fmt.Println("Type(a) = %T, Type(b) = %T \n",a,int64(b))
123456// 不同类型的转换 int ->stringvar a int64var b stringb = strconv.Itoa(a)fmt.Println("a= %d , b= %c \n",a,int64(b))//不同类型的转换需要使用strconv包,具体使用看官方文档
隐式转换
传统初始化赋值编译器就会自动实现转换
a := 1 a自动被认为是 int
在Go中,如果一个结构体满足 ...
Go圣经-程序设计
程序设计
名称驼峰式 ,其他与C差不多
声明
var
const
type
func
变量
常量
类型
函数
变量var name type = expression
name := expression
var name type
一般用 :=,如果不赋值就用第三个,如果未初始化变量,Go会自动的对应于相应类型的零值,对于复合类型的变量,零值就是所有元素或成员的零值,但是全局变量的时候不能使用短变量,必须带上var
var a ,b ,c int // int int int
var a ,b ,c = bool , int ,string // bool ,int ,string
a,b := 0 , 0.0
指针*type 可以间接访问
有意思的一个包
123456789101112131415161718192021222324252627package mainimport ( "flag" "fmt" " ...
Mysql进阶篇-索引
概述
index , 是帮助Mysql 高效获取数据 的 数据结构(有序)
1无索引的时候,查找数据就是最麻烦的全表扫面,从上到下扫一遍。 有索引的时候,很快,怎么这么快,看下面你就会知道。。。。
优势
劣势
提高数据检索的效率,降低数据库的IO成本
索引列是要占空间的(可以忽略,磁盘很便宜)
通过索引列进行数据排序,降低了数据排序的成本,降低CPU的消耗
索引提高了查询速度,但是降低了更新表的速度,Insert,update,delete时会低效率(增删改比例小,也可以忽略)
**io成本就是数据从磁盘加载到内存时,需要花费的时间成本** ,不理解没关系,反正我现在也不知道,看完这篇md,你将会明白为什么能降低io成本,这个才是最重要的
数据结 ...
随笔
日常吐槽地