我正在使用guava来缓存热数据.当缓存中不存在数据时,我必须从这样的数据库中获取它.
public final static LoadingCache<ObjectId, User> UID2UCache = CacheBuilder.newBuilder()
//.maximumSize(2000)
.weakKeys()
.weakValues()
.expireAfterAccess(10, TimeUnit.MINUTES)
.build(
new CacheLoader<ObjectId, User>() {
@Override
public User load(ObjectId k) throws Exception {
User u = DataLoader.datastore.find(User.class).field("_id").equal(k).get();
return u;
}
});
Run Code Online (Sandbox Code Playgroud)
我的问题是当数据在数据库中也不存在时,我宁愿返回null而不做任何缓存.但是guava只是在缓存中使用密钥保存null并在我得到它时抛出异常
com.google.common.cache.CacheLoader $ InvalidCacheLoadException:CacheLoader为key shisoft返回null.
那么,如何避免缓存空值?
这是一个简单的问题,但我不明白.我想检测字符串中的url并用缩短的字符串替换它们.
我从stackoverflow中找到了这个表达式,但结果却是 http
Pattern p = Pattern.compile("\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]",Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(str);
boolean result = m.find();
while (result) {
for (int i = 1; i <= m.groupCount(); i++) {
String url=m.group(i);
str = str.replace(url, shorten(url));
}
result = m.find();
}
return html;
Run Code Online (Sandbox Code Playgroud)
有什么好主意吗?
例如,1297380023295应该是2010/2/11 9 AM我现在使用这个代码
long dateNumber = num;
long beginTicks = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks;
DateTime dateValue = new DateTime(beginTicks + dateNumber * 10000);
return dateValue;
Run Code Online (Sandbox Code Playgroud)
该功能的结果是凌晨1点,它是GMT.我该怎么办?
我看到了两个div并且section被用过了data-role="page".例如
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body>
<p>This content will be ignored.</p>
<!-- Begin Page 4 -->
<section id="page4" data-role="page">
<header data-role="header"><h1>jQuery Mobile</h1></header>
<div class="content" data-role="content">
<p>External Page!</p>
<p><a href="#page1">Go to First Page</a>.</p>
</div>
<footer data-role="footer"><h1>O'Reilly</h1></footer>
</section>
<!-- End Page 4-->
<h3>This content will be ignored as well.</h3>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
和
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Intro to jQuery Mobile</title>
<link rel="stylesheet" href="http://code.jquery.com/mobile
/1.0a2/jquery.mobile-1.0a2.min.css" />
<script src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0a2 …Run Code Online (Sandbox Code Playgroud) 我将HTML代码转换为纯文本.但是有很多额外的返回和空格.如何删除它们?
如何设置从代码运行的计时器?我找不到任何名字的控件timer.
这样做需要什么步骤?
我的应用为lucene中的每一行生成唯一ID,并保存到数据库.一个sutation是如果有和行具有相同的id,我想更新它,而不是插入新的行和索引.
怎么做?
我正在将我的集群从Hadoop 1更新为YARN.我知道架构更加分散.我已经通过将所有bind ip更改为它的真实IP来修复了"连接拒绝"问题.但我不知道如何处理这个问题,我无法看到工作正在运行时发生了什么.
例如,地址就像http://shisoft-hadoopmaster:8088/proxy/application_1405708541410_0001/给我一样
HTTP ERROR 500
Problem accessing /proxy/application_1405708541410_0001/. Reason:
Connection refused
Caused by:
java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:286)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:80)
at org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:122)
at org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:707)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:387)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:346)
at org.apache.hadoop.yarn.server.webproxy.WebAppProxyServlet.proxyLink(WebAppProxyServlet.java:187)
at org.apache.hadoop.yarn.server.webproxy.WebAppProxyServlet.doGet(WebAppProxyServlet.java:344)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:66)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:900)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:834)
at org.apache.hadoop.yarn.server.resourcemanager.webapp.RMWebAppFilter.doFilter(RMWebAppFilter.java:84)
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter(ServletContainer.java:795)
at com.google.inject.servlet.FilterDefinition.doFilter(FilterDefinition.java:163)
at com.google.inject.servlet.FilterChainInvocation.doFilter(FilterChainInvocation.java:58)
at …Run Code Online (Sandbox Code Playgroud) 我的服务器应用程序中存在性能问题(Hi-CPU).但只有在服务器运行很长时间(平均一周)时才会出现此问题.我尝试使用Netbeans内置分析器来诊断问题,但运行几个小时后它就停止响应.
有没有办法对应用程序进行长期监控?谢谢.
更新:这不是一个Web应用程序
我有一块Clojure代码需要优化才能获得更好的性能.我的想法是用java重写它.有一个对象我在代码中使用了锁定宏,我需要重写,这个对象也可能被锁定在Clojure代码中的其他地方.
我不想定义新的ReentrantLock对象,因为此应用程序对内存敏感.
我的问题是什么在Java等于锁定宏,或monitor-enter与monitor-exit受到来自Clojure的引擎盖?