本文主要是介绍二、并发、测试笔记 青训营笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
并发、单元测试课程笔记 | 青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
并发
并发和并行
-
并发:在一个核的CPU中运行
-
并行:在多个核的CPU中运行
协程和线程
- 协程:用户态轻量级线程,KB级别
- 线程:内核态,可跑多个的协程,MB级别
协程的通信
channel(是否同步->消费和生产的效率不等)
Lock(并发安全)
sync包下的Mutex,加锁保证并发安全
WaitGroup
方法:
结构:
测试
单元测试
-
规则
-
assert(例子:assert.Equal()方法,快速比较判断测试结果)
-
覆盖率()<===“–cover”
-
依赖((mock机制)幂等、稳定==》打桩)
幂等:每一次测试运行都应该产生与之前一样的结果
Mockey Patch的作用域在Runtime,在运行时通过通过Go的unsafe包,将内存中函数的地址替换为运行时函数的地址。将待打桩函数或方法的实现跳转。
基准测试
测试程序运行的性能和CPU的损耗
ps:执行rand要消耗的时间比较长,因为rand为了保证全局的随机性和并发安全,持有了一把全局锁,因此推荐使用一种高性能随机数方法fastrand,牺牲了一定的数列一致性。
补充
登录两种形式区别
一、Cookie和Session
和端上进行交互的话一般是使用这种方式鉴权。
二、JWT+Token
不需要依赖一些存储,一般是后端直接解密。
一般在于服务器、http进行交互的话,使用JWT+token
消息队列应用场景
解决的问题主要都是隔离作用
使用场景:两种方法,如果是强依赖,就无法通过这种方式进行实现
如果是非强依赖,方法A是发布一个消息、事件,方法B是接收并消费这个事件去做异步的处理,这样的情况下使用消息队列,就能起到解耦的功能
强依赖,就无法通过这种方式进行实现
如果是非强依赖,方法A是发布一个消息、事件,方法B是接收并消费这个事件去做异步的处理,这样的情况下使用消息队列,就能起到解耦的功能
这篇关于二、并发、测试笔记 青训营笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!