/images/avatar.jpg

Kiosk Studio (2022)

设计模式(Design Pattern)

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

Golang Map怎么并发访问

Map 是每门编程语言的最基础的数据结构,这种数据结构的实现就是 key-value之间的映射关系,每个key都有一个唯一的索引值,通过索引值可以很快的找到对应的值。 Map 也是程序中最常见的数据结构,我们的项目中有大量的数据需要加载到内存中,而且需要高频访问,无疑 map 就是最好的选择,但是众所周知,Map是不支持并发访问的。 如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 func main() { var m = make(map[string]int,10) // 初始化一个map go func() { for { m["abc"] = 1 //设置key } }() go func() { for { _ = m["def"] //访问这个map } }() select {} } 虽然这段代码的不同goroutine 是各自在操作不同的元素,但是运行时检测到同时对 map 对象有并发访问,就会直接 panic。 如何实现一个线程安全的 map 类型 最简单的方式必然是加锁访问这里不再赘述了。

消息队列基础

随着业务的快速发展,各层业务之间调用关系越来越复杂,对系统的可用性以及扩展性要求也越来越高。消息队列作为分布式架构中的重要一环,提供了消息传递和消息排队的模型,被应用在系统解耦、异步处理、流量削峰 等多个场景,有着举足轻重的地位。

Golang的Map长啥样

Map 是每个编程语言必备的数据结构,就连 lua 这种胶水语言都支持其功能,map 的底层是一个 HashTable,Go 语言的map使用十分简易,但其内部实现不是简单的一个 HashTable。