小编bil*_*oor的帖子

postgres ANY() 与 BETWEEN 条件

万一有人想知道,我正在回收一个我自己回答的不同问题,因为我意识到我的问题的根本原因与我想象的不同:

我的问题实际上看起来很简单,但我找不到方法。

如果数组的任何元素在两个值之间,如何查询 postgres?

文档说明a BETWEEN b and c相当于a > b and a < c

然而,这不适用于数组,因为

ANY({1, 101}) BETWEEN 10 and 20必须是假的

尽管

ANY({1,101}) > 10 AND ANY({1,101}) < 20必须是真的

{1,101} 表示包含两个元素 1 和 101 的数组。

我该如何解决这个问题,而不诉诸解决方法?

问候,

比尔门

编辑:为清楚起见:

我的情况是,我正在通过 xpath() 查询一个 xml 文档,但是对于这个问题,一个包含 int[] 类型数组的列可以完成这项工作。

id::int | numbers::int[]  | name::text
1       | {1,3,200}       | Alice
2       | {21,100}        | Bob
Run Code Online (Sandbox Code Playgroud)

我想要所有的名字,其中有一个number介于20和之间30- 所以我想要Bob

查询 …

postgresql

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

Spring Security向除一个端点之外的所有端点添加过滤器

我对此进行了研究,并在 SO 上找到了这个答案

不过,我确实有一个补充问题:

我有一组过滤器,我希望将其应用于所有请求,特殊情况除外(例如:除 /mgmt/** 和 /error/** 之外的所有路径)。

这不能使用链接答案中提供的相同方法来完成,因为我会将过滤器添加到默认的 http-security 对象,然后该对象也适用于特殊情况。

是否有“负匹配器”之类的东西,允许我做类似的事情:

http.negativeAntMatchers("/mgmt/**).addFilter(...)
Run Code Online (Sandbox Code Playgroud)

为除 /mgmt/** 之外的所有内容添加过滤器?

我的代码:

这是“/mgmt”的配置,将 ManagementBasicAuthFilter 放置在链中 - 这有效,因为除了“/mgmt/**”之外没有端点要求基本身份验证。

@Order(1)
@Configuration
@RequiredArgsConstructor
public static class ManagementSecurityConfig extends WebSecurityConfigurerAdapter {

    private final AuthenticationManager authenticationManager;

    @Override
    protected void configure(HttpSecurity http) throws Exception {
            http.antMatcher("mgmt/**")
                .csrf().disable()
                .headers().frameOptions().sameOrigin()
                .cacheControl().disable()
                .and()
                    .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and()
                    .addFilterBefore(new ManagementBasicAuthenticationFilter(authenticationManager,
                        getAuthenticationEntryPoint(), "/mgmt"), BasicAuthenticationFilter.class)
                    .authorizeRequests()
                    .anyRequest()
                    .permitAll();
    }

    private BasicAuthenticationEntryPoint getAuthenticationEntryPoint() {
        BasicAuthenticationEntryPoint entryPoint = new BasicAuthenticationEntryPoint();
        entryPoint.setRealmName("myApp");
        return entryPoint;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是所有入口点的配置,除了 mgmt - …

spring spring-security spring-boot

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

Android Dx Error1,无法转换为Dalvik格式

我对这个问题感到非常绝望:我想导出/运行我的Android应用程序,.jar并在构建路径中添加了一个.我确定我正确添加了它,还有其他5个.jars,它们都运行正常.

有了这个特殊的,我得到了上面提到的错误.我已经尝试过在这个问题中找到的所有内容: "在外部JAR上转换为Dalvik格式失败,错误1"

和其他几个链接谷歌吐出来.主要的问题是,我实际上不明白我追加的消息是什么想告诉我,因为如果我将所有的罐子添加到"普通"的javaproject中,它运行得非常好......

在Android 4.0.3上开发,

proguard 4.8,

adt 16.0.1.v201112150204-238534,

eclipse 3.7.1.r37

请帮我

[2012-07-18 10:45:48 - myapp] Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(iaik.xml.crypto.XSecProvider $ 1)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.推荐的解决方案是从源重新编译类,使用了最新的编译器和不指定任何"-target"类型的选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.

......

[2012-07-18 10:45:48 - myapp] Dx警告:忽略没有关联的EnclosingMethod属性的匿名内部类(iaik.xml.crypto.XSecProvider $ 2)的InnerClasses属性.这个类可能是由一个没有以现代.class文件格式为目标的编译器生成的.推荐的解决方案是从源重新编译类,使用了最新的编译器和不指定任何"-target"类型的选项.忽略此警告的后果是,对此类的反射操作将错误地指示它不是内部类.

在不构建核心库时,不明智或错误地使用核心类(java.*或javax.*).

这通常是由于在使用IDE(例如Eclipse)时无意中在应用程序的项目中包含了核心库文件.如果你确定你不是故意定义一个核心类,那么这就是最可能的解释.

但是,您实际上可能正在尝试在核心命名空间中定义一个类,例如,您可能已从非Android虚拟机项目中获取该类.这肯定是行不通的.它至少会危害您的应用与该平台的未来版本的兼容性.它的合法性通常也是有问题的.

如果您真的打算构建一个核心库 - 它只适合作为创建完整虚拟机分发的一部分,而不是编译应用程序 - 那么使用"--core-library"选项来抑制此错误消息.

如果你继续使用"--core-library"但实际上正在构建一个应用程序,那么预先警告你的应用程序仍然无法构建或运行,在某些时候.请为愤怒的客户做好准备,例如,一旦升级操作系统,您的应用程序就会停止运行.你应该为这个问题负责.

如果您合法地使用恰好位于核心软件包中的某些代码,那么最简单的安全替代方法是重新打包该代码.也就是说,将有问题的类移动到您自己的包命名空间中.这意味着它们永远不会与核心系统类冲突.JarJar是一个可以帮助您完成这项工作的工具.如果你发现你不能做到这一点,那就表明你所走的道路最终会导致痛苦,痛苦,悲伤和悲伤.

[2012-07-18 10:45:48 - myapp] Dx 1错误; 中止

[2012-07-18 10:45:48 - myapp]转换为Dalvik格式失败,错误1

这就是我的项目在探险家中的表现: http://s14.directupload.net/images/120718/zzy6mmym.jpg

java android dalvik

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

反思+库java

编辑:这是项目设置:

IDE:Eclipse:

Project1:"服务器"

src:
com/mainpackage/main.java
libs:
commons-x-0.jar
PluginInterface.jar
Run Code Online (Sandbox Code Playgroud)

libs-folder中的所有jar都在buildpath上.

Project2:"PluginInterface"

src:
com/interfaces/plugininterface
Run Code Online (Sandbox Code Playgroud)

Project3:"插件"

src:
com/package/class1.java - (this implements plugininterface)
libs:
library1.jar
PluginInterface.jar
Run Code Online (Sandbox Code Playgroud)

libs-folder中的所有jar都在buildpath上

所以当我导出插件(Project3)时,我得到一个这样的jar(从导出中排除PluginInterface.jar)

com/
com/package/
com/package/class1.class
com/package/class1.java
libs/
libs/library1.jar
Run Code Online (Sandbox Code Playgroud)

library1.jar看起来如下 - 它不是由我写的:

com/
com/stuff/
com/stuff/libclass.java
com/stuff/libclass.class
Run Code Online (Sandbox Code Playgroud)

现在我想在接口上的"服务器"中使用class1:

ClassLoader loader=URLClassLoader.newInstance( 
                new URL[]{new URL("file:path/to/plugin.jar")},
                ClassLoader.getSystemClassLoader()
        );

Class<?> pluginclass = Class.forName("com.package.class1", true, loader);
plugininterface ref = (plugininterface)pluginclass.newInstance();
Run Code Online (Sandbox Code Playgroud)

我现在可以使用项目知道的接口调用class1中的方法,因为它们都在buildpath中包含"PluginInterface.jar".

问题:

"服务器"不识别"libclass",因为它既不在其路径中,也不是从嵌套了library1的plugin.jar中加载类.

如果在服务器上无法导入库,我该如何访问此类?

谢谢你的帮助!

编辑:只是为了有人再次遇到这个问题,我将添加ANT文件的构建目标,使其工作:

<target name="build">
     <javac destdir="bin" includeantruntime="false" source="1.7" target="1.7">
        <src path="src"/>
        <classpath refid="Plugin.classpath"/>
     </javac>
    <unzip src="${libs}/library1.jar" dest="bin/">
        <patternset>
            <include name="**/*.class"/>
        </patternset> …
Run Code Online (Sandbox Code Playgroud)

java reflection

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

tomcat7 maven插件忽略配置

我的Probelm是,当运行mvn tomcat时:[重新]部署我得到HTTP返回码403 http://localhost:8080/manager,不管我为tomcat插件指定了什么url

我在其他问题中发现了这一点

<url>http://localhost:8080/manager/text</url>
Run Code Online (Sandbox Code Playgroud)

应该是我的目标,

但maven completley忽略了这个xml-tag,它总是用于/ manager/deploy,即使我把完全垃圾一样,

 <url>http://localhost:8080/nana/</url>
Run Code Online (Sandbox Code Playgroud)

我尝试了什么:

  • 重启tomcat,
  • 检查网址和用户名/密码的拼写,
  • tomcat正在运行,
  • 如果我添加manager-gui作为角色,我可以使用用户名"mavendeployer"登录gui
  • mvn安装工作正常
  • 在整个项目中搜索了/ manager的出现 - 没有找到(如果/ nana被设为url)
  • <version>从.pom中的tomcat7-plugin中删除了标签,试图确保它不是我使用的版本与我的tomcat版本一起搞笑

我正在使用maven 3.0.5,tomcat7,Maven为插件提供的任何版本

我的tomcat用户:

    <user username="mavendeployer" 
          password="maven" 
          roles = "manager-script,admin-script" />
Run Code Online (Sandbox Code Playgroud)

我的maven服务器设置:

<server>
    <id>localtomcat</id>
     <username>mavendeployer</username>
    <password>maven</password>
</server>
Run Code Online (Sandbox Code Playgroud)

我的pom :(删除了很多依赖项以保持简短,构建工作正常,只需mvn tomcat:[re] deploy失败:

<?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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.test</groupId>
  <artifactId>testApp</artifactId>
  <packaging>war</packaging>
  <!-- <server SW version>-<REST interface version> -->
  <version>1.6.4-1.0.3</version>
  <name>Test</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>2.4.3</version>
    </dependency>
      ...javax.servlet
      ...javax.servlet.jsp
      ...
         </dependencies>

  <build>
    <finalName>test</finalName>
    <plugins>
      <!-- …
Run Code Online (Sandbox Code Playgroud)

java apache tomcat maven

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

Spring Cloud Stream kafka - 获取批量并错过心跳

我正在查看一个 Spring Boot 服务,它从 apache kafka 读取消息,通过 http 从另一个服务请求消息指示的记录,处理它们,将一些数据保存到数据库中,并将结果发布到另一个主题。

这是通过

@StreamListener(Some.INPUT)
@SendTo(Some.OUTPUT)
Run Code Online (Sandbox Code Playgroud)

这是在几个服务中完成的,通常工作得很好。唯一的属性集是

spring.cloud.stream.binder.consumer.concurrency=20
Run Code Online (Sandbox Code Playgroud)

主题本身有 20 个分区,应该适合。

在监控 kafka 的读取时,我们发现吞吐量非常低和奇怪的行为:

该应用程序一次最多读取 500 条消息,然后是 1-2 分钟的无内容。在此期间,消费者反复记录“缺少心跳,因为分区被重新平衡”,“重新分配分区”,有时甚至抛出异常说“提交失败,因为轮询间隔已过”

我们得出的结论是,这意味着消费者获取 500 条消息,需要很长时间来处理所有消息,错过了它的时间窗口,因此无法将 500 条消息中的任何一条提交给代理——代理重新分配分区并重新发送相同的消息再次。

在查看线程和文档后,我发现了“max.poll.records”属性,但在设置此属性的位置的建议中存在冲突。

有人说把它放在下面

spring.cloud.stream.bindings.consumer.<input>.configuration
Run Code Online (Sandbox Code Playgroud)

有人说

spring.cloud.stream.kafka.binders.consumer-properties
Run Code Online (Sandbox Code Playgroud)

我尝试将两者都设置为 1,但服务行为没有改变。

我如何正确处理这种情况,即消费者无法跟上默认设置所需的轮询间隔?

常见的yaml:

spring.cloud.stream.default.group=${spring.application.name}
Run Code Online (Sandbox Code Playgroud)

服务-yaml

spring:
  clould:
    stream:
      default:
        consumer.headerMode: embeddedHeaders
        producer.headerMode: embeddedHeaders
      bindings:
       someOutput:
         destination: outTopic
       someInput:
         destination: inTopic
           consumer:
             concurrency: 30
      kafka:
        bindings:
          consumer:
            someInput:
              configuarion:
                max.poll.records: 20 # ConsumerConfig ignores this
              consumer:
                enableDlq: true
                configuarion:
                  max.poll.records: 30 # ConsumerConfig ignores this …
Run Code Online (Sandbox Code Playgroud)

apache-kafka spring-cloud spring-cloud-stream

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

手动HMACSHA1计算与openssl结果不同

我试图通过Hand实现HMACSHA1,以检查我们的serviceprovider或我们为Support-Ticket计算错误的HMAC(SOAP调用,因此是xml内容).

问题是,我坚持使用NIST规范进行HMAC,并在使用openssl HMAC功能时获得不同的结果.

以下代码打印:

B92674DCBA96F2DA93F7043071B931F5F2583FBD
4303E965D88D288C9AC594CE6C5E6AFF27D40B2D
Run Code Online (Sandbox Code Playgroud)

虽然openssl的结果与我们的应用程序相同 - 所以我假设,基于openssl是如此常用,我的结果是错误的 - 但我的错误在哪里?

这是我参考的规范:http: //nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.198-1.pdf

这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <openssl/sha.h>
#include <openssl/hmac.h>
#include <string.h>

#define byte unsigned char
#define IPAD 0x36
#define OPAD 0x5c
#define DIGESTSIZE 20



int main () {
    byte *derivedKey =  (byte[DIGESTSIZE]) {0x42,0xA9,0x78,0x90,0xFC,0xE5,0x16,0x8E,0x58,0x12,0x2F,0xF1,0xBA,0x32,0x5F,0x09,0x88,0x94,0x02,0x91};
    byte *content =     "<ds:SignedInfo xmlns:ds=\"http://www.w3.org/2000/09/xmldsig#\" xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\"><ds:CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"soap\"></ec:InclusiveNamespaces></ds:CanonicalizationMethod><ds:SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#hmac-sha1\"></ds:SignatureMethod><ds:Reference URI=\"#TS-B183A13FEB0189143115136776276601\"><ds:Transforms><ds:Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><ec:InclusiveNamespaces xmlns:ec=\"http://www.w3.org/2001/10/xml-exc-c14n#\" PrefixList=\"wsse soap\"></ec:InclusiveNamespaces></ds:Transform></ds:Transforms><ds:DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"></ds:DigestMethod><ds:DigestValue>rXJdGuDqoRrUJxuGiA1eyAozifk=</ds:DigestValue></ds:Reference></ds:SignedInfo>";
    byte *oPadKey =     malloc(DIGESTSIZE);
    byte *iPadKey =     malloc(DIGESTSIZE);


    int i;
    for(i=0;i<DIGESTSIZE;i++){
        iPadKey[i]=derivedKey[i]^IPAD;
        oPadKey[i]=derivedKey[i]^OPAD;
    }

    byte *rOpInput= …
Run Code Online (Sandbox Code Playgroud)

c openssl hmac

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