小编Ran*_*ggs的帖子

使用VIM从文件末尾搜索

如何使用VIM从文件末尾进行搜索?我想在打开的文件中搜索XXXX的最后一次出现.

vim

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

如何配置gradle仅为某些依赖关系组使用本地存储库?

使用gradle依赖文档,我们有一个build.gradle,其中包含这样的代码片段.

repositories {
    mavenCentral()
    ivy {
        name = 'localRepo'
        artifactPattern "http://localRepo.com/[organisation]/[module]/[revision]/[artifact]-[revision].[ext]"
    }
}

dependencies {
    compile group: 'localRepo', name: 'my-private-library', version: '2.5'
}
Run Code Online (Sandbox Code Playgroud)

这个设置确实正确地下载了所有内容,但我想调整它以便组localRepo中的东西只是试图从常春藤存储库中提取而localRepo仅用于组localRepo.localRepo只保存私有jar,所以我们不希望它被用作第一个repo,我们不想花很长时间来查询mavenCentral对于不存在的jar.

基本上我想在依赖中说使用特定的repo或者本地常春藤repo仅用于特定的组.是否有捷径可寻?

java ivy gradle

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

TestNG @BeforeMethod方法在驻留在超类中并且运行特定组时未调用

我正在尝试使用一个组来运行与我正在处理的"当前"相关的测试子集.问题是,如果我使用超类在@BeforeMethod中进行某些设置,则该方法在我运行所有测试时运行,但在我仅使用指定的组"current"运行时则不运行.

因此,当我运行所有测试时,emptyTest失败,因为调用了@BeforeMethod,当只运行组current时,不调用该方法.注意:如果我将@Test(groups = {"current"})添加到子类,那么它确实运行 - 但是,它运行所有未标记为"current"的子类,这违背了"当前"组的目的.

如果有更好的方法来实现此行为,我对所有解决方案持开放态度.

谢谢,赎金

超类:

public class TestNGSuperclass {
    @BeforeMethod
    public void failingToShowThatItIsNotRun() {
        Assert.fail();
    }
}
Run Code Online (Sandbox Code Playgroud)

子类:

@Test(groups = {"current"})
public class TestNGCurrentGroup extends TestNGSuperclass {
    public void emptyTest() {}
}
Run Code Online (Sandbox Code Playgroud)

TestNG配置:

<test name="current">
    <groups>
        <run>
            <include name="current"/>
        </run>
    </groups>
    <packages>
        <package name="uiowa.wf.test.*"/>
    </packages>
</test>
<test name="all-tests">
    <packages>
       <package name="uiowa.wf.test.*"/>
    </packages>
</test>
Run Code Online (Sandbox Code Playgroud)

java testing testng

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

如何使用Jackson和注释以不同方式序列化关联对象?

给定以下类层次结构,我希望Foo根据在类层次结构中使用的上下文进行不同的序列化.

public class Foo {
    public String bar;
    public String biz;
}

public class FooContainer {
    public Foo fooA;
    public Foo fooB;
}
Run Code Online (Sandbox Code Playgroud)

当我序列化FooContainer时,我想将biz属性显示在fooB中.所以输出看起来像下面这样.

{
  "fooA": {"bar": "asdf", "biz": "fdsa"},
  "fooB": {"bar": "qwer"}
}
Run Code Online (Sandbox Code Playgroud)

我打算使用JsonView,但必须在mapper层应用于类的所有实例,这与上下文有关.


在Jackson用户邮件列表中,Tatu给出了最简单的解决方案(在2.0中工作),我现在可能最终会使用它.将赏金授予jlabedo,因为答案是如何使用自定义注释扩展Jackson的一个很棒的例子.

public class FooContainer {
    public Foo fooA;

    @JsonIgnoreProperties({ "biz" })
    public Foo fooB;
}
Run Code Online (Sandbox Code Playgroud)

java json jackson

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

如何在mssql中强制刷新事务中的全文索引?

我试图找出如何让下面的代码返回,它只是插入的行 - 同事指出,建议运行ALTER FULLTEXT CATALOG uiris_production REBUILD但不能在用户事务中运行.

这必须是在一个事务的原因是,这是从一个测试框架,测试被包裹在一个事务中,然后回滚到来.

declare @search varchar(64)
set @login_test = 'foobar'
set @search = '"' + @login_test + '*"'

begin transaction
   insert into users(login) values (@login_test)
   select login from users where contains(login, @search)
commit
Run Code Online (Sandbox Code Playgroud)

sql sql-server full-text-search

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

建议OAuth2库与Jersey集成?

我正在努力使用OAuth2向其他客户提供Jersey Web服务,并且很难找到与Jersey完美搭配的库.到目前为止,我已经查看了以下库.

http://static.springsource.org/spring-security/oauth/support.html

我们让演示工作,但不想使用弹簧安全性.

https://labs.ericsson.com/apis/oauth2-framework/downloads

这与RESTLet紧密相关.

http://wiki.apache.org/incubator/AmberProposal

我们简要地看了一下,但很难说出项目的状态.

https://bitbucket.org/smartproject/oauth-2.0/wiki/Home

我们刚开始看这个.

我们的主要目标是与Jersey作为资源提供者进行简单集成.

jax-rs jersey oauth-2.0

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

Apache Commons电子邮件和重用SMTP连接

目前我使用Commons Email发送电子邮件,但我找不到在发送的电子邮件之间共享smtp连接的方法.我有以下代码:

    Email email = new SimpleEmail();
    email.setFrom("example@example.com");
    email.addTo("example@example.com");
    email.setSubject("Hello Example");
    email.setMsg("Hello Example");
    email.setSmtpPort(25);
    email.setHostName("localhost");
    email.send();
Run Code Online (Sandbox Code Playgroud)

这是非常易读的,但是当我执行大量消息时速度很慢,我认为这是重新连接每条消息的开销.因此,我使用以下代码对其进行了分析,并发现使用重新使用Transport会使事情快三倍.

    Properties props = new Properties();
    props.setProperty("mail.transport.protocol", "smtp");
    Session mailSession = Session.getDefaultInstance(props, null);
    Transport transport = mailSession.getTransport("smtp");
    transport.connect("localhost", 25, null, null);

    MimeMessage message = new MimeMessage(mailSession);
    message.setFrom(new InternetAddress("example@example.com"));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress("example@example.com"));
    message.setSubject("Hello Example");
    message.setContent("Hello Example", "text/html; charset=ISO-8859-1");

    transport.sendMessage(message, message.getAllRecipients());
Run Code Online (Sandbox Code Playgroud)

所以我想知道是否有办法让Commons Email重用多个电子邮件发送的SMTP连接?我更喜欢Commons Email API,但性能有点痛苦.

谢谢,赎金

java email apache-commons-email

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

在构建EntityManagerFactory后如何获得Hibernate配置?

我的Web框架(Play 1.2.5)创建了一个EJB3Configuration,它用于创建EntityManagerFactory (源)的方法.我正在编写一个脚本,并希望generateSchemaUpdateScript()从Configuration 运行该方法以生成我可以验证并在生产部署上运行的SQL脚本.我遇到的问题是我无法弄清楚如何EntityManagerFactory在构建之后访问所使用的Configuration对象或如何生成Configuration对象.

java hibernate playframework playframework-1.x

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

什么是Java中的对象字段初始化和构造函数顺序

我今天早些时候在代码中结束了以下场景(我承认有点奇怪,我已经重构了).当我运行单元测试时,我发现在超类构造函数运行的时候没有设置字段初始化.我意识到我并不完全理解构造函数/字段初始化的顺序,所以我希望有人向我解释这些发生的顺序.

class Foo extends FooBase {
    String foo = "foobar";

    @Override
    public void setup() {
        if (foo == null) {
            throw new RuntimeException("foo is null");
        }
        super.setup();
    }
}

class FooBase {
    public FooBase() {
        setup();
    }

    public void setup() {

    }
}

@Test
public void testFoo() {
    new Foo();
}
Run Code Online (Sandbox Code Playgroud)

来自JUnit的缩写回溯如下,我想我期望$ Foo.<init>来设置foo.

$Foo.setup
$FooBase.<init>
$Foo.<init>
.testFoo
Run Code Online (Sandbox Code Playgroud)

java

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

如何让ruby ShellWords.shellescape使用多字节字符?

我一直试图用一个包含多字节字符的参数来调用exec,这些字符来自Windows上的环境变量,但还没有找到可行的解决方案.这是我迄今为止能够调试的内容.

为简单起见,假设我有一个名为"Seán"的目录,我试图将其用作exec的参数.如果我只是打电话

exec 'script', "Se\u00E1n".encode("IBM437") 
Run Code Online (Sandbox Code Playgroud)

执行的脚本无法找到该文件,因为arg被调整以使重音字符丢失.如果我执行以下操作它可以工作,但这是不好的做法,因为arg应该在转到shell之前进行转义.

exec "script #{"Se\u00E1n".encode("IBM437")}"
Run Code Online (Sandbox Code Playgroud)

所以我的想法是我会使用shellescape来保护exec的使用.

require 'shellwords'
exec "script #{"Se\u00E1n".encode("IBM437").shellescape}"
Run Code Online (Sandbox Code Playgroud)

但问题是它逃脱了特殊角色,因此看起来如下 - "Se \án".我想出了这发生的地方,它来自这个正则表达式.

str.gsub!(/([^A-Za-z0-9_\-.,:\/@\n])/, "\\\\\\1")
Run Code Online (Sandbox Code Playgroud)

乍一看似乎是逃避字符而不是已知的一组shell字符.不幸的是,这套不包含特殊字符,所以我遇到了问题.

我正在寻找的是一个正则表达式,可以执行shell转义,不会弄乱特殊字符,这样我就可以在将它们传递给exec之前将其转义.

ruby regex windows escaping character-encoding

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