小编mar*_*ers的帖子

这个Python列表理解表达式可以简化吗?

input = "foo ,,bar ,baz,"
tags = [x.strip() for x in input.split(',') if len(x.strip()) > 0] 
Run Code Online (Sandbox Code Playgroud)

期望的输出显然是一个没有空字符串的列表.

问题在于微观优化的精神; 有没有办法让strip()候选人x两次,即一次为测试,一次为追加?

要改写一下,你可以在表达式中生成一个值,这些值可以附加到列表而不需要两次工作吗?

python list-comprehension

3
推荐指数
1
解决办法
483
查看次数

使用杰克逊映射未命名的数组

在未指定游标的情况下点击twitter friends / ids API端点将返回以下JSON响应:

["243439460","13334762", "14654522"]

但是,当指定游标时,您会得到记录的格式:

{"next_cursor":0,"previous_cursor":0,"ids":["243439460","13334762","14654522"]}

使用Jackson反序列化第二个响应很容易使用

@JsonIgnoreProperties(ignoreUnknown = true)
public class FriendIds {
private List<String> ids;

public List<String> getIds() { return ids; }

public void setIds(List<String> ids) { this.ids = ids; }
}
Run Code Online (Sandbox Code Playgroud)

FriendIds friendIds = new ObjectMapper().readValue(jsonStr, FriendIds.class);

但是,我还没有找到类似的方法来反序列化FriendIds使用Jackson 的第一个响应。关于如何做到这一点的任何想法?

java twitter json jackson

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

solr filter或tokenizer来组合单词

我正在尝试使用一系列过滤器来实现合理的名称建议功能.目前我有

        <fieldType name="suggester" class="solr.TextField" positionIncrementGap="1" autoGeneratePhraseQueries="true">
        <analyzer type="index">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
                    catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.ASCIIFoldingFilterFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ShingleFilterFactory" outputUnigramsIfNoShingles="true" maxShingleSize="2"
                    outputUnigrams="true"/>
            <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1"
                    catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
            <filter class="solr.ASCIIFoldingFilterFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>
            <filter class="solr.ShingleFilterFactory" outputUnigramsIfNoShingles="true" maxShingleSize="2"
                    outputUnigrams="true"/>
            <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="15"/>
        </analyzer>
    </fieldType>
Run Code Online (Sandbox Code Playgroud)

这肯定需要更多的调整,但我追求这个问题的一个特定方面.对于输入字符串mark daniel sievers,上面的内容将匹配查询mark,sievers但我真正想要的是减少其详细程度,EdgeNGramFilter因为它会导致匹配,并使用可以以某种可配置方式组合单词的过滤器/标记器,例如输入mark daniel rex sievers创建标记mark sievers,mark daniel …

solr

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

交互式终端应用程序的构建块

我一直在努力寻找能够帮助我找到所需信息的词语.我想创建一个终端应用程序,"接管"的终端,并且可以与之交互-样man,less,top

如果我的第一个目标是创建一个应用程序,当在终端中运行时根据不同的按键显示一些静态输出,然后在'q'按下退出到命令提示符 - 我需要查看哪种类型的库/框架在?

我知道我的身边一个shell脚本和终端的方式,但没有一个想法上述应用程序如何实现他们在终端的"互动性"方面做什么.

对于含糊不清的道歉 - 就像我说的那样,我正在努力寻找我需要的信息来找到我需要的信息,只需要朝着正确的方向努力.

terminal

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

Jackson 与 Gson 的简单反序列化

为了像这个 twitter APIusers/show响应那样解析 JSON,我一直在使用 Jackson 和 Gson Java 库作为候选来完成这项工作。我只对 JSON 的一小部分属性感兴趣,所以 Gson 很好,因为它的语法非常简洁,但我正在失去继续使用 Gson 的内部斗争,因为 Jackson 已经在我们的应用程序中的其他地方使用过,并且已经记录在案更好的性能(我承认这都是失去 Gson 的好理由)。

对于像 POJO

public class TwitterUser {
private String id_str;
private String screen_name;

public String getId_str() {
    return id_str;
}

public void setId_str(String id_str) {
    this.id_str = id_str;
}

public String getScreen_name() {
    return screen_name;
}

public void setScreen_name(String screen_name) {
    this.screen_name = screen_name;
}
}
Run Code Online (Sandbox Code Playgroud)

构建它所需的 Gson 唯一代码是一行,

TwitterUser user = new Gson().fromJson(jsonStr, TwitterUser.class);
Run Code Online (Sandbox Code Playgroud)

这对我来说很好;可以很好地扩展并且可以选择您想要的属性。另一方面,Jackson 在从选定的字段中构建 POJO …

java json jackson gson

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

Python单元测试设置功能'未定义'

对于某些人来说,这里几乎肯定有些简单 我已经使用Python大约一个星期了,NameError: global name '_build_response' is not defined当我尝试调用一个函数在我的单元测试中构建一个文本夹具时.在这个问题上我已经抓了一会儿,代码片段看起来像:

class HttpTestCase(unittest.TestCase):   

  def _build_response():
    #build and returns some text fixtures

  def test_http_get(self): 
    response = _build_response()
Run Code Online (Sandbox Code Playgroud)

我是否遗漏了对继承或范围界定的理解,或者是否有更令人尴尬的事情?任何指针赞赏.

python scope

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

jOOQ使用本地时区偏移量存储时间戳

PostgreSQL 9.3/postgresql-9.3-1100-jdbc41.jar

我有一个类型列的表timezone without time zone,这将生成我的具有适用java.util.Timestamp属性的对象.

在插入期间,我看到的是jOOQs绑定过程将a java.util.Timestamp转换为具有本地时区偏移的日期.

例如,对于unix时间戳1421109419(2015年1月13日00:36:59 GMT),该属性设置为new Timestamp(1421109419 * 1000).

从jOOQ记录器我看到:

2015-01-13 14:14:31,482 DEBUG [http-bio-8002-exec-4] org.jooq.tools.LoggerListener#debug:255 - -> with bind values      : insert into "foo"."bar" ("start_date") values (timestamp '2015-01-13 13:36:59.0') returning "foo"."bar"."id"

2015-01-13 14:14:31,483 TRACE [http-bio-8002-exec-4] org.jooq.impl.DefaultBinding#trace:179 - Binding variable 3       : 2015-01-13 13:36:59.0 (class java.sql.Timestamp)
Run Code Online (Sandbox Code Playgroud)

确实在记录中的值是"2015-01-13 13:36:59".

该软件在NZDT的机器上运行,解释了+13偏移量.

鉴于在TimeZone不可知容器(Timestamp)中提供时间,我希望在创建insert语句时能够得到尊重.

如何让jOOQ创建时间戳不是在当地时间?

postgresql timezone timestamp jdbc jooq

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

连接池(Hikari)重用的JDBC连接生命周期

光:2.4.7

PostgreSQL JDBC驱动程序:9.4-1201-jdbc41

我试图了解必须对java.sql.Connection对象执行什么操作才能使其在连接池中再次可用?

我刚刚将连接池引入了一个多线程应用程序,该应用程序以前是通过每个SQL语句来建立/断开连接。

在介绍了Hikari之后,我注意到的是,一旦我击中maximumPoolSize其后每次尝试HikariDataSource.getConnection都会由于失败connectionTimeout。因此,似乎我没有以某种方式“释放”此连接。

Connection对象的典型用法是:

# omits Exception handling, parameter substitution, result evaluation. 
PreparedStatement preparedStatement = hikariDataSource.getConnection().prepareStatement(sql);
preparedStatement.executeQuery();
preparedStatement.close();
Run Code Online (Sandbox Code Playgroud)

要使该连接有资格在连接池中重用,是否还需要对它进行其他处理?

Autocommit开启。Connection.close(),除非由Hikari提供时做一些特别的事情,否则似乎正是我想避免的事情。

jdbc hikaricp

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