所以我正在尝试将Retrofit用于我的项目.由于该网站说,我已经包含
compile 'com.squareup.retrofit:retrofit:2.0.0-beta1'在build.gradle.我正在阅读此链接中的教程.我想做类似这样的事情
final RestAdapter restadapter = new RestAdapter.Builder().setEndpoint("http://services.hanselandpetal.com").build();
api flowerapi = restadapter.create(api.class);
flowerapi.getData(new Callback<List<Flower>>() {
@Override
public void success(List<Flower> flowers, Response response) {
flowerList = flowers;
adapter adapt = new adapter(getApplicationContext(),R.layout.item_file,flowerList);
//ListView listView = (ListView) findViewById(R.id.list);
setListAdapter(adapt);
}
Run Code Online (Sandbox Code Playgroud)
在我的项目中,即调用API.但是,restadapter只是没有得到resolved.简单地说,在它上面盘旋它symbol can't be resolved.这里发生了什么?
我正在使用Retrofit-2.0.0我的应用程序.现在我在网上发现的每一个关于Retrofit的教程都是基于早期的Retrofit,那里没有Call<T>接口.这是我第一次使用Retrofit而且我一再得到null object reference.这是我的网络模型界面
public interface TMovieDBService {
@GET("/movie")
Call<MovieResponse> getMovieResponse(@Query("sort_by") String sortKey,
@Query("api_key") String apiKey);
}
Run Code Online (Sandbox Code Playgroud)
这是我updateMovies()更新电影列表的功能.
void updateMovies() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://api.themoviedb.org/3/discover")
.addConverterFactory(GsonConverterFactory.create())
.build();
String sortKey = "popularity.desc";
TMovieDBService service = retrofit.create(TMovieDBService.class);
Call<MovieResponse> call = service.getMovieResponse(sortKey, ApiKey.API_KEY);
call.enqueue(new Callback<MovieResponse>() {
@Override
public void onResponse(Response<MovieResponse> response) {
Log.d(LOG_TAG, "Reached this place");
if (!response.isSuccess()) {
Log.d(LOG_TAG, "No Success");
}
mMovieList = response.body().getMovies(); // <- response is null here …Run Code Online (Sandbox Code Playgroud) 在接口上阅读Oracle教程,在Card(扑克牌)上给出一个例子,我试图理解接口中的默认方法.这是链接 "在现有接口中集成默认方法"部分.现在在最后一节中,他们首先按照等级然后按套装对卡片进行排序.已经给出了逻辑.假设已经定义了所使用的任何接口,函数或类,并且sort函数需要aComparator
逻辑1:
package defaultmethods;
import java.util.*;
import java.util.stream.*;
import java.lang.*;
public class SortByRankThenSuit implements Comparator<Card> {
public int compare(Card firstCard, Card secondCard) {
int compVal =
firstCard.getRank().value() - secondCard.getRank().value();
if (compVal != 0)
return compVal;
else
return firstCard.getSuit().value() - secondCard.getSuit().value();
}
}
Run Code Online (Sandbox Code Playgroud)
逻辑2:
myDeck.sort(
Comparator
.comparing(Card::getRank)
.thenComparing(Comparator.comparing(Card::getSuit)));
Run Code Online (Sandbox Code Playgroud)
现在我在理解第二个逻辑时遇到了一些问题.我阅读了比较器接口和Java 1.8中包含的新静态方法.现在我理解类似于myDeck.sort(Comparator.comparing(Card::getRank))按排名排序但是在阅读完文档thenComparing之后,我无法理解thenComparing返回a 如何Comparator实现上述逻辑1.它是否在内部构建类似于if-else逻辑1中指定的构造?
class FoodExpert:
def init(self):
self.goodFood = []
def addGoodFood(self, food):
self.goodFood.append(food)
def likes(self, x):
return x in self.goodFood
def prefers(self, x, y):
x_rating = self.goodFood.index(x)
y_rating = self.goodFood.index(y)
if x_rating > y_rating:
return y
else:
return x
Run Code Online (Sandbox Code Playgroud)
在声明这个类之后,我编写了这段代码:
>>> f = FoodExpert()
>>> f.init()
>>> map(f.addGoodFood, ['SPAM', 'Eggs', 'Bacon', 'Rat', 'Spring Surprise'])
[None, None, None, None, None]
>>> f.goodFood
['SPAM', 'Eggs', 'Bacon', 'Rat', 'Spring Surprise']
Run Code Online (Sandbox Code Playgroud)
我无法理解地图功能如何在幕后工作,为什么它会返回一个包含所有的列表None,但是当我检查f.goodFood元素是否已添加到那里?
flush_gdt:
lgdt [gdtr]
jmp 0x08:complete_flush
complete_flush:
mov ax, 0x10
mov ds, ax
mov es, ax
mov fs, ax
mov gs, ax
mov ss, ax
ret
Run Code Online (Sandbox Code Playgroud)
我无法理解这段代码的作用.flush_gdt是一个标签好,然后lgdt [gdtr]将48-bit指针加载到gdtr寄存器中,然后从中加载jmp 0x08:complet_flush.
jmp指令有什么作用?然后我们为什么要将0x10移动到ax,然后移动到其他寄存器
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<double> student_marks(20);
for (vector<double>::size_type i = 0; i < 20; i++)
{
cout << "Enter marks for student #" << i+1
<< ": " << flush;
cin >> student_marks[i];
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我在某个地方读到,最好用size_type它代替int.它是否真的对实施产生了巨大影响,使用的积极因素是size_type什么?
我正在开发一个注意力模型,在运行最终模型之前,我正在遍历代码的张量形状。我有一个需要重整张量的操作。张量是形状的torch.Size([[30, 8, 9, 64]]) 地方30是batch_size,8是(这是不相关的我的问题)注意头的数量9是在一句话的数量,64这个词的一些中间嵌入表示。torch.size([30, 9, 512])在进一步处理之前,我必须将张量重塑为的大小。因此,我在网上查找一些参考资料,他们做了以下工作,x.transpose(1, 2).contiguous().view(30, -1, 512)
而我认为这应该可行x.transpose(1, 2).reshape(30, -1, 512)。
在第一种情况下是grad_fnis <ViewBackward>,而在我的情况下是<UnsafeViewBackward>。这两个操作不一样吗?这会导致训练错误吗?
#include <stdio.h>
int main()
{
printf(5 + "abhishekdas\n") ;
return 0 ;
}
Run Code Online (Sandbox Code Playgroud)
该程序的输出是hekdas.它是如何工作的?它不应该显示错误吗?如何编写5 + "abhishekdas"内部printf函数之类的东西?
static inline Elf32_Shdr *elf_sheader(Elf32_Ehdr *hdr) {
return (Elf32_Shdr *)((int)hdr + hdr->e_shoff);
}
static inline Elf32_Shdr *elf_section(Elf32_Ehdr *hdr, int idx) {
return &elf_sheader(hdr)[idx];
}
Run Code Online (Sandbox Code Playgroud)
好的,这里的第一个函数通过使用返回指向elf节头的指针,hdr_shoff因为这是第一节头的偏移量.现在,第二个函数用于通过使用数组索引来访问更多节标题(如果有的话).
static inline char *elf_str_table(Elf32_Ehdr *hdr) {
if(hdr->e_shstrndx == SHN_UNDEF) return NULL;
return (char *)hdr + elf_section(hdr, hdr->e_shstrndx)->sh_offset;
}
static inline char *elf_lookup_string(Elf32_Ehdr *hdr, int offset) {
char *strtab = elf_str_table(hdr);
if(strtab == NULL) return NULL;
return strtab + offset;
}
Run Code Online (Sandbox Code Playgroud)
我遇到上述两个用于访问节名称的函数的问题.e->shstrndx是字符串表的索引.所以在elf_str_table我们首先检查它SHN_UNDEF.但是return我不明白那hdr->e_shstrndx是字符串表的索引,如何将该索引添加到elf_section标头的起始地址,给出另一个elf节标题(因为我们正在使用它访问sh_offset).我的困惑是它e->shstrndx …
好的,这个问题更多的是讨论.我有这个实现pipelined MIPS处理器的项目VHDL.
我完全熟悉流水线的概念,但我从未实现过VHDL.有什么好的资源,以学习落实pipelined processors在VHDL.
我需要一个良好的开端?
这本书引用:
在CUDA中,
__syncthreads()语句(如果存在)必须由块中的所有线程执行.当a__syncthreads()放在一个if语句中时,块中的所有线程都会执行包含__syncthreads()或不包含它们的路径.对于if-then-else语句,如果每个路径都有一个__syncthreads()语句,则块中的所有线程都在路径__syncthreads()上执行,或者所有线程then都执行该else路径.这两个__syncthreads()是不同的屏障同步点.如果块中的线程执行then路径而另一个线程执行else路径,则它们将在不同的屏障同步点处等待.他们最终会永远等待对方.程序员有责任编写代码以满足这些要求.
没有给出例子if和if-else-then案例,所以我无法理解这个概念.请用简单的话语解释我的情况.
PS:我是并行编程和CUDA的初学者.
提前致谢 .