最近的一个问题关于数据存储和查询应运行它让我想起了多久-有没有人编一个漂亮的一套,将展示什么是"典型"的结果应该是数据存储性能基准测试的?我知道每种实体都会有不同的性能特征,但是能够看到几种有代表性的实体类型的时间会很棒,所以我们知道我们是否做错了(例如,如果我们看到我们的查询花费的时间比基准测试要长得多,我们可能知道要检查非延迟获取的关系,或者验证我们是否正确使用api来批量获取内容.)
我需要一些帮助来弄清楚我在这里做错了什么.我正在努力掌握一对多的关系并陷入障碍.我尝试修改Employee和ContactInfo示例以执行一对多映射:
如果我同时创建父(雇员)和子(联系人),然后调用makePersistent,一切都有效.但是,如果我尝试将一个子对象添加到已经持久的父对象,我会得到一个java.lang.ClassCast异常.完整的堆栈跟踪位于帖子的底部.
这是破解的代码(如果我将makePersistent()调用移到add()之后,一切正常:
public void testOneToMany(){
pm = newPM();
Employee e = new Employee("peter");
pm.makePersistent(e);
Contact c = new Contact("123 main");
List<Contact> contacts = e.getContacts();
contacts.add(c); // here I get java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
}
Run Code Online (Sandbox Code Playgroud)
这是父类
@PersistenceCapable(identityType = IdentityType.APPLICATION)
public class Employee {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Long id;
@Persistent
private String name;
@Persistent(mappedBy="employee")
private List<Contact> contacts;
public Employee(String e){
contacts = new ArrayList<Contact>();
name = e;
}
List<Contact> getContacts(){
return contacts;
}
Long getId(){
return …Run Code Online (Sandbox Code Playgroud) 有没有人遇到问题让Crystal XI在通过网络显示报告(由RAS提供)然后导出为PDF时嵌入字体?我们在一些报告中使用了条形码字体,它通过Web查看器和导出为PDF时工作正常.当我们将报表服务器从2000个框移动到2003框时,不再导出该字体.它确实在html查看器中正确显示,但是当您将其导出为PDF以进行打印时,PDF不包含该字体.True Type字体安装在新服务器上,具有令人反感的宽松权限,并且字体安装在所有客户端计算机上.有没有办法在某种"调试"模式下启动Crystal,它将发出有关它正在做什么的信息?
(编辑指定仅在通过RAS提供的页面导出为PDF时未嵌入字体时)
我在GAE for Java小组上发布了这个,但我希望能更快地得到一些答案:)
我决定对我的应用程序进行一些长期性能测试.我每5-30分钟创建一个小客户端点击应用程序,我用这样的客户端运行3-5个线程.
我发现响应时间差异很大,并开始调查问题.我发现原因很快.我遇到了以下主题中描述的相同问题:
获取"请求在等待太长时间后尝试为您的请求提供服务时中止".申请闲置后
我正在使用Springframework,它需要大约18到20秒来启动应用程序实例,这会导致响应时间从1秒(当请求点击运行应用程序时非常罕见)到创建新应用程序时的22秒.
这有什么解决方案吗?我正在考虑创建最基本的servlet来执行关键任务(提供API调用)并保持UI不变.但是我会放弃Springframework的所有好处.
这有什么解决方案吗?
在解决(黑客攻击)App Engine的许多限制之后,我在开发我的应用程序时遇到了这个限制,我认为这将使我离开App Engine ...这一直是很多时候想到如何赢得GAE问题而不是如何解决我的应用问题...
有帮助吗?
关心康拉德
我想我总是天真地认为SQL查询的select部分中的标量函数只会应用于满足where子句所有条件的行.
今天我正在调试供应商提供的一些代码并且让这个假设受到挑战.我能想到这个代码失败的唯一原因是,对于本应由WHERE子句过滤掉的数据调用了Substring()函数.但似乎在过滤发生之前应用了子串调用,查询失败.这是我的意思的一个例子.假设我们有两个表,每个表有2列,分别有2行和1行.每个中的第一列只是一个id.NAME只是一个字符串,NAME_LENGTH告诉我们名称中具有相同ID的字符数.请注意,只有具有多个字符的名称在LONG_NAMES表中具有相应的行.
NAMES: ID, NAME
1, "Peter"
2, "X"
LONG_NAMES: ID, NAME_LENGTH
1, 5
Run Code Online (Sandbox Code Playgroud)
如果我想要一个查询来打印最后3个字母的每个名字,我可能会先尝试这样的事情(现在假设是SQL Server语法):
SELECT substring(NAME,1,len(NAME)-3)
FROM NAMES;
Run Code Online (Sandbox Code Playgroud)
我很快就会发现这会给我一个错误,因为当它到达"X"时它将尝试在子串调用中使用负数,它将失败.我的供应商决定解决这个问题的方法是过滤掉字符串太短以至于len-3查询无效的行.他通过加入另一张桌子来做到这一点:
SELECT substring(NAMES.NAME,1,len(NAMES.NAME)-3)
FROM NAMES
INNER JOIN LONG_NAMES
ON NAMES.ID = LONG_NAMES.ID;
Run Code Online (Sandbox Code Playgroud)
乍一看,这个查询看起来可能有效.连接条件将消除任何具有足够短的NAME字段以使子字符串调用失败的行.
但是,根据我的观察,SQL Server有时会尝试计算表中所有内容的子字符串表达式,然后应用连接来过滤掉行.这应该是这样发生的吗?是否有记录的操作顺序,我可以在何时发现某些事情?它是特定于特定的数据库引擎还是SQL标准的一部分?如果我决定在我的NAMES表中包含一些谓词来过滤短名称(如len(NAME)> 3),SQL Server是否也可以选择在尝试应用子字符串后应用它?如果是这样,那么做一个子串的唯一安全方法似乎是将它包装在select中的"case when"构造中?
我有一个API密钥,我用于json搜索API上的Google自定义搜索查询,它位于:
https://ajax.googleapis.com/ajax/services/search/web?v=1.0&rsz=8&q=
我需要将客户端发送到一个URL,每个URL都可以为其域获取自定义API密钥.但是,我不记得我用来获取API密钥的URL.
有谁知道发送它们以获取密钥的最直接的URL?
这个看起来很完美:http://code.google.com/apis/loader/signup.html
但我不确定这是否是谷歌自定义搜索的正确位置,因为它指的是"Google Loader",我并不熟悉.
我偶尔使用Visual Studio(C#Express 2008)来处理一些供应商提供的C#代码.我希望让我的VS体验更像我对Eclipse的体验.我已经习惯了Eclipse处理下划线错误的方式(在java源代码中).当我在Eclipse中的代码中出错时,它会立即加下划线,如果我修复它,下划线几乎会立即消失,或者最糟糕的是,当我保存文件时.但是在Visual Studio中,下划线仍然存在,直到我下一次构建项目.
是否有一个我可以改变的设置,以便VS每次保存时都会构建,或者甚至在我打字时?这对C#来说难以处理,因为它在某些方面比Java更复杂吗?我是否需要找人向我购买完整(非快递)版本?另外,什么是波浪线下划线功能?我担心之前可能会问过这个问题,但我不知道要搜索的神奇词汇.
我知道的哈希结构 - HashTable,HashSet和HashMap.
难道他们都使用桶结构-即当两个散列码是类似 一模一样的一个元素不会覆盖其他的,相反,它们被放置在与哈希码相关联的同一个桶?