自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 Golang:并发

进程定义:进程 是并发执行的程序中分配和管理资源的基本单位。线程定义:线程是进程的执行单元,是进行调度的实体,是比进程更小的独立运行单位。

2023-04-23 19:27:49 377

原创 Golang:错误处理

【代码】Golang:错误处理。

2023-04-23 19:26:05 87

原创 匿名函数和闭包

如果你想关闭某个使用的资源,在使用的时候随手defer,因为defer有延迟执行机制(函数执行完毕再执行defer压入栈的语句)在函数中,程序员经常需要创建资源,为了在函数执行完毕后,及时的释放资源,go的设计者提供了defer关键字。闭包本质上依旧是一个匿名函数,只是这个函数引入外界的变量/参数。闭包中使用的变量/参数会一直保存在内存中,比较占用内存。匿名函数中引用的变量会一直保存在内存中,可以一直使用。匿名函数+引用的变量/参数 = 闭包。

2023-04-23 19:24:47 85

原创 Golang:结构体

在Go语言中有一些基本的数据类型,如string、整型、浮点型、布尔等数据类型,Go语言中可以使用type关键字来定义自定义类型。自定义类型是定义了一个全新的类型。我们可以基于内置的基本类型定义,也可以通过struct定义。通过Type关键字的定义,MyInt就是一种新的类型,它具有int的特性。类型定义和类型别名结构体将多个不同类型命名字段序列打包成一个复合类型字段名必须唯一,可用”_“补位,支持使用自身指针类型成员,字段名,排列顺序属类型组成部分。除对齐处理外,编译器不会优化、调整内存布局。

2023-04-23 19:20:45 67

原创 Map注意点

程序运行时会对map并发操作进行检测,如果某个任务正在进行对map的写操作,那么其他任务就不能对该map执行并发操作(读,写,删除),否则会导致程序崩溃。访问不存在的键值,默认返回零值,不会引发错误,但推荐使用ok-idiom模式,毕竟通过零值无法判断键值是否存在,或许存储的value本就是零。因内存访问安全和哈希算法等缘故,字典被设计成“not addressable”,故不能直接修改“value”成员(结构或数组)3、key是不可以重复的,如果遇到重复,后一个value会替换前一个value。

2023-04-23 19:19:12 65

原创 切片注意点及其底层原理

0

2023-04-23 19:18:20 58

原创 字符串易漏点

字符串是不可变字节(byte)序列,其本身是一个复合结构头部指针指向字节数组内置函数len返回字节数组的长度,cap不接受字符串类型参数。

2023-04-23 19:17:27 32

原创 流程控制特别注意点

所以在处理数据巨大的多次遍历操作时,尽量不要使用range,容易造成堆栈溢出。遍历key为string类型的map并同时获取key和value。switch语句也可用于接口类型匹配,详见后续文章。遍历key为整型递增的map。遍历array和slice。(主要是使用场景不同)

2023-04-23 19:16:23 49

原创 Golang:指针

中的函数传参都是值拷贝,当我们想要修改某个变量的时候,我们可以创建一个指向该变量地址的指针变量。并非所有对象都能进行取地址操作,但变量总是能正确返回,。指针运算符为左值时,我们可更新目标对象状态,而为右值时则是为了获取目标状态。内存地址是内存中每个字节单元的唯一编号,而指针则是一个实体。指针类型支持相等运算符,但不能做加减法运算和类型转换,如果两个指针指向同一地址,或都为nil,那么它们相等。2·ptr:用于接收地址的变量,ptr的类型就为*T,称做T的指针类型。1·v:代表被取地址的变量,类型为T。

2023-04-23 19:14:53 172

原创 new和make的区别和联系

当然,new函数也可为引用类型分配内存,但这是不完整创建,以map为例,它仅分配了字典类型本身(实际上就是一个指针包装)所需内存,并没有分配键值存储内存,也没有初始化散列桶等内部属性,因此它无法正常工作。引用类型必须使用make函数创建,编译器会将make转化为目标类型专用的创建函数(或指令),以确保完成全部内存分配和相关属性初始化。内置函数new按指定类型长度分配零值内存,返回指针,并不关心类型内部构造和初始化方式。3.而new用于类型的内存分配,并且内存对应的值为类型零值,返回的是指向类型的指针。

2023-04-23 19:13:09 183

原创 异或运算的算法应用

如果有两个出现奇数次的数时也可使用这种方法,同样所有数据进行^运算,那么最终的结果绝对就是这两个出现奇数次的数进行的^运算,其中的1都是两个数直接二进制码不同之处,那么根据这个区别,去除这个结果的左右边一个1,那么这个位置上的1在这两个奇数次数中只用一个满足,那么就让所有数和这个最右边的1进行&运算,如果结果不为0,说明该数字这个位置上有1,然后将所有满足条件的数进行^运算即可,偶数次数直接^运算为零,剩下来的就是其中一个奇数,具体看代码。找出一个数组中出现奇数次的那个数,前提是其他数都是出现偶数次。

2023-03-19 21:00:40 48

原创 二分查找。

last在其右边,不需要改变,只用改变first即可,first= middle+1。此例中num要大于middle,则继续二分,middle右边的数即可。在有序数组中寻找num,我们采用二分查找的方法,更加便捷。假如一个有序数组 1,2,3,4,5,6,7,8,9。如果比middle大,则num一点在其右边,反之亦然。中间坐标middle=(first+last)/2。然后判断坐标为middle的数(5)和num的大小。寻找数组中>=num最左的位置同样的道理。寻找数组中

2023-03-19 17:24:39 33

原创 前缀和数组

当需要求数组中某连续几项和时可用这个方法,通过先构建前n项和组成新切片,然后通过相减操作即可实现指定连续几项和。时间复杂度为O(1)

2023-03-19 17:03:48 31

原创 算法:排序

先以两个为一组,依次增加,一次加一个数进来,每次保证正序。一个一个比较,将最小或最大的数据依次归位。在比较的同时进行交换移动(冒泡)时间复杂度都为O(N^2)插入排序常数时间最好。

2023-03-17 19:57:31 31

原创 算法复杂度

时间复杂度是算法流程的常数操作总量与样本数量之间的表达式关系,该表达式只看最高阶的部分最好、平均、最差三种时间复杂度评价方式。但除此之外,你的流程如果还需要开辟空间才能让你的流程继续下去。你要实现一个算法流程,在实现算法流程的过程中,你需要开辟一些空间来支持你的算法流程。你还要去在具体的运行时间上拼优劣,就进入到拼常数时间的阶段,简称拼常数项。:如果一个操作的执行时间不以具体样本量为转移,每次时间都是固定的时间。我们会发现,时间复杂度这个指标,是忽略低阶项和所有常数系数的。时间复杂度只是一个很宏观的指标。

2023-03-17 19:51:43 34

原创 Golang:基本类型

标准库math定义了各数字类型的取值范围math.MinInt8等...标准库strconv可在不同进制(字符串)间转化查看字节数:unsafe.Sizeof(num)查看类型:%Tgolang程序中整数变量在使用时,遵守保小不保大(存储空间)浮点类型容易造成精度损失底层存储:符号位+指数位+尾数位(尾数位数据比较模糊)3.14->314E-2(科学计数法)float32、float64可以表示正负golang中浮点数类型默认为float64。

2023-03-14 21:40:37 220 1

原创 Golang:常用命令

go doc命令可以打印附于Go语言程序实体上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。go get可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。go fix会把指定代码包的所有Go语言源码文件中的旧版本代码修正为新版本的代码。go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。go install用于编译并安装指定的代码包及它们的依赖包。go list命令的作用是列出指定的代码包的信息。

2023-03-14 21:19:46 190

原创 数据结构(字符串)

字符串是由若干字符组成的序列。由于字符串在编程时使用的频率非常高,为了优化,很多语言都对字符串做出了特殊的规定

2022-12-17 15:55:55 90

原创 数据结构(数组)

数组可以说是一种最简单的数据,它占据一块连续的内存并按照顺序存储数据。创建数组时,我们需要首先指定数组的容量大小,然后根据大小分配内存。因此数组的空间效率不是很好,经常会有空闲的区域没有得到充分的利用。

2022-12-14 20:19:12 73

原创 Golang:iota(枚举)

Go并没有明确意义上的enum(枚举)定义,不过可借助iota标识符实现一组自增常量值来实现枚举类型自增作用范围为常量组,可在多常量定义中使用多个iota,它们各自单独计数,只许确保组中每行常量的列数量相同即可如果需要中断iota自增,则需要显示恢复,且后值会与上一行常量右值表达式相同自增默认数据类型是int,可以显示转换

2022-12-04 22:25:46 478

原创 Golang:变量和常量

golang变量和常量学习笔记

2022-12-03 21:40:44 274 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除