我之前使用过Trac/Subversion,非常喜欢集成.我目前的项目是使用Mercurial进行分布式开发,能够跟踪问题/错误并将其与Mercurial集成是一件好事.我意识到这对于DVCS的本质来说可能很棘手.
我有两个用Java编写的应用程序,它们通过网络使用XML消息相互通信.我在接收端使用SAX解析器从消息中取出数据.其中一个要求是将二进制数据嵌入XML消息中,但SAX不喜欢这样.有谁知道如何做到这一点?
更新:我使用apache commons编解码器库中的Base64类,以防其他人尝试类似的东西.
我希望能够捕获当用户请求不存在的控制器并将其重定向到404页面时引发的异常.我怎样才能做到这一点?
例如,用户请求http://www.nosite.com/paeges/1(应该是 /pages/).如何制作它以便重新定向到404而不是异常屏幕?
如果您有相同报告的两个版本(.rpt),并且您想确定具体的差异,那么最好的方法是什么?我已经看到了一些商业工具来做到这一点,但我并不太感兴趣,因为这些工具应该是相对直接的.我可以挂钩到Crystal API并简单列出每个字段的所有属性吗?请有人告诉我,某个地方有一个开源项目可以做到这一点...... @ :-)
@Kogus,不会将输出区分为文本隐藏任何格式差异?
@ladoucep,我似乎无法在没有数据的情况下导出报告.
当然我知道Ajax,但Ajax的问题是浏览器应经常轮询服务器以查找是否有新数据.这会增加服务器负载.
除了经常轮询服务器之外,还有更好的方法(甚至使用Ajax)吗?
我有一个大型应用程序(约50个模块)使用类似于以下的结构:
我想将应用程序导入Maven和Subversion.经过一些研究后,我发现存在两种实用的方法.
一个是使用树结构,就像前一个一样.这种结构的缺点是你需要大量的调整/黑客才能使多模块报告与Maven一起工作.另一个缺点是在Subversion中,标准的trunk/tags/branches方法为存储库增加了更多的复杂性.
另一种方法使用扁平结构,其中只有一个父项目,所有模块,子模块和子模块部分都是父项目的直接子项.这种方法适用于报告,并且在Subversion中更容易,但是我觉得我这样失去了一些结构.
从长远来看,你会选择哪种方式?为什么?
Project Darkstar是昨晚在纽约市Google办公室举行的每月JavaSIG会议的主题.对于那些不了解(可能是每个人)的人来说,Project Darkstar是一个大型多人在线游戏的框架,试图照顾所有"硬盘".基本的想法是你编写游戏服务器逻辑,使所有操作都分解成微小的任务.您将这些任务传递给Project Darkstar框架,该框架处理将它们分发到集群中的特定节点,任何并发问题,最后持久保存数据.
显然,对于视频游戏而言,这种事情与企业应用程序有很大不同.发表演讲的吉姆·沃尔多称,MMO游戏的数据库读/写比率为50/50,而企业应用程序更像是90%读取,10%写入.他还声称大多数现有的MMO都会将所有内容保存在内存中,并且每6小时只会转储到数据库中.这意味着如果服务器出现故障,您将丢失自上次数据库转储以来的所有工作.
现在,该项目本身听起来很酷,但我不认为该行业会接受它.首先,您必须用Java编写服务器代码.客户端代码可以用任何东西编写(Jim声称ActionScript 3是最受欢迎的,遵循C++),但服务器的东西必须是Java.对我来说听起来不错,但我的印象是游戏行业的每个人都讨厌Java.
其次,与开发人员更喜欢使用现有框架和库的其他行业不同,游戏行业的人似乎喜欢自己编写所有内容.不仅如此,他们还喜欢为他们制作的每一款新游戏重写所有内容.在开发人员使用Havok作为物理,虚幻引擎3作为他们的平台等的地方,情况开始发生变化,但在大多数情况下看起来一切都仍然是专有的.
那么Darkstar项目的那些人是不是在浪费时间?像这样的通用框架能否真正适用于具有所需性能的复杂游戏?即使它确实有效,游戏公司是否愿意使用它?
我们在Stack Overflow SQL Server 2005数据库中看到了一些有害但罕见的死锁条件.
我附上了探查器,使用这篇关于解决死锁问题的优秀文章设置了一个跟踪配置文件,并捕获了一堆示例.奇怪的是,死锁写入始终是相同的:
UPDATE [dbo].[Posts]
SET [AnswerCount] = @p1, [LastActivityDate] = @p2, [LastActivityUserId] = @p3
WHERE [Id] = @p0
Run Code Online (Sandbox Code Playgroud)
另一个死锁声明各不相同,但它通常是对posts表的一些简单,简单的读取.这个人总是在僵局中被杀死.这是一个例子
SELECT
[t0].[Id], [t0].[PostTypeId], [t0].[Score], [t0].[Views], [t0].[AnswerCount],
[t0].[AcceptedAnswerId], [t0].[IsLocked], [t0].[IsLockedEdit], [t0].[ParentId],
[t0].[CurrentRevisionId], [t0].[FirstRevisionId], [t0].[LockedReason],
[t0].[LastActivityDate], [t0].[LastActivityUserId]
FROM [dbo].[Posts] AS [t0]
WHERE [t0].[ParentId] = @p0
Run Code Online (Sandbox Code Playgroud)
要非常清楚,我们没有看到写/写死锁,而是读/写.
我们目前混合使用LINQ和参数化SQL查询.我们已添加with (nolock)到所有SQL查询中.这可能对一些人有所帮助.我们昨天修复了一个(非常)写得不好的徽章查询,每次运行时间超过20秒,每分钟运行一次.我希望这是一些锁定问题的根源!
不幸的是,我在大约2小时前遇到了另一个死锁错误.同样的症状,同样的罪魁祸首写.
真正奇怪的是,您在上面看到的锁定写入SQL语句是非常特定的代码路径的一部分.它仅在向问题添加新答案时执行 - 它使用新答案计数和最后日期/用户更新父问题.显然,这与我们正在进行的大量读取相比并不常见!据我所知,我们在应用程序的任何地方都没有进行大量的写操作.
我意识到NOLOCK是一个巨大的锤子,但我们在这里运行的大多数查询都不需要那么准确.如果您的用户个人资料已过期几秒,您会关心吗?
正如Scott Hanselman在这里讨论的那样,将NOLOCK与Linq一起使用有点困难.
我们正在调整使用的想法
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Run Code Online (Sandbox Code Playgroud)
在基本数据库上下文中,以便我们所有的LINQ查询都有此设置.没有它,我们必须在3-4行事务代码块中包装我们所做的每个LINQ调用(好吧,简单的读取,这是绝大多数),这很难看.
我想我有点沮丧的是,SQL 2005中的琐碎读取可能会使写入死锁.我可以看到写/写死锁是一个很大的问题,但 …
java ×3
svn ×2
.net ×1
ajax ×1
asp.net-mvc ×1
binary ×1
binary-data ×1
bug-tracking ×1
c# ×1
comet ×1
concurrency ×1
database ×1
deadlock ×1
diff ×1
distributed ×1
django ×1
exception ×1
file ×1
integration ×1
maven-2 ×1
mercurial ×1
routes ×1
sql-server ×1
webserver ×1
xml ×1