- 博客(69)
- 资源 (1)
- 收藏
- 关注
原创 tcp、http、rpc的区别
特性TCPHTTPRPC层级传输层应用层应用层连接面向连接基于 TCP(无状态)可以基于多种协议可靠性提供可靠的数据传输依赖于 TCP 的可靠性依赖于底层协议的可靠性用途数据流传输网页和 API 请求远程服务调用状态有状态无状态不固定,取决于实现TCP是一个底层协议,提供可靠的数据传输。HTTP是一个基于 TCP 的应用层协议,专注于超文本数据的传输。RPC是一种调用机制,允许程序远程调用其他程序的函数,通常用于微服务架构中。
2024-11-27 09:11:26
1222
原创 User是一个结构体,users := []User{} 和users := []User区别
【代码】User是一个结构体,users := []User{} 和users := []User区别。
2024-11-10 22:40:41
388
原创 gorm 结构体中 binding 和 msg 结构体标签
是结构体标签(struct tags),主要用于数据验证和错误信息提示。它们通常与 Gin 框架的。配合使用,以及用于处理表单验证。
2024-11-10 15:41:06
348
原创 yii 常用一些调用
array('label'=>'主菜单', 'url'=>array('/admin/left_menu')),array('label'=>'系统主页', 'url'=>array('/site/login')),array('label'=>'会员中心', 'url'=>array('/site/login')),array('label'=>'注销', 'url'=>array('/site/login')),
2024-11-06 23:12:49
670
1
原创 golang的循环引用解决方法
循环引用是指在数据结构中,两个或多个实体相互引用,形成一个闭环。例如,在 Golang 的结构体中,如果结构体 A 包含结构体 B 的实例,而结构体 B 又包含结构体 A 的实例,这种情况就称为循环引用。
2024-10-31 16:13:16
834
原创 golang gin ShouldBind的介绍和使用
在 Go 语言的 Gin 框架中,ShouldBind是用于将请求中的数据绑定到结构体的一个方法。它简化了从请求中提取参数的过程,支持多种数据格式(如 JSON、表单、查询参数等)。以下是ShouldBind的介绍和使用示例。
2024-10-30 17:55:51
944
原创 golang flag介绍和使用
在 Go 语言中,flag包用于解析命令行标志。它提供了一种简单的方法来处理程序的输入参数。以下是对flag包的介绍和使用示例。
2024-10-30 14:23:38
557
原创 golang MarshalJson
通过实现方法,可以为 Go 的自定义类型提供灵活的 JSON 序列化控制。这使得在与 JSON 数据交互时,可以更好地控制数据的结构和格式。
2024-10-29 17:16:18
458
原创 golang switch v := data.(type)
这种类型匹配是 Go 语言提供的一种在运行时进行类型检查的机制。记住:case 后面的类型声明始终是用来匹配。语句中,case 后面的类型是用来匹配。这里的类型匹配是在运行时进行的。的实际类型,而不是匹配。
2024-10-29 16:43:03
388
原创 在 gRPC 中,客户端和服务端的 Protocol Buffers(Protobuf)生成的文件必须保持一致性,以确保通信正常。
客户端和服务端的.proto文件应保持一致,以确保接口和数据结构的兼容性。生成的代码可以在不同的项目中,但是必须基于相同的.proto定义。版本控制和向后兼容性是管理 gRPC 服务和客户端的重要方面。
2024-10-22 10:26:04
395
原创 go怎么处理线程之间的交互
Channels:用于 goroutine 之间的安全通信。WaitGroup:用于等待多个 goroutine 完成。Mutex:用于保护共享数据的访问,防止数据竞争。Select:用于处理多个 channel 的接收和发送。通过以上方法,您可以有效地处理 goroutine 之间的交互和同步。
2024-10-09 13:49:52
490
原创 golang类型断言
类型断言用于从接口提取具体类型的值。使用语法进行安全断言。可以使用switch语句处理多种类型的情况。直接断言可能会导致运行时错误,如果不确定类型,建议使用带ok的形式。通过类型断言,Go 语言提供了一种灵活的方法来处理接口类型和具体类型的转换。
2024-09-25 14:45:52
584
原创 golang reflect
Go 的reflect包提供了强大的功能,可以在运行时处理类型和变量。尽管反射很有用,但应谨慎使用,因为它可能会影响性能,并且代码的可读性可能降低。通常情况下,尽量使用静态类型和接口来保持代码的清晰和高效。
2024-09-25 11:28:39
574
原创 golang 反射的介绍和使用
反射在某些情况下非常有用,例如实现通用的序列化/反序列化库、依赖注入框架或者需要处理未知类型的场景。但是,在大多数日常编程中,应该优先考虑使用 Go 的静态类型系统和接口。Golang 中的反射(reflection)机制及其使用。反射是 Go 语言的一个强大特性,允许程序在运行时检查、操作和修改其own结构和行为。
2024-09-24 17:17:05
629
原创 bytes.split的用法和注意事项
是一个强大而灵活的函数,用于处理字节切片的分割操作。理解其行为,特别是在处理连续分隔符和边界情况时,对于正确使用该函数至关重要。在处理大量数据或性能关键的应用中,应当考虑其内存使用和性能特征。这个函数是 Go 标准库中。包的一个重要组成部分,用于分割字节切片。当然,我很乐意详细介绍。
2024-09-08 18:02:06
345
原创 golang fmt.Printf中 %q
是一个非常有用的格式动词,用于在字符串或字节切片周围加上引号。这对于调试和显示字符串内容时特别有用,因为它会显示出字符串的原始形式,包括转义字符。可以帮助你更清晰地看到字符串在内存中的实际表示,这在处理包含特殊字符的字符串或进行调试时非常有用。函数用于格式化输出,其中。
2024-09-08 15:57:27
1021
原创 []byte(“ “)和[]byte{‘ ‘}有什么区别
两者都可以用于创建包含空格字符的字节切片,选择哪种方式主要取决于个人偏好或代码的上下文。
2024-09-08 15:14:47
232
原创 golang os.Eixt的介绍和使用
os.Exit是一个强大的工具,用于控制 Go 应用程序的退出状态。合理使用可以确保程序在遇到错误时能够及时终止,并通过状态码向调用者传达信息。
2024-09-07 23:53:02
608
原创 golang panic
panic和recover提供了 Go 中处理异常的基本机制。合理使用可以帮助开发者在遇到严重错误时更好地控制程序的行为。如果你有更多问题或需要更深入的内容,请随时询问!
2024-09-07 23:47:10
614
原创 golang套接字
Go 语言的net包使得套接字编程变得简单而高效。通过使用 TCP 或 UDP 套接字,你可以轻松实现网络通信。若有其他问题或需要更深入的内容,请随时问我!
2024-09-06 14:19:32
783
原创 套接字的介绍
套接字是实现网络通信的基础,提供了一种灵活和强大的方式来在不同设备之间传输数据。通过理解套接字的工作原理和用法,开发者可以构建各种网络应用。如果有其他问题,欢迎继续提问!
2024-09-06 14:14:35
520
原创 golang中errors的方法
errors.New:创建新的错误。errors.Is:检查错误是否相等。errors.As:类型断言,检查错误类型。:获取底层错误原因。fmt.Errorf:创建格式化错误,常用%w来包装错误。这些方法使得 Go 的错误处理变得更加灵活和强大。
2024-09-04 16:36:49
685
原创 golang select介绍和使用,select中的case只会执行一个吗?
select用于多通道操作的选择。一次select只会执行一个case。如果有多个case可以执行,会随机选择一个。default子句可以避免select阻塞。
2024-09-04 15:58:14
564
原创 golang context介绍
context是 Go 中用于管理 goroutines 生命周期和信号传递的重要工具。它使得在并发编程中处理请求的取消、超时和传递值变得更加简单和安全。
2024-09-04 15:30:31
1004
原创 strings.NewReader 、reader.Read(buf) 的介绍
和的组合使得我们可以逐步读取一个字符串的内容。Read操作通过内部的指针off来跟踪读取的位置,for循环会根据每次读取的结果来决定何时结束。通过合理设置缓冲区大小,可以控制每次读取的数据量,从而有效地处理字符串内容。
2024-09-03 14:00:55
515
原创 golang中return和defer的执行顺序的一道题
这个例子很好地展示了 Go 中命名返回值和 defer 语句的微妙之处。在使用 defer 和返回值时,理解这些细节非常重要,因为它们可能导致意料之外的行为。在Go语言中,return语句和defer语句的执行顺序是一个很重要的概念。),它会自动返回命名的返回值变量。更重要的是,defer 函数可以修改这个命名返回值。接下来我们看下面两个函数,看起来很相似,但它们的返回值是不同的。理解这些概念对于编写可靠的Go代码非常重要,尤其是在处理资源清理和错误处理时。的值,但这不会影响已经确定的返回值。
2024-09-03 11:05:22
957
原创 golang中channel什么时候会阻塞
通道的阻塞机制是 Go 实现并发的重要特性,它确保了数据的安全传递和同步。在使用通道时,理解何时会阻塞对于编写高效的并发程序至关重要。
2024-08-21 11:51:08
769
原创 golang channel什么情况main会deadlock?主协程是什么?
主协程main函数在 Go 程序中运行在主协程中。它是程序的入口点和主执行流程。main死锁的情况:通常发生在所有 goroutine 都在等待某个 channel 上的操作而无法继续执行时,导致程序无法继续运行,最终 Go 运行时会检测到死锁并报错。避免死锁的策略:确保所有的 channel 操作都有对应的发送和接收方,并且注意在适当的时候关闭 channel,以防止 goroutine 永远阻塞在接收操作上。还可以通过设计良好的并发控制机制(如使用或其他同步原语)来避免死锁。
2024-08-17 12:08:26
809
原创 golang channel什么情况下 main 会提前退出?主协程是什么?
主协程main函数运行在主协程中,它是程序的入口点,main函数退出时,程序结束。main提前退出的情况:如果main函数没有等待其他 goroutine 完成,或者程序中出现死锁,可能会导致main函数提前退出。解决方案:可以使用或 channel 来同步 goroutine,确保main函数在所有工作完成后再退出。
2024-08-17 12:06:40
894
原创 golang的channel阻塞例子分享
因为主 goroutine 和子 goroutine 是并发执行的,主 goroutine 不会被子 goroutine 的阻塞所影响,所以。,但此时通道中已经没有值了,通道也没有关闭,因此这个接收操作会阻塞,等待下一个值被发送到通道中。是一个带缓冲的通道,并且缓冲大小为 1,所以第一次发送值。发送成功后,主 goroutine 会继续执行。这行代码会从通道中接收一个值,成功接收后打印。不会阻塞,它会直接被存入通道。在子 goroutine 中,在主 goroutine 中,
2024-08-16 14:09:21
383
原创 golang的channel什么时候会阻塞?什么时候会恢复?
无缓冲 channel:发送和接收操作会相互阻塞,直到对方准备好。有缓冲 channel:发送操作在缓冲区未满时不会阻塞;接收操作在缓冲区为空时会阻塞。
2024-08-15 18:13:30
512
原创 golang为什么并发执行就不会导致死锁
并发执行:因 goroutines 的并行性,即使一个被阻塞,其他仍能继续执行。有效配对:发送和接收操作的有效配对确保了数据的顺利传递。调度机制:Go 的调度器设计帮助管理和调度 goroutines,避免死锁。
2024-08-15 15:53:47
327
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人