小编nit*_*ous的帖子

Rust 看不到我重载的 f64 乘法运算符

我正在 Rust 中实现一个简单的矩阵库,目前正在编写用于标量乘法的运算符。右乘的工作原理:

impl<T: Num + Zero + Clone + Float> Mul<T, Mat<T>> for Mat<T> {
    fn mul(&self, rhs: &T) -> Mat<T> {
        self.componentwise(|v| v.clone() * *rhs)
    }
}
Run Code Online (Sandbox Code Playgroud)

但我似乎无法进行左乘,我假设以下代码可以完成我想要的操作:

impl<T: Num + Zero + Clone + Float> Mul<Mat<T>, Mat<T>> for T {
    fn mul(&self, rhs: &Mat<T>) -> Mat<T> {
        rhs.componentwise(|v| *self * v.clone())
    }
}
Run Code Online (Sandbox Code Playgroud)

但以下方法不起作用:

let A = mat![[1f64, 2., 3.], [4., 5., 6.]];
let P = A * 4f64; // works!
let Q = 4f64 * A; …
Run Code Online (Sandbox Code Playgroud)

operator-overloading multiplication matrix-multiplication rust

5
推荐指数
1
解决办法
947
查看次数

定期更新的bigquery数据库中的记录顺序

我将在bigquery上维护数据库的本地副本.我将使用API​​和tabledata:list.这个数据库不是我自己的,并且由维护者定期更新,附加新数据(比如说每小时).

  1. 首先,我可以假设当附加此数据时,它肯定会被添加到数据库的末尾吗?

  2. 现在,让我们假设当前数据库有1,000,000行,我现在通过分页tabledata:list下载所有这些行.另外,假设数据库在中途更新(10,000行).通过使用页面令牌,我可以放心,当我按照它们在数据库中的顺序启动时,我只会下载存在的1m行吗?

  3. 最后,现在让我说我来更新我的副本.如果我使用startIndex为1,000,000启动tabledata:list并使用maxResults为1000,那么我将获得包含我期望的更新数据的10个页面吗?

我想所有这些问题归结为bigquery是否尊重数据的顺序,tabledata:list是否使用此顺序,以及是否保证附加数据遵循先前的数据.

由于有一个列的值是唯一的,我可以执行一个简单select count(1) from table的获取表的长度,我当然可以通过比较我的本地数据库的长度和远程数据库的长度来检查我的本地副本是否完整如果以上都没有保证,并且我的数据中有漏洞,那么补救是不切实际的,因为主键不是顺序的(否则我只能填写缺失的行)并且数据库非常大.

google-bigquery

3
推荐指数
1
解决办法
994
查看次数