小编SOF*_*OFe的帖子

Gradle中的实现和编译之间有什么区别?

在更新到Android Studio 3.0并创建一个新项目后,我注意到build.gradle有一种新方法可以添加新的依赖项,而不是compile存在implementation而不是testCompile存在testImplementation.

例:

 implementation 'com.android.support:appcompat-v7:25.0.0'
 testImplementation 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)

代替

 compile 'com.android.support:appcompat-v7:25.0.0'
 testCompile 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)

它们之间有什么区别,我应该使用什么?

dependency-management gradle transitive-dependency build.gradle gradle-plugin

899
推荐指数
10
解决办法
27万
查看次数

为什么人们不使用base128?

为什么每个人都使用base 64在网上传输二进制数据?我问,因为ASCII字符集有128个字符,理论上可以代表128个字符......

language-agnostic binary encoding

90
推荐指数
5
解决办法
5万
查看次数

1452 - 无法添加或更新子行:外键约束失败

我收到这个错误:

1452 - 无法添加或更新子行:外键约束失败.

我找到了他们并试图摆脱参考

alter table tillhör drop foreign key kat_id;
Run Code Online (Sandbox Code Playgroud)

但是反而得到这个错误:

#1025 - 将'.\ _\_对于'.\ _对于'.\ _对于'.\ _对于'.\ recept#sql2-1570-3cb'(错误号:152)重命名.

我做错了什么?

mysql sql foreign-keys

17
推荐指数
3
解决办法
6万
查看次数

转换浮点数的基数而不会丢失精度

术语

在这个问题中,我称之为"浮点数""十进制数",以防止使用float/ doubleJava原始数据类型进行ambiguation .术语"十进制"与"基数10"无关.

背景

我用这种方式表示任何基数的十进制数:

class Decimal{
    int[] digits;
    int exponent;
    int base;
    int signum;
}
Run Code Online (Sandbox Code Playgroud)

它大致表达了这个double值:

public double toDouble(){
    if(signum == 0) return 0d;
    double out = 0d;
    for(int i = digits.length - 1, j = 0; i >= 0; i--, j++){
        out += digits[i] * Math.pow(base, j + exponent);
    }
    return out * signum;
}
Run Code Online (Sandbox Code Playgroud)

我知道有些转换是不可能的.例如,无法转换0.1 (base 3)为基数10,因为它是重复的小数.类似地,转换0.1 (base 9)到基础3是不可能的,但是可以进行协调0.3 (base 3).可能还有其他一些我没有考虑过的案例.

传统的方式

对于整数,从基数10到基数2的基数变化的传统方式(手动)是将数字除以2的指数,并且从基数2到基数10将数字乘以2的相应指数.从基数x变为基数 …

java algorithm math decimal-point base

15
推荐指数
1
解决办法
1050
查看次数

科特林OVERRIDE_BY_INLINE

在Kotlin中使用inline功能实现接口时:

interface Foo {
    fun qux(fn: () -> Unit)
}

open class Bar : Foo {
    final override inline fun qux(fn: () -> Unit){TODO()}
}
Run Code Online (Sandbox Code Playgroud)

IDE(可能还有编译器)抱怨以下消息:

Override by an inline function
Run Code Online (Sandbox Code Playgroud)

要取消显示此消息,我必须使用@Suppress("OVERRIDE_BY_INLINE")注释。怎么了?

我已经知道的:

  • 对于普通的内联函数,kotlinc将内联该内联函数的所有用法,但仍会编译该函数的非内联版本,以便可以从Java调用它(并且可能出于向后兼容性或其他原因)。
  • 内联虚拟方法是不可能的。内联只是意味着“将所有代码复制到调用者中”,但是对于调用抽象/接口方法,该实现是在运行时根据所涉及对象的实际类确定的,因此无法知道要复制到哪个实现中功能。

但是,调用最终函数时并非如此。在上面的示例中,当我调用时bar.qux(),编译器可以确保仅使用该特定实现,并且可以安全地内联。它是否覆盖该Foo.qux方法无关紧要-调用foo.qux将使用第1点中提到的非内联版本,并且调用bar.qux可以安全地内联。

只是为了确保开发人员意识到这一警告吗?还是有副作用?

oop inline kotlin

12
推荐指数
1
解决办法
625
查看次数

将自定义视图添加到XML ...但使用GENERIC类型

我正在开发一个自定义视图,希望可重用.它应该具有泛型类型,如下所示:

public class CustomViewFlipper<someType> extends ViewFlipper { }
Run Code Online (Sandbox Code Playgroud)

我知道如何将普通的自定义视图绑定到XML文件.但我找不到这种情况的任何例子.有没有办法为XML中的类定义泛型类型?

xml android generic-programming type-parameter

11
推荐指数
2
解决办法
4722
查看次数

json架构属性描述和"$ ref"用法

我正在编写一个json模式来验证由exe生成的json输出.模式有点复杂,我定义了一些在属性中引用的"定义"("$ ref":"#/ definitions/...)在这里使用定义更为重要,因为我有一个定义是递归的情况.

我的架构现在运行良好,它正确验证了我的json输出.

现在,我正在尝试使用每个属性的"description"关键字正确记录架构.为了开发模式,我使用了一个以图形方式表示模式的编辑器(XMLSpy).这是非常有用的,但我面对一个奇怪的行为,我不知道它是编辑器中的问题,还是我不理解.

这是一个json模式的最小例子来解释我的问题:

{
	"$schema": "http://json-schema.org/draft-04/schema#",
	"type": "object",
	"properties": {
		"sourcePath": {
			"$ref": "#/definitions/Path",
			"description": "Here the description where I expected to set it"
		},
		"targetPath": {
			"$ref": "#/definitions/Path",
			"description": "Here another description where I expected to set it to that property of the same kind but whith a different use."
		}
	},
	"additionalProperties": false,
	"definitions": {
		"Path": {
			"description": "Here the descriptiond where it is set by the software",
			"type": "object",
			"properties": {
				"aUsefulProperty": {
					"type": …
Run Code Online (Sandbox Code Playgroud)

json jsonschema json-schema-validator json-ref

9
推荐指数
2
解决办法
2687
查看次数

如何在 Rust 中实现包裹向量的迭代器特征?

有类似的代码

#[derive(Debug)]
struct BinaryVec {
    vec: Vec<u8>,
}

impl BinaryVec {
    fn empty() -> BinaryVec {
        BinaryVec { vec: Vec::new() }
    }

    fn push(&mut self, bit: u8) {
        self.vec.push(bit);
    }
}

Run Code Online (Sandbox Code Playgroud)

我希望能够迭代结构的向量而不将其公开。例如,这样称呼它:

let bin_vec = BinaryVec::empty();
bin_vec.push(1);
bin_vec.push(0);
bin_vec.push(1);
for el in bin_vec.iter() { 
    // do something with 1,0,1 elements 
}
Run Code Online (Sandbox Code Playgroud)

但我发现该Iterator特征只需要next假设结构中保存的 iter 状态的方法。

有没有办法直接将 vec iter 传递到 Rust 中的更高级别的结构体中,而不需要向结构体中添加新的状态相关字段?

rust

9
推荐指数
2
解决办法
2911
查看次数

为什么忽略“按特征发送”实现的特征范围?

为什么Send在特征实现中忽略自动特征的特征边界?(游乐场(1)

trait IsSend {
    fn is_send(&self);
}

impl<T: Send> IsSend for T {
    fn is_send(&self) {}
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let i = std::rc::Rc::new(43);
    i.is_send(); // (!!) no compiler error although Rc<...> is not Send
    Ok(())
}
Run Code Online (Sandbox Code Playgroud)

例如,使用绑定到自定义特征(X)的特征可以工作:(Playground(2)

trait X {}

trait IsSend {
    fn is_send(&self);
}

impl<T: X> IsSend for T {
    fn is_send(&self) {}
}

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let i = std::rc::Rc::new(43);
    i.is_send(); // …
Run Code Online (Sandbox Code Playgroud)

generics dereference rust

8
推荐指数
1
解决办法
68
查看次数

由于不允许的 MIME 类型(“application/wasm”),加载模块被阻止

我提供一个静态文件服务器(通过 HTTP),其中包含由wasm-pack. 使用 rustwasm 书中的示例,我将此代码添加到我的索引 HTML 页面:

        <script type="module">
            import init from "./pkg/fstree_web.js";

            async function run() {
                await init();
            }

            run();
        </script>
Run Code Online (Sandbox Code Playgroud)

但是,在 Firefox 上,我收到标题中所示的错误消息:

来自“ http://localhost:8000/pkg/fstree_web_bg.wasm ”的模块由于不允许的 MIME 类型(“application/wasm”)而被阻止。

我怀疑是 HTTPS 问题或 localhost 问题,所以我另外尝试了127.0.0.1,甚至尝试了 https://***.ngrok.io 隧道,但 Firefox 仍然拒绝加载带有此错误消息的 wasm 模块。

它链接到关于 X-Content-Type-Options 的 MDN 文章,但我不确定它是如何相关的。我的服务器已经在发送Content-Type: application/wasm.

wasm-pack 生成的 JavaScript 代码是这样开头的:

import { __cargo_web_snippet_72fc447820458c720c68d0d8e078ede631edd723 } from './snippets/stdweb-bb142200b065bd55/inline133.js';
import { __cargo_web_snippet_97495987af1720d8a9a923fa4683a7b683e3acd6 } from './snippets/stdweb-bb142200b065bd55/inline134.js';
import { __cargo_web_snippet_dc2fd915bd92f9e9c6a3bd15174f1414eee3dbaf } from './snippets/stdweb-bb142200b065bd55/inline135.js';
import { __cargo_web_snippet_1c30acb32a1994a07c75e804ae9855b43f191d63 } from …
Run Code Online (Sandbox Code Playgroud)

javascript rust webassembly wasm-pack x-content-type-options

7
推荐指数
1
解决办法
3045
查看次数