我想提供两种不同的序列化器,但能够从以下所有设施中受益ModelViewSet:
__unicode __目标模型显示每个其他关系;例:
{
"url": "http://127.0.0.1:8000/database/gruppi/2/",
"nome": "universitari",
"descrizione": "unitn!",
"creatore": "emilio",
"accesso": "CHI",
"membri": [
"emilio",
"michele",
"luisa",
"ivan",
"saverio"
]
}
Run Code Online (Sandbox Code Playgroud)
HyperlinkedModelSerializer例:
{
"url": "http://127.0.0.1:8000/database/gruppi/2/",
"nome": "universitari",
"descrizione": "unitn!",
"creatore": "http://127.0.0.1:8000/database/utenti/3/",
"accesso": "CHI",
"membri": [
"http://127.0.0.1:8000/database/utenti/3/",
"http://127.0.0.1:8000/database/utenti/4/",
"http://127.0.0.1:8000/database/utenti/5/",
"http://127.0.0.1:8000/database/utenti/6/",
"http://127.0.0.1:8000/database/utenti/7/"
]
}
Run Code Online (Sandbox Code Playgroud)
我设法按照以下方式完成所有这些工作:
serializers.py
# serializer to use when showing a list
class ListaGruppi(serializers.HyperlinkedModelSerializer):
membri = serializers.RelatedField(many = True)
creatore = serializers.RelatedField(many = False)
class Meta:
model = models.Gruppi
# serializer …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写自己的(简单)List实现.这是我到目前为止所做的:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace provaIEnum
{
class MyList<T> : IEnumerable<T>
{
private T[] _array;
public int Count { get; private set; }
public MyList() { /* ... */ }
public void Add(T element) { /* ... */ }
// ...
public IEnumerator<T> GetEnumerator()
{
for (int i = 0; i < Count; i++)
yield return _array[i];
}
}
Run Code Online (Sandbox Code Playgroud)
我收到一个关于GetEnumerator的错误:
'provaIEnum.Lista'没有实现接口成员'System.Collections.IEnumerable.GetEnumerator()'.'provaIEnum.Lista.GetEnumerator()'无法实现'System.Collections.IEnumerable.GetEnumerator()',因为它没有匹配的返回类型'System.Collections.IEnumerator'.
我不确定我是否理解VS试图告诉我什么,我不知道如何解决它.
谢谢你的时间
今天我在VS2008提供的工具之间找到了Disassembler IL.我试图反汇编程序并查看结果.操作码不是很难理解,但有一件事让我感到惊讶:.NET是基于堆栈的吗?!阅读"写出优秀的代码,第二卷"我没有得到基于堆栈的机器的良好画面,因为它们非常慢.它们也很容易实现,但我不认为MS开发人员因为它的简单性而选择了这种方法,毕竟代码必须转换成真正的机器代码才能解决问题.
谁能解释这个奇怪的选择吗?
PS:
我在这里发布了关于这个主题的内容:
13.1.1基于 堆栈的机器基于堆栈的机器使用内存进行大多数计算,在内存中使用堆栈来保存所有操作数和结果.采用堆栈架构的计算机系统提供了一些优于其他架构的重要优势:
不幸的是,堆栈计算机也存在一些严重的缺点:
- 这些指令通常比其他架构中的指令更小(每个消耗更少的字节),因为指令通常不必指定任何操作数.
- 编写堆栈体系结构的编译器通常比编写其他机器更容易,因为将算术表达式转换为一系列堆栈操作非常容易.
- 堆栈体系结构中很少需要临时变量,因为堆栈本身就是为此目的服务的.
堆栈是一种数据结构,它只允许在堆栈的一些有限元素上进行操作(通常称为堆栈顶部,堆栈旁边).使用堆栈,您通常可以执行以下三种操作之一:将新数据推送到堆栈,从堆栈弹出数据,或对当前位于堆栈顶部的数据(以及可能紧接在堆栈下方的数据)进行操作.
- 几乎每个指令都引用内存(现代机器上的内存很慢).虽然缓存有助于缓解此问题,但内存性能仍然是堆栈计算机上的主要问题.
- 即使从HLL到堆栈计算机的转换非常容易,优化的机会也比其他架构少.
- 由于堆栈计算机不断访问相同的数据元素(即堆栈顶部的数据),因此很难实现流水线操作和指令并行性(有关流水线操作和指令并行性的详细信息,请参阅写入优秀代码,第1卷).
和
13.1.1.5真实堆栈机器
堆栈架构的一大优点是可以很容易地为这样的机器编写编译器.为基于堆栈的机器编写仿真器也非常容易.由于这些原因,堆栈体系结构在诸如Java虚拟机和Microsoft Visual Basic p代码解释器之类的虚拟机(VM)中很流行.确实存在一些基于堆栈的真实CPU,例如Java VM的硬件实现; 但是,由于内存访问的性能限制,它们并不是很受欢迎.尽管如此,了解堆栈体系结构的基础知识非常重要,因为许多编译器在转换为实际机器代码之前将HLL源代码转换为基于堆栈的形式.实际上,在最坏的情况下(尽管很少见),编译器在编译复杂的算术表达式时会被迫发出模拟基于堆栈的机器的代码.
编辑:我刚刚在@ EricLippert的博客中发现了一篇文章,回答了这个问题并确认了@Aaron的答案
是的,我知道GNU意味着'GNU不是Unix',但那个GNU是什么?我的意思是,如果我在自己的定义中替换GNU,我会得到'GNU不是Unix不是Unix',我可以无限次地再做一次.作为一个问题听起来很愚蠢,但我真的无法理解......
我有一组灰度图像作为2D numpy数组.
我需要围绕不同的浮动角度的一个点(在它们内部)旋转图像.旋转不需要到位,我将允许(当然,如果我到目前为止解释得很好)进行插值.
我想保持笨拙,因为我需要对结果进行数值运算,但我也可以(如果那是不可能的话)允许进/出; 例如我尝试使用PIL,即Image.rotate(theta)但不明白如何将其应用于我的数组,以及如何获取数组.
谢谢您的意见.
今天在学校,老师要求我们实施重复删除算法.这并不困难,每个人都想出了以下解决方案(伪代码):
for i from 1 to n - 1
for j from i + 1 to n
if v[i] == v[j] then remove(v, v[j]) // remove(from, what)
next j
next i
Run Code Online (Sandbox Code Playgroud)
这个算法的计算复杂性是n(n-1)/2.(我们在高中,我们没有谈过大O,但似乎是O(n^2)).这个解决方案看起来很难看,当然也很慢,所以我试着更快地编写代码:
procedure binarySearch(vector, element, *position)
// this procedure searches for element in vector, returning
// true if found, false otherwise. *position will contain the
// element's place (where it is or where it should be)
end procedure
----
// same type as v
vS = …Run Code Online (Sandbox Code Playgroud) 当我在汇编中进行编程并进行某种字符串操作时,我会使用al,ah有时候其他人也会使用字符,因为这样可以让我在寄存器中保留更多数据.我认为这是一个非常方便的功能,但英特尔的工程师似乎不同意我,因为他们没有使寄存器的两个高位字节可访问(或者我错了?).我不明白为什么.我想了一会儿,我的猜测是:
我想到了第二,因为我从未见过使用过的编译程序(al或使用gcc)bh或者其中任何一个.
我想知道为什么有些函数有一些参数必须设置为NULL,因为"保留参数".例如:
LONG WINAPI RegQueryValueEx(
__in HKEY hKey,
__in_opt LPCTSTR lpValueName,
__reserved LPDWORD lpReserved,
__out_opt LPDWORD lpType,
__out_opt LPBYTE lpData,
__inout_opt LPDWORD lpcbData
);
Run Code Online (Sandbox Code Playgroud)
我不明白为什么lpReserved存在?我的意思是,如果它保留了为什么要放它,直接省略它会不会更简单?
谢谢!:)(请不要理解我的英语..)
我目前正在AT&T Assembly工作,现在我必须追加两个字符串:
message: .asciz "String 1"
before: .asciz "String 2"
Run Code Online (Sandbox Code Playgroud)
我真的不知道该怎么做或如何开始.我已经在网上搜索过但我找不到任何有用的信息.我想我必须手动将第二个字符串的字符复制到第一个字符串的末尾,但我不确定.
谁有人可以向我解释如何做到这一点?:)
我写了一个代码,然后一行
string thing = Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)
引起问题。Xamarin向我展示了它没有读入此命令的输入,因此可变的东西变为空。
从这里的其他问题和答案中,我发现应用程序有两种输出类型:Window和Console。因此,我的可能不是第二个。
但是我找不到如何切换到控制台。我有最新的MonoDevelop和Xamarin,但是这个问题仍然存在。有谁知道可以帮忙吗?
任何建议将不胜感激!