外键,约束,默认值等项目是否应由数据库管理系统(在本例中为MS Sql 2005)或应用程序处理?我听过双方的意见,老实说我不确定要走哪条路.
我原本打算将它构建到数据库中,但是我发现使用当前的数据库设计并不总是这样.例如,某些表包含循环引用,无法使用链接ON UPDATE CASCADE.我遇到的另一个问题是我们可能会使用多个数据库/服务器,并且外键约束在链接服务器上不起作用.
我有一些开发人员建议我在应用程序层进行数据验证,并将数据库保留为存储数据的地方.我喜欢这个想法,但我已经在很多地方读过,最好在数据库中建立参照完整性,以允许不通过应用层传递的事务.我同意这一点,虽然当我们完成所有数据库事务时应该通过应用程序.即使我们决定稍后构建插件,我们也在使用ObjectModel框架,因此永远不需要重写插入/更新/删除查询.
所以我的问题是,在这种情况下,你仍然建议在数据库中构建引用完整性,还是可以将它构建到应用程序层中?为什么?
考虑一下这个不卫生的Scheme宏:
(define-macro for
(lambda (i i1 i2 . body)
(let ((start (gensym))
(stop (gensym))
(loop (gensym)))
`(let ((,start ,i1)
(,stop ,i2))
(let ,loop ((,i ,start))
(if (< ,i ,stop)
(begin ,@body
(,loop (+ 1 ,i)))))))))
Run Code Online (Sandbox Code Playgroud)
它实现了一个for循环(我正在使用Gauche和Gambit):
> (for i 1 5
(print i))
1
2
3
4
#
但是,由于我没有重命名if,这肯定会破坏:
(let ((if 'x))
(for i 1 5
(print i)))
Run Code Online (Sandbox Code Playgroud)
它开始计数,永不停止.
现在,我已经尝试过宏扩展这个并且无法确切地看到它为什么循环而不仅仅是发出错误信号.
Gambit的扩展(没有if重新定义部分)是这样的:
(let ((#:start15 1)
(#:stop16 5))
((letrec ((#:loop17 (lambda (i)
(if (< i #:stop16)
(begin (print i) …Run Code Online (Sandbox Code Playgroud) 如果我将文件上传到我的服务器,从而让客户/客户下载这些文件.我如何限制文件的访问权限?
比如,如果我将文件上传到www.domain.com/files/download.zip
如果用户具有正确的权限,他可以下载该文件,但是如果用户知道文件本身的直接链接怎么办?
因为我可以想象如果他们没有查看链接的权限,如何不显示网站上用户的链接,但是如何防止有人只是输入文件位置的直接URL来下载文件?
提前致谢.
int a= {1,3,6,7,1,2};
Run Code Online (Sandbox Code Playgroud)
哪种是对以下数组进行排序的最佳排序技术,如果存在重复,则如何处理它们.也是最好的分拣技术....
void BubbleSort(int a[], int array_size)
{
int i, j, temp;
for (i = 0; i < (array_size - 1); ++i)
{
for (j = 0; j < array_size - 1 - i; ++j )
{
if (a[j] > a[j+1])
{
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在研究一个非常慢的SQL查询(源自使用JBoss 5.1中部署的Hibernate的Java应用程序).此特定查询返回了大约10K记录,但仍然需要40秒或更多.
我最终用数据库嗅探了流量(wireshark有一个TNS的解剖器)并发现了一些意想不到的东西.当数据来自服务器时,每个结果行都在其自己的TNS数据包中.此外,在从数据库发送下一个TNS数据包之前,客户端(即应用服务器)确认每个TNS数据包.对于10K记录,有10K往返来获取数据包并确认它.对性能的影响是巨大的.
这非常低效.TCP允许更大的数据包并具有许多机制(滑动窗口,延迟的ACK)以减少延迟并提高吞吐量.但是,在这种情况下,它是顶部的TNS协议,它增加了自己的协商.
如果我从Oracle的SQL Developer运行相同的查询,我看不到这种模式.查询在大约1/10的时间内完成,没有数千次往返.
简短版本:Oracle的有线协议(TNS)似乎在每个查询结果行的一个TNS数据包中传递数据,并要求在服务器发送下一个数据包之前由客户端确认每个数据包.
我已经找到了一些关于这个[这里] [1]的信息(向下滚动直到关于'tnsnames.ora文件中的SDU和TDU参数'部分).
因此我的问题是:是否可以控制Oracle驱动程序的行为(我使用10.2.0.4.0),因此TNS协议更有效?同样,这是一个在JBoss中部署的非常标准的J2EE应用程序.
非常感谢!
我有一个Mettler Toledo邮政秤(PS60),我需要配置和读取使用USB连接的权重.该秤使用Microsoft USB POS HID进行刻度驱动.我将连接11到12个这些秤,并且还需要识别每个秤.作为我的用户的想法将从一个尺度删除某些东西并将其放在另一个尺度上,我需要确保他们从正确的尺度上这样做.
我没有完成USB开发的任何工作,我真的在试图开始使用我的车轮.任何人都可以向我指出一些简单的例子,或者有助于我快速加速的文档吗?我必须知道周一如何做到这一点.
我需要做的总结:
以下是我的模型设置的片段:
class Profile(models.Model):
name = models.CharField(max_length=32)
accout = models.ManyToManyField(
'project.Account',
through='project.ProfileAccount'
)
def __unicode__(self)
return self.name
class Accounts(models.Model):
name = models.CharField(max_length=32)
type = models.CharField(max_length=32)
class Meta:
ordering = ('name',)
def __unicode__(self)
return self.name
class ProfileAccounts(models.Model):
profile = models.ForeignKey('project.Profile')
account = models.ForeignKey('project.Accounts')
number = models.PositiveIntegerField()
class Meta:
ordering = ('number',)
Run Code Online (Sandbox Code Playgroud)
然后,当我访问帐户时,如何在中间ProfileAccounts模型中按"数字"排序,而不是在帐户模型中使用默认的"名称"?
for acct_number in self.profile.accounts.all():
pass
Run Code Online (Sandbox Code Playgroud)
这不起作用,但是我希望它如何访问这些数据的要点:
for scanline_field in self.scanline_profile.fields.all().order_by('number'):
pass
Run Code Online (Sandbox Code Playgroud) 我只想在Web用户控件中添加一些客户端(JQuery Javascript)验证.我放了一个OnClientClick处理程序,然后调用该函数.但是,即使我返回"false",OnClick方法也会被触发.我究竟做错了什么 ?
我使用VS 2010,使用JQuery 1.4.2定位4.0框架.和JQuery UI 1.8.4.
这是一个示例代码:
<td style="text-align:right"><asp:Button ID="btnAddSave" OnClientClick="return ValidateMail();" OnClick="btnAddSave_Click" runat="server" Text="Submit" /></td>
Run Code Online (Sandbox Code Playgroud)
脚本方法:
function ValidateMail() {
alert("Bouton clicked");
return false;
Run Code Online (Sandbox Code Playgroud)
}
如果我在Page_Load事件中放置一个断点,我看到我进入并且还执行了btnAddSave_Click事件.
的Java/Eclipse的.开发工作正常.我们有Windows或FreeBSD用于构建服务器.
部署虽然我想做以下(以非常自动化的方式):
1:从源代码控制中拉下所有内容(perforce)
2:使用可配置的javac和参数构建所有源代码(以及所有依赖项目)(我们希望看看不同的编译器是否会影响性能)
3:运行proguard
4:将所有资源(.class,"res /"目录,外部.jars等)打包到jar中.
5:创建.jnlp Web启动
6:创建本机Windows安装程序(任何建议?)
7)对于我们的Android应用程序4/5应该是构建/登录到可部署的android包而不是
我们尝试过蚂蚁,但看起来非常笨重,容易出错.也许最好的方法就是编写所有脚本?似乎应该有一个很好的方法来做到这一点.
我的矩形结构有以下成员:x,y,width,height.
给定一个点x,y知道x,y是否在矩形内部的最快方法是什么?我会做很多这些,所以速度很重要.