我刚刚发现您可以在单个类型参数绑定中指定多个类型(请参阅示例).像任何新工具一样,我一直在尝试探索如何使用(和误用)的可能性.我精心设计了这个例子以帮助说明.
在下面的示例中,编译器给出了一个错误
dispatch(new AlphabetSoup());
对于Demo类型,方法dispatch(Demo.Soup)是不明确的
我能理解这一点,因为任何方法签名都匹配.我的问题是如何在不改变方法的情况下解决这个问题?如果我想要强制调用Soup版本,我可以将其转发给Soup:
dispatch((Soup)new AlphabetSoup())
但我不确定你是如何强制拨打其他版本的.可能吗?
public class Demo {
interface HasA { public char getA(); }
interface HasB { public char getB(); }
interface HasC { public char getC(); }
interface Soup {
public void eat();
}
class Alphabet implements HasA, HasB, HasC {
public char getA() { return 'a'; }
public char getB() { return 'b'; }
public char getC() { return 'c'; }
}
class AlphabetSoup implements Soup, HasA, HasB, HasC {
public void …Run Code Online (Sandbox Code Playgroud) 我一直在考虑修改前序树遍历算法,用于在平面表(例如SQL)中存储树.
我不喜欢标准方法的一个属性是插入一个节点,你必须触摸(平均)N/2个节点(左边或右边高于插入点的所有东西).
我见过的实现依赖于顺序编号的值.这没有留下更新的余地.
这对于并发和扩展似乎很糟糕.想象一下,你有一棵植根于世界的树,它包含大型系统中每个帐户的用户组,它非常大,你必须将树的子集存储在不同的服务器上.触摸所有节点的一半以将节点添加到树的底部是不好的.
这是我正在考虑的想法.基本上通过划分键空间并在每个级别划分来为插入留出空间.
这是N max = 64 的示例(这通常是数据库的MAX_INT)
0:64
________|________
/ \
1:31 32:63
/ \ / \
2:14 15-30 33:47 48:62
Run Code Online (Sandbox Code Playgroud)
这里,节点被添加到树的左半部分.
0:64
________|________
/ \
1:31 32:63
/ | \ / \
2:11 11:20 21:30 33:47 48:62
Run Code Online (Sandbox Code Playgroud)
必须扩展alogorithm以进行插入和删除过程,以递归重新编号为子树的左/右索引.由于查询节点的直接子节点很复杂,我认为将父节点ID存储在表中也是有意义的.然后,算法可以选择子树(使用left> p.left && right <p.right),然后使用node.id和node.parent来处理列表,细分索引.
这比仅增加所有索引以便为插入腾出空间(或递减删除)更复杂,但它有可能影响更少的节点(仅插入/删除节点的父节点的后果).
我的问题基本上是:
这个想法是否已正式化或实施?
这与嵌套间隔相同吗?
我有以下可用的:
如何随时间插入估计的位置?
我知道这足以计算出行程剩余时间所需的平均速度.给定一个直线距离,这是非常微不足道的.我知道它与矢量有关,但我有点生疏,并认为最好咨询一些专家.
我需要这个更新速率的原因是有限的,所以为了显示平滑的动画,我需要猜测更新之间的当前位置.
目标平台是Google地图应用程序,因此我可以使用一些基本功能,例如两个坐标之间距离的地理校正功能.语言并不重要,因为我知道许多语言,如果需要,可以移植或调整任何示例.然而,一般的解决方案是优选的
这只是两个独立的矢量计算吗?
latestimate = latstart + (?lat * P) lonestimate = lonstart + (?lon * P) Where: testimated = the reported estimated time to target telapsed = time since last time estimate P = telapsed / testimated ?lat = latreported - lattarget ?lon = lonreported - lontarget
假设您在现场部署了网络连接设备(小型PC).您希望在打开电源后允许这些呼叫回家,然后由最终用户识别和激活.
我们当前的计划涉及用户将MAC地址输入我们网站上的激活页面.稍后我们的软件(在盒子上运行)将从接口读取地址并在"回拨"数据包中传输.如果匹配,则激活具有客户信息和框的服务器响应.
我们喜欢这种方法,因为它易于访问,并且通常印在外部标签上(FCC要求?).
有什么问题需要注意?(所使用的硬件外形小巧,因此所有NIC等都是嵌入式的,并且很难改变.客户通常不会以任何方式直接访问操作系统).
我知道微软使用PCI设备ID,内存大小等为Windows激活做了一些疯狂的模糊散列函数.但这对我们的需求来说似乎有些过分.
-
@Neall基本上,打电话到我们的服务器,为了讨论的目的,你可以叫我们制造商.
Neall是正确的,我们只是将地址用作常量.我们将读取它并在另一个数据包中传输它(比如HTTP POST),而不是取决于从以太网帧以某种方式获取它.
我正在用Java编写一些专用数据结构,用于浏览器(用GWT编译成JavaScript).
我试图匹配一些内置JDK类的性能我注意到运行速度相当快,但是当我将我的代码跟踪与一些模拟的JDK代码进行比较时,我有很多对dynamicCast和canCastUnsafe的调用虽然JDK模拟类没有.它只是考虑到性能上的差异......
任何GWT大师都知道如何避免这种情况?这相当于20%的开销:-(
细节:
下面是10,000个随机整数插入的配置文件输出(在Firebug中捕获),介于0到100,000之间,分为两个不同的数据结构:
Google的java.util.TreeMap(一种红黑树)的TreeMap实现:
Profile (4058.602ms, 687545 calls)
Function Calls Percent Own Time
$insert_1 129809 41.87% 1699.367ms
$compare_0 120290 16% 649.209ms
$isRed 231166 13.33% 540.838ms
compareTo_0 120290 8.96% 363.531ms
$put_2 10000 6.02% 244.493ms
wrapArray 10000 3.46% 140.478ms
createFromSeed 10000 2.91% 118.038ms
$TreeMap$Node 10000 2.38% 96.706ms
initDim 10000 1.92% 77.735ms
initValues 10000 1.49% 60.319ms
$rotateSingle 5990 0.73% 29.55ms
TreeMap$Node 10000 0.47% 18.92ms
Run Code Online (Sandbox Code Playgroud)
我的代码(AVL树):
Profile (5397.686ms, 898603 calls)
Function Calls Percent Own Time
$insert 120899 25.06% 1352.827ms
$compare 120899 17.94% …Run Code Online (Sandbox Code Playgroud) 我们有一组接口,用作API,并从其他模块引用.这些接口的一组具体实现,对"主"应用程序模块是私有的.这些类带有许多注释(JPA以及用于XML序列化的XStream).
我遇到了一个问题.我们有一个用户类,其中包含与位置相关的许多字段.我们想把它们放到Address类中.我们希望数据(现在)保留在同一个表中.该方法是一个嵌入式类.
问题是类型签名必须仅引用其他接口以满足它们实现的接口.
当我尝试持久化UserImpl时,我得到了异常:
org.hibernate.MappingException:无法确定:com.example.Address的类型,在表:User,对于列:[org.hibernate.mapping.Column(address)]
示例代码:
interface User {
int getId();
String getName();
Address getAddress();
}
@Entity
class UserImpl implements User {
int id;
String name;
Address address;
int getId() {
return id;
}
void setId(int id) {
this.id = id;
}
String getName() {
return name;
}
String setName(String name) {
this.name = name;
}
@Embedded
Address getAddress() {
return address;
}
void setAddress(Address address) {
this.address = address;
}
}
interface Address {
String getStreet();
String getCity();
String …Run Code Online (Sandbox Code Playgroud) 我正在寻找资源来帮助将我的设计技能从传统的RDBMS数据存储迁移到AppEngine DataStore(即:'Soft Schema'风格).我已经看过几个演讲,全部涉及总体主题和一些特定技巧.
我想知道是否有一个地方我们可以将经验("来自战壕")的知识汇集到现实世界的方法上,重新思考数据的结构,特别是移植现有的应用程序.我们基于Hibernate,并且可能已经使用我们的数据模型走错了路径,产生了一些我们的数据库正在努力解决的粗略查询.
请回复:
情况如下:
我有一个Web应用程序响应对资源列表的请求,让我们说:
/items
Run Code Online (Sandbox Code Playgroud)
这最初是由Web浏览器通过导航到该路径直接请求的.浏览器使用它的标准"Accept"标题,其中包含"text/html",我的应用程序注意到这一点,并返回项目列表的HTML内容.
在返回的HTML中是一些JavaScript(jQuery),然后执行ajax请求来检索实际数据:
/items
Run Code Online (Sandbox Code Playgroud)
只有这一次,"Accept"标头显式设置为"application/json".同样,我的应用程序注意到这一点,JSON正确地返回到请求,数据被插入到页面中,一切都很愉快.
出现问题:用户导航到另一个页面,然后按下BACK按钮.然后提示他们保存文件.这结果是项目列表的JSON数据.
到目前为止,我已经在Google Chrome和Firefox 3.5中证实了这一点.
这里有两种可能的答案:
我该如何解决这个问题.是否有一些神奇的Cache-Control标头组合或其他伏都教导致浏览器在这里做正确的事情?
如果你认为我在这里做了一些可怕的错误,我该怎么办呢?我正在寻求正确性,但也试图不牺牲灵活性.
如果有帮助,该应用程序是使用Restlet 2.0m4的JAX-RS Web应用程序.如果它有用,我可以提供示例请求/响应标头,但我相信这个问题是完全可重现的.
任何人都可以告诉我,Hotspot或Dalvik是否足够聪明,可以内联调用返回常量(静态最终)int值的final方法?理想情况下,方法调用将被常量替换.这可能是在类加载时或通过JIT.
这对我正在研究的一些代码的设计有影响.
这是我正在研究的C项目的反汇编AVR代码片段.我注意到这个好奇的代码正在生成,我无法理解它是如何工作的.我假设这是一种荒谬的优化......
解释是什么?
92: ticks++; // unsigned char ticks;
+0000009F: 91900104 LDS R25,0x0104 Load direct from data space
+000000A1: 5F9F SUBI R25,0xFF Subtract immediate
+000000A2: 93900104 STS 0x0104,R25 Store direct to data space
95: if (ticks == 0) {
+000000A4: 2399 TST R25 Test for Zero or Minus
+000000A5: F009 BREQ PC+0x02 Branch if equal
+000000A6: C067 RJMP PC+0x0068 Relative jump
Run Code Online (Sandbox Code Playgroud)
具体来说,为什么第二条指令从R25中减去0xFF而不仅仅是INC R25?
java ×3
activation ×1
ajax ×1
algorithm ×1
android ×1
assembly ×1
avr ×1
avr-gcc ×1
dalvik ×1
drm ×1
estimation ×1
ethernet ×1
generics ×1
geospatial ×1
gwt ×1
hibernate ×1
jax-rs ×1
jit ×1
jpa ×1
json ×1
jvm-hotspot ×1
licensing ×1
math ×1
nested-sets ×1
optimization ×1
persistence ×1
python ×1
scalability ×1
sql ×1