
go语言
dx1313113
这个作者很懒,什么都没留下…
展开
-
Grom 如何解决 SQL 注入问题
SQL 注入是一种常见的数据库攻击手段, SQL 注入漏洞也是网络世界中最普遍的漏洞之一。SQL 注入就是恶意用户通过在表单中填写包含 SQL 关键字的数据来使数据库执行非常规代码的过程。这个问题的来源就是, SQL 数据库的操作是通过 SQL 命令执行的,无论是执行代码还是数据项都必须卸载 SQL 语句中,这就导致如果我们在数据项中加入了某些 SQL 语句关键字(比如 SELECT,DROP等等),这些关键字就很可能在数据库写入或读取数据时得到执行。原创 2023-09-22 10:18:19 · 971 阅读 · 0 评论 -
go语言判断切片是否相同?
【代码】go语言判断切片是否相同?原创 2023-09-21 14:17:18 · 221 阅读 · 0 评论 -
go语言 rune 类型
ASCII 码只需要 7 bit 就能完整地表示,但只能表示英文字母在内的 128 个字符,为了表示世界上大部分的文字系统,发明了 Unicode ,它是 ASCII 的超集,包含世界上书写系统中存在的所有字符,并且为每个代码分配一个标准编号(称为 Unicode CodePoint),。go 语言中 ,。运行结果为:但是,。原创 2023-09-21 13:50:29 · 506 阅读 · 0 评论 -
Go中 new() 与 make() 的区别
即类型为 *T 的值。话句话说就是,返回一个指针,该指针指向新分配的、类型为 T 的零值,如数组,结构体等。new(T) 和 make(T,args) 是Go语言内建函数,用来分配内存,但适用的类型不同。make()只适用于 slice 、map 和 channel。,这个值并不是 T类型的零值,也不是指针 *T ,会为 T 类型的新值分配已置零的内存空间,并。原创 2023-09-19 10:34:28 · 121 阅读 · 0 评论 -
go内存管理机制
golang内存管理基本是参考tcmalloc来进行的。。:页,一块 8 K大小的内存空间。Go向操作系统申请和释放内存都是以页为单位。:内存块,一个或多个page组成一个span。如果把page比喻成工人,span可以看成是小队,工人被分成若干个队伍,不同的队伍干不同的活。:空间规格,每个span都带有一个sizeclass,标记着该span中的 page 应该如何使用。使用上面的比喻,就是sizeclass标志着 span 是一个什么样的队伍。原创 2023-08-13 20:42:06 · 598 阅读 · 0 评论 -
GO语言的垃圾回收机制
一开始的做法是将垃圾清理结束时才停止STW,后来优化了方案将清理垃圾放到了STW之后,与程序运行同时进行,这样做减少了STW的时长。但是STW会暂停用户逻辑对程序的性能影响是非常大的,这种粒度的STW对于性能较高的程序还是无法接受,因此Go1.5采用了三色标记法优化了STW。基于插入写屏障和删除写屏障在结束时需要STW来重新扫描栈,所带来的性能瓶颈,Go在1.8引入了混合写屏障的方式实现了弱三色不变式的设计方式,混合写屏障分下面四步。清除阶段:遍历堆中的对象,回收未标记的对象,并加入空闲链表。原创 2023-08-02 20:22:11 · 562 阅读 · 0 评论 -
go Channel
通道是可以被垃圾回收机制回收的,它和关闭文件是不一样的,在结束操作之后关闭文件是必须要做的,但关闭通道不是必须的。有的时候我们会将通道作为参数在多个任务函数间传递,很多时候我们在不同的任务函数中使用通道都会对其进行限制,比如限制通道在函数中只能发送或只能接收。例子:定义一个缓冲大小为 5 的通道,从结果中可以看出,当缓冲满的时候,发送操作会被阻塞,要想再写入必须要取出缓冲的数据。单纯地将函数并发执行是没有意义的。只要通道的容量大于零,那么该通道就是有缓冲的通道,通道的容量表示通道中能存放元素的数量。原创 2023-08-01 19:24:16 · 588 阅读 · 0 评论 -
go interface和nil可以比较吗?
两个 nil 并不一定相等。interface 在运行时绑定值,只有值为 nil 接口值才为 nil ,但是与指针的 nil 不相等。Go语言中,interface的内部实现包含了 2 个字段,类型 T 和 值V,interface 可以使用。对应的类型是 *Stu,值是Stu结构体的地址,两个地址不同,因此结果为 false。对应的类型是 Stu,值是Stu结构体,且各字段相等,因此结果为True.原创 2023-08-01 10:23:24 · 462 阅读 · 0 评论 -
go 如何知道一个对象是分配在栈上还是堆上?
golang 变量存储在堆上还是栈上由内部实现决定而和具体的语法没有关系。非指针小对象通常保存在栈上,大对象保存在堆上。指针必然发生逃逸在某个函数中new或字面量创建出的变量,将其指针作为函数返回值,则该变量一定发生逃逸(构造函数返回的指针变量一定逃逸);被已经逃逸的变量引用的指针,一定发生逃逸;被指针类型的slice、map和chan引用的指针,一定发生逃逸;一些必然不会逃逸指针被未发生逃逸的变量引用;仅仅在函数内对变量做取址操作,而未将指针传出;原创 2023-07-31 21:14:54 · 1030 阅读 · 0 评论 -
go语言中的init() 函数是什么时候执行的?
同一个包,甚至是同一个源文件可以有多个 init() 函数。init() 函数没有入参和返回值,不能被其他函数调用,同一个包内多个 init() 函数的执行顺序不做保证。init()函数是go初始化的一部分,由runtime初始化每个导入的包,初始化不是按照从上到下的导入顺序,而是按照解析的依赖关系,执行顺序: import - > const -> var ->在main函数之前执行。(常量优先于变量),然。原创 2023-07-28 14:34:59 · 362 阅读 · 0 评论 -
go里面的int和int32是同一个概念吗?
go语言中的int大小适合操作系统的位数相关的,如果是32位操作系统 , int类型大小就是4字节。如果是64位操作系统,int类型的大小就是 8 个字节。int8占一个字节,int16占两个字节,int32占四个字节,int64占8个字节。除此之外,uint类型也与操作系统有关。原创 2023-07-28 14:25:53 · 349 阅读 · 0 评论 -
go语言中defer执行顺序
上面的例子中,test返回值并没有修改,这是由于Go的返回机制决定的,执行Return语句后,Go会创建一个临时变量保存返回值。如果是有名返回(也就是指明返回值。这个例子中,返回值被修改了。对于有名返回值的函数,执行return语句时,并不会再创建临时变量保存,因此defer语句修改了 i,即对返回值产生了影响。defer在 return 之后执行,但在函数推出之前,defer可以修改返回值。原创 2023-07-27 20:36:06 · 916 阅读 · 0 评论 -
go 如何判断一个map中是否包含某个key?
【代码】go 如何判断一个map中是否包含某个key?原创 2023-07-27 20:17:38 · 281 阅读 · 0 评论 -
go语言如何高效地拼接字符串
拼接字符串的方式有: + 、fmt.Sprintf、strings.Builder、bytes.Buffer、strings.Join使用 + 操作符进行拼接时,会对字符串进行遍历,计算并开辟一个新的空间来存储原来的两个字符串。 由于采用了接口参数,必须要用反射获取值,因此有性能损耗用WriterString()进行拼接,内部实现是指针+切片,同时String()返回拼接后的字符串,它是直接把[]byte转换为string,从而避免拷贝。bytes.Buffer 是一个一个缓冲byte类型的缓冲器,这个缓冲原创 2023-07-27 18:30:07 · 478 阅读 · 0 评论 -
Beego表单数据验证
beego,表单验证是用于数据验证和错误收集的模块。原创 2023-07-14 09:58:15 · 485 阅读 · 0 评论 -
beego项目 this.Ctx.Input.RequestBody为空
【代码】beego项目 this.Ctx.Input.RequestBody为空。原创 2023-07-16 11:17:47 · 542 阅读 · 0 评论 -
beego验证码(配置到redis存储)
beego验证码,可以看到验证后redis中已经自动将其删除。可以看到结果会保存到redis中。用于存储redis连接。原创 2023-07-16 19:49:18 · 553 阅读 · 0 评论 -
Go怎么写测试用例
Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试,testing框架和其他语言中的测试框架类似,你可以基于这个框架写针对相应函数的测试用例,也可以基于该框架写相应的压力测试用例。另外建议安装。原创 2023-07-13 11:18:23 · 732 阅读 · 0 评论 -
Go 加密解密数据(对称)
(参数key必须是16、24或者32位的[]byte,分别对应AES-128, AES-192或AES-256算法),返回了一个。如果Web应用足够简单,数据的安全性没有那么严格的要求,那么可以采用一种比较简单的加解密方法是。因为这两种算法使用方法类似,所以在此,我们仅用aes包为例来讲解它们的使用,请看下面的例子。,这种方式实现起来比较简单,Go语言的。原创 2023-07-12 20:52:56 · 587 阅读 · 0 评论 -
GO 存储密码
目前用的最多的密码存储方案是将明文密码做单向哈希后存储,单向哈希算法有一个特征:无法通过哈希后的摘要(digest)恢复原始数据,这也是“单向”二字的来源。结合上面两个特点,考虑到多数人所使用的密码为常见的组合,攻击者可以将所有密码的常见组合进行单向哈希,得到一个摘要组合, 然后与数据库中的摘要进行比对即可获得对应的密码。怎么解决这个问题呢?只要时间与资源允许,没有破译不了的密码,所以方案是:故意增加密码计算所需耗费的资源和时间,使得任何人都不可获得足够的资源建立所需的。目前Go语言里面支持的库。原创 2023-07-12 20:43:11 · 588 阅读 · 0 评论 -
Go实现WebSocket
可以看到客户端JS,很容易的就通过WebSocket函数建立了一个与服务器的连接sock,当握手成功后,会触发WebSocket对象的onopen事件,告诉客户端连接已经成功建立。客户端一共绑定了四个事件。当客户端将用户输入的信息Send之后,服务器端通过Receive接收到了相应信息,然后通过Send发送了应答信息。原创 2023-07-12 19:28:48 · 1832 阅读 · 0 评论 -
Socket编程(go语言)
Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用:Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。流式Socket(SOCK_STREAM)和。原创 2023-07-12 19:11:43 · 723 阅读 · 0 评论 -
Go中常用的表单验证(正则表达式)
对于性能要求很高的用户来说,这是一个老生常谈的问题了,他们认为应该尽量避免使用正则表达式,因为使用正则表达式的速度会比较慢。但是在目前机器性能那么强劲的情况下,对于这种简单的正则表达式效率和类型转换函数是没有什么差别的。如果你对正则表达式很熟悉,而且你在其它语言中也在使用它,那么在Go里面使用正则表达式将是一个便利的方式。Go实现的正则是,所有的字符都是UTF-8编码的。原创 2023-07-10 20:53:10 · 680 阅读 · 0 评论 -
go 语言时间处理报错 panic time missing Location in call to ...
在golang 使用“Asia/Shanghai” 时区转换时间格式,本机正常,其他机器报错panic time missing Location in call to ...这是由于缺少IANA TimeZone Database,一般在linux系统都自带了,但是在window系统中可能会缺失。解决方法:time.FixZone()原创 2022-11-23 15:36:15 · 1190 阅读 · 0 评论 -
go语言map字典 and struct结构体 转 bsonM
【代码】go语言map字典 and struct结构体 转 bsonM。原创 2022-10-19 21:53:29 · 833 阅读 · 0 评论 -
go语言分页 gin框架分页
因为分页经常会用到,所以这里推荐将分页封装成一个结构体。go语言分页 gin框架分页原创 2022-10-19 21:48:32 · 1159 阅读 · 0 评论 -
MongoDB Sum 当字段是string字符串类型(go语言)
MongoDB Sum 当字段是string字符串类型原创 2022-07-25 10:54:44 · 1031 阅读 · 0 评论 -
go语言——切片去重、判断元素是否在切片中
go语言——切片去重、判断元素是否在切片中原创 2022-07-04 19:42:36 · 1153 阅读 · 0 评论 -
go语言-文件操作
go语言关于文件的一些操作/创建文件夹/保存删除文件...原创 2022-07-04 11:00:47 · 865 阅读 · 0 评论 -
go语言获取当前时间、时间类型转换
go语言获取当前时间、时间类型转换原创 2022-07-04 10:52:18 · 4229 阅读 · 0 评论 -
go语言文件(multipart.FileHeader)转图像(image)
go语言文件(multipart.FileHeader)转图像(image)原创 2022-07-04 10:47:26 · 1273 阅读 · 0 评论 -
go语言结构体映射(复制)
go语言结构体映射(复制)原创 2022-07-04 10:45:43 · 1067 阅读 · 0 评论 -
go语言获取对外ip地址
go语言获取对外ip地址原创 2022-07-03 14:07:46 · 2827 阅读 · 0 评论 -
go语言读取XLSX文件内容
go语言读取XLSX文件内容原创 2022-07-03 14:06:17 · 784 阅读 · 0 评论 -
go语言使用mongodb聚合统计平均高度
使用go语言mongodb聚合统计平均高度原创 2022-07-03 13:57:29 · 207 阅读 · 0 评论 -
go语言Mongodb聚合统计每个(时间)段内的数据
go语言聚合统计每个(时间)段内的数据原创 2022-07-03 13:53:02 · 954 阅读 · 0 评论 -
go语言(使用/不使用GoAdmin框架和配置文件)连接mongoDb
go语言连接mongodb原创 2022-07-03 13:16:12 · 693 阅读 · 2 评论 -
go语言接口并发量测试
go语言接口并发量测试原创 2022-07-03 12:42:10 · 742 阅读 · 0 评论