我有一个Spring/JPA应用程序,Hibernate作为JPA提供程序.我在Spring中配置了一个C3P0数据源:
<bean id="myJdbcDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<!-- Connection properties -->
<property name="driverClass" value="$DS{database.class}" />
<property name="jdbcUrl" value="$DS{database.url}" />
<property name="user" value="$DS{database.username}" />
<property name="password" value="$DS{database.password}" />
<!-- Pool properties -->
<property name="minPoolSize" value="5" />
<property name="maxPoolSize" value="20" />
<property name="maxStatements" value="50" />
<property name="idleConnectionTestPeriod" value="3000" />
<property name="loginTimeout" value="300" />
Run Code Online (Sandbox Code Playgroud)
然后我在Spring实体管理器工厂中指定了这个数据源,如下所示:
<bean id="myLocalEmf"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceUnitName" value="myapp-core" />
<property name="dataSource" ref="myJdbcDataSource" />
</bean>
Run Code Online (Sandbox Code Playgroud)
但是,我最近在浏览maven工件时注意到了"hibernate-c3p0".这是什么?这是我需要使用的东西吗?或者我已经正确配置了这个?
我的模特:
class Order(models.Model):
ordered_by = models.ForeignKey(User)
reasons = models.ManyToManyField(Reason)
class Reason(models.Model):
description = models.CharField()
Run Code Online (Sandbox Code Playgroud)
基本上,用户创建订单并给出该订单的原因.也就是说,约翰有两个订单(一个用于铅笔,因为他不在,因为他不喜欢他现在的股票.因为他已经出局所以第二笔订购钢笔).
我想打印出用户下订单的所有原因列表.所以在约翰之下,它应该打印出"他出去了","他不喜欢他现在的股票"; 那两条线.如果我只是简单地选择约翰的所有命令,重复它们并打印出他们的"理由"它将打印出"他已经出局","他不喜欢他现在的股票"然后"他又出局"了.我不想要这些重复的值.
如何选择所有订单的原因列表,以便列表包含所有唯一行?
因此,经过几个小时的解决方法,目前在Google App Engine上禁用了Reflection的限制,我想知道是否有人可以帮助我理解为什么对象反射可能构成威胁.是因为我可以检查一个类的私有变量还是有其他更深层次的原因?
k = [1,2,3,4,5]
for n in k
puts n
if n == 2
k.delete(n)
end
end
puts k.join(",")
# Result:
# 1
# 2
# 4
# 5
# [1,3,4,5]
# Desired:
# 1
# 2
# 3
# 4
# 5
# [1,3,4,5]
Run Code Online (Sandbox Code Playgroud)
其他数组迭代器,k.each也会发生同样的效果:
k = [1,2,3,4,5]
k.each do |n|
puts n
if n == 2
k.delete(n)
end
end
puts k.join(",")
Run Code Online (Sandbox Code Playgroud)
具有相同的输出.
这种情况发生的原因非常清楚...... Ruby实际上并没有迭代存储在数组中的对象,而只是将它变成一个漂亮的数组索引迭代器,从索引0开始,每次都增加索引直到它结束.但是当你删除一个项目时,它仍然会增加索引,所以它不会两次评估相同的索引,这是我想要的.
这可能不是正在发生的事情,但这是我能想到的最好的.
有干净的方法吗?是否已有可以执行此操作的内置迭代器?或者我是否需要弄脏并执行数组索引迭代器,并且在删除项目时不会增加?(或遍历数组的克隆,并从原始数组中删除)
澄清
我不只是想从数组中删除项目; 对不起,如果那是清楚的.我想要做的是遍历每个元素,并"处理"它; 此过程有时可能会删除它.为了更准确:
class Living_Thing
def initialize tracker,id
@tracker = …Run Code Online (Sandbox Code Playgroud) 我的网站偶尔会有相当可预测的流量突发,吞吐量比平常增加100倍.例如,我们将在电视节目中亮相,我预计在演出后的一小时内,我将获得比正常情况多100倍的流量.
我的理解是MySQL(InnoDB)通常将我的数据保存在一堆不同的地方:
考虑到我在EC2节点上并且大多数东西都经过相同的网络管道(文件系统是网络连接的),这太"耐用"了.此外,驱动器速度很慢.数据价值不高,我宁愿少花几分钟的数据丢失,而不是在人群到来时很可能发生中断.
在这些流量突发期间,我希望只有在我负担得起的情况下才能完成所有这些I/O. 我想尽可能多地保留在RAM中(与一小时内触摸的数据大小相比,我有相当大的RAM空间).如果缓冲区变得稀缺,或者I/O通道没有过载,那么我确定,我希望将事务转到commitlog或二进制日志以发送给slave.如果且仅当I/O通道没有过载时,我想回写实际的表.
换句话说,我希望MySQL/InnoDB使用"回写"缓存算法而不是"直写"缓存算法.我可以说服它这样做吗?
如果这是不可能的,我对一般的MySQL写性能优化技巧感兴趣.大多数文档都是关于优化读取性能的,但是当我收到大量用户时,我正在为所有用户创建帐户,因此这是一个繁重的工作量.
我有一个数据存储区,模型中有大约1,000,000个实体.我想从中获取10个随机实体.
我不知道该怎么做?有人可以帮忙吗?
在长度为n的序列中,其中n = 2k + 3,即有k个唯一数字出现两次,并且三个数字仅出现一次.
问题是:如何找到仅出现一次的三个唯一数字?
例如,在顺序1 1 2 6 3 6 5 7 7中,三个唯一数字是2 3 5.
注意:3 <= n <1e6,数字范围为1到2e9
内存限制:1000KB,这意味着我们无法存储整个序列.
方法我试过(内存限制超过)?
我初始化一个树,当读入一个数字时,我尝试将其从树中删除,如果remove返回false(未找到),我将它添加到树中.最后,树有三个数字.它工作,但内存限制超过.
我知道如何使用位操作找到一个或两个这样的数字.所以我想知道是否
我们可以找到三个使用相同的方法(或一些类似的方法)?
找到一个/两个数字的方法只出现一次:
如果只有一个数字出现一次,我们可以对序列应用XOR来找到它.
如果有两个,我们可以先对序列应用XOR,然后将序列分成2个部分,结果为1,然后再将XOR应用于2个部分,我们将找到答案.
我把我的页面简化为最简单的东西,它仍然无法在IE8中运行.
这是整个 html页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml" xml:lang="en" lang="en">
<head></head>
<body>
<div id="fb-root"></div>
<fb:login-button></fb:login-button>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({appId: 'd663755ef4dd07c246e047ea97b44d6a', status: true, cookie: true, xfbml: true});
FB.Event.subscribe('auth.sessionChange', function(response) {
alert(JSON.stringify(response));
});
FB.getLoginStatus(function (response) { alert(JSON.stringify(response)); });
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在firefox,safari和chrome(在Mac上),我得到了我期望的行为:如果我没有登录Facebook,我会在页面加载时获得一个空会话对话框.当我单击"登录"按钮并登录时,我会收到第二个会话对话框.如果我登录Facebook,我会收到两个会话对话:一个来自getLoginStatus调用,另一个来自事件.
在IE8中,加载页面时没有对话框.不调用getLoginStatus回调.当我单击Login按钮时,我会看到一个对话框,但它有一个非常奇怪的错误:
无效的论点
Facebook Connect跨域接收器URL(http://static.ak.fbcdn.net/connect/xd_proxy.php#?=&cb=f3e91da434653f2&origin=http%3A%2F%2Fmysiteurl.com%2Ff210cba91f2a6d4&relation=opener&transport=flash&frame=f27aa957225164&result = xxRESULTTOKENxx)必须将应用程序的Connect URL(http://mysiteurl.com/)作为前缀.您可以在"应用程序设置编辑器"中配置"连接URL".
我已经清理了上面的Connect URL,但它是正确的.
该对话框确实有用户名/密码字段.如果我登录,对话框会被重定向到我的Connect URL,但是没有fb cookie,所以当然没有任何作用.
我在这做错了什么?
更新(2010年9月10日):
这个问题并不普遍.我的网站网址中有一个端口号,因为它是我的测试网站:http://mysiteurl.com:12345.没有端口号,ie8似乎没问题.使用端口号,它会像以前一样继续失败.但是,错误消息现在更简洁:
无效的论点
应用程序配置不允许使用URL
此外,这个问题是IE特有的(实际上,我怀疑它是特定于闪存XD传输,但我不知道如何确认).它适用于我尝试过的所有其他平台/浏览器对.
我仍然没有接近使用端口号的URL进行此工作.
每次我尝试在Javascript中设置调试点,在设计模式下或在runniong时设置调试点,我得到错误:
trying to set a breakpoint in javascript: this is not a valid location for a breakpoint
Run Code Online (Sandbox Code Playgroud)
当我在Debugging Just In Time下进入VS2010的选项屏幕时,我看到选择了Managed,Native和Script,
我还把行"调试器"放了 在被调用的javascript函数的第一行中,但是永远不会中断.
在Web.Config中(尽管这可能是针对已编译的代码:):
<compilation debug="true
Run Code Online (Sandbox Code Playgroud)
我在新机器上重温这个问题......你可以帮忙吗?
编辑:我遗漏了一个巨大的细节:
谷歌浏览器是我的默认浏览器.
(我正在尝试调试仅限Chrome的错误.)
我必须使用VS2010以外的其他调试工具吗?我认为它应该有效.太有希望了,是吗?
javascript debugging google-chrome visual-studio-2010 windows-7