掘友等级
获得徽章 0
Day20
CSP(Communicating Sequential Processes)通信顺序进程,是Go语言中重要的并发模型。
主要特征有:
顺序进程:每个进程内部按顺序执行。
通信进程:进程间通过通信(Message Passing)来协作。
数据流:程序通过在进程间传递数据来工作。
Go语言的CSP实现主要通过goroutine和channel
goroutine作为顺序执行的进程
channel用于goroutine间的通信
Day19
bind mount直接把宿主机目录映射到容器内,适合挂代码目录和配置文件。可挂到多个容器上
volume由容器创建和管理,创建在宿主机,所以删除容器不会丢失,官方推荐,更高效,Linux 文件系统,适合存储数据库数据。可挂到多个容器上
tmpfs mount适合存储临时文件,存宿主机内存中。不可多容器共享。
Day18
在CompositionLocalProvider之前我们需要根据ThemeManager中当前主题获取到对应的颜色
无论是组件的背景色还是文字的颜色都直接使用LocalThemeColor.current.**
切换主题时,直接调用ThemeManager.currentThemeType,修改其值即可完成主题切换
Day17
从Go 1.17版本开始,引入了一个新的随机数生成器,它使用了更强大和可预测的随机数生成算法。这个新的随机数生成器不需要显式地设置种子,因为它会自动使用更随机的默认种子。
Day16
Channel是一个提供可接收和发送特定类型值的用于并发函数通信的数据类型,满足FIFO(先进先出)原则的队列类型。FIFO在数据类型与操作上都有体现:
Channel类型的元素是先进先出的,先发送到Channel的元素会先被接收
先向channel发送数据的Goroutinue会优先执行
先从channel接收数据的Goroutinue会优先执行
Day15
后端拿着:
私钥A(privateKeyA)、公钥B(publicKeyB),前端拿着:公钥A(publicKeyA)、私钥B(privateKeyB)。
秘钥对A -- 前端加密,后端解密
前端使用公钥A(publicA)对数据进行加密,后端通过公钥A(publicKeyA)对应的私钥A(privateKeyA)进行解密。
秘钥对B -- 前端解密,后端加密
后端使用公钥B(publicKeyB)进行加密,前端通过公钥B(publicKeyB)对应的私钥A(privateKeyA)进行解密。
这样就能保证,虽然私钥(privateKeyB)和公钥(publicKeyA)都在前端代码中,但是这两个并不是一对,就算是全部拿到,也无法成功解密。也符合公钥(publicKey)加密、私钥(privateKey)解密的规则。完美解决!
Day14
在有两个或更多 goroutine 的程序中,每一个 goroutine 内的语句也是按照既定的顺序去执行的,但是一般情况下没法去知道分别位于两个 goroutine 的事件 x 和 y 的执行顺序,x 是在 y 之前还是之后还是同时发生是没法判断的。
Day13
setTimeout 接受两个参数:待加入队列的消息和一个时间值(可选,默认为 0)。这个时间值代表了消息被实际加入到队列的最小延迟时间。如果队列中没有其它消息并且栈为空,在这段延迟时间过去之后,消息会被马上处理。但是,如果有其它消息,setTimeout 消息必须等待其它消息处理完。因此第二个参数仅仅表示最少延迟时间,而非确切的等待时间。
Day12
单元测试的编写有一定的规则:
所有测试文件以 _test.go 结尾
测试方法名以Test开头,参数要用testing func TestXxx(t *testing.T)
测试初始化逻辑放到TestMain中
通过go test命令进行测试
Day11
Go 语言 map 的底层实现是哈希表,在进行插入时,会对 key 进行 hash 运算。这也就导致了数据不是按顺序存储的,和遍历的顺序也就会不一致。
下一页