小编che*_*vim的帖子

从PHP数组中删除字符串?

是否可以在不知道索引的情况下从PHP数组中删除字符串(参见下面的示例)?

例:

array = array("string1", "string2", "string3", "string4", "string5");
Run Code Online (Sandbox Code Playgroud)

我需要删除string3.

php arrays string

17
推荐指数
3
解决办法
3万
查看次数

如何在hsqldb中"选择current_timestamp"?

甲骨文:

select systimestamp from dual
Run Code Online (Sandbox Code Playgroud)

MySQL的:

select current_timestamp
Run Code Online (Sandbox Code Playgroud)

SQL Server:

select current_timestamp
Run Code Online (Sandbox Code Playgroud)

PostgreSQL的:

select current_timestamp
Run Code Online (Sandbox Code Playgroud)

问题是,如何获取HSQLDB中的当前时间戳?我使用的是1.8.0.10版

sql database hsqldb embedded-database

16
推荐指数
4
解决办法
3万
查看次数

为什么24*60*60*1000*1000除以24*60*60*1000在Java中不等于1000?

为什么24*60*60*1000*1000除以24*60*60*1000在Java中不等于1000?

java puzzle math

13
推荐指数
2
解决办法
2万
查看次数

避免同一缓存区域的多次重新填充(由于并发)

我有一个高流量的网站,我使用休眠.我还使用ehcache来缓存生成页面所需的一些实体和查询.

问题是"并行缓存未命中",长期解释是,当应用程序启动并且缓存区域很冷时,每个缓存区域被不同的线程多次填充(而不是仅一次),因为该站点被许多用户击中同时.此外,当某些缓存区域无效时,由于相同的原因,它会被重新填充多次.我怎么能避免这个?

我设法通过向hibernate.cache.provider_class提供我自己的实现,将1个实体和1个查询缓存转换为BlockingCache,但BlockingCache的语义似乎不起作用.甚至最糟糕的是BlockingCache死锁(块)和应用程序完全挂起.线程转储显示在get操作上阻塞处理在BlockingCache的互斥锁上.

那么,问题是,Hibernate是否支持这种用途?

如果没有,你如何在生产中解决这个问题?

编辑:hibernate.cache.provider_class指向我的自定义缓存提供程序,它是SingletonEhCacheProvider的复制粘贴和start()方法的结尾(在第136行之后)我这样做:

Ehcache cache = manager.getEhcache("foo");
if (!(cache instanceof BlockingCache)) {
    manager.replaceCacheWithDecoratedCache(cache, new BlockingCache(cache));
}
Run Code Online (Sandbox Code Playgroud)

这样在初始化时,在其他人触摸名为"foo"的缓存之前,我用BlockingCache来装饰它."foo"是查询缓存,"bar"(相同的代码但省略)是pojo的实体缓存.

编辑2:"似乎不起作用"意味着最初的问题仍然存在.由于并发性,缓存"foo"仍然使用相同的数据重新填充多次.我通过使用10个线程的JMeter强调网站来验证这一点.我希望9个线程阻塞,直到第一个请求"foo"数据完成它的工作(执行查询,在缓存中存储数据),然后直接从缓存中获取数据.

编辑3:可以看到对此问题的另一种解释https://forum.hibernate.org/viewtopic.php?f=1&t=964391&start=0但没有明确的答案.

java concurrency caching hibernate ehcache

13
推荐指数
2
解决办法
4820
查看次数

完整的GC变得非常频繁

我在一个tomcat实例上运行了一个Java webapp.在高峰时段,webapp每秒大约30页,通常大约15页.

我的环境是:

O/S: SUSE Linux Enterprise Server 10 (x86_64)
RAM: 16GB

server: Tomcat 6.0.20
JVM: Java HotSpot(TM) 64-Bit Server VM 1.6.0_14
JVM options:
CATALINA_OPTS="-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
               -XX:+UseParallelGC
               -Djava.awt.headless=true
               -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps"
JAVA_OPTS="-server"
Run Code Online (Sandbox Code Playgroud)

经过几天的正常运行后,Full GC开始更频繁地发生,并且它成为应用程序可用性的严重问题.在tomcat重新启动之后,问题就会消失,但当然会在5到10天或30天之后返回(不一致).

重启之前和之后的完整GC日志位于http://pastebin.com/raw.php?i=4NtkNXmi

它显示重启之前的日志,在6.6天的正常运行时间,因为完整的GC需要2.5秒,并且每隔约6秒发生一次.

然后它会在重新启动后显示一个日志,其中Full GC仅每5-10分钟发生一次.

jmap -dump:format=b,file=dump.hprof PID当Full GCs出现时,我有两个转储(我不确定在完整GC发生时是否完全正确,或者在两个完整GC之间),并在http://www.eclipse.org中打开它们/ mat /但在泄漏嫌疑人中没有得到任何有用的东西:

  • 60MB:"org.hibernate.impl.SessionFactoryImpl"的1个实例(我使用带有ehcache的hibernate)
  • 80MB:1,024个"org.apache.tomcat.util.threads.ThreadWithAttributes"实例(这些可能是tomcat的1024个工作者)
  • 45MB:37个"net.sf.ehcache.store.compound.impl.MemoryOnlyStore"实例(这些应该是我在ehcache中的~37个缓存区域)

请注意,我从未得到过OutOfMemoryError.

关于我下一步应该去哪看的任何想法?

java performance garbage-collection jvm

13
推荐指数
2
解决办法
2万
查看次数

为什么在Java中使用Lists而不是Arrays是首选?

很多人和作者建议我们使用list而不是array.

List <Integer> list = new ArrayList<Integer>();
list.addElement(1);
....
Run Code Online (Sandbox Code Playgroud)

它背后的原因是什么?

java arrays list arraylist data-structures

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

PatternLayout(log4j)的C,F,L,l和M到底有多慢?

这是常识C,F,L,lM的PatternLayout的速度很慢:

警告生成调用者位置信息非常慢,应该避免,除非执行速度不是问题.

此外,本书还提到某些应用程序只能通过更改日志记录格式来获得10%的速度.

但问题是,这些转换字符到底有多慢?

java performance logging design-patterns log4j

12
推荐指数
2
解决办法
1764
查看次数

JavaScript的正则表达式表示法有什么问题?

我正在阅读Douglas Crockford的网页,JavaScript:世界上最容易被误解的编程语言,我不禁注意到,在设计错误下,他提到了"字面正则表达式的符号".究竟他在说什么?JavaScript的正则表达式表示法有什么问题,为什么?

javascript regex syntax literals

11
推荐指数
1
解决办法
1297
查看次数

在hibernate中映射一个表中的多个集合

我有User一个Log班级(我无法改变):

class User {
    private long id;
    private String name;
    private Set<Log> accessLogs;
    private Set<Log> actionLogs;
}

class Log {
    private String what;
    private Date when;
}
Run Code Online (Sandbox Code Playgroud)

可能的映射将如下所示:

<class name="com.example.User" table="users">
    <id name="id" access="field">
        <generator class="native" />
    </id>

    <property name="name" length="256" />

    <set name="accessLogs" table="user_access_logs" cascade="all-delete-orphan" order-by="`when`">
        <key column="user_id" />
        <composite-element class="com.example.Log">
            <property name="what" length="512" />
            <property name="when" column="`when`" />
        </composite-element>
    </set>

    <set name="actionLogs" table="user_action_logs" cascade="all-delete-orphan" order-by="`when`">
        <key column="user_id" />
        <composite-element class="com.example.Log">
            <property name="what" length="512" /> …
Run Code Online (Sandbox Code Playgroud)

java hibernate hibernate-mapping

11
推荐指数
2
解决办法
4104
查看次数

JVM在RHEL 5.2的压力下崩溃

4到24小时 4小时到8天的压力测试(30个线程点击应用程序)后,我在(当前最新的)tomcat 6.0.24上运行了一个Web应用程序(当前最新的)jdk 1.6.0.18崩溃了6 mil.综合浏览量/天).这是RHEL 5.2(Tikanga).

崩溃报告位于http://pastebin.com/f639a6cf1,崩溃的一致部分是:

  • 正在抛出一个SIGSEGV
  • 在libjvm.so上
  • 伊甸园空间永远满(100%)

JVM使用以下选项运行:

CATALINA_OPTS="-server -Xms512m -Xmx1024m -Djava.awt.headless=true"
Run Code Online (Sandbox Code Playgroud)

我还使用http://memtest.org/测试了内存中的硬件问题48小时(整个内存14次通过)没有任何错误.

我已经能够-verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps检查任何GC趋势或空间耗尽,但那里没有任何可疑之处.GC和完整GC以可预测的间隔发生,几乎总是释放相同数量的内存容量.

我的应用程序不直接使用任何本机代码.

关于我接下来要去哪看的任何想法?

编辑 - 更多信息:

1)这个JDK中没有客户端vm:

[foo@localhost ~]$ java -version -server
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed mode)

[foo@localhost ~]$ java -version -client
java version "1.6.0_18"
Java(TM) SE Runtime Environment (build 1.6.0_18-b07)
Java HotSpot(TM) 64-Bit Server VM (build 16.0-b13, mixed …
Run Code Online (Sandbox Code Playgroud)

java crash jvm rhel segmentation-fault

10
推荐指数
1
解决办法
2807
查看次数