在客户站点部署Web应用程序(在测试环境中)期间,我们遇到了应用程序日志记录问题。我将很快尝试描述当前情况:实现使用java.util.logging检索的Logger和apache.commons.logging.在部署的包中存在一个指向JUL的commons-logging.properties。应用程序在Tomcat6.x上运行客户决定他想在tomcat上使用Log4J并对其进行配置以使其正常工作——当然它不适用于上述应用程序。因为看起来我们无论如何都需要更改日志记录实现-我想请您提供一些关于如何在Web应用程序中实现日志记录的最佳实践。以下事情应该是可能的:客户需要能够在不修改
来自只有一种方法来编写异常处理的PHP世界。我发现Java中的异常包装有点“丑陋”:publicvoidexampleOneException(Stringinput)throwsMyBusinessException{try{//dosomething}catch(NumberFormatExceptione){thrownewMyBusinessException("Error...",e);}}我更喜欢使用这种风格:publicvoidexampleTwoException(){try{//dosomething}catch(MyBusinessExceptione){log.e
我对在Java中使用仿函数(函数对象)很感兴趣。通过快速谷歌搜索,我找到了这3个包:Java泛型算法:http://jga.sourceforge.net/公共(public)仿函数:http://commons.apache.org/sandbox/functor/芒果:http://www.jezuk.co.uk/cgi-bin/view/mango在3中,JGA似乎拥有最好的设计。但我怀疑这里实际使用过一个或多个包的其他人可能能够就这些(可能还有其他)仿函数包的优缺点提供更多见解。 最佳答案 芒果为0、1和2参数函数提供接口(
从Java8开始,我们可以在接口(interface)中使用默认方法和静态方法。常量接口(interface)模式是对接口(interface)的不良使用,称为常量接口(interface)反模式。>EffectiveJava,第17项:Theconstantinterfacepatternisapooruseofinterfaces.Thataclassusessomeconstantsinternallyisanimplementationdetail.Implementingaconstantinterfacecausesthisimplementationdetailtolea
我在一个中型开发团队工作,该团队维护一个用Java1.4编写的8年以上历史的Web应用程序。对于新的开发,我总是试图说服人们遵守更新的标准和最佳实践,从使用新的命名标准(如HtmlImplementation而不是HTMLImplementation)等简单的事情,到诸如为什么针对接口(interface)编码比针对接口(interface)编码更好的事情具体的类,支持不变性或对象组合而不是类继承。我找到了这个genericlinkinStackoverflow,它不是面向Java的,也不完整。我总是试图解释我的论点背后的基本原理,并且总是建议人们购买最新版本的EffectiveJav
独立Java应用程序是否有“最佳”或更流行的数据库?我目前正在手写,但我想知道通常做的事情,如果有什么是通常做的。更新:谈论小型应用程序(可能会增长,但目前还很小) 最佳答案 我建议使用类似SQLite的东西与SQLiteJDBC.听起来也像HyperSQL和Derby(某些Java版本附带)是流行的选择。 关于java-独立Java应用程序是否有"best"或最流行的数据库?,我们在StackOverflow上找到一个类似的问题: https://stack
BrianGoetz的JavaConcurrencyInPractice提供了一个用于并发使用的高效可伸缩缓存示例。该示例的最终版本显示了Memoizer类(第108页)的实现,显示了这样一个缓存。我想知道为什么这个类没有用@ThreadSafe注释?缓存的客户端类Factorizer已使用@ThreadSafe正确注释。附录指出,如果一个类未使用@ThreadSafe或@Immutable进行注释,则应假定它不是线程安全的。不过,Memoizer似乎是线程安全的。这是Memoizer的代码:publicclassMemoizerimplementsComputable{private
我目前正在学习JSF2.0,我很高兴这个对话范围功能的存在,这对于在同一页面上打开一个新选项卡或一个新窗口并拥有单独的资源非常有帮助,而不是相互覆盖.但我很好奇如何以一种好的方式实现这一点,关于何时开始对话以及何时结束对话。在我的例子中,我有每个JSF页面的每个CDIbean。假设我有一个菜单,当它被点击时,这将导致页面A,并且从A可能导致B,B可能导致C,C可能导致D,所有这4个页面都连接在一个页面上链。可以从B或C或Dbean访问A的bean属性,也可以从C或Dbean访问B的属性等等。现在我很困惑:是否所有这些ABCD应该是是否在对话范围内,或者也许只是一个?因为我觉得有时来自另
我将以SO站点为例。要转到问题列表,URL是www.stackoverflow.com/questions。在幕后,这会转到Controller(名称未知)及其操作之一。假设这是controller=home和action=questions。如何防止用户键入www.stackoverflow.com/home/questions这会导致同一页面并降低页面排名作为搜索引擎优化而言。是否需要重定向来解决这个问题?是否需要一些特殊的路由规则来处理这种情况?还有别的吗?谢谢 最佳答案 我假设Controller是questions并且Ac
似乎有几种不同的技术,所以我希望得到一个“明确”的答案......在网站上,通常的做法是创建一个链接到主页的Logo。我想做同样的事情,同时针对搜索引擎、屏幕阅读器、IE6+以及禁用CSS和/或图像的浏览器进行最佳优化。示例一:不使用h1标签。不太适合SEO,对吗?示例二:在某处找到了这个。CSS看起来有点老套。StackOverflow/*css*/#logo{padding:70px000;overflow:hidden;background-image:url("logo.png");background-repeat:no-repeat;height:0px!important