小编Boz*_*zho的帖子

Spring MVC 是否支持静态资产(css、js 和图像)的版本控制

Spring MVC 是否通过将上次修改日期附加到资产文件名来支持静态资产(css、js 和图像)的版本控制,从而自动有效地服务、缓存和使资产失效?

Rails 通过使用 asset_tag 助手来支持这一点。

我想添加一个文件的 last-modified-date 属性作为查询参数来提供来自服务器的静态资产,这样如果我修改静态文件(css、js、图像),我就不必修改我的代码和缓存失效可以自动发生。

谢谢你

caching web-applications spring-mvc

5
推荐指数
1
解决办法
3305
查看次数

浏览器如何处理Cookie?

浏览器如何管理Cookie?我的意思是,是否必须创建Cookie对象?

动机:我想登录一个cookie网站。如今,Cookie不仅是名称和值-它们还包含域,有效期等。

我需要使用Java的答案。

java browser cookies web-applications

5
推荐指数
1
解决办法
1662
查看次数

将 EJB 转换为 JSON Web 服务

我已经将 EJB 3.1 变成了 Web 服务。现在我需要创建用于与 JavaScript 组件通信的 JSON 网络服务。JavaScri[t 组件将使用接口的 JSON 版本与系统通信并获取所需的数据。由于性能原因,我不能使用 XML 而不是 JSON。我尝试自己研究,但没有找到任何解决方案。

请你有任何想法、解决方案或链接,我可以如何一起使用 EJB 和 JSON。

谢谢!最好的问候阿尔乔姆

java json web-services ejb

5
推荐指数
1
解决办法
5133
查看次数

用正则表达式查找年份

亲爱的,我会从列表中删除包含日期的字符串。例如:“90 年代音乐团体”必须删除。

我可以用java来做这个吗?

java regex

5
推荐指数
2
解决办法
8857
查看次数

正则表达式验证-显示令人反感的字符。javax.validation

JSR-303中有正则表达式验证(javax.validation)。例如:

@Pattern(regexp="[\w_\\.]+")
private String username;
Run Code Online (Sandbox Code Playgroud)

值无效(与正则表达式不匹配)时显示的默认消息类似于“必须匹配{regex}”。但是用户不了解正则表达式,因此向他们展示它是无关紧要的。一种选择是仅显示“用户名包含非法字符”,在大多数情况下可能会很好。但是最好显示哪个字符是错误的。

使用正则表达式无法直接实现-它匹配还是不匹配。您必须定义缺少某些组件的其他模式,或者尝试从字符串中删除字符直到匹配为止,然后将这些字符显示给用户。

总体而言。另一个问题是如何使用javax.validation实现此目的。

因此,总结一下问题:

如何使用javax.validation显示有问题的字符,以使消息看起来像“字符?,*和$是非法的”

java regex validation

5
推荐指数
1
解决办法
1万
查看次数

Servlet 映射:是否可以在运行时添加 Servlet 映射?

是否可以在运行时添加 servlet 映射?通过ContextListenerServlet 的方法还是在 Servlet 的方法中init()?

在我使用的应用程序中,所有请求都通过单个 Servlet 处理,并且它们的映射在web.xml文件中定义。映射的数量正在增加,添加新的映射需要新的版本。

将 servlet 映射到/*将不起作用,因为分派到JSP 的请求和静态内容也会路由到此 Servlet。

尽管如此,使用过滤器可能是一种选择,它会增加过滤器的要求,以了解 RequestDispatcher 的前缀路径。

例如:

调度程序 Servlet 映射

<servlet-mapping>
    <servlet-name>DispatcherServlet</servlet-name>
    <url-pattern>/action/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

路由过滤器定义

<filter>
    <filter-name>RoutingFilter</filter-name>
    <filter-class>com.ssv.web.filter.RoutingFilter</filter-class>
    <init-param>
        <param-name>exclude</param-name>
        <param-value>/static/**:/action/**:/**/*.jsp</param-value>
    </init-param>
    <init-param>
        <param-name>dispatcher-prefix</param-name>
        <param-value>/action/**</param-value>
    </init-param>
</filter>
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我想跳过创建过滤器、过滤器映射和 servlet 映射,而是在ContextListener.

我正在使用汤姆猫。

java tomcat servlets

5
推荐指数
1
解决办法
6131
查看次数

在类中创建数组

我在Java程序中有一个编译问题:

class FigureEditor {
   int[] a;             ----- Syntax error on token ";", , expected
   a = new int[5];
}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

java arrays

5
推荐指数
1
解决办法
95
查看次数

实习字符串上的嵌套同步块

标题听起来好像前面有很多问题.这是我的具体案例:

这是一个旅游门票销售系统.每条路线的门票数量都是有限的,因此两个人无法访问购买给定路线的最后一张门票(标准方案).但是,有"返回票证"选项..所以,我使用唯一的路径ID(数据库提供)来执行以下操作:

synchronized(bothRoutesUniqueString.intern()) {
    synchronized (routeId.intern()) {
        if (returnRouteId != null) {
            synchronized (returnRouteId.intern()) {
                return doPurchase(selectedRoute, selectedReturnRoute);
            }
        }
        return doPurchase(selectedRoute, selectedReturnRoute);
    }
}
Run Code Online (Sandbox Code Playgroud)

两个内部synchronized块是为了使线程在那里停止,只有当两个人同时购买这个特定路线的票时,而不是同时购买两个不同路线的票.第二次同步是因为有人可能试图同时购买转发路线作为出站路线.

最外面的synchronized区块是考虑场景,当两个人购买相同的门票组合时,逆转.例如,一个订购伦敦 - 曼彻斯特,另一个订购曼彻斯特 - 伦敦.如果没有外部同步块,这种情况可能会导致死锁.

(如果没有可用的票证,该doPurchase()方法返回一个Ticket对象,或者抛出一个异常)

现在,我完全清楚这是一个非常尴尬的解决方案,但是,如果它按预期工作,它会给出:

  • 处理整个复杂场景的10行(并且有适当的注释,它不会那么难理解)
  • 没有不必要的锁定 - 只有当它必须阻塞时,一切都会阻塞.
  • 数据库不可知论

我也知道这些场景是由悲观或乐观的数据库锁处理的,因为我使用的是Hibernate,所以这些也不难实现.

我认为使用VM群集可以使用上面的代码实现水平扩展.根据Teracotta文档,它允许将单节点多线程应用程序转换为多节点,并且:

Terracotta跟踪String.intern()调用并保证这些显式实例化字符串的引用相等性.由于对interned String对象的所有引用都指向规范值,因此即使对于分布式应用程序,引用相等性检查也将按预期工作.

那么,现在问题本身:

  • 你发现上述代码的任何缺点(除了它的尴尬)?
  • java.util.concurrent在这种情况下,API 是否有适用的类来帮助?
  • 为什么数据库锁定比这更好?

更新:由于大多数答案都是关注的OutOfMemoryError,我创建了一个基准测试intern(),并且内存没有被消耗掉.也许字符串表正在被清除,但这在我的情况下并不重要,因为我需要在竞争条件中对象相等,并且清除最近的字符串不应该发生在这一点:

System.out.println(Runtime.getRuntime().freeMemory());
for (int i = 0; i < 10000000; i ++) {
    String.valueOf(i).intern();
}
System.out.println(Runtime.getRuntime().freeMemory());
Run Code Online (Sandbox Code Playgroud)

PS环境是JRE 1.6

java concurrency multithreading synchronization

4
推荐指数
1
解决办法
1859
查看次数

java.awt.Desktop的问题

我的程序中有一个按钮,当按下时,它会带你到我的wiki页面关于该程序.我使用以下行来执行此操作:

java.awt.Desktop.getDesktop().browse(new java.net.URI("http://supuh.wikia.com/wiki/BHT"));
Run Code Online (Sandbox Code Playgroud)

问题是,无论程序运行的环境如何,我总是会收到以下错误:

java.security.AccessControlException: access denied (java.awt.AWTPermission showWindowWithoutWarningBanner)
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?请注意,这仅适用于一个程序.我制作的任何其他程序都可以使用相同的方法,没有问题.

退出钩子


在我的程序开始时,添加了这个钩子.没有它,程序运行良好......

System.setSecurityManager(new SecurityManager()
{
  @Override
  public void checkExit(int status)
  {
    closeFile(status);
  }
});
Run Code Online (Sandbox Code Playgroud)

需要这个钩子,但是这个browse(URI uri)方法不适用于它.解决方案?

java awt

4
推荐指数
1
解决办法
2640
查看次数

嵌入式数据库是否支持PL/SQL和Java API?

我正在寻找带有Java API的嵌入式数据库用于测试目的.我还需要pl/sql支持,因为我们在生产中使用oracle,迁移是用pl/sql编写的.

我想测试我的DAO对象,我需要在使用迁移脚本进行单元测试的过程中在内存中创建db.

现在我们使用HSQLDB,但它不支持pl/sql.

你能推荐一下吗?

java plsql embedded-database

4
推荐指数
1
解决办法
2729
查看次数