小编mri*_*z_p的帖子

如何在catch块中重复代码?

我现在很难不在我正在研究的Java程序中重复自己.

说,我需要声明很多基本上按以下方式构造的方法:

public SomeEntity doSomething (String someAttribute, String anotherAttribute) {
    EntityManager em = this.createEntityManager();

    EntityTransaction tx = null;
    try {

        /*
         * ... independent logic ...
         */

        tx = em.getTransaction();
    } catch (RuntimeException e) {
        if (tx != null && tx.isActive()) { 
            tx.rollback();
        }
        throw e;
    } finally {
        em.close();
    }

    return something;
}
Run Code Online (Sandbox Code Playgroud)

所有方法的方法体都需要包含用于资源管理的元素.

"独立逻辑"本身也会相当复杂,因此将try/catch语句放在一个单独的方法中并不会真正起作用.

我想避免重复此代码.在这些情况下应用哪些最佳实践?

java

34
推荐指数
2
解决办法
4288
查看次数

使用mongodb在Array中查找Subdocument

我正在使用来自http://docs.mongodb.org/manual/reference/bios-example-collection的The bios Example Collection 来教育自己查询mongodb.

我想检索有关所获得的奖项信息_id:1年份:1975.

我尝试了几个查询

bios.find({
    "_id" : 1,
    "awards" : {
        "year" : 1975
    }
});
Run Code Online (Sandbox Code Playgroud)

但我从来没有收到适当的文件.如何在阵列中检索此文档?

mongodb

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

浏览器如何存储自动完成的数据以及在哪里?

我最近遇到了有关浏览器自动完成功能的问题.有人可能会在网页上的表单中找到它.

问题在于数据,根据对一个字段的自动完成选择,数据被放入其他字段.更详细地说,它与AngularJS的使用有关.

我确实找到了有关角度变通方法的主题,但我感兴趣的是,浏览器存储数据的位置以及收集数据的逻辑是什么.

  • 是否有一些已定义的字段列表,由浏览器监视?
  • 数据主机(位置)是否特定于字段?
  • 何时由浏览器存储?在正常表格提交活动或其他一些事件?

先感谢您.

javascript browser autocomplete

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

SOLR 4.0字母排序故障

我很难解决我的SOLR地址数据库问题.

我从示例文件中构建了这个.我基本上运行带有修改架构的示例配置.

schema.xml:

<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="_version_" type="long" indexed="true" stored="true" required="false" multiValued="false" />

<field name="givenname_s" type="text_de" indexed="true" stored="true" required="true" multiValued="false" />
<field name="middleinitial_s" type="text_de" indexed="false" stored="true" required="false" multiValued="false" />
<field name="surname_s" type="text_de" indexed="true" stored="true" required="true" multiValued="false" />
<field name="gender_s" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="pictureuri_s" type="string" indexed="false" stored="true" required="false" multiValued="false" />
<field name="function_s" type="text_de" indexed="true" stored="true" required="false" multiValued="false" />
<field name="organizationalunit_s" type="text_general" indexed="true" stored="true" required="false" multiValued="false" />
<field name="organizationalunitdescription_s" type="text_de" indexed="false" …
Run Code Online (Sandbox Code Playgroud)

solr

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

为什么Google Closure交换参数?

我已经看到Google Closure编译器在if子句中做了很多重写.例如:

if (a === 3) {…}
Run Code Online (Sandbox Code Playgroud)

转向

if (3 === a) {…}
Run Code Online (Sandbox Code Playgroud)

如果原语是第一个参数,那么在JavaScript中比较速度更快,或者这是什么原因?

javascript google-closure

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

如何从EC公钥字节中获取PublicKey对象?

我正在开发一个需要在(NIST P-256,P-256,prime256v1)公钥SHA256withECDSA的帮助下验证签名的应用程序secp256r1.

公钥在某个较早的时间点由不同的应用程序生成,并以十六进制编码存储在我的数据库中.这里十六进制字符串的格式等同于OpenSSL在调用先前生成openssl ec -in x.pem -noout -text的文件时将生成的十六进制字符串.消息和签名是从不同的应用程序接收的.请考虑以下测试数据:x.pemopenssl ecparam -genkey -name secp256r1 -out x.pem

// Stored in Database
byte[] pubKey = DatatypeConverter.parseHexBinary("049a55ad1e210cd113457ccd3465b930c9e7ade5e760ef64b63142dad43a308ed08e2d85632e8ff0322d3c7fda14409eafdc4c5b8ee0882fe885c92e3789c36a7a");

// Received from Other Application
byte[] message = DatatypeConverter.parseHexBinary("54686973206973206a75737420736f6d6520706f696e746c6573732064756d6d7920737472696e672e205468616e6b7320616e7977617920666f722074616b696e67207468652074696d6520746f206465636f6465206974203b2d29");
byte[] signature = DatatypeConverter.parseHexBinary("304402205fef461a4714a18a5ca6dce6d5ab8604f09f3899313a28ab430eb9860f8be9d602203c8d36446be85383af3f2e8630f40c4172543322b5e8973e03fff2309755e654");
Run Code Online (Sandbox Code Playgroud)

现在这应该是一个有效的签名.

我的目标是使用Java和/或Bouncycastle加密API验证消息上的签名.我已经isValidSignature为此创建了一个方法:

private static boolean isValidSignature(byte[] pubKey, byte[] message,
        byte[] signature) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeyException, SignatureException, InvalidKeySpecException {
    Signature ecdsaVerify = Signature.getInstance("SHA256withECDSA", new BouncyCastleProvider());
    ecdsaVerify.initVerify(getPublicKeyFromHex(pubKey));
    ecdsaVerify.update(message);
    return ecdsaVerify.verify(signature);
}
Run Code Online (Sandbox Code Playgroud)

我试图提取公钥:

KeyFactory.generatePublic:

private static …
Run Code Online (Sandbox Code Playgroud)

java cryptography bouncycastle

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

在序列图中对 API 请求进行建模的正确方法是什么?

我将创建一些序列图来对 Web API 中的交互进行建模。

有一种重复的请求/响应调用模式,我不确定如何建模。

假设我有一个 API 调用来从 API 端点请求属性。使用这样的标准回复模式是否合适?使用多个返回值变量进行赋值(encrypted_attributes, hashes)是一种好的风格吗?

标准回复模式

或者应该像这样创建自定义请求/响应,以反映 和request_attributest都是return_encrypted_attributes由彼此独立的单元完成的?

自定义请求/响应模式

uml sequence-diagram

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

如何生成解压扩展程序的Chrome扩展程序ID?

我想与同事分享一个解压缩的扩展程序.它chrome.runtime.sendMessage(string extensionId, any message, object options, function responseCallback)在注入的脚本中使用该方法.为此,我需要提前知道扩展ID.

解包扩展程序的扩展ID在不同系统上是否会有所不同,或者我可以对我在扩展菜单中找到的扩展ID进行硬编码?

google-chrome-extension

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

如何完全禁用Play Framework中的会话?

我知道这个问题,OP希望针对某个控制器操作禁用会话处理。由于我正在开发一个完全无状态的应用程序,因此我想完全禁用整个应用程序中的所有会话处理。为此,过滤每个请求以覆盖响应的属性的请求感觉有点过头了。特别是由于所有准备工作,例如生成会话ID,对会话数据进行签名以及Play正在进行的其他操作,都仍在执行。

还有其他便宜的方法可以阻止Play框架首先创建会话吗?

playframework

5
推荐指数
0
解决办法
157
查看次数

Spring JSON请求:HTTP状态406

我知道,这在stackoverflow上反复弹出.不幸的是,提供的解决方案都没有解决我的问

我正在尝试让我的服务器使用Jackson消息转换器以最简单的方式使用JSON格式的数据进行响应.

我的配置:

我的pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany</groupId>
    <artifactId>whatever</artifactId>
    <name>whatever</name>
    <packaging>war</packaging>
    <version>1.0.0-BUILD-SNAPSHOT</version>
    <properties>
        <java-version>1.7</java-version>
        <org.springframework-version>3.1.1.RELEASE</org.springframework-version>
        <org.aspectj-version>1.6.10</org.aspectj-version>
        <org.slf4j-version>1.6.6</org.slf4j-version>
    </properties>
    <dependencies>
        <!-- Spring -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${org.springframework-version}</version>
            <exclusions>
                <!-- Exclude Commons Logging in favor of SLF4j -->
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                 </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${org.springframework-version}</version>
        </dependency>

        ...

        <!-- Jackson Mapper for JSON response -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.5</version>
        </dependency>

        ...   
    </dependencies>
    <build>
       ...
    </build>
</project>
Run Code Online (Sandbox Code Playgroud)

jackson-mapper-asl-1.9.5.jarjackson-core-asl-1.9.5.jar在构建路径上.

我的/whatever/src/main/webapp/WEB-INF/spring/appServlet/servlet-context.xml …

spring json jackson

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

为什么node.js http在没有数据监听器时不会调用end事件?

我将数据从文件发送到服务器作为HTTP POST请求,如下所示:

var options = {
    "hostname": "example.com",
    "port": 42,
    "path": "/whatever",
    "method": "PUT",
    "headers" : {
        // a few headers
    }
};

var req = http.request(options, function(res) {
    res.on("end", function () {
        console.log("The request is finished");
    });
});

var stream = fs.createReadStream("/tmp/someFile");

stream.on("data", function(data) {
    req.write(data);
});

stream.on("end", function() {
    req.end();
});
Run Code Online (Sandbox Code Playgroud)

我正在倾听res.on("end"),以便在上传文件后做更多的事情.

但是,在上面的示例中,res.on("end")永远不会调用它.

令人惊讶的是,当我为data事件添加一个监听器时,res.on("end")可靠地调用.

如果我完全忽略下面示例中的数据,这甚至可以工作:

var options = {
    "hostname": "example.com",
    "port": 42,
    "path": "/whatever",
    "method": "PUT",
    "headers" : { …
Run Code Online (Sandbox Code Playgroud)

http node.js

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

从会话读取时如何发出加特林捕获请求?

根据Gatling文档,执行场景时可以使用会话属性。

但是,每次我在场景中使用函数文字访问会话时,都会遇到以下异常:

[error] java.lang.UnsupportedOperationException: There were no requests sent during the simulation, reports won't be generated
[error]     at io.gatling.charts.report.ReportsGenerator$.generateFor(ReportsGenerator.scala:45)
[error]     at io.gatling.app.Gatling.generateReports(Gatling.scala:198)
[error]     at io.gatling.app.Gatling.start(Gatling.scala:82)
[error]     at io.gatling.app.Gatling$.fromArgs(Gatling.scala:59)
[error]     at io.gatling.sbt.GatlingTask.liftedTree1$1(GatlingTask.scala:49)
[error]     at io.gatling.sbt.GatlingTask.execute(GatlingTask.scala:48)
[error]     at sbt.ForkMain$Run$2.call(ForkMain.java:296)
[error]     at sbt.ForkMain$Run$2.call(ForkMain.java:286)
[error]     at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[error]     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
[error]     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
[error]     at java.lang.Thread.run(Thread.java:745)
[error] Simulation FooBarSimulation failed.
[info] Simulation(s) execution ended.
Run Code Online (Sandbox Code Playgroud)

更具体地说,虽然此符号为我提供了正确的结果:

  val scn = scenario("Foobar").feed(feeder).exec {
    http("foo").httpRequest("GET", "http://example.org")
  }.pause(5)
Run Code Online (Sandbox Code Playgroud)

由于上述异常而失败:

  val scn = scenario("Foobar").feed(feeder).exec { session =>
    http("foo").httpRequest("GET", …
Run Code Online (Sandbox Code Playgroud)

scala gatling

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