小编ita*_*ysk的帖子

如何序列化接口类型成员

我有一个具有定义为接口的属性的类.我的类的用户可以为此属性分配任何实现该接口的类实现.我希望能够从磁盘上的文本文件加载此类状态.用户应该能够手动修改xml文件,以便控制应用程序的操作.

如果我尝试序列化我的类,它会告诉我我无法序列化一个接口.我知道序列化程序不知道属性类的结构,只知道它实现了一个接口.

我原以为它会在成员上调用GetType,并反映实际类的结构.有没有办法实现这个目标?还有其他方法可以实现我的要求吗?

编辑:澄清我的意图:让我说我有这个课程:

class Car
{
IEngine engine
}
class ElectricEngine : IEngine 
{
int batteryPrecentageLeft;
}
class InternalCombustionEngine : IEngine 
{
int gasLitersLeft;
}
Run Code Online (Sandbox Code Playgroud)

并且类用户有一个类

Car myCar = new Car();
myCar.Engine = new ElectricEngine() {batteryPrecentageLeft= 70};
Run Code Online (Sandbox Code Playgroud)

当我序列化myCar类时,我希望xml类似于:

<Car>
<Engine>
<ElectricEngine>
<batteryPrecentageLeft>70</batteryPrecentageLeft>
</ElectricEngine>
<Engine>
</Car>
Run Code Online (Sandbox Code Playgroud)

.net c# xml-serialization

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

使用spark-avro在记录中跳过字段

更新:spark-avro软件包已更新以支持此方案.https://github.com/databricks/spark-avro/releases/tag/v3.1.0

我有一个AVRO文件,由我控制之外的第三方创建,我需要使用spark处理.AVRO架构是一个记录,其中一个字段是混合联合类型:

{    
    "name" : "Properties",                              
    "type" : {                                          
    "type" : "map",                                   
    "values" : [ "long", "double", "string", "bytes" ]
}                                                   
Run Code Online (Sandbox Code Playgroud)

spark-avro阅读器不支持此功能:

除了上面列出的类型之外,它还支持读取三种类型的联合类型:union(int,long)union(float,double)union(something,null),其中某些东西是上面列出的受支持的Avro类型之一,或者是支持的联合类型之一.

阅读AVRO的模式演变和解决方案,我希望能够通过指定省略此字段的不同读取器模式来跳过有问题的字段时读取文件.根据AVRO Schema Resolution文档,它应该工作:

如果作者的记录包含读者记录中不存在名称的字段,则忽略该作者对该字段的值.

所以我修改了使用

 val df = sqlContext.read.option("avroSchema", avroSchema).avro(path)
Run Code Online (Sandbox Code Playgroud)

编写avroSchema器使用的完全相同的架构在哪里,但没有有问题的字段.

但是我仍然得到关于混合联合类型的相同错误.

AVRO支持这种架构演变的场景吗?与avro-spark?还有另一种方法来实现我的目标吗?


更新:我已经使用Apache Avro 1.8.1测试了相同的场景(实际上是相同的文件)并且它按预期工作.然后它必须具体spark-avro.有任何想法吗?

avro apache-spark spark-avro

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

FUSE - 避免在 GetAttr 中计算大小

我正在为远程服务实现 FUSE 文件系统。当用户打开文件时,我会进行网络调用以获取文件的内容。似乎必须报告文件的大小GetAttr才能打开工作。
为了知道文件的大小,我必须发出网络调用,并且由于GetAttr在执行时为每个条目调用ls,因此我担心这种设计(如果用户ls在包含许多项目的目录中进行操作,则必须获取所有文件,即使用户不想打开任何文件)。

我该如何解决这个问题?我的想法是:

  • 使用不依赖于报告大小的较低级别的读取方法?我认为使用Read而不是Open可能会有所帮助,但是如果没有尺寸我就无法让它工作。
  • 如果我能区分GetAttr源自呼叫Open其他电话(含ls),我可能只在需要时发出的网络调用。

我使用 Go 和go-fuse,但我认为这无关紧要,因为这是一个通用的 FUSE 问题。

此外,FUSE 文档非常少(实际上缺少)文档。如果熟悉此事的人可以解释ls,cdcat- 以何种顺序调用哪些 FUSE 函数的调用流程,那就太好了。
例如,为什么同时存在OpenRead

更新:
我一直在浏览 SSHFS,它被认为是 FUSE 文件系统的规范示例,它似乎也在 getattr 上通过网络获取文件:https : //github.com/libfuse/sshfs/blob/master/sshfs .c#L3167
你怎么看?

fuse go

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

DockerHub API - 列出标签

我正在尝试获取 DockerHub 中公共映像的标签列表。

我发现以下示例有效: https://hub.docker.com/v2/repositories/${reposiroty}/tags

但它是分页的,我需要控制页面大小,但找不到有关此 API 的文档。它在 URL 中说 v2,但它看起来不像 V2 规范,也不像 v1。注册表 v2 规范似乎需要我不感兴趣的身份验证,因为我只查询公共数据。https://docs.docker.com/registry/spec/api/

因此,如果有人知道如何在来自 Docker Hub 的一个请求中获取整个标签列表,请分享。此外,如果有人可以对文档不足的 Docker Hub API 有所了解,它会有所帮助。

docker dockerhub docker-registry

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

PowerShell 按嵌套字段选择和分组

我有以下对象结构:

  • 资源(数组)
    • 资源(PSCustomObject)
      • 名称(字符串)
      • 标签 (PSCustomObject)
        • 所有者(字符串)
      • 更多的...

所以我可以做$resources[0].Tags.Owner并获取字符串值。

目标只是select名称和所有者,然后group是所有者。

我可以这样做$resources | select {$_.Tags.Owner, $_.Name},但随后我得到了一个新的 PSCustomObject 数组,其中包含两个成员“$ .Tags.Owner”和“$ .Name”。如何按名为“$_.Tags.Owner”的字段进行分组?

  1. 我可以将“$_.Tags.Owner”重命名为更友好的名称及其所属的组吗?
  2. 我能以某种方式告诉我group我的意思是“$_.Tags.Owner”字面意义而不是对象层次结构吗?

powershell

4
推荐指数
1
解决办法
3595
查看次数

Angular 2\4 哈希 url 保留 index.html

背景:Angular 4、ng cli、RouterModule、useHash:true。

当我使用http://server/index.html它浏览到我的应用程序时,它解析为http://server/#/(从 url 中省略了 index.html)另外每个路由导航也从 url 中省略了 index.html。

这对于我的应用程序的托管方式是有问题的,我需要在 url 中保留 index.html。如何配置角度以保持它?

angular

4
推荐指数
1
解决办法
1585
查看次数

Azure 存储是如何实施的?

Microsoft Azure 开发人员是否实现了一些新的文件系统(这是一项艰巨的工作),或者他们包装了现有的文件系统(如 ntfs)以使 Azure 文件存储、Blob 等工作?

azure azure-storage azure-blob-storage

2
推荐指数
1
解决办法
552
查看次数

Jekyll\kramdown - 将`.table`类添加到生成的表中

Jekyll 3.2.1 + kramdown.我有一个使用bootstrap css的主题.生成的<table>s应该用class="table"bootstrap css要求进行修饰.

我已经看到了其他建议{: class=table}或添加{.table}到降价表,但我真的不喜欢这个解决方案,因为它用html\css详细信息'污染'纯降价.我希望我的降价按原样可读并且与目标格式无关.

首选解决方案是自定义Jekyll或kramdown,以便自动生成此类的降价表.这可能吗?

markdown jekyll kramdown

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