Dai Jie

Results 247 comments of Dai Jie

@lisgroup 第一个问题,你的理解是对的,字符串类型转换为 rune 切片类型。 第二个问题,这种写法是为了优化边界检查从而提升运行时效率的。在go语言中称之为 `Bounds Check Elimination`,简称为 BCE。简言解释下,如果没有这一句,在运行时,Go 语言每次都会对 b[i] 做边界检查,看看是否越界了,如果越界了,就 panic。但是如果加上这一句,Go语言在编译时,能够做一些简单的静态分析,发现 b[i] 是不可能越界的,编译时就能将没必要的边界检查给优化了,那么运行时,就不会对 b[i] 做边界检查,从而提升运行时效率。 这篇文章提供了更多的示例,帮助理解。[Bounds Check Elimination - go101.org](https://go101.org/article/bounds-check-elimination.html)

@GiveTimeToLife 我觉得这种写法应该也是OK的,Go 的切片底层对应的数组是一样的,切片只是改变指针的位置,这一步检查几乎是没有损耗的。

@zzhaolei 感谢指出问题,新版本将 `b = b[:len(a)]` 去掉后,也不会产生边界检查(Bounds Check)了。 是否产生边界检查,可以用下面的命令验证。 ```bash go build -gcflags="-d=ssa/check_bce/debug=1" main.go ``` 例如针对下面的例子,如果 s[2] 没有越界,那么 s[1] 和 s[0] 肯定是合法,因此只需要对 s[2] 做一次边界检查即可: ```go package main func f(s []int) {...

@xiangyangfeng 属于DDQN,如果是DQN的话,仅是将Q-Learning的Q表转为神经网络来拟合映射,不会有2个模型。这个示例,仅用DQN一直没办法拟合。

@xiangyangfeng 直接使用神经网络代替Q表,没有Q表了。

@youstick 很高兴得到你的认可 😸,有时间会继续写的~

@zsk2019 可以更具体了么,比如贴出改动点?

> 通俗易懂! ps: 4.3节实例的输出结果有点问题 0 10, 1 20, 2 30,3 40 @shiftj18 感谢指出问题,下次更新时修正。