Go
go日常工作学习与实战内容汇总
云梦优选
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
K8s Deployment 实践:实现蓝绿发布策略
蓝绿发布策略的核心思想是在生产环境中维护两个完全独立的版本环境:蓝环境和绿环境。在正常情况下,所有用户流量都被路由到蓝环境。当需要发布新版本时,先在绿环境中部署新版本,并进行必要的测试。一旦确认新版本稳定无误,就迅速切换流量,将所有用户请求路由到绿环境,同时蓝环境则作为备份或用于后续版本的开发测试。Kubernetes中的Deployment是一种声明式应用管理工具,用于定义和管理Pod的副本集。通过Deployment,可以轻松实现应用的滚动更新、回滚和扩展。原创 2025-02-06 23:05:47 · 813 阅读 · 0 评论 -
基于fabric2.5.4 区块链食品溯源项目实战
基于Fabric 2.5.4的区块链食品溯源项目是一个具有实际应用价值的项目。通过利用区块链技术的不可篡改性、去中心化和可追溯性等特点,项目为食品溯源提供了高效、安全的解决方案。同时,项目还具备良好的可扩展性和可定制性,可以根据实际需求进行功能拓展和优化。请注意,虽然上述内容是基于Fabric 2.5.4的版本进行描述的,但Fabric 2X系列的其他版本(如2.2)在核心功能和架构上通常具有相似性。因此,在实际项目中,可以根据具体需求和资源情况选择合适的Fabric版本进行开发。原创 2025-02-02 20:17:35 · 493 阅读 · 0 评论 -
云原生后端架构全面解析与实践指南
方案:将电商系统拆分为订单、库存、支付等多个微服务,使用 Redis 分布式锁解决超卖问题,利用 Istio 进行流量镜像压测验证,确保秒杀活动的稳定性。工具:使用 AWS Lambda + Step Functions 构建 Serverless 函数计算架构,按需付费,降低运营成本。通过持续优化技术选型、完善治理体系、拥抱前沿趋势,企业可逐步构建出。,其核心在于利用云计算的弹性、分布式和按需付费特性,构建具备。的云原生架构,在数字化转型中占据先机。,推动开发、运维、安全的深度融合。原创 2025-02-02 07:40:52 · 1327 阅读 · 0 评论 -
使用WebSocket、MySQL、Go语言的Gin框架和GORM库来实现一个用户实时统计大屏概览
通过上述步骤,即可构建一个基于 WebSocket 的实时用户统计大屏系统。// WebSocket 连接。,实时数据将每5秒更新。原创 2025-02-01 09:37:33 · 1599 阅读 · 0 评论 -
基于区块链Fabric 2.5的权益链项目在应用场景方面的探索
综上所述,权益链项目在应用场景方面有着广泛的探索空间,可以应用于数字金融、政务服务、企业权益管理、知识产权保护以及社会公益等多个领域。随着技术的不断发展和应用场景的不断拓展,权益链项目有望为经济社会的发展贡献更多力量。原创 2025-01-27 07:58:57 · 506 阅读 · 0 评论 -
10种Golang演示设计模式详细介绍
代理模式是一种结构型设计模式,它为另一个对象提供一个代替或占位符,以控制对它的访问。代理可以在不改变对象的代码前提下,通过引入代理对象来间接访问原始对象,从而在不直接暴露原始对象的情况下,提供额外的功能操作。观察者模式是一种行为设计模式,它定义了对象间的一种一对多的依赖关系,使得当一个对象改变状态时,所有依赖于它的对象都会得到通知并自动更新。单例模式是一种创建型设计模式,它限制了实例化类的对象个数,确保在任何情况下,一个类只有一个实例,并且提供一个全局访问点。策略模式让算法独立于使用它的客户端。原创 2024-12-04 15:25:49 · 1164 阅读 · 0 评论 -
golang面试-day105
参考答案及解析:D。加锁后复制变量,会将锁的状态也复制,所以 mu1 其实是已经加锁状态,再加锁会死锁。参考答案及解析:B。能正确输出,不过主协程会阻塞 f() 函数的执行。原创 2024-08-18 09:20:55 · 402 阅读 · 0 评论 -
golang面试-day104
参考答案及解析:D。WaitGroup 在调用 Wait() 之后不能再调用 Add() 方法的。参考答案及解析:ABC。原创 2024-08-17 20:43:19 · 416 阅读 · 0 评论 -
golang面试-day103
参考答案及解析:输出 0 40 50。知识点:defer 语句与返回值。函数的 return value 不是原子操作,而是在编译器中分解为两部分:返回值赋值 和 return。参考答案及解析:D。当写锁阻塞时,新的读锁是无法申请的(有效防止写锁饥饿),导致死锁。原创 2024-08-16 17:51:04 · 544 阅读 · 0 评论 -
golang面试-day102
参考答案及解析:第一个是声明无缓存通道,第二个是声明缓存为 1 的通道。无缓存通道需要一直有接收者接收数据,写操作才会继续,不然会一直阻塞;而缓冲为 1 则即使没有接收者也不会阻塞,因为缓冲大小是 1 ,只有当放第二个值的时候,第一个还没被人拿走,这时候才会阻塞。注意这两者还是有区别的。参考答案即解析:D。使用 Lock() 加锁后,不能再继续对其加锁,直到利用 Unlock() 解锁后才能再加锁。原创 2024-08-16 17:50:33 · 507 阅读 · 0 评论 -
golang面试-day101
关于循环语句,下面说法正确的有?参考答案及解析:CD。原创 2024-08-16 17:49:53 · 340 阅读 · 0 评论 -
golang面试-day100
参考答案即解析:在执行 Get() 方法时可能报错。虽然可以使用 sync.Mutex 做写锁,但是 map 是并发读写不安全的。map 属于引用类型,并发读写时多个协程是通过指针访问同一个地址,即访问共享变量,此时同时读写资源存在竞争关系,会报错 “fatal error: concurrent map read and map write”。参考答案即解析:按字母无序输出。知识点:遍历 map 是无序的。原创 2024-08-15 12:23:30 · 278 阅读 · 0 评论 -
golang面试-day99
参考答案即解析:编译通过。true 是预定义标识符可以用作变量名,但是不建议这么做。参考答案即解析:100。知识点:变量作用域和defer 返回值。原创 2024-08-14 10:02:28 · 720 阅读 · 0 评论 -
golang面试-day98
参考答案及解析:1。知识点:变量的作用域。注意 for 语句的变量 a 是重新声明,它的作用范围只在 for 语句范围内。参考答案即解析:编译错误。知识点:变量的作用域。编译错误信息:ret is shadowed during return。原创 2024-08-14 10:01:49 · 307 阅读 · 0 评论 -
golang 面试-day97
参考答案及解析:输出 0。使用值类型接收者定义的方法,调用的时候,使用的是值的副本,对副本操作不会影响的原来的值。如果想要在调用函数中修改原值,可以使用指针接收者定义的方法。参考答案及解析:A。知识点:map 的使用。可以查看《Go Map》原创 2024-08-14 10:01:07 · 502 阅读 · 0 评论 -
golang面试-day96
参考答案及解析:get() 函数返回的切片与原切片公用底层数组,如果在调用函数里面(这里是 main() 函数)修改返回的切片,将会影响到原切片。参考答案及解析:输出 [{1 2} {3 4}]。知识点:for range 循环。range 循环的时候,获取到的元素值是副本,就比如这里的 p。原创 2024-08-13 09:15:09 · 298 阅读 · 0 评论 -
golang面试-day95
参考答案及解析:false true true。这道题唯一有疑问的地方就在第一个比较,Go 语言里没有引用变量,每个变量都占用一个惟一的内存位置,所以第一个比较输出 false。这个知识点在《Go 语言没有引用传递》有介绍。参考答案及解析:1、2随机输出。原创 2024-08-13 09:14:29 · 178 阅读 · 0 评论 -
golang面试-day94
参考答案及解析:C() 函数不能通过编译。C() 函数的 default 属于关键字。string 和 len 是预定义标识符,可以在局部使用。nil 也可以当做变量使用,不过不建议写这样的代码,可读性不好,小心被接手你代码的人胖揍。参考答案及解析:a。Go 语言里面 ^ 表示按位异或,而不是求幂。原创 2024-08-13 09:13:52 · 337 阅读 · 0 评论 -
golang面试-day93
关于 main() 函数,下面说法正确的是?参考答案及解析:ABCD。原创 2024-08-13 09:13:14 · 245 阅读 · 0 评论 -
golang面试-day92
参考答案及解析:编译失败。init() 函数不能被其他函数调用,包括 main() 函数。参考答案即解析:利用 copy() 函数的功能:切片复制,并且返回两者长度的较小值。原创 2024-08-13 09:12:42 · 427 阅读 · 0 评论 -
golang面试-day91
参考答案及解析:Unnamed Type 不能作为方法的接收者。参考答案及解析:第二段代码能通过编译。除 init() 函数之外,一个包内不允许有其他同名函数。原创 2024-08-11 09:43:09 · 575 阅读 · 0 评论 -
golang面试-day90
我们将这两道题目放到一块做一个解析,第一题不能通过编译,第二题可以通过编译。我们知道不同类型的值是不能相互赋值的,即使底层类型一样,所以第一题编译不通过;对于底层类型相同的变量可以相互赋值还有一个重要的条件,即至少有一个不是有名类型(named type)。Unnamed Type 是基于已有的 Named Type 组合一起的类型,例如:struct{}、[]string、interface{}、map[string]bool 等。原创 2024-08-11 09:42:34 · 505 阅读 · 0 评论 -
golang 面试-day89
参考答案及解析:能编译通过,输出 [1 2 3 0 1 2]。for 循环开始的时候,终止条件只会计算一次。参考答案及解析:C。指针变量指向相同的地址。原创 2024-08-11 09:41:46 · 472 阅读 · 0 评论 -
golang 面试-day88
参考答案及解析:false。在 Go 语言里面,^ 作为二元运算符时表示按位异或:对应位,相同为 0,相异为 1。例如,有我们熟悉的组合(3,4,5)、(6、8、10)等。1+6=7,这当然是相等的。你来试试分解下第二段代码的数学表达式。问题来了,下面代码输出什么,请简要说明。参考答案及解析:AD。原创 2024-08-09 08:52:32 · 446 阅读 · 0 评论 -
golang 面试-day87
参考答案及解析:false。在 Go 语言里面,^ 作为二元运算符时表示按位异或:对应位,相同为 0,相异为 1。例如,有我们熟悉的组合(3,4,5)、(6、8、10)等。1+6=7,这当然是相等的。你来试试分解下第二段代码的数学表达式。问题来了,下面代码输出什么,请简要说明。参考答案及解析:AD。原创 2024-08-09 08:51:45 · 273 阅读 · 0 评论 -
golang面试-day86
参考答案及解析:118。Go 语言里面,八进制数以 0 开头,十六进制数以 0x 开头,所以 Decade 表示十进制的 8。参考答案及解析:43200 hours and 600 seconds。知识点:运算符优先级。和 % 的优先级相同,从左向右结合。原创 2024-08-09 08:50:36 · 209 阅读 · 0 评论 -
golang面试-day85
参考答案及解析:输出空字符。这是一个大多数人遇到的坑,TrimRight() 会将第二个参数字符串里面所有的字符拿出来处理,只要与其中任何一个字符相等,便会将其删除。想正确地截取字符串,可以参考 TrimSuffix() 函数。参考答案及解析:输出 []。copy(dst, src) 函数返回 len(dst)、len(src) 之间的最小值。如果想要将 src 完全拷贝至 dst,必须给 dst 分配足够的内存空间。或者直接使用 append()原创 2024-08-08 20:48:59 · 204 阅读 · 0 评论 -
golang面试-day84
参考答案及解析:B。由 panic 引发异常以后,程序停止执行,然后调用延迟函数(defer),就像程序正常退出一样。原创 2024-08-08 20:48:20 · 175 阅读 · 0 评论 -
golang面试-day83
参考答案及解析:A。一个文件夹下只能有一个包,可以多个.go文件,但这些文件必须属于同一个包。结构体类型 data 没有实现接口 printer。参考答案及解析:编译报错。原创 2024-08-08 20:47:02 · 203 阅读 · 0 评论 -
golang面试-day82
参考答案及解析:0 1 1 2。知识点:iota 的使用。这道题易错点在 bzero、bone 的值,在一个常量声明代码块中,如果 iota 没出现在第一行,则常量的初始值就是非 0 值。参考答案及解析:4。当 i 的值为 0、128 是会发生相等情况,注意 byte 是 uint8 的别名。原创 2024-08-08 20:46:28 · 414 阅读 · 0 评论 -
golang面试-day81
参考答案及解析:A。Go语言的内存回收机制规定,只要有一个指针指向引用一个变量,那么这个变量就不会被释放(内存逃逸),因此在 Go 语言中返回函数参数或临时变量是安全的。参考答案即解析:运行时错误。原创 2024-08-08 20:45:50 · 348 阅读 · 0 评论 -
golang面试-day80
参考答案及解析:AD。全局变量要定义在函数之外,而在函数之外定义的变量只能用 var 定义。短变量声明 := 只能用于函数之内。原创 2024-08-08 20:45:09 · 241 阅读 · 0 评论 -
golang面试-day78
参考答案及解析:可以编译通过,输出:true。知识点:Go 代码断行规则。参考答案及解析:AC。原创 2024-08-08 20:44:23 · 351 阅读 · 0 评论 -
golang面试-day77
参考答案即解析:ABD。参考答案及解析:A。可变函数是指针传递。原创 2024-08-08 20:43:28 · 200 阅读 · 0 评论 -
golang面试-day76
知识点:类型断言,结构体嵌套。结构体 S2 嵌套了结构体 S1,S2 自己没有实现 g() ,调用的是 S1 的 g()。参考答案及解析:协程里面,使用 wg.Add(1) 但是没有 wg.Done(),导致 panic()。原创 2024-08-08 07:47:37 · 258 阅读 · 0 评论 -
golang 面试-day75
参考答案及解析:recover:1。知识点:panic、recover()。当程序 panic 时就不会往下执行,可以使用 recover() 捕获 panic 的内容。参考答案及解析:defer 语句应该放在 if() 语句后面,先判断 err,再 defer 关闭文件句柄。原创 2024-08-08 07:46:48 · 162 阅读 · 0 评论 -
golang 面试-day74
参考答案及解析:2、3正确。知识点:简短变量声明。参考答案及解析:for {} 独占 CPU 资源导致其他 Goroutine 饿死。引自《Go语言高级编程》原创 2024-08-08 07:46:02 · 163 阅读 · 0 评论 -
golang 面试-day73
参考答案及解析:{5}。这道题容易忽视的点是,String() 是指针方法,而不是值方法,所以使用 Println() 输出时不会调用到 String() 方法。参考答案及解析:312。对比昨天的第二题,本题的 s.Add(1).Add(2) 作为一个整体包在一个匿名函数中,会延迟执行。原创 2024-08-07 20:16:19 · 181 阅读 · 0 评论 -
golang面试-day72
所以可以循环调用方法 Add();2.defer 函数的参数(包括接收者)是在 defer 语句出现的位置做计算的,而不是在函数执行的时候计算的,所以 s.Add(1) 会先于 s.Add(3) 执行。,对于有符号的整数来说,是按照补码进行取反操作的(快速计算方法:对数 a 取反,结果为 -(a+1) ),对于无符号整数来说就是按位取反。参考答案及解析:132。这一题有两点需要注意:1.Add() 方法的返回值依然是指针类型。,它返回一个每个 bit 位都取反的数。从参考答案及解析:错。原创 2024-08-07 20:15:36 · 204 阅读 · 0 评论 -
golang面试-day70
参考答案及解析:BD。知识点:单引号、双引号和字符串连接。在 Go 语言中,双引号用来表示字符串 string,其实质是一个 byte 类型的数组,单引号表示 rune 类型。参考答案及解析:43。原创 2024-08-07 20:15:00 · 464 阅读 · 0 评论
分享