我正在构建一个应用程序,定期检查一些rss feed以获取新内容.其中一些订阅源只能通过https访问,有些则具有自签名或某种方式损坏的证书.我希望能够永远检查它们.
请注意,此应用程序中的安全性不是问题,目标是以最小的努力访问内容.
我正在使用此代码来规避大多数证书问题:
/**
* Sets timeout values and user agent header, and ignores self signed ssl
* certificates to enable maximum coverage
*
* @param con
* @return
*/
public static URLConnection configureConnection(URLConnection con)
{
con.setRequestProperty(
"User-Agent",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
con.setConnectTimeout(30000);
con.setReadTimeout(40000);
if (con instanceof HttpsURLConnection)
{
HttpsURLConnection conHttps = (HttpsURLConnection) con;
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager()
{
public java.security.cert.X509Certificate[] getAcceptedIssuers()
{
return null;
}
public void …Run Code Online (Sandbox Code Playgroud) 几乎每周我们运行jenkins的开发服务器都没有剩余磁盘空间,因为jenkins日志文件变得很大(> 100g).它被这些奇怪的消息完全填满:
[DNSQuestion@1218458593 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@1577918927 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@1610023624 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@1936465154 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@983177141 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@229530224 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@1789454415 type: TYPE_IGNORE index 0, class: CLASS_UNKNOWN index 0, name: ]
[DNSQuestion@2034199573 …Run Code Online (Sandbox Code Playgroud) 有很多示例显示如何使用StandardTokenizer,如下所示:
TokenStream tokenStream = new StandardTokenizer(
Version.LUCENE_36, new StringReader(input));
Run Code Online (Sandbox Code Playgroud)
但在较新的Lucene版本中,此构造函数不可用.新构造函数如下所示:
StandardTokenizer(AttributeFactory factory)
Run Code Online (Sandbox Code Playgroud)
这个AttributeFactory的作用是什么?如何在较新版本的Lucene中对String进行标记?
嗨,我有以下问题:我存储字符串和相应的整数值列表,MultiValueMap<String, Integer>
我存储大约13000亿字符串,一个字符串可以有多达500或更多的值.对于每个值,我将在地图上随机访问.所以最糟糕的情况是13 000 000*500看涨期权.现在地图的速度很好但内存开销却很高.A MultiValueMap<String, Integer>就是一个HashMap/TreeMap<String, <ArrayList<Integer>>.HashMap和TreeMap都有很多内存开销.一旦完成,我就不会修改地图,但我需要它在程序中随机访问的速度要快且尽可能小.(我将它存储在磁盘上并在启动时加载它,序列化的映射文件占用大约600mb但在内存中大约需要3gb?)
最有效的内存是将String存储在已排序的字符串数组中,并为值提供相应的二维int数组.因此访问将是字符串数组上的二进制搜索并获取相应的值.
现在我有三种方法可以实现目标:
我使用一个排序的MultivalueMap(TreeMap)来创建存储所有的东西.在我完成获取所有值之后,我通过调用map.keyset().toArray(new String[0]);Make a two dimension int array获取字符串数组并从多值映射中获取所有值.Pro:它易于实现,在创建过程中仍然很快.Con:从Map到Arrays的复制过程中占用的内存更多.
我从一开始就使用Arrays或者ArrayLists,并将所有内容存储在Pro:最少的内存开销.Con:这将非常慢,因为每次添加一个新Key时我都必须对Array进行排序/复制.另外,我需要实现自己的(可能更慢)排序,以保持相应的int数组的顺序相同字符串.难以实施
我使用Arrays和MultivalueMap作为缓冲区.程序完成创建阶段的10%或20%后,我会将值添加到数组并保持顺序,然后启动一个新的Map.Pro:足够的速度和足够的内存效率.骗局:难以实施.
这些解决方案都不适合我.您是否知道此问题的任何其他解决方案,可能是内存高效(MultiValue)Map实现?
我知道我可以使用数据库,所以不要把它作为答案发布.我想知道如何在不使用数据库的情况下做到这一点.
我正在尝试删除我的solr服务器上的文档,但它不起作用,我没有得到任何错误.
我尝试通过浏览器,curl和solrj删除,没有任何作用.
(这里解释的浏览器和卷曲:Solr删除因某些原因无法工作)
我的solrj代码是:
server.deleteByQuery("*:*");
server.deleteById("*");
server.deleteById("guid:*");
server.commit(true, true);
UpdateRequest update = new UpdateRequest();
update.deleteByQuery("*:*");
update.setCommitWithin(0);
server.request(update);
server.commit(true, true);
SolrQuery query = new SolrQuery("*:*");//Search for everything/anything
query.setRows(10);
query.setRequestHandler("/query");
QueryResponse qr = server.query(query);
SolrDocumentList result = qr.getResults();
for (SolrDocument doc : result) {
Object id = doc.get("link");
String names = (String) doc.get("description");
System.out.println(id + " " + names);
}
Run Code Online (Sandbox Code Playgroud)
我总是在执行此操作后得到结果,或者通过Web界面,没有任何变化(顺便提一下添加文档).
任何人都有并且知道我可以尝试什么或者可能是什么原因?
更新:
所以我尝试再次从头开始设置所有内容并将我本地化错误源:solr不会删除带有我的Schema.xml文件的文件,我仍然不知道为什么: pastebin上的schema.xml
我是第一次尝试使用暴发户.我有两个我想要开始的java程序.第一个是在jetty上运行的solr搜索服务器,第二个是应该在solr服务器启动后启动的自定义搜寻器.
我的爬虫初始化脚本如下所示:
description "crawler"
author ""
start on runlevel [2345]
stop on runlevel [!2345]
respawn
script
cd /home/crawler
java -Duser.timezone=Europe/Berlin -jar crawler.jar
end script
Run Code Online (Sandbox Code Playgroud)
现在为solr服务器我写了这个:
description "server"
start on starting crawler
stop on runlevel [!2345]
respawn
script
cd /home/server/version0.1/example
java -Duser.language=en -Dsolr.clustering.enabled=true -Duser.country=US -Dfile.encoding=UTF-8 -jar start.jar
end script
Run Code Online (Sandbox Code Playgroud)
两者都开始,所以它似乎工作,但我希望爬行器在稍微延迟2秒后启动,以给服务器时间启用一切.谁知道怎么做?您如何看待这两个新贵脚本是好还是我错过了什么?(我是一个初始菜鸟)
我正在使用 swagger-codgen 为我的 Spring Boot 应用程序生成 java 模型类并将它们序列化为 json。默认情况下,这些模型都将包含具有空值的可选属性。
我想为 spring 配置 swagger-codgen 以在所有类的顶部包含此注释:@JsonInclude(Include.NON_NULL)以便空值属性不包含在序列化的 json 中。
我怎样才能做到这一点?有配置选项还是我必须手动扩展 spring 代码生成器?